X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFClusterFinderV1.cxx;h=607bfdc04f3d1fd14b981527a028214897cd4d0d;hb=52284ebd6794b13619ef2b316ef86e85ff3fd0f2;hp=fe5f61e30389d1ab7ceff431d95ae2bcb00687ba;hpb=4682c56e32cf939ad0815430785dec9507f31d50;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFClusterFinderV1.cxx b/TOF/AliTOFClusterFinderV1.cxx index fe5f61e3038..607bfdc04f3 100644 --- a/TOF/AliTOFClusterFinderV1.cxx +++ b/TOF/AliTOFClusterFinderV1.cxx @@ -44,6 +44,7 @@ Revision 0.01 2008/05/10 A. De Caro #include "AliDAQ.h" #include "AliLog.h" #include "AliRawReader.h" +#include "AliLoader.h" #include "AliRunLoader.h" #include "AliGeomManager.h" @@ -59,6 +60,10 @@ Revision 0.01 2008/05/10 A. De Caro #include "AliTOFReconstructor.h" #include "AliTOFRecoParam.h" +using std::endl; +using std::cout; +using std::ofstream; +using std::ios; ClassImp(AliTOFClusterFinderV1) //_____________________________________________________________________________ @@ -69,6 +74,7 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliTOFcalib *calib): fRecPoints(new TClonesArray("AliTOFcluster", 4000)), fNumberOfTofClusters(0), fNumberOfTofDigits(0), + fNumberOfTofTrgPads(0), fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()), fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()), fVerbose(0), @@ -84,6 +90,8 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliTOFcalib *calib): // Constructor // + for (Int_t ii=0; iiGetMaxDeltaTime(); @@ -108,6 +116,7 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliRunLoader* runLoader, AliTOFcali fRecPoints(new TClonesArray("AliTOFcluster", 4000)), fNumberOfTofClusters(0), fNumberOfTofDigits(0), + fNumberOfTofTrgPads(0), fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()), fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()), fVerbose(0), @@ -123,6 +132,8 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliRunLoader* runLoader, AliTOFcali // Constructor // + for (Int_t ii=0; iiGetMaxDeltaTime(); @@ -147,6 +158,7 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(const AliTOFClusterFinderV1 &source fRecPoints(source.fRecPoints), fNumberOfTofClusters(0), fNumberOfTofDigits(0), + fNumberOfTofTrgPads(0), fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()), fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()), fVerbose(0), @@ -160,6 +172,8 @@ AliTOFClusterFinderV1::AliTOFClusterFinderV1(const AliTOFClusterFinderV1 &source { // copy constructor + for (Int_t ii=0; iiGetMaxDeltaTime(); @@ -178,8 +192,12 @@ AliTOFClusterFinderV1& AliTOFClusterFinderV1::operator=(const AliTOFClusterFinde return *this; TObject::operator=(source); + for (Int_t ii=0; iiDelete(); fNumberOfTofClusters = 0; @@ -239,11 +258,15 @@ void AliTOFClusterFinderV1::Digits2RecPoints(TTree* digitsTree, TTree* clusterTr Int_t inholes = 0; + ResetRecpoint(); + fDigits->Clear(); TClonesArray &aDigits = *fDigits; - if (digitsTree == 0x0) + if (digitsTree == 0x0) { AliFatal("Can not get TreeD for TOF"); + return; + } TBranch *branch = digitsTree->GetBranch("TOF"); if (!branch) { @@ -333,7 +356,7 @@ void AliTOFClusterFinderV1::Digits2RecPoints(TTree* digitsTree, TTree* clusterTr AliDebug(1,Form("Number of found clusters: %d", fNumberOfTofClusters)); - ResetRecpoint(); +// ResetRecpoint(); fTOFdigitMap->Clear(); @@ -356,6 +379,7 @@ void AliTOFClusterFinderV1::Digits2RecPoints(AliRawReader *rawReader, TTree *clu TStopwatch stopwatch; stopwatch.Start(); + ResetRecpoint(); AliDebug(2, "TreeD re-creation"); //TTree *digitsTree = new TTree(); @@ -374,7 +398,7 @@ void AliTOFClusterFinderV1::Digits2RecPoints(AliRawReader *rawReader, TTree *clu AliDebug(1,Form("Number of found clusters: %d", fNumberOfTofClusters)); - ResetRecpoint(); +// ResetRecpoint(); fTOFdigitMap->Clear(); @@ -470,6 +494,18 @@ void AliTOFClusterFinderV1::Raw2Digits(AliRawReader *rawReader, TTree* digitsTre digit[2] = tofRawDatum->GetTOT(); digit[3] = -1;//tofRawDatum->GetTOF(); //tofND + // noferini + Float_t pos[3]; + AliTOFGeometry::GetPosPar(detectorIndex, pos); + Float_t length = 0.; + for (Int_t ic = 0; ic < 3; ic++) length += pos[ic] * pos[ic]; + length = TMath::Sqrt(length); + Float_t timealligned = tdcCorr*24.4 - length * 0.0333564095198152043; // subtract the minimal time in + + if(status && timealligned > -1000 && timealligned < 24000){ + fNumberOfTofTrgPads++; + } + dummy = detectorIndex[3]; detectorIndex[3] = detectorIndex[4];//padx detectorIndex[4] = dummy;//padz @@ -488,6 +524,7 @@ void AliTOFClusterFinderV1::Raw2Digits(AliRawReader *rawReader, TTree* digitsTre last = fDigits->GetEntriesFast(); new (aDigits[last]) AliTOFdigit(tracks, detectorIndex, digit); if (status) fTOFdigitMap->AddDigit(detectorIndex, last); + if (fVerbose==2) { if (indexDDL<10) ftxt << " " << indexDDL; @@ -659,8 +696,8 @@ void AliTOFClusterFinderV1::FillRecPoint() Int_t detectorIndex[5]; for (jj=0; jj<5; jj++) detectorIndex[jj] = -1; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = -1; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = -1; Int_t trackLabels[3]; for (jj=0; jj<3; jj++) trackLabels[jj] = -1; Int_t digitIndex = -1; @@ -672,51 +709,54 @@ void AliTOFClusterFinderV1::FillRecPoint() UShort_t volIdClus; for (ii=0; iiGetIndex(); - for(jj=0; jj<5; jj++) detectorIndex[jj] = fTofClusters[ii]->GetDetInd(jj); + AliTOFcluster* clOr = fTofClusters[ii]; + fTofClusters[ii] = 0; + digitIndex = clOr->GetIndex(); + for(jj=0; jj<5; jj++) detectorIndex[jj] = clOr->GetDetInd(jj); volIdClus = fTOFGeometry->GetAliSensVolIndex(detectorIndex[0],detectorIndex[1],detectorIndex[2]); //volIdClus = GetClusterVolIndex(detectorIndex); - for(jj=0; jj<3; jj++) trackLabels[jj] = fTofClusters[ii]->GetLabel(jj); - parTOF[0] = fTofClusters[ii]->GetTDC(); // TDC - parTOF[1] = fTofClusters[ii]->GetToT(); // TOT - parTOF[2] = fTofClusters[ii]->GetADC(); // ADC=TOT - parTOF[3] = fTofClusters[ii]->GetTDCND(); // TDCND - parTOF[4] = fTofClusters[ii]->GetTDCRAW();//RAW - status = fTofClusters[ii]->GetStatus(); - - posClus[0] = fTofClusters[ii]->GetX(); - posClus[1] = fTofClusters[ii]->GetY(); - posClus[2] = fTofClusters[ii]->GetZ(); + for(jj=0; jj<3; jj++) trackLabels[jj] = clOr->GetLabel(jj); + parTOF[0] = clOr->GetTDC(); // TDC + parTOF[1] = clOr->GetToT(); // TOT + parTOF[2] = clOr->GetADC(); // ADC=TOT + parTOF[3] = clOr->GetTDCND(); // TDCND + parTOF[4] = clOr->GetTDCRAW();//RAW + parTOF[5] = 0; + parTOF[6] = 0; + status = clOr->GetStatus(); + + posClus[0] = clOr->GetX(); + posClus[1] = clOr->GetY(); + posClus[2] = clOr->GetZ(); //for (jj=0; jj<6; jj++) covClus[jj] = 0.; - //((AliCluster*)fTofClusters[ii])->GetGlobalCov(covClus); + //((AliCluster*)clOr)->GetGlobalCov(covClus); new(lRecPoints[ii]) AliTOFcluster(volIdClus, (Double_t)posClus[0], (Double_t)posClus[1], (Double_t)posClus[2], - (Double_t)(fTofClusters[ii]->GetSigmaX2()), - (Double_t)(fTofClusters[ii]->GetSigmaXY()), - (Double_t)(fTofClusters[ii]->GetSigmaXZ()), - (Double_t)(fTofClusters[ii]->GetSigmaY2()), - (Double_t)(fTofClusters[ii]->GetSigmaYZ()), - (Double_t)(fTofClusters[ii]->GetSigmaZ2()), + (Double_t)(clOr->GetSigmaX2()), + (Double_t)(clOr->GetSigmaXY()), + (Double_t)(clOr->GetSigmaXZ()), + (Double_t)(clOr->GetSigmaY2()), + (Double_t)(clOr->GetSigmaYZ()), + (Double_t)(clOr->GetSigmaZ2()), //(Double_t)covClus[0], (Double_t)covClus[1], (Double_t)covClus[2], //(Double_t)covClus[3], (Double_t)covClus[4], (Double_t)covClus[5], trackLabels, detectorIndex, parTOF, status, digitIndex); AliDebug(2, Form(" %4d %4d %f %f %f %f %f %f %f %f %f %3d %3d %3d %2d %1d %2d %1d %2d %4d %3d %3d %4d %4d %1d %4d", ii, volIdClus, posClus[0], posClus[1], posClus[2], - fTofClusters[ii]->GetSigmaX2(), - fTofClusters[ii]->GetSigmaXY(), - fTofClusters[ii]->GetSigmaXZ(), - fTofClusters[ii]->GetSigmaY2(), - fTofClusters[ii]->GetSigmaYZ(), - fTofClusters[ii]->GetSigmaZ2(), + clOr->GetSigmaX2(), + clOr->GetSigmaXY(), + clOr->GetSigmaXZ(), + clOr->GetSigmaY2(), + clOr->GetSigmaYZ(), + clOr->GetSigmaZ2(), trackLabels[0], trackLabels[1], trackLabels[2], detectorIndex[0], detectorIndex[1], detectorIndex[2], detectorIndex[3], detectorIndex[4], parTOF[0], parTOF[1], parTOF[2], parTOF[3], parTOF[4], status, digitIndex)); - + delete clOr; } for (Int_t iSector=0; iSectorGetAdc()); parTOF[3] = Int_t(digitInteresting->GetTdcND()); parTOF[4] = Int_t(digitInteresting->GetTdc()); + parTOF[5] = 0; + parTOF[6] = 0; volIdClus = fTOFGeometry->GetAliSensVolIndex(det[0],det[1],det[2]); //volIdClus = GetClusterVolIndex(det); @@ -880,8 +922,8 @@ void AliTOFClusterFinderV1::FindClustersWithoutTOT(Int_t nSector, Double_t covClus[6]; for (jj=0; jj<6; jj++) covClus[jj] = 0.; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = 0; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = 0; Bool_t status = kTRUE; //assume all sim channels ok in the beginning... Int_t tracks[kMaxNumberOfTracksPerDigit]; @@ -927,6 +969,8 @@ void AliTOFClusterFinderV1::FindClustersWithoutTOT(Int_t nSector, parTOF[2] = Int_t(digitInteresting->GetAdc()); parTOF[3] = Int_t(digitInteresting->GetTdcND()); parTOF[4] = Int_t(digitInteresting->GetTdc()); + parTOF[5] = 0; + parTOF[6] = 0; volIdClus = fTOFGeometry->GetAliSensVolIndex(det[0],det[1],det[2]); //volIdClus = GetClusterVolIndex(det); @@ -1034,8 +1078,8 @@ void AliTOFClusterFinderV1::FindClusters34(Int_t nSector, Int_t iPadX = -1; Int_t iPadZ = -1; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = 0; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = 0; Double_t posClus[3]; for (jj=0; jj<3; jj++) posClus[jj] = 0.; Int_t det[5]; @@ -1325,6 +1369,7 @@ void AliTOFClusterFinderV1::FindClusters34(Int_t nSector, for (jj=0; jj<3; jj++) indDet[jj][4] = padsCluster[2*jj+1+3]; GetClusterPars(/*check,*/ 3, indDet, interestingWeight, posClus, covClus); for (jj=0; jj<3; jj++) delete [] indDet[jj]; + delete [] indDet; // To fill the track index array dummyCounter=-1; @@ -1499,8 +1544,8 @@ void AliTOFClusterFinderV1::FindClusters23(Int_t nSector, Int_t iPadZ = -1; Bool_t check = kFALSE; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = 0; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = 0; Double_t posClus[3]; for (jj=0; jj<3; jj++) posClus[jj] = 0.; Int_t det[5]; @@ -1759,6 +1804,7 @@ void AliTOFClusterFinderV1::FindClusters23(Int_t nSector, for (jj=0; jj<2; jj++) indDet[jj][4] = padsCluster[2*jj+1+3]; GetClusterPars(/*check,*/ 2, indDet, interestingWeight, posClus, covClus); for (jj=0; jj<2; jj++) delete [] indDet[jj]; + delete [] indDet; // To fill the track index array dummyCounter=-1; @@ -1905,8 +1951,8 @@ void AliTOFClusterFinderV1::FindClusters24(Int_t nSector, Int_t iPadZ = -1; Bool_t check = kFALSE; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = 0; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = 0; Double_t posClus[3]; for (jj=0; jj<3; jj++) posClus[jj] = 0.; Int_t det[5]; @@ -2166,6 +2212,7 @@ void AliTOFClusterFinderV1::FindClusters24(Int_t nSector, for (jj=0; jj<2; jj++) indDet[jj][4] = padsCluster[2*jj+1+3]; GetClusterPars(/*check,*/ 2, indDet, interestingWeight, posClus, covClus); for (jj=0; jj<2; jj++) delete [] indDet[jj]; + delete [] indDet; // To fill the track index array dummyCounter=-1; @@ -2322,8 +2369,8 @@ void AliTOFClusterFinderV1::FindClustersPerStrip(Int_t nSector, Int_t iPadZ = -1; Bool_t check = kFALSE; - Int_t parTOF[5]; - for (jj=0; jj<5; jj++) parTOF[jj] = 0; + Int_t parTOF[7]; + for (jj=0; jj<7; jj++) parTOF[jj] = 0; Double_t posClus[3]; for (jj=0; jj<3; jj++) posClus[jj] = 0.; Int_t det[5]; @@ -2615,6 +2662,7 @@ void AliTOFClusterFinderV1::FindClustersPerStrip(Int_t nSector, for (jj=0; jjClear(); } @@ -3196,6 +3248,7 @@ void AliTOFClusterFinderV1::ResetDigits() // fNumberOfTofDigits = 0; + fNumberOfTofTrgPads = 0; if (fDigits) fDigits->Clear(); } @@ -3645,8 +3698,10 @@ void AliTOFClusterFinderV1::Digits2RecPoints(Int_t iEvent) AliLoader *localTOFLoader = (AliLoader*)fRunLoader->GetLoader("TOFLoader"); TTree * localTreeD = (TTree*)localTOFLoader->TreeD(); - if (localTreeD == 0x0) + if (localTreeD == 0x0) { AliFatal("Can not get TreeD"); + return; + } TBranch *branch = localTreeD->GetBranch("TOF"); if (!branch) { @@ -3778,5 +3833,7 @@ void AliTOFClusterFinderV1::AverageCalculations(Int_t number, Float_t *interesti parTOF[2] = Int_t(adcAverage); parTOF[3] = Int_t(tofAverage);//tofND parTOF[4] = Int_t(tofAverage);//tofRAW + parTOF[5] = 0; + parTOF[6] = 0; }