17 #include <TObjArray.h>
18 #include <TParticle.h>
19 #include <TDatabasePDG.h>
21 #include <TObjString.h>
27 #include "AliVCaloCells.h"
29 #include "AliVCluster.h"
30 #include "AliVTrack.h"
31 #include "AliVEvent.h"
32 #include "AliVEventHandler.h"
33 #include "AliAODMCParticle.h"
37 #include "AliPHOSGeoUtils.h"
38 #include "AliEMCALGeometry.h"
51 fFillAllCellTimeHisto(kTRUE),
52 fFillAllPosHisto(kFALSE), fFillAllPosHisto2(kFALSE),
54 fFillAllTMHisto(kTRUE),
55 fFillAllPi0Histo(kTRUE), fFillInvMassOpenAngle(kFALSE),
56 fFillPi0PairDiffTime(kFALSE), fFillInvMassInEMCALWithPHOSDCalAcc(kFALSE),
57 fFillEBinAcceptanceHisto(kFALSE),
58 fCorrelate(kTRUE), fStudyBadClusters(kFALSE),
59 fStudyClustersAsymmetry(kFALSE), fStudyExotic(kFALSE),
60 fStudyWeight(kFALSE), fStudyFECCorrelation(kFALSE),
61 fStudyM02Dependence (kFALSE),
64 fNModules(12), fNRCU(2),
65 fNMaxCols(48), fNMaxRows(24),
66 fTimeCutMin(-10000), fTimeCutMax(10000),
68 fEMCALCellAmpMin(0), fPHOSCellAmpMin(0),
69 fEMCALClusterNCellMin(0), fPHOSClusterNCellMin(0),
73 fInvMassMinECut(0), fInvMassMaxECut(0),
74 fInvMassMinM02Cut(0), fInvMassMaxM02Cut(0),
75 fInvMassMaxOpenAngle(0), fInvMassMaxTimeDifference(0),
78 fExoNECrossCuts(0), fExoECrossCuts(),
79 fExoNDTimeCuts(0), fExoDTimeCuts(),
81 fClusterMomentum(), fClusterMomentum2(),
83 fConstantTimeShift(0),
87 fhEtaPhi(0), fhEtaPhiE(0),
88 fhECharged(0), fhPtCharged(0),
89 fhPhiCharged(0), fhEtaCharged(0),
90 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
93 fhIM(0), fhIMSame(0), fhIMDiff(0),
94 fhIMDCAL(0), fhIMDCALSame(0), fhIMDCALDiff(0),
95 fhIMDCALPHOS(0), fhIMDCALPHOSSame(0),
96 fhIMEMCALPHOS(0), fhIMEMCALPHOSSame(0),
98 fhOpAngle(0), fhIMvsOpAngle(0),
99 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
102 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
103 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
104 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
105 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
107 fhClusterMaxCellECross(0),
108 fhLambda0(0), fhLambda1(0),
109 fhLambda0MaxFECPair(0), fhLambda1MaxFECPair(0),
110 fhLambda0MaxFECOdd(0), fhLambda1MaxFECOdd(0),
111 fhLambda0Max2FECPair(0), fhLambda1Max2FECPair(0),
112 fhLambda0Max2FECOdd(0), fhLambda1Max2FECOdd(0),
113 fhLambda0MaxFECPairLargeNCells(0), fhLambda1MaxFECPairLargeNCells(0),
114 fhLambda0MaxFECOddLargeNCells(0), fhLambda1MaxFECOddLargeNCells(0),
115 fhLambda0Max2FECPairLargeNCells(0), fhLambda1Max2FECPairLargeNCells(0),
116 fhLambda0Max2FECOddLargeNCells(0), fhLambda1Max2FECOddLargeNCells(0),
119 fhEtaPhiFECCorrControl(0),
121 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
122 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
123 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
124 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
125 fhBadClusterMaxCellECross(0),
126 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
127 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
128 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
131 fhRNCells(0), fhXNCells(0),
132 fhYNCells(0), fhZNCells(0),
136 fhRCellE(0), fhXCellE(0),
137 fhYCellE(0), fhZCellE(0),
139 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
140 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
141 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
142 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
145 fhNCells(0), fhNCellsCutAmpMin(0),
146 fhAmplitude(0), fhAmpId(0),
147 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
149 fhTimeId(0), fhTimeAmp(0),
150 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
154 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
155 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
156 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
157 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
158 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
159 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
160 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
161 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
162 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
163 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
164 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
165 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
166 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
167 fhCaloCenNCells(0), fhCaloCenECells(0),
168 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
169 fhCaloEvPNCells(0), fhCaloEvPECells(0),
172 fhEMod(0), fhAmpMod(0),
173 fhEWeirdMod(0), fhAmpWeirdMod(0),
175 fhNClustersMod(0), fhNCellsMod(0),
176 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
177 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
178 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
180 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
181 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
182 fhTimeAmpPerRCU(0), fhIMMod(0),
185 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
186 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
187 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
188 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
190 fhExoL0ECross(0), fhExoL1ECross(0),
193 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
194 fhRecoMCDeltaE(), fhRecoMCRatioE(),
195 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
198 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
199 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
202 fhEMVxyz(0), fhEMR(0),
203 fhHaVxyz(0), fhHaR(0),
204 fh1EOverP(0), fh2dR(0),
205 fh2EledEdx(0), fh2MatchdEdx(0),
206 fh1EOverPR02(0), fh1EleEOverP(0),
207 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
208 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
209 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
210 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
211 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
212 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
213 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
214 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
215 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0),
216 fhClusterTimeEnergyM02(0), fhCellTimeSpreadRespectToCellMaxM02(0),
217 fhClusterMaxCellCloseCellRatioM02(0), fhClusterMaxCellCloseCellDiffM02(0),
218 fhClusterMaxCellDiffM02(0), fhClusterMaxCellECrossM02(0), fhNCellsPerClusterM02(0)
221 for(
Int_t i =0; i < 12; i++)
223 for(
Int_t j = 0; j < 4; j++)
225 for(
Int_t k = 0; k < 3; k++)
232 for(
Int_t j = 0; j < 5; j++)
249 for (
Int_t ie = 0; ie < 10 ; ie++)
252 for (
Int_t idt = 0; idt < 5 ; idt++)
266 for(
Int_t i = 0; i < 7; i++)
277 for(
Int_t i = 0; i < 4; i++)
287 for(
Int_t i = 0; i < 14; i++)
296 for(
Int_t i = 0; i < 6; i++)
303 for(
Int_t i = 0; i < 4; i++)
344 if(phi < 0) phi += TMath::TwoPi();
355 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
357 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
359 if(clus->GetID() == clus2->GetID())
continue;
364 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
366 Double_t tof2 = clus2->GetTOF()*1.e9;
384 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
386 Int_t absId = clus->GetCellsAbsId()[ipos];
387 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
389 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
396 Double_t time = cells->GetCellTime(absId);
414 AliVCaloCells* cells,
422 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
424 Int_t id = clus->GetCellsAbsId()[ipos];
427 amp = cells->GetCellAmplitude(
id);
446 Int_t ncells = clus->GetNCells();
448 for (
Int_t ipos = 0; ipos < ncells; ipos++)
450 id = clus ->GetCellsAbsId()[ipos];
451 amp = cells->GetCellAmplitude(
id);
452 time = cells->GetCellTime(
id);
460 wTime += time*1e9 * w;
464 if(ncells > 0) aTime /= ncells;
467 if(wTot > 0) wTime /= wTot;
470 timeAverages[0] = aTime;
471 timeAverages[1] = wTime;
479 Int_t ncells = cells->GetNumberOfCells();
493 nCellsInModule[imod] = 0 ;
494 eCellsInModule[imod] = 0.;
497 Int_t icol = -1, icolAbs = -1;
498 Int_t irow = -1, irowAbs = -1;
507 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
509 if ( cells->GetCellNumber(iCell) < 0 )
continue;
511 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
517 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
519 if(nModule < fNModules)
526 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
530 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
534 amp = cells->GetAmplitude(iCell)*recalF;
535 time = cells->GetTime(iCell);
536 id = cells->GetCellNumber(iCell);
537 highG = cells->GetCellHighGain(
id);
552 AliDebug(1,Form(
"Remove cell with Time %f",time));
558 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
588 nCellsInModule[nModule]++ ;
639 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
653 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
661 Int_t relId[4], module;
669 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
689 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
700 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
702 if ( cells->GetCellNumber(iCell) < 0 )
continue;
704 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
708 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
710 if(nModule < fNModules)
717 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
721 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
725 amp = cells->GetAmplitude(iCell)*recalF;
726 time = cells->GetTime(iCell);
727 id = cells->GetCellNumber(iCell);
734 GetReader()->GetInputEvent()->GetBunchCrossNumber());
742 AliDebug(1,Form(
"Remove cell with Time %f",time));
748 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
760 if(eCellsInModule[nModule] > 0)
762 Float_t ratioMod = amp/eCellsInModule[nModule];
771 delete [] nCellsInModule;
772 delete [] eCellsInModule;
780 Int_t nCaloCellsPerCluster = clus->GetNCells();
782 UShort_t * indexList = clus->GetCellsAbsId();
785 clus->GetPosition(pos);
790 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
793 Int_t absId = indexList[ipos];
810 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
811 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
819 Int_t relId[4], module;
835 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
836 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
860 if ( matched )
return;
863 if ( clus->GetDistanceToBadChannel() < 5 )
return ;
866 Int_t etaRegion = -1, phiRegion = -1;
869 if ( etaRegion !=0 ) return ;
876 Int_t ncells = clus->GetNCells();
878 Int_t absIdCorr[] = {-1,-1,-1,-1};
888 Int_t absId2ndMax = -1;
892 for (
Int_t ipos = 0; ipos < ncells; ipos++)
894 Int_t absId = clus->GetCellsAbsId()[ipos];
896 Float_t eCell = cells->GetCellAmplitude(absId);
900 if( absId == absIdMax || weight < 0.01 )
continue;
908 for(
Int_t id = 0;
id < 4;
id++)
910 if ( absId == absIdCorr[
id] )
913 Int_t diff = TMath::Abs(absId-absIdMax);
914 if ( diff == 1 ) near = kTRUE;
915 else if( diff >= 8 ) far = kTRUE;
926 if ( nCorr == 0 ) index = 0;
929 if ( near && !far ) index = 1;
930 else if (!near && far ) index = 2;
931 else if ( near && far ) index = 3;
946 else printf(
"Max cell correl cells not found\n");
951 Int_t absIdCorrSecondary [] = {-1,-1,-1,-1};
953 for (
Int_t ipos = 0; ipos < ncells; ipos++)
955 Int_t absId = clus->GetCellsAbsId()[ipos];
960 if( absId == absIdCorr[0] || absId == absIdCorr[1] ||
961 absId == absIdCorr[2] || absId == absIdCorr[3] || weight < 0.01 )
continue;
965 if(!correlOK)
continue;
967 for (
Int_t ipos2 = ipos+1; ipos2 < ncells; ipos2++)
969 Int_t absId2 = clus->GetCellsAbsId()[ipos2];
974 if( absId2 == absIdCorr[0] || absId2 == absIdCorr[1] || absId2 == absId ||
975 absId2 == absIdCorr[2] || absId2 == absIdCorr[3] || weight < 0.01 )
continue;
977 for(
Int_t id = 0;
id < 4;
id++)
979 if ( absId2 == absIdCorrSecondary[
id] )
986 if ( counter == 1 ) distCase = 1;
987 else if ( counter >= 2 ) distCase = 2;
989 if ( nCorr > 0 ) distCase+=3;
1005 for(
Int_t id = 0;
id < 4;
id++)
1007 if ( absIdMax == absIdCorr[
id]) idMax = id;
1008 else if( absId2ndMax == absIdCorr[
id]) idMax2 = id;
1013 printf(
"something wrong, absId max not found in correlated");
1017 if(idMax == 0 || idMax == 3) pairCol = kTRUE;
1074 if( clus->GetNCells() <= 3 )
return;
1082 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1084 Int_t absId = clus->GetCellsAbsId()[ipos];
1089 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
1093 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
1097 Int_t ietaShift = ieta;
1098 Int_t ietaMaxShift = ietaMax;
1099 if (ieta > ietaMax) ietaMaxShift+=48;
1100 else ietaShift +=48;
1101 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
1105 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
1126 Int_t nLabel = clus->GetNLabels();
1127 Int_t* labels = clus->GetLabels();
1176 Double_t tof = clus->GetTOF()*1.e9;
1197 Int_t nCaloCellsPerCluster = clus->GetNCells();
1200 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
1202 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
1204 if( clus->GetID() == clus2->GetID() )
continue;
1206 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
1210 Double_t tof2 = clus2->GetTOF()*1.e9;
1215 if ( nModule2 == nModule )
1220 if(nCaloCellsPerCluster > 1)
1234 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
1236 Int_t absId = clus->GetCellsAbsId()[ipos];
1237 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
1239 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
1251 Double_t time = cells->GetCellTime(absId);
1271 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1286 Int_t icol = -1, irow = -1, iRCU = -1, icolAbs = -1, irowAbs = -1;
1315 clus->GetPosition(pos);
1327 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1350 AliVCaloCells* cells)
1353 Int_t *labels = 0x0;
1354 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1355 Int_t nCaloClustersAccepted = 0 ;
1356 Int_t nCaloCellsPerCluster = 0 ;
1368 nClustersInModule[imod] = 0;
1369 energyInModule [imod] = 0;
1375 for(
Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1377 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1379 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1386 Double_t tof = clus->GetTOF()*1.e9;
1391 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1404 nLabel = clus->GetNLabels();
1405 labels = clus->GetLabels();
1411 nCaloCellsPerCluster = clus->GetNCells();
1417 Double_t tmax = cells->GetCellTime(absIdMax);
1430 if(nModule >=0 && nModule < fNModules)
1439 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1445 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1448 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1450 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1463 maxCellFraction, eCrossFrac, tmax);
1465 nCaloClustersAccepted++;
1474 nClustersInModule[nModule]++;
1476 energyInModule [nModule] += clus->E();
1486 Int_t mcOK = kFALSE;
1488 if(
IsDataMC() && nLabel > 0 && labels)
1500 && nCaloClusters > 1
1501 && nCaloCellsPerCluster > 1
1502 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1518 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1526 delete [] nClustersInModule;
1527 delete [] energyInModule;
1537 if(!labels || nLabels<=0)
1539 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1543 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1548 if(phi < 0) phi +=TMath::TwoPi();
1550 AliAODMCParticle * aodprimary = 0x0;
1551 TParticle * primary = 0x0;
1554 Int_t label = labels[0];
1558 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1577 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1583 pdg0 = TMath::Abs(primary->GetPdgCode());
1585 status = primary->GetStatusCode();
1586 vxMC = primary->Vx();
1587 vyMC = primary->Vy();
1588 iParent = primary->GetFirstMother();
1590 AliDebug(1,
"Cluster most contributing mother:");
1591 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1599 pdg = TMath::Abs(primary->GetPdgCode());
1601 AliDebug(2,
"Converted cluster!. Find before conversion:");
1603 while((pdg == 22 || pdg == 11) && status != 1)
1605 Int_t iMotherOrg = iMother;
1608 status = primary->GetStatusCode();
1609 pdg = TMath::Abs(primary->GetPdgCode());
1610 iParent = primary->GetFirstMother();
1614 if(pdg==111 || pdg==221)
1616 primary =
GetMCStack()->Particle(iMotherOrg);
1626 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1629 AliDebug(1,
"Converted Cluster mother before conversion:");
1630 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1638 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1640 while(pdg != 111 && pdg != 221)
1645 status = primary->GetStatusCode();
1646 pdg = TMath::Abs(primary->GetPdgCode());
1647 iParent = primary->GetFirstMother();
1649 if( iParent < 0 )
break;
1651 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1655 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1660 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1663 eMC = primary->Energy();
1665 phiMC = primary->Phi();
1666 etaMC = primary->Eta();
1667 pdg = TMath::Abs(primary->GetPdgCode());
1668 charge = (
Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1671 else if(
GetReader()->ReadAODMCParticles() &&
1677 AliFatal(
"MCParticles not available!");
1681 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1683 status = aodprimary->IsPrimary();
1684 vxMC = aodprimary->Xv();
1685 vyMC = aodprimary->Yv();
1686 iParent = aodprimary->GetMother();
1688 AliDebug(1,
"Cluster most contributing mother:");
1689 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1690 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1695 AliDebug(2,
"Converted cluster!. Find before conversion:");
1699 pdg = TMath::Abs(aodprimary->GetPdgCode());
1701 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1703 Int_t iMotherOrg = iMother;
1706 status = aodprimary->IsPrimary();
1707 iParent = aodprimary->GetMother();
1708 pdg = TMath::Abs(aodprimary->GetPdgCode());
1712 if( pdg == 111 || pdg == 221 )
1724 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1725 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1728 AliDebug(1,
"Converted Cluster mother before conversion:");
1729 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1730 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1738 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1740 while(pdg != 111 && pdg != 221)
1744 status = aodprimary->IsPrimary();
1745 iParent = aodprimary->GetMother();
1746 pdg = TMath::Abs(aodprimary->GetPdgCode());
1748 if( iParent < 0 )
break;
1750 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1754 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1759 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1762 status = aodprimary->IsPrimary();
1763 eMC = aodprimary->E();
1765 phiMC = aodprimary->Phi();
1766 etaMC = aodprimary->Eta();
1767 pdg = TMath::Abs(aodprimary->GetPdgCode());
1768 charge = aodprimary->Charge();
1772 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1773 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1806 else if(charge == 0)
1821 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1832 if( primary || aodprimary )
return kTRUE ;
1848 if(phi < 0) phi +=TMath::TwoPi();
1866 Double_t dedx = track->GetTPCsignal();
1867 Int_t nITS = track->GetNcls(0);
1868 Int_t nTPC = track->GetNcls(1);
1869 Bool_t positive = kFALSE;
1870 if(track) positive = (track->Charge()>0);
1873 Float_t deta = clus->GetTrackDz();
1874 Float_t dphi = clus->GetTrackDx();
1875 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1878 if( TMath::Abs(dphi) < 999 )
1915 if(dedx > 60 && dedx < 100)
1925 if(e > 0.5 && tmom > 0.5)
1931 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1932 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1940 Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1942 if(TMath::Abs(pdg) == 11)
1966 else if(charge == 0)
1991 if(!caloClustersEMCAL || !caloClustersPHOS)
1993 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
2001 if(!cellsEMCAL || !cellsPHOS)
2003 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
2012 Float_t sumClusterEnergyEMCAL = 0;
2013 Float_t sumClusterEnergyDCAL = 0;
2014 Float_t sumClusterEnergyPHOS = 0;
2018 AliVCluster* cluster = 0;
2019 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
2021 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
2022 Float_t energy = cluster->E();
2024 if( energy < 0.5 )
continue;
2026 if(cluster->GetCellsAbsId()[0] < 12288)
2029 sumClusterEnergyEMCAL +=
energy;
2034 sumClusterEnergyDCAL +=
energy;
2038 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
2040 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
2042 energy = cluster->E();
2044 if( energy < 0.5 )
continue;
2047 sumClusterEnergyPHOS +=
energy;
2051 Int_t ncellsEMCAL = 0 ;
2052 Int_t ncellsDCAL = 0 ;
2053 Int_t ncellsPHOS = 0;
2055 Float_t sumCellEnergyEMCAL = 0;
2056 Float_t sumCellEnergyDCAL = 0;
2057 Float_t sumCellEnergyPHOS = 0;
2059 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
2061 Float_t amp = cellsEMCAL->GetAmplitude(icell);
2062 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
2069 sumCellEnergyEMCAL += amp;
2074 sumCellEnergyDCAL += amp;
2078 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
2080 Float_t amp = cellsPHOS->GetAmplitude(icell);
2081 Int_t cellId = cellsPHOS->GetCellNumber(icell);
2083 if ( cellId < 0 ) continue ;
2088 sumCellEnergyPHOS += amp;
2114 Int_t ncl = nclPHOS;
2115 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
2116 Int_t ncells = ncellsPHOS;
2117 Float_t sumCellEnergy = sumCellEnergyPHOS;
2121 ncl = nclEMCAL + nclDCAL;
2122 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
2123 ncells = ncellsEMCAL + ncellsDCAL;
2124 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
2152 AliDebug(1,
"Correlate():");
2153 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2154 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
2155 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2156 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
2157 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2158 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
2159 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
2160 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
2169 const Int_t buffersize = 255;
2170 char onePar[buffersize] ;
2172 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
2197 return new TObjString(parList) ;
2204 AliVCluster *clus, AliVCaloCells* cells)
2208 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
2215 Int_t nc = clus->GetNCells();
2248 for (
Int_t icell = 0; icell < clus->GetNCells(); icell++)
2250 Int_t absId = clus->GetCellsAbsId()[icell];
2251 Double_t time = cells->GetCellTime(absId);
2277 outputContainer->SetName(
"QAHistos") ;
2328 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2329 fhE->SetXTitle(
"#it{E} (GeV)");
2330 outputContainer->Add(
fhE);
2332 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2333 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2334 outputContainer->Add(
fhPt);
2336 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2337 fhPhi->SetXTitle(
"#phi (rad)");
2338 outputContainer->Add(
fhPhi);
2340 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2341 fhEta->SetXTitle(
"#eta ");
2342 outputContainer->Add(
fhEta);
2348 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2349 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2357 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2358 netabins,etamin,etamax,nphibins,phimin,phimax);
2366 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2372 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2378 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2383 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2384 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2385 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2386 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2389 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E",
2390 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2391 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2392 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2398 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2404 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2409 fhLambda0Max2FECPair =
new TH2F (
"hLambda0Max2FECPair",
"#lambda^{2}_{0} vs E, FEC pair eta column, 2 highest cells corr.",
2410 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2415 fhLambda1Max2FECPair =
new TH2F (
"hLambda1Max2FECPair",
"#lambda^{2}_{1} vs E, FEC pair eta column, 2 highest cells corr.",
2416 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2422 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2428 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2433 fhLambda0Max2FECOdd =
new TH2F (
"hLambda0Max2FECOdd",
"#lambda^{2}_{0} vs E, FEC odd eta column, 2 highest cells corr.",
2434 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2439 fhLambda1Max2FECOdd =
new TH2F (
"hLambda1Max2FECOdd",
"#lambda^{2}_{1} vs E, FEC odd eta column, 2 highest cells corr.",
2440 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2446 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2452 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2458 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2464 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2470 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2476 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2482 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2488 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2495 {
"No correlation with main cell",
"Main cell corr. with near cell",
2496 "Main cell corr. with far cell",
"Main cell corr. with near and far"};
2499 {
"No main cell corr., no other inside cluster" ,
"No main cell corr., 1 cell correl in cluster" ,
"No main cell corr., >=2 cell correl in cluster",
2500 "Main cell corr. & no other inside cluster" ,
"Main cell corr. & 1 cell corr. inside cluster",
"Main cell corr. & >=2 cell corr. inside cluster"};
2503 netabins,etamin,etamax,nphibins,phimin,phimax);
2508 for(
Int_t i = 0; i < 4; i++)
2511 (Form(
"hLambda0MaxFECCorrel_Case%d",i),
2512 Form(
"#lambda^{2}_{0} vs E, Max FEC correl %s",titleMaxFEC[i].
Data()),
2513 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2519 (Form(
"hLambda1MaxFECCorrel_Case%d",i),
2520 Form(
"#lambda^{2}_{1} vs E for bad cluster, Max FEC correl %s",titleMaxFEC[i].
Data()),
2521 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2527 (Form(
"hLambda0MaxFECCorrel_Case%d_LargeNCells",i),
2528 Form(
"#lambda^{2}_{0} vs E, Max FEC correl %s, ncells>5",titleMaxFEC[i].
Data()),
2529 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2535 (Form(
"hLambda1MaxFECCorrel_Case%d_LargeNCells",i),
2536 Form(
"#lambda^{2}_{1} vs E for bad cluster, Max FEC correl %s, ncells>5",titleMaxFEC[i].
Data()),
2537 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2543 for(
Int_t i = 0; i < 6; i++)
2546 (Form(
"hLambda0FECCorrel_Case%d",i),
2547 Form(
"#lambda^{2}_{0} vs E, %s",titleFEC[i].
Data()),
2548 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2554 (Form(
"hLambda1FECCorrel_Case%d",i),
2555 Form(
"#lambda^{2}_{1} vs E for bad cluster, %s",titleFEC[i].
Data()),
2556 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2562 (Form(
"hLambda0FECCorrel_Case%d_LargeNCells",i),
2563 Form(
"#lambda^{2}_{0} vs E, %s, ncells>5",titleFEC[i].
Data()),
2564 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2570 (Form(
"hLambda1FECCorrel_Case%d_LargeNCells",i),
2571 Form(
"#lambda^{2}_{1} vs E for bad cluster, %s, ncells>5",titleFEC[i].
Data()),
2572 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2586 nptbins,ptmin,ptmax, 100,0,1.);
2592 nptbins,ptmin,ptmax, 500,0,100.);
2597 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2598 nptbins,ptmin,ptmax, 500,0,1.);
2605 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2606 nptbins,ptmin,ptmax, 500,0,1.);
2612 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2613 nptbins,ptmin,ptmax, 400,-1,1.);
2621 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2627 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2647 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2653 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2658 netabins,etamin,etamax,nphibins,phimin,phimax);
2664 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2669 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2670 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2676 nptbins,ptmin,ptmax, 100,0,1.);
2682 nptbins,ptmin,ptmax, 500,0,100);
2687 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2688 nptbins,ptmin,ptmax, 500,0,1.);
2694 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2699 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2704 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2705 nptbins,ptmin,ptmax, 400,-1,1.);
2734 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2735 400,0,1,ssbins,ssmin,ssmax);
2736 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2741 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2742 400,0,1,ssbins,ssmin,ssmax);
2743 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2751 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2752 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2753 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2759 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2760 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2761 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2762 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2763 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2766 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2767 Form(
"#lambda^{2}_{0} vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2768 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2769 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2770 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2771 outputContainer->Add(
fhExoL0[ie][idt]) ;
2773 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2774 Form(
"#lambda^{2}_{1} vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2775 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2776 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2777 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2778 outputContainer->Add(
fhExoL1[ie][idt]) ;
2780 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2781 Form(
"#it{E} cross for cells vs E cell, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2782 nptbins,ptmin,ptmax,400,0,1);
2783 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2784 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2787 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2788 Form(
"Time of cluster (max cell) vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2789 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2790 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2791 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2792 outputContainer->Add(
fhExoTime[ie][idt]) ;
2795 Form(
"#lambda^{2}_{0} vs N cells per clusters for E > 5 GeV, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2796 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2802 Form(
"#lambda^{2}_{1} vs N cells per clusters for E > 5 GeV, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2803 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2815 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2821 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2827 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2833 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2834 nptbins,ptmin,ptmax,21,-1.05,1.05);
2835 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2836 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2839 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2840 ssbins,ssmin,ssmax,21,-1.05,1.05);
2842 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2845 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2846 ssbins,ssmin,ssmax,21,-1.05,1.05);
2848 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2851 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2852 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2858 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2864 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2870 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2876 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2877 nptbins,ptmin,ptmax,21,-1.05,1.05);
2878 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2879 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2882 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2883 ssbins,ssmin,ssmax,21,-1.05,1.05);
2885 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2888 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2889 ssbins,ssmin,ssmax,21,-1.05,1.05);
2891 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2894 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2895 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2901 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2902 for (
Int_t iPart = 0; iPart < 4; iPart++) {
2904 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2905 nptbins,ptmin,ptmax,21,-1.05,1.05);
2906 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2907 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2933 nptbins,ptmin,ptmax,21,-1.05,1.05);
2943 nptbins,ptmin,ptmax, 100,0,1.);
2949 nptbins,ptmin,ptmax, 100,-10,0);
2955 nptbins,ptmin,ptmax, 100,0,1.);
2961 nptbins,ptmin,ptmax, 100,-10,0);
2967 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2973 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2984 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2985 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2991 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2992 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2999 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
3000 Float_t cellTmin [] = {50.,100.,1000000.};
3002 for(
Int_t iw = 0; iw < 12; iw++)
3005 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
3007 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
3010 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns",
3011 w0, cellEmin[iEmin], cellTmin[iTmin]),
3012 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3027 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns, |#eta| < 0.15",
3028 w0, cellEmin[iEmin], cellTmin[iTmin]),
3029 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3038 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
3039 for(
Int_t imc = 0; imc < 5; imc++)
3042 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
3043 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3070 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3075 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3080 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
3085 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3090 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3095 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
3132 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
3136 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
3137 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3140 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
3144 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
3150 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
3151 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3159 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
3160 netabins,etamin,etamax,nphibins,phimin,phimax);
3166 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3168 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3171 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
3172 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
3173 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
3174 outputContainer->Add(
fh2dR) ;
3176 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3181 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3186 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3191 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3199 fh1EOverPMod =
new TH2F(
"h1EOverP_PerModule",
"TRACK matches #it{E}/#it{p}, #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",nPoverEbins,eOverPmin,eOverPmax,
fNModules,0,
fNModules);
3204 fh2dRMod =
new TH2F(
"h2dR_PerModule",
"TRACK matches #Delta #it{R}, #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",ndRbins,dRmin,dRmax,
fNModules,0,
fNModules);
3205 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
3209 fh2MatchdEdxMod =
new TH2F(
"h2MatchdEdx_PerModule",
"#it{dE/dx} vs. #it{p} for all matches, #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",ndedxbins,dedxmin,dedxmax,
fNModules,0,
fNModules);
3214 fh2EledEdxMod =
new TH2F(
"h2EledEdx_PerModule",
"#it{dE/dx} vs. #it{p} for electrons, #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",ndedxbins,dedxmin,dedxmax,
fNModules,0,
fNModules);
3219 fh1EOverPR02Mod =
new TH2F(
"h1EOverPR02_PerModule",
"TRACK matches #it{E}/#it{p}, all, #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",nPoverEbins,eOverPmin,eOverPmax,
fNModules,0,
fNModules);
3224 fh1EleEOverPMod =
new TH2F(
"h1EleEOverP_PerModule",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100), #it{E}_{cl}&#it{p}_{tr}>0.5 Gev/#it{c}",nPoverEbins,eOverPmin,eOverPmax,
fNModules,0,
fNModules);
3232 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3233 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3234 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3235 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3236 outputContainer->Add(
fhIM);
3238 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
3239 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3240 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3241 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3244 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
3245 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3246 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3247 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3252 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3253 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3254 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3255 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3258 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
3259 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3260 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3261 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3264 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
3265 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3266 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3267 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3270 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3271 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3272 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3273 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3276 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
3277 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3285 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3286 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3287 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3288 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3291 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
3292 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3301 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3307 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3315 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3321 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3328 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
3329 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3330 fhAsym->SetYTitle(
"#it{Asymmetry}");
3331 outputContainer->Add(
fhAsym);
3335 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
3336 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
3337 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3338 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
3342 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
3345 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3352 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
3353 fhXYZ->SetXTitle(
"#it{x} (cm)");
3354 fhXYZ->SetYTitle(
"#it{y} (cm)");
3355 fhXYZ->SetZTitle(
"#it{z} (cm) ");
3356 outputContainer->Add(
fhXYZ);
3358 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
3359 fhXE->SetXTitle(
"#it{x} (cm)");
3360 fhXE->SetYTitle(
"#it{E} (GeV)");
3361 outputContainer->Add(
fhXE);
3363 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
3364 fhYE->SetXTitle(
"#it{y} (cm)");
3365 fhYE->SetYTitle(
"#it{E} (GeV)");
3366 outputContainer->Add(
fhYE);
3368 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
3369 fhZE->SetXTitle(
"#it{z} (cm)");
3370 fhZE->SetYTitle(
"#it{E} (GeV)");
3371 outputContainer->Add(
fhZE);
3373 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
3374 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3375 fhRE->SetYTitle(
"#it{E} (GeV)");
3376 outputContainer->Add(
fhRE);
3378 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
3380 fhXNCells->SetYTitle(
"N cells per cluster");
3383 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
3385 fhYNCells->SetYTitle(
"N cells per cluster");
3388 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
3390 fhZNCells->SetYTitle(
"N cells per cluster");
3393 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
3394 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3395 fhRNCells->SetYTitle(
"N cells per cluster");
3401 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
3402 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3403 fhRCellE->SetYTitle(
"#it{E} (GeV)");
3406 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
3407 fhXCellE->SetXTitle(
"#it{x} (cm)");
3408 fhXCellE->SetYTitle(
"#it{E} (GeV)");
3411 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
3412 fhYCellE->SetXTitle(
"#it{y} (cm)");
3413 fhYCellE->SetYTitle(
"#it{E} (GeV)");
3416 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
3417 fhZCellE->SetXTitle(
"#it{z} (cm)");
3418 fhZCellE->SetYTitle(
"#it{E} (GeV)");
3421 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
3427 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
3428 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
3429 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
3430 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
3432 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
3437 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
3442 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
3447 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
3452 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
3453 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
3457 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
3462 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
3467 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
3475 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3483 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
3484 netabins,etamin,etamax,nphibins,phimin,phimax);
3493 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
3494 fhNCells->SetXTitle(
"#it{n}_{cells}");
3501 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
3506 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
3507 outputContainer->Add(
fhAmpId);
3535 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3536 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3537 outputContainer->Add(
fhTime);
3544 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3546 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3547 fhTimeId->SetYTitle(
"Cell Absolute Id");
3550 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3551 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3552 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3555 for(
Int_t bc = 0; bc < 4; bc++)
3558 Form(
"#it{t}_{cell} vs super-module, for BC/4=%d",bc),
3559 ntimebins,timemin,timemax,fNModules,0,fNModules);
3571 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3577 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3578 nptbins,ptmin,ptmax, 400,-1,1.);
3580 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3587 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3592 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3597 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3602 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3608 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3613 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3618 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3623 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3630 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3635 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3640 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3645 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3715 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3720 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3725 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3730 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3731 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3735 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3740 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3745 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3750 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3751 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3758 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3759 fhEMod->SetXTitle(
"#it{E} (GeV)");
3760 fhEMod->SetYTitle(
"Module");
3761 outputContainer->Add(
fhEMod);
3763 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3764 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3768 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3773 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3780 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3786 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3791 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3801 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3818 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3819 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3824 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3825 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3831 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3837 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3845 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3851 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3874 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3875 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3881 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3882 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3888 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3889 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3897 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3898 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3909 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3910 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3920 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3921 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3922 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3923 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3924 outputContainer->Add(
fhIMMod[imod]);
3931 "Photon",
"Pi0",
"Eta",
3932 "Electron",
"PhotonConv",
3933 "NeutralHadron",
"ChargedHadron" };
3937 for(
Int_t iPart = 0; iPart < 7; iPart++)
3939 for(
Int_t iCh = 0; iCh < 2; iCh++)
3942 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3943 nptbins, ptmin, ptmax, 200,0,2);
3944 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3945 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3950 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3951 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3953 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3957 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3958 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3964 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3965 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3970 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3971 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3972 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3973 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3974 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3975 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3977 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3978 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3979 nphibins,phimin,phimax, nphibins,phimin,phimax);
3980 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3981 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3984 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3985 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3986 netabins,etamin,etamax,netabins,etamin,etamax);
3987 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3988 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3995 for(
Int_t iPart = 0; iPart < 4; iPart++)
3997 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3998 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3999 nptbins,ptmin,ptmax);
4001 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
4002 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
4003 nptbins,ptmin,ptmax);
4006 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
4007 200,-1,1,360,0,TMath::TwoPi());
4009 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
4010 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
4014 outputContainer->Add(
fhGenMCE [iPart]);
4015 outputContainer->Add(
fhGenMCPt [iPart]);
4019 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
4020 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
4021 nptbins,ptmin,ptmax);
4022 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
4023 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
4024 nptbins,ptmin,ptmax);
4026 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
4027 netabins,etamin,etamax,nphibins,phimin,phimax);
4030 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
4042 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
4048 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
4054 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
4055 fhEMR->SetXTitle(
"#it{E} (GeV)");
4056 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
4057 outputContainer->Add(
fhEMR);
4059 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
4060 fhHaR->SetXTitle(
"#it{E} (GeV)");
4061 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
4062 outputContainer->Add(
fhHaR);
4066 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4071 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
4072 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
4075 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4080 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4085 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
4089 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4094 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4099 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
4103 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4108 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4113 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4118 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4123 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4128 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4133 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4145 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
4146 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4147 netabins,etamin,etamax,nphibins,phimin,phimax);
4153 (Form(
"hEBin%d_Cluster_ColRow",ie),
4154 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4155 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
4161 (Form(
"hEBin%d_Cell_ColRow",ie),
4162 Form(
"column vs row, cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4163 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
4173 11,5.5,16.5,45,-25,20,100,0.,1);
4182 11,5.5,16.5,100,-100,100,100,0.,1);
4190 11,5.5,16.5, 100,0,1.,100,0.,1);
4197 11,5.5,16.5, 100,0,100,100,0.,1);
4203 fhClusterMaxCellDiffM02 =
new TH3F (
"hClusterMaxCellDiffM02",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
4204 11,5.5,16.5, 100,0,1.,100,0.,1);
4211 "1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
4212 11,5.5,16.5, 100,0.0,1.,100,0.,1);
4219 11,5.5,16.5, 35,0.5,35.5,100,0.,1);
4229 return outputContainer;
4238 Int_t icol =-1, irow=-1,iRCU = -1;
4248 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
4255 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
4260 else if( icol == 0 && imod%2 )
4267 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
4276 Double_t tcell = cells->GetCellTime(absID);
4279 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
4280 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
4284 ecell1 = cells->GetCellAmplitude(absID1);
4286 tcell1 = cells->GetCellTime(absID1);
4292 ecell2 = cells->GetCellAmplitude(absID2);
4294 tcell2 = cells->GetCellTime(absID2);
4300 ecell3 = cells->GetCellAmplitude(absID3);
4302 tcell3 = cells->GetCellTime(absID3);
4308 ecell4 = cells->GetCellAmplitude(absID4);
4310 tcell4 = cells->GetCellTime(absID4);
4314 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
4315 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
4316 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
4317 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
4319 return ecell1+ecell2+ecell3+ecell4;
4323 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
4325 Int_t relId1[] = { imod+1, 0, irow+1, icol };
4326 Int_t relId2[] = { imod+1, 0, irow-1, icol };
4327 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
4328 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
4335 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
4337 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
4338 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
4339 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
4340 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
4342 return ecell1+ecell2+ecell3+ecell4;
4354 AliVCaloCells * cells)
4356 AliDebug(1,
"Start");
4362 Int_t nModule2 = -1;
4363 Int_t nCaloClusters = caloClusters->GetEntriesFast();
4366 if(phi1 < 0) phi1 += TMath::TwoPi();
4368 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
4371 for(
Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
4373 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4378 Double_t tof2 = clus2->GetTOF()*1.e9;
4386 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4424 if(phi2 < 0) phi2 += TMath::TwoPi();
4426 AliDebug(1,Form(
"Selected pair: pT %f, mass %f, asym %f, angle %f, diffTof %f, SM1 %d, SM2 %d\n",pairPt,mass,asym,angle,diffTof,nModule,nModule2));
4428 Bool_t inPi0Window = kFALSE;
4429 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
4431 if ( nModule < 12 && nModule2 < 12 )
4438 if ( nModule == nModule2 )
4452 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
4459 if ( nModule == nModule2 )
4475 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
4489 AliDebug(1,
"Check DCal-PHOS pairs\n");
4494 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
4495 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
4496 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
4506 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4524 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4526 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
4527 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
4528 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
4540 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
4545 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
4546 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
4547 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
4548 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
4549 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
4550 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
4552 for(
Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
4554 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4559 Double_t tof2 = clus2->GetTOF()*1.e9;
4562 Double_t diffTof = TMath::Abs(tof1-tof2);
4566 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4591 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4593 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
4594 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
4595 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
4596 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
4597 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
4598 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4673 Int_t nCellsPerCluster, AliVCaloCells* cells)
4682 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4695 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4698 if(ampMax < 0.01)
return kFALSE;
4700 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4713 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;