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),
100 fhNCellsPerClusterWithWeight(0), fhNCellsPerClusterRatioWithWeight(0),
104 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
105 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
106 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
107 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
109 fhClusterMaxCellECross(0),
110 fhLambda0(0), fhLambda1(0),
111 fhLambda0MaxFECPair(0), fhLambda1MaxFECPair(0),
112 fhLambda0MaxFECOdd(0), fhLambda1MaxFECOdd(0),
113 fhLambda0Max2FECPair(0), fhLambda1Max2FECPair(0),
114 fhLambda0Max2FECOdd(0), fhLambda1Max2FECOdd(0),
115 fhLambda0MaxFECPairLargeNCells(0), fhLambda1MaxFECPairLargeNCells(0),
116 fhLambda0MaxFECOddLargeNCells(0), fhLambda1MaxFECOddLargeNCells(0),
117 fhLambda0Max2FECPairLargeNCells(0), fhLambda1Max2FECPairLargeNCells(0),
118 fhLambda0Max2FECOddLargeNCells(0), fhLambda1Max2FECOddLargeNCells(0),
121 fhEtaPhiFECCorrControl(0),
123 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
124 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
125 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
126 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
127 fhBadClusterMaxCellECross(0),
128 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
129 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
130 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
133 fhRNCells(0), fhXNCells(0),
134 fhYNCells(0), fhZNCells(0),
138 fhRCellE(0), fhXCellE(0),
139 fhYCellE(0), fhZCellE(0),
141 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
142 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
143 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
144 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
147 fhNCells(0), fhNCellsCutAmpMin(0),
148 fhAmplitude(0), fhAmpId(0),
149 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
151 fhTimeId(0), fhTimeAmp(0),
152 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
156 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
157 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
158 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
159 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
160 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
161 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
162 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
163 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
164 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
165 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
166 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
167 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
168 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
169 fhCaloCenNCells(0), fhCaloCenECells(0),
170 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
171 fhCaloEvPNCells(0), fhCaloEvPECells(0),
174 fhEMod(0), fhAmpMod(0),
175 fhEWeirdMod(0), fhAmpWeirdMod(0),
177 fhNClustersMod(0), fhNCellsMod(0),
178 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
179 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
180 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
182 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
183 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
184 fhTimeAmpPerRCU(0), fhIMMod(0),
187 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
188 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
189 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
190 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
192 fhExoL0ECross(0), fhExoL1ECross(0),
195 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
196 fhRecoMCDeltaE(), fhRecoMCRatioE(),
197 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
200 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
201 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
204 fhEMVxyz(0), fhEMR(0),
205 fhHaVxyz(0), fhHaR(0),
206 fh1EOverP(0), fh2dR(0),
207 fh2EledEdx(0), fh2MatchdEdx(0),
208 fh1EOverPR02(0), fh1EleEOverP(0),
209 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
210 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
211 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
212 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
213 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
214 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
215 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
216 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
217 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0),
218 fhClusterTimeEnergyM02(0), fhCellTimeSpreadRespectToCellMaxM02(0),
219 fhClusterMaxCellCloseCellRatioM02(0), fhClusterMaxCellCloseCellDiffM02(0),
220 fhClusterMaxCellDiffM02(0), fhClusterMaxCellECrossM02(0), fhNCellsPerClusterM02(0)
223 for(
Int_t i =0; i < 12; i++)
225 for(
Int_t j = 0; j < 4; j++)
227 for(
Int_t k = 0; k < 3; k++)
234 for(
Int_t j = 0; j < 5; j++)
251 for (
Int_t ie = 0; ie < 10 ; ie++)
254 for (
Int_t idt = 0; idt < 5 ; idt++)
268 for(
Int_t i = 0; i < 7; i++)
279 for(
Int_t i = 0; i < 4; i++)
289 for(
Int_t i = 0; i < 14; i++)
298 for(
Int_t i = 0; i < 6; i++)
305 for(
Int_t i = 0; i < 4; i++)
346 if(phi < 0) phi += TMath::TwoPi();
357 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
359 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
361 if(clus->GetID() == clus2->GetID())
continue;
366 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
368 Double_t tof2 = clus2->GetTOF()*1.e9;
386 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
388 Int_t absId = clus->GetCellsAbsId()[ipos];
389 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
391 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
398 Double_t time = cells->GetCellTime(absId);
416 AliVCaloCells* cells,
424 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
426 Int_t id = clus->GetCellsAbsId()[ipos];
429 amp = cells->GetCellAmplitude(
id);
448 Int_t ncells = clus->GetNCells();
450 for (
Int_t ipos = 0; ipos < ncells; ipos++)
452 id = clus ->GetCellsAbsId()[ipos];
453 amp = cells->GetCellAmplitude(
id);
454 time = cells->GetCellTime(
id);
462 wTime += time*1e9 * w;
466 if(ncells > 0) aTime /= ncells;
469 if(wTot > 0) wTime /= wTot;
472 timeAverages[0] = aTime;
473 timeAverages[1] = wTime;
481 Int_t ncells = cells->GetNumberOfCells();
495 nCellsInModule[imod] = 0 ;
496 eCellsInModule[imod] = 0.;
499 Int_t icol = -1, icolAbs = -1;
500 Int_t irow = -1, irowAbs = -1;
509 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
511 if ( cells->GetCellNumber(iCell) < 0 )
continue;
513 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
519 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
521 if(nModule < fNModules)
528 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
532 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
536 amp = cells->GetAmplitude(iCell)*recalF;
537 time = cells->GetTime(iCell);
538 id = cells->GetCellNumber(iCell);
539 highG = cells->GetCellHighGain(
id);
554 AliDebug(1,Form(
"Remove cell with Time %f",time));
560 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
590 nCellsInModule[nModule]++ ;
641 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
655 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
663 Int_t relId[4], module;
671 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
691 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
702 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
704 if ( cells->GetCellNumber(iCell) < 0 )
continue;
706 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
710 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
712 if(nModule < fNModules)
719 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
723 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
727 amp = cells->GetAmplitude(iCell)*recalF;
728 time = cells->GetTime(iCell);
729 id = cells->GetCellNumber(iCell);
736 GetReader()->GetInputEvent()->GetBunchCrossNumber());
744 AliDebug(1,Form(
"Remove cell with Time %f",time));
750 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
762 if(eCellsInModule[nModule] > 0)
764 Float_t ratioMod = amp/eCellsInModule[nModule];
773 delete [] nCellsInModule;
774 delete [] eCellsInModule;
782 Int_t nCaloCellsPerCluster = clus->GetNCells();
784 UShort_t * indexList = clus->GetCellsAbsId();
787 clus->GetPosition(pos);
792 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
795 Int_t absId = indexList[ipos];
812 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
813 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
821 Int_t relId[4], module;
837 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
838 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
862 if ( matched )
return;
865 if ( clus->GetDistanceToBadChannel() < 5 )
return ;
868 Int_t etaRegion = -1, phiRegion = -1;
871 if ( etaRegion !=0 ) return ;
878 Int_t ncells = clus->GetNCells();
880 Int_t absIdCorr[] = {-1,-1,-1,-1};
887 Int_t nCellWithWeight = 1;
891 Int_t absId2ndMax = -1;
895 for (
Int_t ipos = 0; ipos < ncells; ipos++)
897 Int_t absId = clus->GetCellsAbsId()[ipos];
899 Float_t eCell = cells->GetCellAmplitude(absId);
903 if( absId == absIdMax || weight < 0.01 )
continue;
913 for(
Int_t id = 0;
id < 4;
id++)
915 if ( absId == absIdCorr[
id] )
918 Int_t diff = TMath::Abs(absId-absIdMax);
919 if ( diff == 1 ) near = kTRUE;
920 else if( diff >= 8 ) far = kTRUE;
926 Float_t ratioNcells = nCellWithWeight/(ncells*1.);
936 if ( nCorr == 0 ) index = 0;
939 if ( near && !far ) index = 1;
940 else if (!near && far ) index = 2;
941 else if ( near && far ) index = 3;
949 if(nCellWithWeight > 3)
956 else printf(
"Max cell correl cells not found\n");
961 Int_t absIdCorrSecondary [] = {-1,-1,-1,-1};
963 for (
Int_t ipos = 0; ipos < ncells; ipos++)
965 Int_t absId = clus->GetCellsAbsId()[ipos];
970 if( absId == absIdCorr[0] || absId == absIdCorr[1] ||
971 absId == absIdCorr[2] || absId == absIdCorr[3] || weight < 0.01 )
continue;
975 if(!correlOK)
continue;
977 for (
Int_t ipos2 = ipos+1; ipos2 < ncells; ipos2++)
979 Int_t absId2 = clus->GetCellsAbsId()[ipos2];
984 if( absId2 == absIdCorr[0] || absId2 == absIdCorr[1] || absId2 == absId ||
985 absId2 == absIdCorr[2] || absId2 == absIdCorr[3] || weight < 0.01 )
continue;
987 for(
Int_t id = 0;
id < 4;
id++)
989 if ( absId2 == absIdCorrSecondary[
id] )
996 if ( counter == 1 ) distCase = 1;
997 else if ( counter >= 2 ) distCase = 2;
999 if ( nCorr > 0 ) distCase+=3;
1003 if(nCellWithWeight > 3)
1015 for(
Int_t id = 0;
id < 4;
id++)
1017 if ( absIdMax == absIdCorr[
id]) idMax = id;
1018 else if( absId2ndMax == absIdCorr[
id]) idMax2 = id;
1023 printf(
"something wrong, absId max not found in correlated");
1027 if(idMax == 0 || idMax == 3) pairCol = kTRUE;
1051 if(nCellWithWeight > 3)
1084 if( clus->GetNCells() <= 3 )
return;
1092 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1094 Int_t absId = clus->GetCellsAbsId()[ipos];
1099 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
1103 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
1107 Int_t ietaShift = ieta;
1108 Int_t ietaMaxShift = ietaMax;
1109 if (ieta > ietaMax) ietaMaxShift+=48;
1110 else ietaShift +=48;
1111 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
1115 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
1136 Int_t nLabel = clus->GetNLabels();
1137 Int_t* labels = clus->GetLabels();
1186 Double_t tof = clus->GetTOF()*1.e9;
1207 Int_t nCaloCellsPerCluster = clus->GetNCells();
1210 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
1212 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
1214 if( clus->GetID() == clus2->GetID() )
continue;
1216 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
1220 Double_t tof2 = clus2->GetTOF()*1.e9;
1225 if ( nModule2 == nModule )
1230 if(nCaloCellsPerCluster > 1)
1244 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
1246 Int_t absId = clus->GetCellsAbsId()[ipos];
1247 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
1249 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
1261 Double_t time = cells->GetCellTime(absId);
1281 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1296 Int_t icol = -1, irow = -1, iRCU = -1, icolAbs = -1, irowAbs = -1;
1325 clus->GetPosition(pos);
1337 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1360 AliVCaloCells* cells)
1363 Int_t *labels = 0x0;
1364 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1365 Int_t nCaloClustersAccepted = 0 ;
1366 Int_t nCaloCellsPerCluster = 0 ;
1378 nClustersInModule[imod] = 0;
1379 energyInModule [imod] = 0;
1385 for(
Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1387 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1389 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1396 Double_t tof = clus->GetTOF()*1.e9;
1401 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1414 nLabel = clus->GetNLabels();
1415 labels = clus->GetLabels();
1421 nCaloCellsPerCluster = clus->GetNCells();
1427 Double_t tmax = cells->GetCellTime(absIdMax);
1440 if(nModule >=0 && nModule < fNModules)
1449 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1455 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1458 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1460 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1473 maxCellFraction, eCrossFrac, tmax);
1475 nCaloClustersAccepted++;
1484 nClustersInModule[nModule]++;
1486 energyInModule [nModule] += clus->E();
1496 Int_t mcOK = kFALSE;
1498 if(
IsDataMC() && nLabel > 0 && labels)
1510 && nCaloClusters > 1
1511 && nCaloCellsPerCluster > 1
1512 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1528 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1536 delete [] nClustersInModule;
1537 delete [] energyInModule;
1547 if(!labels || nLabels<=0)
1549 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1553 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1558 if(phi < 0) phi +=TMath::TwoPi();
1560 AliAODMCParticle * aodprimary = 0x0;
1561 TParticle * primary = 0x0;
1564 Int_t label = labels[0];
1568 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1587 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1593 pdg0 = TMath::Abs(primary->GetPdgCode());
1595 status = primary->GetStatusCode();
1596 vxMC = primary->Vx();
1597 vyMC = primary->Vy();
1598 iParent = primary->GetFirstMother();
1600 AliDebug(1,
"Cluster most contributing mother:");
1601 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1609 pdg = TMath::Abs(primary->GetPdgCode());
1611 AliDebug(2,
"Converted cluster!. Find before conversion:");
1613 while((pdg == 22 || pdg == 11) && status != 1)
1615 Int_t iMotherOrg = iMother;
1618 status = primary->GetStatusCode();
1619 pdg = TMath::Abs(primary->GetPdgCode());
1620 iParent = primary->GetFirstMother();
1624 if(pdg==111 || pdg==221)
1626 primary =
GetMCStack()->Particle(iMotherOrg);
1636 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1639 AliDebug(1,
"Converted Cluster mother before conversion:");
1640 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1648 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1650 while(pdg != 111 && pdg != 221)
1655 status = primary->GetStatusCode();
1656 pdg = TMath::Abs(primary->GetPdgCode());
1657 iParent = primary->GetFirstMother();
1659 if( iParent < 0 )
break;
1661 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1665 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1670 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1673 eMC = primary->Energy();
1675 phiMC = primary->Phi();
1676 etaMC = primary->Eta();
1677 pdg = TMath::Abs(primary->GetPdgCode());
1678 charge = (
Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1681 else if(
GetReader()->ReadAODMCParticles() &&
1687 AliFatal(
"MCParticles not available!");
1691 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1693 status = aodprimary->IsPrimary();
1694 vxMC = aodprimary->Xv();
1695 vyMC = aodprimary->Yv();
1696 iParent = aodprimary->GetMother();
1698 AliDebug(1,
"Cluster most contributing mother:");
1699 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1700 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1705 AliDebug(2,
"Converted cluster!. Find before conversion:");
1709 pdg = TMath::Abs(aodprimary->GetPdgCode());
1711 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1713 Int_t iMotherOrg = iMother;
1716 status = aodprimary->IsPrimary();
1717 iParent = aodprimary->GetMother();
1718 pdg = TMath::Abs(aodprimary->GetPdgCode());
1722 if( pdg == 111 || pdg == 221 )
1734 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1735 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1738 AliDebug(1,
"Converted Cluster mother before conversion:");
1739 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1740 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1748 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1750 while(pdg != 111 && pdg != 221)
1754 status = aodprimary->IsPrimary();
1755 iParent = aodprimary->GetMother();
1756 pdg = TMath::Abs(aodprimary->GetPdgCode());
1758 if( iParent < 0 )
break;
1760 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1764 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1769 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1772 status = aodprimary->IsPrimary();
1773 eMC = aodprimary->E();
1775 phiMC = aodprimary->Phi();
1776 etaMC = aodprimary->Eta();
1777 pdg = TMath::Abs(aodprimary->GetPdgCode());
1778 charge = aodprimary->Charge();
1782 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1783 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1816 else if(charge == 0)
1831 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1842 if( primary || aodprimary )
return kTRUE ;
1858 if(phi < 0) phi +=TMath::TwoPi();
1876 Double_t dedx = track->GetTPCsignal();
1877 Int_t nITS = track->GetNcls(0);
1878 Int_t nTPC = track->GetNcls(1);
1879 Bool_t positive = kFALSE;
1880 if(track) positive = (track->Charge()>0);
1883 Float_t deta = clus->GetTrackDz();
1884 Float_t dphi = clus->GetTrackDx();
1885 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1888 if( TMath::Abs(dphi) < 999 )
1925 if(dedx > 60 && dedx < 100)
1935 if(e > 0.5 && tmom > 0.5)
1941 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1942 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1950 Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1952 if(TMath::Abs(pdg) == 11)
1976 else if(charge == 0)
2001 if(!caloClustersEMCAL || !caloClustersPHOS)
2003 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
2011 if(!cellsEMCAL || !cellsPHOS)
2013 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
2022 Float_t sumClusterEnergyEMCAL = 0;
2023 Float_t sumClusterEnergyDCAL = 0;
2024 Float_t sumClusterEnergyPHOS = 0;
2028 AliVCluster* cluster = 0;
2029 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
2031 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
2032 Float_t energy = cluster->E();
2034 if( energy < 0.5 )
continue;
2036 if(cluster->GetCellsAbsId()[0] < 12288)
2039 sumClusterEnergyEMCAL +=
energy;
2044 sumClusterEnergyDCAL +=
energy;
2048 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
2050 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
2052 energy = cluster->E();
2054 if( energy < 0.5 )
continue;
2057 sumClusterEnergyPHOS +=
energy;
2061 Int_t ncellsEMCAL = 0 ;
2062 Int_t ncellsDCAL = 0 ;
2063 Int_t ncellsPHOS = 0;
2065 Float_t sumCellEnergyEMCAL = 0;
2066 Float_t sumCellEnergyDCAL = 0;
2067 Float_t sumCellEnergyPHOS = 0;
2069 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
2071 Float_t amp = cellsEMCAL->GetAmplitude(icell);
2072 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
2079 sumCellEnergyEMCAL += amp;
2084 sumCellEnergyDCAL += amp;
2088 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
2090 Float_t amp = cellsPHOS->GetAmplitude(icell);
2091 Int_t cellId = cellsPHOS->GetCellNumber(icell);
2093 if ( cellId < 0 ) continue ;
2098 sumCellEnergyPHOS += amp;
2124 Int_t ncl = nclPHOS;
2125 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
2126 Int_t ncells = ncellsPHOS;
2127 Float_t sumCellEnergy = sumCellEnergyPHOS;
2131 ncl = nclEMCAL + nclDCAL;
2132 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
2133 ncells = ncellsEMCAL + ncellsDCAL;
2134 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
2162 AliDebug(1,
"Correlate():");
2163 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2164 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
2165 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2166 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
2167 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
2168 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
2169 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
2170 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
2179 const Int_t buffersize = 255;
2180 char onePar[buffersize] ;
2182 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
2207 return new TObjString(parList) ;
2214 AliVCluster *clus, AliVCaloCells* cells)
2218 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
2225 Int_t nc = clus->GetNCells();
2258 for (
Int_t icell = 0; icell < clus->GetNCells(); icell++)
2260 Int_t absId = clus->GetCellsAbsId()[icell];
2261 Double_t time = cells->GetCellTime(absId);
2287 outputContainer->SetName(
"QAHistos") ;
2338 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2339 fhE->SetXTitle(
"#it{E} (GeV)");
2340 outputContainer->Add(
fhE);
2342 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2343 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2344 outputContainer->Add(
fhPt);
2346 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2347 fhPhi->SetXTitle(
"#phi (rad)");
2348 outputContainer->Add(
fhPhi);
2350 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2351 fhEta->SetXTitle(
"#eta ");
2352 outputContainer->Add(
fhEta);
2358 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2359 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2367 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2368 netabins,etamin,etamax,nphibins,phimin,phimax);
2376 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2382 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2388 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2393 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2394 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2395 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2396 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2399 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E",
2400 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2401 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2402 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2408 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2414 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2419 fhLambda0Max2FECPair =
new TH2F (
"hLambda0Max2FECPair",
"#lambda^{2}_{0} vs E, FEC pair eta column, 2 highest cells corr.",
2420 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2425 fhLambda1Max2FECPair =
new TH2F (
"hLambda1Max2FECPair",
"#lambda^{2}_{1} vs E, FEC pair eta column, 2 highest cells corr.",
2426 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2432 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2438 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2443 fhLambda0Max2FECOdd =
new TH2F (
"hLambda0Max2FECOdd",
"#lambda^{2}_{0} vs E, FEC odd eta column, 2 highest cells corr.",
2444 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2449 fhLambda1Max2FECOdd =
new TH2F (
"hLambda1Max2FECOdd",
"#lambda^{2}_{1} vs E, FEC odd eta column, 2 highest cells corr.",
2450 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2456 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2462 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2468 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2474 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2480 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2486 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2492 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2498 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2505 {
"No correlation with main cell",
"Main cell corr. with near cell",
2506 "Main cell corr. with far cell",
"Main cell corr. with near and far"};
2509 {
"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",
2510 "Main cell corr. & no other inside cluster" ,
"Main cell corr. & 1 cell corr. inside cluster",
"Main cell corr. & >=2 cell corr. inside cluster"};
2513 netabins,etamin,etamax,nphibins,phimin,phimax);
2518 for(
Int_t i = 0; i < 4; i++)
2521 (Form(
"hLambda0MaxFECCorrel_Case%d",i),
2522 Form(
"#lambda^{2}_{0} vs E, Max FEC correl %s",titleMaxFEC[i].
Data()),
2523 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2529 (Form(
"hLambda1MaxFECCorrel_Case%d",i),
2530 Form(
"#lambda^{2}_{1} vs E for bad cluster, Max FEC correl %s",titleMaxFEC[i].
Data()),
2531 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2537 (Form(
"hLambda0MaxFECCorrel_Case%d_LargeNCells",i),
2538 Form(
"#lambda^{2}_{0} vs E, Max FEC correl %s, ncells>5",titleMaxFEC[i].
Data()),
2539 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2545 (Form(
"hLambda1MaxFECCorrel_Case%d_LargeNCells",i),
2546 Form(
"#lambda^{2}_{1} vs E for bad cluster, Max FEC correl %s, ncells>5",titleMaxFEC[i].
Data()),
2547 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2553 for(
Int_t i = 0; i < 6; i++)
2556 (Form(
"hLambda0FECCorrel_Case%d",i),
2557 Form(
"#lambda^{2}_{0} vs E, %s",titleFEC[i].
Data()),
2558 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2564 (Form(
"hLambda1FECCorrel_Case%d",i),
2565 Form(
"#lambda^{2}_{1} vs E for bad cluster, %s",titleFEC[i].
Data()),
2566 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2572 (Form(
"hLambda0FECCorrel_Case%d_LargeNCells",i),
2573 Form(
"#lambda^{2}_{0} vs E, %s, ncells>5",titleFEC[i].
Data()),
2574 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2580 (Form(
"hLambda1FECCorrel_Case%d_LargeNCells",i),
2581 Form(
"#lambda^{2}_{1} vs E for bad cluster, %s, ncells>5",titleFEC[i].
Data()),
2582 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2596 nptbins,ptmin,ptmax, 100,0,1.);
2602 nptbins,ptmin,ptmax, 500,0,100.);
2607 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2608 nptbins,ptmin,ptmax, 500,0,1.);
2615 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2616 nptbins,ptmin,ptmax, 500,0,1.);
2622 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2623 nptbins,ptmin,ptmax, 400,-1,1.);
2631 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2637 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2645 (
"hNCellsPerClusterWithWeight",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2651 (
"hNCellsPerClusterRatioWithWeight",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, 100,0,1);
2672 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2678 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2683 netabins,etamin,etamax,nphibins,phimin,phimax);
2689 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2694 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2695 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2701 nptbins,ptmin,ptmax, 100,0,1.);
2707 nptbins,ptmin,ptmax, 500,0,100);
2712 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2713 nptbins,ptmin,ptmax, 500,0,1.);
2719 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2724 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2729 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2730 nptbins,ptmin,ptmax, 400,-1,1.);
2759 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2760 400,0,1,ssbins,ssmin,ssmax);
2761 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2766 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2767 400,0,1,ssbins,ssmin,ssmax);
2768 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2776 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2777 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2778 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2784 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2785 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2786 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2787 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2788 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2791 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2792 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]),
2793 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2794 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2795 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2796 outputContainer->Add(
fhExoL0[ie][idt]) ;
2798 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2799 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]),
2800 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2801 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2802 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2803 outputContainer->Add(
fhExoL1[ie][idt]) ;
2805 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2806 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]),
2807 nptbins,ptmin,ptmax,400,0,1);
2808 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2809 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2812 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2813 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]),
2814 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2815 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2816 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2817 outputContainer->Add(
fhExoTime[ie][idt]) ;
2820 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]),
2821 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2827 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]),
2828 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2840 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2846 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2852 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2858 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2859 nptbins,ptmin,ptmax,21,-1.05,1.05);
2860 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2861 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2864 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2865 ssbins,ssmin,ssmax,21,-1.05,1.05);
2867 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2870 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2871 ssbins,ssmin,ssmax,21,-1.05,1.05);
2873 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2876 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2877 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2883 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2889 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2895 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2901 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2902 nptbins,ptmin,ptmax,21,-1.05,1.05);
2903 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2904 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2907 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2908 ssbins,ssmin,ssmax,21,-1.05,1.05);
2910 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2913 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2914 ssbins,ssmin,ssmax,21,-1.05,1.05);
2916 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2919 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2920 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2926 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2927 for (
Int_t iPart = 0; iPart < 4; iPart++) {
2929 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2930 nptbins,ptmin,ptmax,21,-1.05,1.05);
2931 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2932 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2958 nptbins,ptmin,ptmax,21,-1.05,1.05);
2968 nptbins,ptmin,ptmax, 100,0,1.);
2974 nptbins,ptmin,ptmax, 100,-10,0);
2980 nptbins,ptmin,ptmax, 100,0,1.);
2986 nptbins,ptmin,ptmax, 100,-10,0);
2992 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2998 nptbins*2,ptmin,ptmax*2, 100,-10,0);
3009 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
3010 nptbins*2,ptmin,ptmax*2, 100,0,1.);
3016 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
3017 nptbins*2,ptmin,ptmax*2, 100,-10,0);
3024 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
3025 Float_t cellTmin [] = {50.,100.,1000000.};
3027 for(
Int_t iw = 0; iw < 12; iw++)
3030 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
3032 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
3035 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns",
3036 w0, cellEmin[iEmin], cellTmin[iTmin]),
3037 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3052 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns, |#eta| < 0.15",
3053 w0, cellEmin[iEmin], cellTmin[iTmin]),
3054 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3063 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
3064 for(
Int_t imc = 0; imc < 5; imc++)
3067 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
3068 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3095 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3100 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3105 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
3110 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3115 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3120 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
3157 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
3161 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
3162 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3165 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
3169 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
3175 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
3176 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3184 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
3185 netabins,etamin,etamax,nphibins,phimin,phimax);
3191 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3193 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3196 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
3197 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
3198 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
3199 outputContainer->Add(
fh2dR) ;
3201 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3206 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3211 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3216 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3224 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);
3229 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);
3230 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
3234 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);
3239 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);
3244 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);
3249 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);
3257 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3258 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3259 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3260 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3261 outputContainer->Add(
fhIM);
3263 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
3264 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3265 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3266 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3269 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
3270 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3271 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3272 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3277 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3278 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3279 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3280 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3283 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
3284 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3285 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3286 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3289 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
3290 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3291 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3292 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3295 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3296 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3297 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3298 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3301 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
3302 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3310 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
3311 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3312 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3313 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3316 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
3317 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3326 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3332 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3340 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3346 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3353 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
3354 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3355 fhAsym->SetYTitle(
"#it{Asymmetry}");
3356 outputContainer->Add(
fhAsym);
3360 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
3361 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
3362 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3363 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
3367 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
3370 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
3377 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
3378 fhXYZ->SetXTitle(
"#it{x} (cm)");
3379 fhXYZ->SetYTitle(
"#it{y} (cm)");
3380 fhXYZ->SetZTitle(
"#it{z} (cm) ");
3381 outputContainer->Add(
fhXYZ);
3383 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
3384 fhXE->SetXTitle(
"#it{x} (cm)");
3385 fhXE->SetYTitle(
"#it{E} (GeV)");
3386 outputContainer->Add(
fhXE);
3388 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
3389 fhYE->SetXTitle(
"#it{y} (cm)");
3390 fhYE->SetYTitle(
"#it{E} (GeV)");
3391 outputContainer->Add(
fhYE);
3393 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
3394 fhZE->SetXTitle(
"#it{z} (cm)");
3395 fhZE->SetYTitle(
"#it{E} (GeV)");
3396 outputContainer->Add(
fhZE);
3398 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
3399 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3400 fhRE->SetYTitle(
"#it{E} (GeV)");
3401 outputContainer->Add(
fhRE);
3403 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
3405 fhXNCells->SetYTitle(
"N cells per cluster");
3408 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
3410 fhYNCells->SetYTitle(
"N cells per cluster");
3413 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
3415 fhZNCells->SetYTitle(
"N cells per cluster");
3418 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
3419 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3420 fhRNCells->SetYTitle(
"N cells per cluster");
3426 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
3427 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
3428 fhRCellE->SetYTitle(
"#it{E} (GeV)");
3431 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
3432 fhXCellE->SetXTitle(
"#it{x} (cm)");
3433 fhXCellE->SetYTitle(
"#it{E} (GeV)");
3436 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
3437 fhYCellE->SetXTitle(
"#it{y} (cm)");
3438 fhYCellE->SetYTitle(
"#it{E} (GeV)");
3441 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
3442 fhZCellE->SetXTitle(
"#it{z} (cm)");
3443 fhZCellE->SetYTitle(
"#it{E} (GeV)");
3446 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
3452 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
3453 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
3454 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
3455 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
3457 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
3462 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
3467 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
3472 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
3477 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
3478 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
3482 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
3487 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
3492 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
3500 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3508 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
3509 netabins,etamin,etamax,nphibins,phimin,phimax);
3518 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
3519 fhNCells->SetXTitle(
"#it{n}_{cells}");
3526 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
3531 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
3532 outputContainer->Add(
fhAmpId);
3560 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3561 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3562 outputContainer->Add(
fhTime);
3569 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3571 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3572 fhTimeId->SetYTitle(
"Cell Absolute Id");
3575 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3576 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3577 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3580 for(
Int_t bc = 0; bc < 4; bc++)
3583 Form(
"#it{t}_{cell} vs super-module, for BC/4=%d",bc),
3584 ntimebins,timemin,timemax,fNModules,0,fNModules);
3596 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3602 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3603 nptbins,ptmin,ptmax, 400,-1,1.);
3605 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3612 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3617 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3622 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3627 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3633 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3638 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3643 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3648 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3655 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3660 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3665 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3670 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3740 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3745 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3750 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3755 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3756 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3760 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3765 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3770 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3775 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3776 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3783 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3784 fhEMod->SetXTitle(
"#it{E} (GeV)");
3785 fhEMod->SetYTitle(
"Module");
3786 outputContainer->Add(
fhEMod);
3788 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3789 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3793 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3798 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3805 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3811 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3816 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3826 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3843 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3844 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3849 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3850 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3856 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3862 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3870 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3876 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3899 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3900 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3906 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3907 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3913 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3914 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3922 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3923 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3934 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3935 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3945 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3946 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3947 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3948 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3949 outputContainer->Add(
fhIMMod[imod]);
3956 "Photon",
"Pi0",
"Eta",
3957 "Electron",
"PhotonConv",
3958 "NeutralHadron",
"ChargedHadron" };
3962 for(
Int_t iPart = 0; iPart < 7; iPart++)
3964 for(
Int_t iCh = 0; iCh < 2; iCh++)
3967 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3968 nptbins, ptmin, ptmax, 200,0,2);
3969 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3970 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3975 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3976 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3978 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3982 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3983 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3989 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3990 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3995 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3996 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3997 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3998 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3999 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
4000 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
4002 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
4003 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
4004 nphibins,phimin,phimax, nphibins,phimin,phimax);
4005 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
4006 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
4009 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
4010 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
4011 netabins,etamin,etamax,netabins,etamin,etamax);
4012 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
4013 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
4020 for(
Int_t iPart = 0; iPart < 4; iPart++)
4022 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
4023 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
4024 nptbins,ptmin,ptmax);
4026 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
4027 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
4028 nptbins,ptmin,ptmax);
4031 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
4032 200,-1,1,360,0,TMath::TwoPi());
4034 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
4035 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
4039 outputContainer->Add(
fhGenMCE [iPart]);
4040 outputContainer->Add(
fhGenMCPt [iPart]);
4044 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
4045 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
4046 nptbins,ptmin,ptmax);
4047 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
4048 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
4049 nptbins,ptmin,ptmax);
4051 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
4052 netabins,etamin,etamax,nphibins,phimin,phimax);
4055 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
4067 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
4073 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
4079 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
4080 fhEMR->SetXTitle(
"#it{E} (GeV)");
4081 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
4082 outputContainer->Add(
fhEMR);
4084 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
4085 fhHaR->SetXTitle(
"#it{E} (GeV)");
4086 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
4087 outputContainer->Add(
fhHaR);
4091 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4096 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
4097 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
4100 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4105 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4110 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
4114 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4119 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4124 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
4128 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
4133 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4138 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4143 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4148 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4153 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4158 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
4170 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
4171 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4172 netabins,etamin,etamax,nphibins,phimin,phimax);
4178 (Form(
"hEBin%d_Cluster_ColRow",ie),
4179 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4180 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
4186 (Form(
"hEBin%d_Cell_ColRow",ie),
4187 Form(
"column vs row, cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
4188 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
4198 11,5.5,16.5,45,-25,20,100,0.,1);
4207 11,5.5,16.5,100,-100,100,100,0.,1);
4215 11,5.5,16.5, 100,0,1.,100,0.,1);
4222 11,5.5,16.5, 100,0,100,100,0.,1);
4228 fhClusterMaxCellDiffM02 =
new TH3F (
"hClusterMaxCellDiffM02",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
4229 11,5.5,16.5, 100,0,1.,100,0.,1);
4236 "1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
4237 11,5.5,16.5, 100,0.0,1.,100,0.,1);
4244 11,5.5,16.5, 35,0.5,35.5,100,0.,1);
4254 return outputContainer;
4263 Int_t icol =-1, irow=-1,iRCU = -1;
4273 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
4280 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
4285 else if( icol == 0 && imod%2 )
4292 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
4301 Double_t tcell = cells->GetCellTime(absID);
4304 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
4305 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
4309 ecell1 = cells->GetCellAmplitude(absID1);
4311 tcell1 = cells->GetCellTime(absID1);
4317 ecell2 = cells->GetCellAmplitude(absID2);
4319 tcell2 = cells->GetCellTime(absID2);
4325 ecell3 = cells->GetCellAmplitude(absID3);
4327 tcell3 = cells->GetCellTime(absID3);
4333 ecell4 = cells->GetCellAmplitude(absID4);
4335 tcell4 = cells->GetCellTime(absID4);
4339 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
4340 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
4341 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
4342 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
4344 return ecell1+ecell2+ecell3+ecell4;
4348 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
4350 Int_t relId1[] = { imod+1, 0, irow+1, icol };
4351 Int_t relId2[] = { imod+1, 0, irow-1, icol };
4352 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
4353 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
4360 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
4362 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
4363 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
4364 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
4365 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
4367 return ecell1+ecell2+ecell3+ecell4;
4379 AliVCaloCells * cells)
4381 AliDebug(1,
"Start");
4387 Int_t nModule2 = -1;
4388 Int_t nCaloClusters = caloClusters->GetEntriesFast();
4391 if(phi1 < 0) phi1 += TMath::TwoPi();
4393 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
4396 for(
Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
4398 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4403 Double_t tof2 = clus2->GetTOF()*1.e9;
4411 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4449 if(phi2 < 0) phi2 += TMath::TwoPi();
4451 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));
4453 Bool_t inPi0Window = kFALSE;
4454 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
4456 if ( nModule < 12 && nModule2 < 12 )
4463 if ( nModule == nModule2 )
4477 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
4484 if ( nModule == nModule2 )
4500 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
4514 AliDebug(1,
"Check DCal-PHOS pairs\n");
4519 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
4520 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
4521 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
4531 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4549 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4551 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
4552 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
4553 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
4565 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
4570 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
4571 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
4572 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
4573 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
4574 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
4575 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
4577 for(
Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
4579 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4584 Double_t tof2 = clus2->GetTOF()*1.e9;
4587 Double_t diffTof = TMath::Abs(tof1-tof2);
4591 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4616 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4618 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
4619 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
4620 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
4621 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
4622 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
4623 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4698 Int_t nCellsPerCluster, AliVCaloCells* cells)
4707 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4720 Float_t ampMax = cells->GetCellAmplitude(absIdMax);