/* * CbmMuchTest.cxx * * Created on: May 2, 2012 * Author: kozlov */ #include "CbmClusteringGeometry.h" #include "CbmStsHit.h" #include "CbmStsPoint.h" #include "CbmMuchPixelHit.h" #include "CbmMuchPoint.h" #include "CbmMCTrack.h" #include "CbmMuchGeoScheme.h" #include "CbmMuchLayerSide.h" #include "CbmMuchModuleGem.h" #include "CbmMuchPad.h" #include "CbmMuchDigi.h" #include "CbmMuchStation.h" #include "CbmMuchLayer.h" #include "CbmMuchTest.h" #include "FairRootManager.h" #include "TClonesArray.h" #include #include using std::cout; using std::endl; CbmMuchTest::CbmMuchTest(): fMeanErrorOnXforSubCenters(), fMeanErrorOnYforSubCenters(), fErrorsOnXforSubCenters(), fErrorsOnYforSubCenters(), fEfficiencyForSubCenters(), fEfficiency(), fMeanErrorOnY(), fMeanErrorOnX(), fClusters(), fErrorsOnX(), fErrorsOnY() { fNofPoints = 0; //fNofHits = 0; fSubStep = 0; fNofSubCenters = 0; fNofClusters = 0; fRealPoints = 0; } CbmMuchTest::CbmMuchTest(Int_t nofPoints, Float_t subStep): fMeanErrorOnXforSubCenters(), fMeanErrorOnYforSubCenters(), fErrorsOnXforSubCenters(), fErrorsOnYforSubCenters(), fMeanErrorOnY(), fMeanErrorOnX(), fErrorsOnX(), fErrorsOnY(), fEfficiencyForSubCenters(), fEfficiency(), fClusters() { fNofPoints = nofPoints; fSubStep = subStep; fNofSubCenters = 0; fRealPoints = new M_Point[fNofPoints]; fNofClusters = 0; } CbmMuchTest::~CbmMuchTest() { } void CbmMuchTest::RebuildPoints() { Float_t pLenght = 0; for(Int_t iPoint = 0; iPoint < fNofPoints; iPoint++) { pLenght = sqrt((fRealPoints[iPoint].x1 - fRealPoints[iPoint].x2) * (fRealPoints[iPoint].x1 - fRealPoints[iPoint].x2) + (fRealPoints[iPoint].y1 - fRealPoints[iPoint].y2) * (fRealPoints[iPoint].y1 - fRealPoints[iPoint].y2)); fRealPoints[iPoint].pLenght = pLenght; //std::cout<<"pLenght: "<= fNofPoints) //Bad condition!!! { std::cout<<"Error! fRealPoint is not declared!\n"; } else { fRealPoints[iPoint].x1 = xIn; //std::cout<<"-> XIn: "<= fNofPoints) //Bad condition!!! { std::cout<<"Error! fRealPoint is not declared!\n"; } else { fRealPoints[iPoint].y1 = yIn; } } void CbmMuchTest::SetXOut(Float_t xOut, Int_t iPoint) { if(iPoint >= fNofPoints) //Bad condition!!! { std::cout<<"Error! fRealPoint is not declared!\n"; } else { fRealPoints[iPoint].x2 = xOut; } } void CbmMuchTest::SetYOut(Float_t yOut, Int_t iPoint) { if(iPoint >= fNofPoints) //Bad condition!!! { std::cout<<"Error! fRealPoint is not declared!\n"; } else { fRealPoints[iPoint].y2 = yOut; } } void CbmMuchTest::SetSubStep(Int_t iStep) { fSubStep = iStep; } void CbmMuchTest::SetNClusters(Int_t NCl) { fNofClusters = NCl; fClusters = new Cluster [fNofClusters]; fErrorsOnX = new Float_t [fNofClusters]; fErrorsOnY = new Float_t [fNofClusters]; fErrorsOnXforSubCenters = new Float_t [fNofClusters]; fErrorsOnYforSubCenters = new Float_t [fNofClusters]; fEfficiency = 0; fEfficiencyForSubCenters = 0; } void CbmMuchTest::SetNCl(Int_t nCl, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].nofCluster = nCl; } } void CbmMuchTest::SetXCl(Float_t xCl, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].xc = xCl; } } void CbmMuchTest::SetYCl(Float_t yCl, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].yc = yCl; } } void CbmMuchTest::SetCharge(UInt_t chCl, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].sumClCharge = chCl; } } void CbmMuchTest::SetNPads(Int_t nofPads, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].nofPads = nofPads; } } void CbmMuchTest::SetPadInCl(Int_t nPad, Int_t iCl, Int_t iPad) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].padsInCluster[iPad] = nPad; } } void CbmMuchTest::SetCluster(Int_t nCl, Float_t xCl, Float_t yCl, UInt_t chCl, Int_t nofPads, Int_t iCl) { if(fNofClusters == 0) { std::cout<<"Error! fClusters is not declared!\n"; } else { fClusters[iCl].nofCluster = nCl; fClusters[iCl].xc = xCl; fClusters[iCl].yc = yCl; fClusters[iCl].sumClCharge = chCl; fClusters[iCl].nofPads = nofPads; } } void CbmMuchTest::CalculateEfficiency() { /*std::cout<<"Start\n"; std::cout<<"fNofClusters: "< 1) { for(Int_t kCl = 0; kCl < fRealPoints[jCl].nofSubCenters; kCl++) { r2 = sqrt((fClusters[iCl].xc - fRealPoints[jCl].xSC[kCl]) * (fClusters[iCl].xc - fRealPoints[jCl].xSC[kCl]) + (fClusters[iCl].yc - fRealPoints[jCl].ySC[kCl]) * (fClusters[iCl].yc - fRealPoints[jCl].ySC[kCl])); if(r2 < r1) { fErrorsOnXforSubCenters[iCl] = fabs(fClusters[iCl].xc - fRealPoints[jCl].xSC[kCl]); fErrorsOnYforSubCenters[iCl] = fabs(fClusters[iCl].yc - fRealPoints[jCl].ySC[kCl]); } } } else {*/ fErrorsOnXforSubCenters[iCl] = fErrorsOnX[iCl]; fErrorsOnYforSubCenters[iCl] = fErrorsOnY[iCl]; //} } fMeanErrorOnX += fErrorsOnX[iCl]; fMeanErrorOnY += fErrorsOnY[iCl]; fMeanErrorOnXforSubCenters += fErrorsOnXforSubCenters[iCl]; fMeanErrorOnYforSubCenters += fErrorsOnYforSubCenters[iCl]; //std::cout<<"-2----- "<