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 fCorrelate(kTRUE), fStudyBadClusters(kFALSE),
58 fStudyClustersAsymmetry(kFALSE), fStudyExotic(kFALSE),
62 fNModules(12), fNRCU(2),
63 fNMaxCols(48), fNMaxRows(24),
64 fTimeCutMin(-10000), fTimeCutMax(10000),
66 fEMCALCellAmpMin(0), fPHOSCellAmpMin(0),
67 fEMCALClusterNCellMin(0), fPHOSClusterNCellMin(0),
70 fInvMassMinECut(0), fInvMassMaxECut(0),
71 fInvMassMinM02Cut(0), fInvMassMaxM02Cut(0),
72 fInvMassMaxOpenAngle(0), fInvMassMaxTimeDifference(0),
75 fExoNECrossCuts(0), fExoECrossCuts(),
76 fExoNDTimeCuts(0), fExoDTimeCuts(),
78 fClusterMomentum(), fClusterMomentum2(),
83 fhEtaPhi(0), fhEtaPhiE(0),
84 fhECharged(0), fhPtCharged(0),
85 fhPhiCharged(0), fhEtaCharged(0),
86 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
89 fhIM(0), fhIMSame(0), fhIMDiff(0),
90 fhIMDCAL(0), fhIMDCALSame(0), fhIMDCALDiff(0),
91 fhIMDCALPHOS(0), fhIMDCALPHOSSame(0),
92 fhIMEMCALPHOS(0), fhIMEMCALPHOSSame(0),
94 fhOpAngle(0), fhIMvsOpAngle(0),
95 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
98 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
99 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
100 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
101 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
102 fhClusterMaxCellDiffAverageTime(0), fhClusterMaxCellDiffWeightedTime(0),
103 fhClusterMaxCellECross(0),
104 fhLambda0(0), fhLambda1(0),
107 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
108 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
109 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
110 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
111 fhBadClusterMaxCellECross(0),
112 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
113 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
114 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
117 fhRNCells(0), fhXNCells(0),
118 fhYNCells(0), fhZNCells(0),
122 fhRCellE(0), fhXCellE(0),
123 fhYCellE(0), fhZCellE(0),
125 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
126 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
127 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
128 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
131 fhNCells(0), fhNCellsCutAmpMin(0),
132 fhAmplitude(0), fhAmpId(0),
133 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
134 fhTime(0), fhTimeVz(0),
135 fhTimeId(0), fhTimeAmp(0),
136 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
140 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
141 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
142 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
143 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
144 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
145 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
146 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
147 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
148 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
149 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
150 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
151 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
152 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
153 fhCaloCenNCells(0), fhCaloCenECells(0),
154 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
155 fhCaloEvPNCells(0), fhCaloEvPECells(0),
158 fhEMod(0), fhAmpMod(0),
159 fhEWeirdMod(0), fhAmpWeirdMod(0),
161 fhNClustersMod(0), fhNCellsMod(0),
162 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
163 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
164 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
166 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
167 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
168 fhTimeAmpPerRCU(0), fhIMMod(0),
171 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
172 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
173 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
174 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
176 fhExoL0ECross(0), fhExoL1ECross(0),
179 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
180 fhRecoMCDeltaE(), fhRecoMCRatioE(),
181 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
184 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
185 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
188 fhEMVxyz(0), fhEMR(0),
189 fhHaVxyz(0), fhHaR(0),
190 fh1EOverP(0), fh2dR(0),
191 fh2EledEdx(0), fh2MatchdEdx(0),
192 fh1EOverPR02(0), fh1EleEOverP(0),
193 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
194 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
195 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
196 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
197 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
198 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
199 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
200 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
201 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0)
204 for(Int_t i =0; i < 12; i++)
209 for(Int_t j = 0; j < 5; j++)
226 for (Int_t ie = 0; ie < 10 ; ie++)
229 for (Int_t idt = 0; idt < 5 ; idt++)
243 for(Int_t i = 0; i < 7; i++)
254 for(Int_t i = 0; i < 4; i++)
279 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
286 Double_t tof = clus->GetTOF()*1.e9;
287 Float_t energy = clus->E();
295 if(phi < 0) phi += TMath::TwoPi();
306 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
308 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
310 if(clus->GetID() == clus2->GetID())
continue;
312 Float_t maxCellFraction2 = 0.;
315 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
317 Double_t tof2 = clus2->GetTOF()*1.e9;
326 Double_t timeAverages[2] = {0.,0.};
333 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
335 Int_t absId = clus->GetCellsAbsId()[ipos];
336 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
338 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
345 Double_t time = cells->GetCellTime(absId);
348 Float_t diff = (tmax-time*1e9);
363 AliVCaloCells* cells,
364 Double_t timeAverages[2])
368 Float_t ampMax = 0, amp = 0;
371 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
373 Int_t
id = clus->GetCellsAbsId()[ipos];
376 amp = cells->GetCellAmplitude(
id);
395 Int_t ncells = clus->GetNCells();
397 for (Int_t ipos = 0; ipos < ncells; ipos++)
399 id = clus ->GetCellsAbsId()[ipos];
400 amp = cells->GetCellAmplitude(
id);
401 time = cells->GetCellTime(
id);
409 wTime += time*1e9 * w;
413 if(ncells > 0) aTime /= ncells;
416 if(wTot > 0) wTime /= wTot;
419 timeAverages[0] = aTime;
420 timeAverages[1] = wTime;
428 Int_t ncells = cells->GetNumberOfCells();
432 Float_t ecellsCut = 0;
437 Int_t *nCellsInModule =
new Int_t [
fNModules];
438 Float_t *eCellsInModule =
new Float_t[
fNModules];
440 for(Int_t imod = 0; imod <
fNModules; imod++ )
442 nCellsInModule[imod] = 0 ;
443 eCellsInModule[imod] = 0.;
452 Bool_t highG = kFALSE;
456 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
458 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
462 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
464 if(nModule < fNModules)
471 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
475 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
479 amp = cells->GetAmplitude(iCell)*recalF;
480 time = cells->GetTime(iCell);
481 id = cells->GetCellNumber(iCell);
482 highG = cells->GetCellHighGain(
id);
496 AliDebug(1,Form(
"Remove cell with Time %f",time));
502 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
521 nCellsInModule[nModule]++ ;
535 if ( nModule > 11 && nModule < 18) shiftEta+=
fNMaxCols/3;
537 icols = (nModule % 2) ? icol + shiftEta : icol;
541 irows = irow +
fNMaxRows * Int_t(nModule / 2);
544 if ( nModule > 11 && nModule < 20) irows -= (2*
fNMaxRows / 3);
564 Double_t v[3] = {0,0,0};
591 Float_t celleta = 0.;
592 Float_t cellphi = 0.;
595 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
602 Double_t cellpos[] = {0, 0, 0};
609 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
617 Int_t relId[4], module;
618 Float_t xCell, zCell;
625 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
643 for(Int_t imod = 0; imod <
fNModules; imod++ )
645 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().Data(), nCellsInModule[imod], eCellsInModule[imod]));
656 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
658 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
662 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
664 if(nModule < fNModules)
671 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
675 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
679 amp = cells->GetAmplitude(iCell)*recalF;
680 time = cells->GetTime(iCell);
681 id = cells->GetCellNumber(iCell);
688 GetReader()->GetInputEvent()->GetBunchCrossNumber());
695 AliDebug(1,Form(
"Remove cell with Time %f",time));
701 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
708 Float_t ratio = amp/ecellsCut;
713 if(eCellsInModule[nModule] > 0)
715 Float_t ratioMod = amp/eCellsInModule[nModule];
724 delete [] nCellsInModule;
725 delete [] eCellsInModule;
733 Int_t nCaloCellsPerCluster = clus->GetNCells();
735 UShort_t * indexList = clus->GetCellsAbsId();
738 clus->GetPosition(pos);
740 Float_t clEnergy = clus->E();
743 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
746 Int_t absId = indexList[ipos];
752 Double_t cellpos[] = {0, 0, 0};
763 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
764 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
772 Int_t relId[4], module;
773 Float_t xCell, zCell;
788 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
789 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
804 if( clus->GetNCells() <= 3 )
return;
809 Int_t ietaMax=-1; Int_t iphiMax = 0; Int_t rcuMax = 0;
812 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
814 Int_t absId = clus->GetCellsAbsId()[ipos];
816 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
819 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
823 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
827 Int_t ietaShift = ieta;
828 Int_t ietaMaxShift = ietaMax;
829 if (ieta > ietaMax) ietaMaxShift+=48;
831 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
835 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
856 Int_t nLabel = clus->GetNLabels();
857 Int_t* labels = clus->GetLabels();
903 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
906 Double_t tof = clus->GetTOF()*1.e9;
919 Int_t nCaloCellsPerCluster = clus->GetNCells();
922 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
924 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
926 if( clus->GetID() == clus2->GetID() )
continue;
928 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
932 Double_t tof2 = clus2->GetTOF()*1.e9;
935 if ( nModule2 == nModule )
940 if(nCaloCellsPerCluster > 1)
947 Double_t timeAverages[2] = {0.,0.};
954 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
956 Int_t absId = clus->GetCellsAbsId()[ipos];
957 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
959 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
965 Double_t time = cells->GetCellTime(absId);
968 Float_t diff = (tmax-time*1.0e9);
981 if(phi < 0) phi +=TMath::TwoPi();
983 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1008 clus->GetPosition(pos);
1020 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1043 AliVCaloCells* cells)
1046 Int_t *labels = 0x0;
1047 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1048 Int_t nCaloClustersAccepted = 0 ;
1049 Int_t nCaloCellsPerCluster = 0 ;
1050 Bool_t matched = kFALSE;
1054 Double_t v[3] = {0,0,0};
1057 Int_t *nClustersInModule =
new Int_t [
fNModules];
1058 Float_t *energyInModule =
new Float_t[
fNModules];
1059 for(Int_t imod = 0; imod <
fNModules; imod++ )
1061 nClustersInModule[imod] = 0;
1062 energyInModule [imod] = 0;
1068 for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1070 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1072 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1075 Float_t maxCellFraction = 0.;
1079 Double_t tof = clus->GetTOF()*1.e9;
1082 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1095 nLabel = clus->GetNLabels();
1096 labels = clus->GetLabels();
1102 nCaloCellsPerCluster = clus->GetNCells();
1108 Double_t tmax = cells->GetCellTime(absIdMax);
1121 if(nModule >=0 && nModule < fNModules)
1130 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1136 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1138 Float_t eCrossFrac = 0;
1139 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1141 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1154 maxCellFraction, eCrossFrac, tmax);
1156 nCaloClustersAccepted++;
1160 nClustersInModule[nModule]++;
1162 energyInModule [nModule] += clus->E();
1172 Int_t mcOK = kFALSE;
1174 if(
IsDataMC() && nLabel > 0 && labels)
1186 && nCaloClusters > 1
1187 && nCaloCellsPerCluster > 1
1188 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1202 for(Int_t imod = 0; imod <
fNModules; imod++ )
1204 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().Data(), nClustersInModule[imod], energyInModule[imod]));
1212 delete [] nClustersInModule;
1213 delete [] energyInModule;
1221 Int_t nLabels, Int_t & pdg )
1223 if(!labels || nLabels<=0)
1225 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1229 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1234 if(phi < 0) phi +=TMath::TwoPi();
1236 AliAODMCParticle * aodprimary = 0x0;
1237 TParticle * primary = 0x0;
1240 Int_t label = labels[0];
1244 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1248 Int_t pdg0 =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
1249 Float_t vxMC = 0; Float_t vyMC = 0;
1251 Float_t phiMC = 0; Float_t etaMC = 0;
1263 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1269 pdg0 = TMath::Abs(primary->GetPdgCode());
1271 status = primary->GetStatusCode();
1272 vxMC = primary->Vx();
1273 vyMC = primary->Vy();
1274 iParent = primary->GetFirstMother();
1276 AliDebug(1,
"Cluster most contributing mother:");
1277 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1285 pdg = TMath::Abs(primary->GetPdgCode());
1287 AliDebug(2,
"Converted cluster!. Find before conversion:");
1289 while((pdg == 22 || pdg == 11) && status != 1)
1291 Int_t iMotherOrg = iMother;
1294 status = primary->GetStatusCode();
1295 pdg = TMath::Abs(primary->GetPdgCode());
1296 iParent = primary->GetFirstMother();
1300 if(pdg==111 || pdg==221)
1302 primary =
GetMCStack()->Particle(iMotherOrg);
1312 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1315 AliDebug(1,
"Converted Cluster mother before conversion:");
1316 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1324 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1326 while(pdg != 111 && pdg != 221)
1331 status = primary->GetStatusCode();
1332 pdg = TMath::Abs(primary->GetPdgCode());
1333 iParent = primary->GetFirstMother();
1335 if( iParent < 0 )
break;
1337 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1341 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1346 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1349 eMC = primary->Energy();
1351 phiMC = primary->Phi();
1352 etaMC = primary->Eta();
1353 pdg = TMath::Abs(primary->GetPdgCode());
1354 charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1357 else if(
GetReader()->ReadAODMCParticles() &&
1363 AliFatal(
"MCParticles not available!");
1367 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1369 status = aodprimary->IsPrimary();
1370 vxMC = aodprimary->Xv();
1371 vyMC = aodprimary->Yv();
1372 iParent = aodprimary->GetMother();
1374 AliDebug(1,
"Cluster most contributing mother:");
1375 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1376 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1381 AliDebug(2,
"Converted cluster!. Find before conversion:");
1385 pdg = TMath::Abs(aodprimary->GetPdgCode());
1387 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1389 Int_t iMotherOrg = iMother;
1392 status = aodprimary->IsPrimary();
1393 iParent = aodprimary->GetMother();
1394 pdg = TMath::Abs(aodprimary->GetPdgCode());
1398 if( pdg == 111 || pdg == 221 )
1410 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1411 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1414 AliDebug(1,
"Converted Cluster mother before conversion:");
1415 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1416 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1424 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1426 while(pdg != 111 && pdg != 221)
1430 status = aodprimary->IsPrimary();
1431 iParent = aodprimary->GetMother();
1432 pdg = TMath::Abs(aodprimary->GetPdgCode());
1434 if( iParent < 0 )
break;
1436 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1440 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1445 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1448 status = aodprimary->IsPrimary();
1449 eMC = aodprimary->E();
1451 phiMC = aodprimary->Phi();
1452 etaMC = aodprimary->Eta();
1453 pdg = TMath::Abs(aodprimary->GetPdgCode());
1454 charge = aodprimary->Charge();
1458 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1459 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1492 else if(charge == 0)
1507 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1518 if( primary || aodprimary )
return kTRUE ;
1534 if(phi < 0) phi +=TMath::TwoPi();
1550 Double_t tpt = track->Pt();
1551 Double_t tmom = track->P();
1552 Double_t dedx = track->GetTPCsignal();
1553 Int_t nITS = track->GetNcls(0);
1554 Int_t nTPC = track->GetNcls(1);
1555 Bool_t positive = kFALSE;
1556 if(track) positive = (track->Charge()>0);
1559 Float_t deta = clus->GetTrackDz();
1560 Float_t dphi = clus->GetTrackDx();
1561 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1564 if( TMath::Abs(dphi) < 999 )
1592 Double_t eOverP = e/tmom;
1601 if(dedx > 60 && dedx < 100)
1611 if(e > 0.5 && tmom > 0.5)
1617 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1618 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1626 Double_t
charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1628 if(TMath::Abs(pdg) == 11)
1652 else if(charge == 0)
1677 if(!caloClustersEMCAL || !caloClustersPHOS)
1679 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1687 if(!cellsEMCAL || !cellsPHOS)
1689 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1698 Float_t sumClusterEnergyEMCAL = 0;
1699 Float_t sumClusterEnergyDCAL = 0;
1700 Float_t sumClusterEnergyPHOS = 0;
1704 AliVCluster* cluster = 0;
1705 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1707 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1708 Float_t energy = cluster->E();
1710 if( energy < 0.5 )
continue;
1712 if(cluster->GetCellsAbsId()[0] < 12288)
1715 sumClusterEnergyEMCAL += energy;
1720 sumClusterEnergyDCAL += energy;
1724 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1726 cluster = (AliVCluster*)caloClustersPHOS->At(iclus);
1728 energy = cluster->E();
1730 if( energy < 0.5 )
continue;
1733 sumClusterEnergyPHOS += energy;
1737 Int_t ncellsEMCAL = 0 ;
1738 Int_t ncellsDCAL = 0 ;
1739 Int_t ncellsPHOS = 0;
1741 Float_t sumCellEnergyEMCAL = 0;
1742 Float_t sumCellEnergyDCAL = 0;
1743 Float_t sumCellEnergyPHOS = 0;
1745 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1747 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1748 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1755 sumCellEnergyEMCAL += amp;
1760 sumCellEnergyDCAL += amp;
1764 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1766 Float_t amp = cellsPHOS->GetAmplitude(icell);
1771 sumCellEnergyPHOS += amp;
1797 Int_t ncl = nclPHOS;
1798 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1799 Int_t ncells = ncellsPHOS;
1800 Float_t sumCellEnergy = sumCellEnergyPHOS;
1804 ncl = nclEMCAL + nclDCAL;
1805 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1806 ncells = ncellsEMCAL + ncellsDCAL;
1807 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1835 AliDebug(1,
"Correlate():");
1836 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1837 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1838 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1839 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1840 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1841 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1842 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1843 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1852 const Int_t buffersize = 255;
1853 char onePar[buffersize] ;
1855 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1880 return new TObjString(parList) ;
1887 AliVCluster *clus, AliVCaloCells* cells)
1891 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1895 Float_t l0 = clus->GetM02();
1896 Float_t l1 = clus->GetM20();
1897 Float_t en = clus->E();
1898 Int_t nc = clus->GetNCells();
1899 Double_t tmax = clus->GetTOF()*1.e9;
1901 Float_t eCrossFrac = 1-
GetECross(absIdMax,cells, 10000000)/ampMax;
1931 for (Int_t icell = 0; icell < clus->GetNCells(); icell++)
1933 Int_t absId = clus->GetCellsAbsId()[icell];
1934 Double_t time = cells->GetCellTime(absId);
1937 Float_t diff = (tmax-time)*1e9;
1957 TList * outputContainer =
new TList() ;
1958 outputContainer->SetName(
"QAHistos") ;
2009 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2010 fhE->SetXTitle(
"#it{E} (GeV)");
2011 outputContainer->Add(
fhE);
2013 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2014 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2015 outputContainer->Add(
fhPt);
2017 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2018 fhPhi->SetXTitle(
"#phi (rad)");
2019 outputContainer->Add(
fhPhi);
2021 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2022 fhEta->SetXTitle(
"#eta ");
2023 outputContainer->Add(
fhEta);
2027 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2028 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2036 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2037 netabins,etamin,etamax,nphibins,phimin,phimax);
2043 fhClusterTimeEnergy =
new TH2F (
"hClusterTimeEnergy",
"energy vs TOF, reconstructed clusters",
2044 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2049 fhClusterPairDiffTimeE =
new TH2F(
"hClusterPairDiffTimeE",
"cluster pair time difference vs E, only good clusters",
2050 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2056 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2061 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2062 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2063 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2064 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2067 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2068 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2069 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2070 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2079 fhClusterMaxCellCloseCellRatio =
new TH2F (
"hClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2080 nptbins,ptmin,ptmax, 100,0,1.);
2085 fhClusterMaxCellCloseCellDiff =
new TH2F (
"hClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2086 nptbins,ptmin,ptmax, 500,0,100.);
2091 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2092 nptbins,ptmin,ptmax, 500,0,1.);
2099 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2100 nptbins,ptmin,ptmax, 500,0,1.);
2106 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2107 nptbins,ptmin,ptmax, 400,-1,1.);
2114 fhNCellsPerClusterNoCut =
new TH2F (
"hNCellsPerClusterNoCut",
"# cells per cluster vs energy, no bad clusters cut",
2115 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2121 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2141 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2147 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2151 fhBadClusterEtaPhi =
new TH2F (
"hBadClusterEtaPhi",
"Bad cluster, #eta vs #phi, #it{E} > 0.5 GeV",
2152 netabins,etamin,etamax,nphibins,phimin,phimax);
2157 fhBadClusterLambda0 =
new TH2F (
"hBadClusterLambda0",
"Bad cluster,shower shape, #lambda^{2}_{0} vs E",
2158 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2163 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2164 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2169 fhBadClusterMaxCellCloseCellRatio =
new TH2F (
"hBadClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
2170 nptbins,ptmin,ptmax, 100,0,1.);
2175 fhBadClusterMaxCellCloseCellDiff =
new TH2F (
"hBadClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
2176 nptbins,ptmin,ptmax, 500,0,100);
2181 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2182 nptbins,ptmin,ptmax, 500,0,1.);
2187 fhBadClusterTimeEnergy =
new TH2F (
"hBadClusterTimeEnergy",
"energy vs TOF of reconstructed bad clusters",
2188 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2193 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2198 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2199 nptbins,ptmin,ptmax, 400,-1,1.);
2206 fhBadCellTimeSpreadRespectToCellMax =
new TH2F (
"hBadCellTimeSpreadRespectToCellMax",
"#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2211 fhBadClusterMaxCellDiffAverageTime =
new TH2F (
"hBadClusterMaxCellDiffAverageTime",
"#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2216 fhBadClusterMaxCellDiffWeightedTime =
new TH2F (
"hBadClusterMaxCellDiffWeightedTime",
"#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2228 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2229 400,0,1,ssbins,ssmin,ssmax);
2230 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2235 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2236 400,0,1,ssbins,ssmin,ssmax);
2237 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2244 fhExoDTime[ie] =
new TH2F(Form(
"hExoDTime_ECross%d",ie),
2245 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2246 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2247 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2253 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2254 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2255 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2256 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2257 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2260 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2261 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]),
2262 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2263 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2264 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2265 outputContainer->Add(
fhExoL0[ie][idt]) ;
2267 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2268 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]),
2269 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2270 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2271 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2272 outputContainer->Add(
fhExoL1[ie][idt]) ;
2274 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2275 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]),
2276 nptbins,ptmin,ptmax,400,0,1);
2277 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2278 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2281 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2282 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]),
2283 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2284 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2285 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2286 outputContainer->Add(
fhExoTime[ie][idt]) ;
2288 fhExoL0NCell[ie][idt] =
new TH2F(Form(
"hExoL0_NCell%d_DT%d",ie,idt),
2289 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]),
2290 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2295 fhExoL1NCell[ie][idt] =
new TH2F(Form(
"hExoL1_NCell%d_DT%d",ie,idt),
2296 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]),
2297 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2309 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2315 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2321 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2327 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2328 nptbins,ptmin,ptmax,21,-1.05,1.05);
2329 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2330 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2333 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2334 ssbins,ssmin,ssmax,21,-1.05,1.05);
2336 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2339 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2340 ssbins,ssmin,ssmax,21,-1.05,1.05);
2342 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2345 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2346 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2352 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2358 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2364 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2370 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2371 nptbins,ptmin,ptmax,21,-1.05,1.05);
2372 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2373 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2376 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2377 ssbins,ssmin,ssmax,21,-1.05,1.05);
2379 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2382 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2383 ssbins,ssmin,ssmax,21,-1.05,1.05);
2385 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2388 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2389 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2395 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2396 for (Int_t iPart = 0; iPart < 4; iPart++) {
2398 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].Data()),
2399 nptbins,ptmin,ptmax,21,-1.05,1.05);
2400 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2401 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2426 fhBadClusterDeltaIA =
new TH2F (
"hBadClusterDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2427 nptbins,ptmin,ptmax,21,-1.05,1.05);
2436 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy",
2437 nptbins,ptmin,ptmax, 100,0,1.);
2442 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy",
2443 nptbins,ptmin,ptmax, 100,-10,0);
2448 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy",
2449 nptbins,ptmin,ptmax, 100,0,1.);
2454 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy",
2455 nptbins,ptmin,ptmax, 100,-10,0);
2460 fhECellTotalRatio =
new TH2F (
"hECellTotalRatio",
" cell energy / sum all energy vs all energy",
2461 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2466 fhECellTotalLogRatio =
new TH2F (
"hECellTotalLogRatio",
" Log(cell energy / sum all energy) vs all energy",
2467 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2475 for(Int_t imod = 0; imod <
fNModules; imod++)
2478 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2479 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2485 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2486 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2492 for(Int_t iw = 0; iw < 12; iw++)
2494 Float_t w0 = 3+0.25*iw;
2495 fhLambda0ForW0[iw] =
new TH2F (Form(
"hLambda0ForW0%d",iw),Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",w0),
2496 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2508 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2509 for(Int_t imc = 0; imc < 5; imc++){
2510 fhLambda0ForW0MC[iw][imc] =
new TH2F (Form(
"hLambda0ForW0%d_MC%s",iw,mcnames[imc].Data()),
2511 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].Data()),
2512 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2538 fhTrackMatchedDEtaNeg =
new TH2F(
"hTrackMatchedDEtaNeg",
"d#eta of cluster-negative track vs cluster energy",
2539 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2543 fhTrackMatchedDPhiNeg =
new TH2F(
"hTrackMatchedDPhiNeg",
"d#phi of cluster-negative track vs cluster energy",
2544 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2548 fhTrackMatchedDEtaDPhiNeg =
new TH2F(
"hTrackMatchedDEtaDPhiNeg",
"d#eta vs d#phi of cluster- negative track vs cluster energy",
2549 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2553 fhTrackMatchedDEtaPos =
new TH2F(
"hTrackMatchedDEtaPos",
"d#eta of cluster-positive track vs cluster energy",
2554 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2558 fhTrackMatchedDPhiPos =
new TH2F(
"hTrackMatchedDPhiPos",
"d#phi of cluster-positive track vs cluster energy",
2559 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2563 fhTrackMatchedDEtaDPhiPos =
new TH2F(
"hTrackMatchedDEtaDPhiPos",
"d#eta vs d#phi of cluster-positive track vs cluster energy",
2564 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2569 fhTrackMatchedDEtaNegMod =
new TH2F(
"hTrackMatchedDEtaNegPerModule",
"d#eta of cluster-negative track vs module, E > 0.5 GeV",
2574 fhTrackMatchedDPhiNegMod =
new TH2F(
"hTrackMatchedDPhiNegPerModule",
"d#phi of cluster-negative track vs module, E > 0.5 GeV",
2579 fhTrackMatchedDEtaPosMod =
new TH2F(
"hTrackMatchedDEtaPosPerModule",
"d#eta of cluster-positive track vs module, E > 0.5 GeV",
2584 fhTrackMatchedDPhiPosMod =
new TH2F(
"hTrackMatchedDPhiPosPerModule",
"d#phi of cluster-positive track vs module, E > 0.5 GeV",
2601 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2605 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2606 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2609 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2613 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2619 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2620 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2628 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2629 netabins,etamin,etamax,nphibins,phimin,phimax);
2635 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2637 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2640 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2641 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2642 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2643 outputContainer->Add(
fh2dR) ;
2645 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2650 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2655 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2660 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2668 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);
2673 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);
2674 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2678 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);
2683 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);
2688 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);
2693 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);
2701 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2702 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2703 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2704 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2705 outputContainer->Add(
fhIM);
2707 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2708 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2709 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2710 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2713 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2714 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2715 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2716 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2721 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2722 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2723 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2724 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2727 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2728 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2729 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2730 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2733 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2734 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2735 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2736 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2739 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2740 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2741 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2742 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2745 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2746 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2754 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2755 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2756 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2757 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2760 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2761 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2770 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2776 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2784 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2790 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2797 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2798 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2799 fhAsym->SetYTitle(
"#it{Asymmetry}");
2800 outputContainer->Add(
fhAsym);
2804 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2805 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2806 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2807 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2811 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2814 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2821 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2822 fhXYZ->SetXTitle(
"#it{x} (cm)");
2823 fhXYZ->SetYTitle(
"#it{y} (cm)");
2824 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2825 outputContainer->Add(
fhXYZ);
2827 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2828 fhXE->SetXTitle(
"#it{x} (cm)");
2829 fhXE->SetYTitle(
"#it{E} (GeV)");
2830 outputContainer->Add(
fhXE);
2832 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2833 fhYE->SetXTitle(
"#it{y} (cm)");
2834 fhYE->SetYTitle(
"#it{E} (GeV)");
2835 outputContainer->Add(
fhYE);
2837 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2838 fhZE->SetXTitle(
"#it{z} (cm)");
2839 fhZE->SetYTitle(
"#it{E} (GeV)");
2840 outputContainer->Add(
fhZE);
2842 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2843 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2844 fhRE->SetYTitle(
"#it{E} (GeV)");
2845 outputContainer->Add(
fhRE);
2847 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2849 fhXNCells->SetYTitle(
"N cells per cluster");
2852 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2854 fhYNCells->SetYTitle(
"N cells per cluster");
2857 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2859 fhZNCells->SetYTitle(
"N cells per cluster");
2862 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2863 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2864 fhRNCells->SetYTitle(
"N cells per cluster");
2870 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2871 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2872 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2875 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2876 fhXCellE->SetXTitle(
"#it{x} (cm)");
2877 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2880 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2881 fhYCellE->SetXTitle(
"#it{y} (cm)");
2882 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2885 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2886 fhZCellE->SetXTitle(
"#it{z} (cm)");
2887 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2890 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2896 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2897 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2898 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2899 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2901 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2906 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2911 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2916 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2921 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2922 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2926 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2931 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
2936 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
2943 fhEtaPhiAmpCell =
new TH3F (
"hEtaPhiAmpCell",
"Cell #eta vs cell #phi vs cell energy",
2944 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2952 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
2953 netabins,etamin,etamax,nphibins,phimin,phimax);
2962 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
2963 fhNCells->SetXTitle(
"#it{n}_{cells}");
2970 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
2975 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
2976 outputContainer->Add(
fhAmpId);
2984 fhCellTimeSpreadRespectToCellMax =
new TH2F (
"hCellTimeSpreadRespectToCellMax",
"t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2989 fhClusterMaxCellDiffAverageTime =
new TH2F (
"hClusterMaxCellDiffAverageTime",
"t_{cell max}-t_{average} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2994 fhClusterMaxCellDiffWeightedTime =
new TH2F (
"hClusterMaxCellDiffWeightedTime",
"t_{cell max}-t_{weighted} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3004 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3005 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3006 outputContainer->Add(
fhTime);
3008 fhTimeVz =
new TH2F (
"hTimeVz",
"#it{t}_{cell} vs vertex, amplitude > 0.5 GeV",100, 0, 50,ntimebins,timemin,timemax);
3009 fhTimeVz->SetXTitle(
"|v_{z}| (cm)");
3010 fhTimeVz->SetYTitle(
"#it{t}_{cell} (ns)");
3013 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3015 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3016 fhTimeId->SetYTitle(
"Cell Absolute Id");
3019 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3020 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3021 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3024 fhTimeIdLowGain =
new TH2F (
"hTimeIdLG",
"Low gain: #it{t}_{cell} vs Absolute Id",
3030 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3036 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3037 nptbins,ptmin,ptmax, 400,-1,1.);
3039 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3046 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3051 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3056 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3061 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3067 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3072 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3077 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3082 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3089 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3094 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3099 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3104 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3174 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3179 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3184 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3189 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3190 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3194 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3199 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3204 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3209 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3210 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3217 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3218 fhEMod->SetXTitle(
"#it{E} (GeV)");
3219 fhEMod->SetYTitle(
"Module");
3220 outputContainer->Add(
fhEMod);
3222 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3223 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3227 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3232 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3239 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3245 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3250 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3255 fhSumClustersEnergyMod =
new TH2F (
"hSumClustersEnergy_Mod",
"# clusters vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3260 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3277 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3278 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3283 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3284 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3289 fhGridCellsLowGain =
new TH2F (
"hGridCellsLG",Form(
"Low gain: Entries in grid of cells"),
3290 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3295 fhGridCellsELowGain =
new TH2F (
"hGridCellsELG",
"Low gain: Accumulated energy in grid of cells",
3296 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3303 fhGridCellsTime =
new TH2F (
"hGridCellsTime",
"Accumulated time in grid of cells",
3304 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3310 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3330 for(Int_t imod = 0; imod <
fNModules; imod++)
3333 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3334 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3340 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3341 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3347 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3348 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3356 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3357 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3365 for(Int_t ircu = 0; ircu <
fNRCU; ircu++)
3367 fhTimeAmpPerRCU[imod*fNRCU+ircu] =
new TH2F (Form(
"hTimeAmp_Mod%d_RCU%d",imod,ircu),
3368 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3369 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3378 fhIMMod[imod] =
new TH2F (Form(
"hIM_Mod%d",imod),
3379 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3380 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3381 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3382 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3383 outputContainer->Add(
fhIMMod[imod]);
3389 TString particleName[] = {
3390 "Photon",
"Pi0",
"Eta",
3391 "Electron",
"PhotonConv",
3392 "NeutralHadron",
"ChargedHadron" };
3396 for(Int_t iPart = 0; iPart < 7; iPart++)
3398 for(Int_t iCh = 0; iCh < 2; iCh++)
3400 fhRecoMCRatioE[iPart][iCh] =
new TH2F (Form(
"hRecoMCRatioE_%s_Match%d",particleName[iPart].Data(),iCh),
3401 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].Data(),iCh),
3402 nptbins, ptmin, ptmax, 200,0,2);
3403 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3404 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3408 fhRecoMCDeltaE[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaE_%s_Match%d",particleName[iPart].Data(),iCh),
3409 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].Data(),iCh),
3410 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3412 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3415 fhRecoMCDeltaPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].Data(),iCh),
3416 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].Data(),iCh),
3417 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3422 fhRecoMCDeltaEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaEta_%s_Match%d",particleName[iPart].Data(),iCh),
3423 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].Data(),iCh),
3424 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3429 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].Data(),iCh),
3430 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3431 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3432 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3433 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3434 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3436 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].Data(),iCh),
3437 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3438 nphibins,phimin,phimax, nphibins,phimin,phimax);
3439 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3440 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3443 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].Data(),iCh),
3444 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3445 netabins,etamin,etamax,netabins,etamin,etamax);
3446 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3447 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3454 for(Int_t iPart = 0; iPart < 4; iPart++)
3456 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].Data()) ,
3457 Form(
"#it{E} of generated %s",particleName[iPart].Data()),
3458 nptbins,ptmin,ptmax);
3460 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].Data()) ,
3461 Form(
"#it{p}_{T} of generated %s",particleName[iPart].Data()),
3462 nptbins,ptmin,ptmax);
3464 fhGenMCEtaPhi[iPart] =
new TH2F(Form(
"hGenMCEtaPhi_%s",particleName[iPart].Data()),
3465 Form(
"Y vs #phi of generated %s",particleName[iPart].Data()),
3466 200,-1,1,360,0,TMath::TwoPi());
3468 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3469 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3473 outputContainer->Add(
fhGenMCE [iPart]);
3474 outputContainer->Add(
fhGenMCPt [iPart]);
3478 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].Data()) ,
3479 Form(
"#it{E} of generated %s",particleName[iPart].Data()),
3480 nptbins,ptmin,ptmax);
3481 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].Data()) ,
3482 Form(
"#it{p}_{T} of generated %s",particleName[iPart].Data()),
3483 nptbins,ptmin,ptmax);
3484 fhGenMCAccEtaPhi[iPart] =
new TH2F(Form(
"hGenMCAccEtaPhi_%s",particleName[iPart].Data()),
3485 Form(
"Y vs #phi of generated %s",particleName[iPart].Data()),
3486 netabins,etamin,etamax,nphibins,phimin,phimax);
3489 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3501 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3507 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3513 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3514 fhEMR->SetXTitle(
"#it{E} (GeV)");
3515 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3516 outputContainer->Add(
fhEMR);
3518 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3519 fhHaR->SetXTitle(
"#it{E} (GeV)");
3520 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3521 outputContainer->Add(
fhHaR);
3525 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3530 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3531 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3534 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3539 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3544 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3548 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3553 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3558 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3562 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3567 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3572 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3577 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3582 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3587 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3592 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3601 return outputContainer;
3610 Int_t icol =-1, irow=-1,iRCU = -1;
3620 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3627 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3632 else if( icol == 0 && imod%2 )
3639 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3648 Double_t tcell = cells->GetCellTime(absID);
3651 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3652 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3656 ecell1 = cells->GetCellAmplitude(absID1);
3658 tcell1 = cells->GetCellTime(absID1);
3664 ecell2 = cells->GetCellAmplitude(absID2);
3666 tcell2 = cells->GetCellTime(absID2);
3672 ecell3 = cells->GetCellAmplitude(absID3);
3674 tcell3 = cells->GetCellTime(absID3);
3680 ecell4 = cells->GetCellAmplitude(absID4);
3682 tcell4 = cells->GetCellTime(absID4);
3686 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3687 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3688 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3689 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3691 return ecell1+ecell2+ecell3+ecell4;
3695 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3697 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3698 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3699 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3700 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3707 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3709 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3710 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3711 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3712 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3714 return ecell1+ecell2+ecell3+ecell4;
3726 AliVCaloCells * cells)
3728 AliDebug(1,
"Start");
3731 Double_t v[3] = {0,0,0};
3734 Int_t nModule2 = -1;
3735 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3738 if(phi1 < 0) phi1 += TMath::TwoPi();
3740 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3742 for(Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3744 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3746 Float_t maxCellFraction = 0.;
3749 Double_t tof2 = clus2->GetTOF()*1.e9;
3751 Double_t diffTof = tof1-tof2;
3756 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3794 if(phi2 < 0) phi2 += TMath::TwoPi();
3796 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));
3798 Bool_t inPi0Window = kFALSE;
3799 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3801 if ( nModule < 12 && nModule2 < 12 )
3808 if ( nModule == nModule2 )
3822 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3829 if ( nModule == nModule2 )
3845 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3859 AliDebug(1,
"Check DCal-PHOS pairs\n");
3864 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3865 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3866 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3868 for(Int_t jclus = 0 ; jclus <
GetPHOSClusters()->GetEntriesFast() ; jclus++)
3872 Float_t maxCellFraction = 0.;
3876 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3894 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3896 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
3897 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
3898 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
3910 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
3915 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
3916 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
3917 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
3918 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
3919 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
3920 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
3922 for(Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
3924 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3926 Float_t maxCellFraction = 0.;
3929 Double_t tof2 = clus2->GetTOF()*1.e9;
3931 Double_t diffTof = TMath::Abs(tof1-tof2);
3935 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3960 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3962 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
3963 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
3964 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
3965 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
3966 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
3967 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4032 Int_t nCellsPerCluster, AliVCaloCells* cells)
4041 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4054 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4057 if(ampMax < 0.01)
return kFALSE;
4059 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4072 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4093 AliDebug(1,
"Start");
4104 TObjArray * caloClusters = NULL;
4105 AliVCaloCells * cells = 0x0;
4119 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().Data()));
4121 if( !caloClusters || !cells )
4123 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4127 if(caloClusters->GetEntriesFast() == 0)
return ;
4151 TParticle * primStack = 0;
4152 AliAODMCParticle * primAOD = 0;
4157 AliStack * stack = 0;
4162 nprim = stack->GetNtrack();
4166 TClonesArray * mcparticles = 0;
4170 if( !mcparticles )
return;
4171 nprim = mcparticles->GetEntriesFast();
4175 for(Int_t i=0 ; i < nprim; i++)
4177 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
4183 primStack = stack->Particle(i) ;
4186 AliWarning(
"ESD primaries pointer not available!!");
4190 pdg = primStack->GetPdgCode();
4191 status = primStack->GetStatusCode();
4195 if ( status > 11 )
continue;
4197 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ) continue ;
4206 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4209 AliWarning(
"AOD primaries pointer not available!!");
4213 pdg = primAOD->GetPdgCode();
4214 status = primAOD->GetStatus();
4218 if (!primAOD->IsPrimary())
continue;
4220 if ( status > 11 )
continue;
4222 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ) continue ;
4227 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4231 if(eMC < 0.2)
continue;
4238 if (TMath::Abs(etaMC) > 1)
continue;
4242 phiMC += TMath::TwoPi();
4246 else if (pdg==111) mcIndex =
kmcPi0;
4247 else if (pdg==221) mcIndex =
kmcEta;
4248 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4256 Bool_t inacceptance = kTRUE;
4259 inacceptance = kFALSE ;
4269 if(!inacceptance)
continue;
4286 Float_t energyOrg = clus->E();
4289 if(clus->GetNCells() < 3)
return ;
4291 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4293 Int_t
id = clus->GetCellsAbsId()[ipos];
4296 Float_t amp = cells->GetCellAmplitude(
id);
4308 AliWarning(Form(
"Wrong calculated energy %f",energy));
4319 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4321 Int_t
id = clus->GetCellsAbsId()[ipos];
4324 Float_t amp = cells->GetCellAmplitude(
id);
4334 Float_t l0org = clus->GetM02();
4335 Float_t l1org = clus->GetM20();
4336 Float_t dorg = clus->GetDispersion();
4339 if(
IsDataMC() && clus->GetNLabels() > 0)
4365 for(Int_t iw = 0; iw < 12; iw++)
4381 clus->SetM02(l0org);
4382 clus->SetM20(l1org);
4383 clus->SetDispersion(dorg);
4387 clus->SetE(energyOrg);
Float_t GetHistoZMax() const
TH2F * fhCaloV0MCorrEClusters
! Calo vs V0 multiplicity, total measured cluster energy
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TH2F * fhTimeIdLowGain
! Time vs Absolute cell Id, low gain
TH2F * fhDeltaCellClusterRE
! R cluster - R cell distribution (cm) vs cluster energy
Bool_t IsGoodCluster(Int_t absIdMax, Float_t m02, Int_t nCellsPerCluster, AliVCaloCells *cells)
Identify cluster as exotic or not.
TH2F * fhDCALPHOSCorrNCells
! DCAL vs PHOS, number of cells
TH2F * fhNCellsPerClusterNoCut
! N cells per cluster vs cluster energy vs eta of cluster
TH2F * fhMCNeutral1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC neutral
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH2F * fhNCellsMod
! Number of towers/crystals with signal for different module, Reco
TH3F * fhXYZ
! cluster X vs Y vs Z (cm)
TH2F * fh1EOverPMod
! p/E for track-cluster matches, per SM
TH2F * fh1EOverPR02Mod
! p/E for track-cluster matches, dR < 0.2, per SM
Int_t GetHistoNClusterCellMin() const
TH2F * fhDeltaCellClusterYNCells
! Y cluster - Y cell distribution (cm) vs N cells in cluster
TH1F * fhPt
! pT distribution, Reco
Float_t GetHistoPtMin() const
Int_t GetHistoFinePtBins() const
TH2F * fhClusterMaxCellECross
! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters ...
virtual Int_t GetTrackMultiplicity() const
Bool_t fFillPi0PairDiffTime
Fill time difference histograms of cluster pairs in pi0 mass window, only if fFillAllPi0Histo=kTRUE.
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
TH2F * fhGridCellsE
! Cells ordered in column/row for different module, weighted with energy, Reco
TH1F * fhPtCharged
! pT distribution, Reco, matched with track
Float_t GetHistodEdxMax() const
TH2F * fhClusterMaxCellDiff
! Difference between cluster energy and energy of cell with more energy, good clusters only ...
TH2F * fhBadClusterDeltaIEtaDeltaIPhiE2
! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without ma...
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fh2dR
! distance between projected track and cluster (eta-phi units)
Float_t fInvMassMinECut
Minimum energy cut value for clusters entering the invariant mass calculation.
Bool_t fStudyClustersAsymmetry
Study asymmetry of clusters, not QA related.
TH2F * fh2dRMod
! distance between projected track and cluster (eta-phi units), per SM
TH2F * fhExoL1[10][5]
! Short shower shape axis for exotic
TH2F * fhExoNCell[10][5]
! Number of cells per cluster for different cuts
Int_t GetHistoNCellsMin() const
TH2F * fhBadClusterEtaPhi
! Time Max cell of bad cluster
virtual Bool_t IsDataMC() const
Float_t fEMCALCellAmpMin
Amplitude Threshold on EMCal cells.
TH2F * fhIMDCALPHOS
! Cluster pairs invariant mass vs pair pT, for DCal-PHOS pairs
TH1F * fhEta
! eta distribution, Reco
TH2F * fhTimeMod
! Cell time distribution for different module, Reco
TH2F * fhMCChHad1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC charged hadrons
Bool_t fStudyWeight
Study the energy weight used in different cluster calculations, not QA related.
TH2F * fh2MatchdEdxMod
! dE/dx for all matches, per SM
TH2F * fh2EledEdx
! dE/dx vs. momentum for electron candidates
TH2F * fhTrackMatchedDPhiNeg
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhLambda0ForW0MC[14][5]
! L0 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
TH2F * fhSumCellsAmpMod
! Sum of towers/crystals signal for different module, Reco
AliEMCALRecoUtils * GetEMCALRecoUtils() const
virtual AliStack * GetMCStack() const
Bool_t ReadAODMCParticles() const
Bool_t fFillInvMassOpenAngle
Fill opening angle histograms of cluster pairs, only if fFillAllPi0Histo=kTRUE.
Int_t GetHistoTrackMultiplicityMax() const
TH2F * fhExoL0NCell[10][5]
! Lambda0 vs n cells in cluster for several E cross cuts and cluster with E > 5
TH2F * fhCaloTrackMCorrNClusters
! Calo vs Track Multiplicity, number of clusters
TH3F * fhEtaPhiE
! eta vs phi vs E, Reco
Float_t GetHistoVertexDistMin() const
Float_t fPHOSCellAmpMin
Amplitude Threshold on PHOS cells.
TH1F * fhBadClusterEnergy
! Energy of bad cluster
TH2F * fhBadClusterMaxCellDiffWeightedTime
! Difference between cluster weighted time and time of cell with more energy
virtual AliVEvent * GetInputEvent() const
TH2F * fhRecoMCRatioE[7][2]
! Reco/Gen E generated particle vs reconstructed E
TH2F * fhBadClusterMaxCellDiffAverageTime
! Difference between cluster average time and time of cell with more energy
TH2F * fhCaloCenECells
! Calo vs centrality, total measured cell energy
TH2F * fhIMDCALDiff
! Cluster pairs invariant mass vs pair pT, for DCal pairs
TH2F ** fhNClustersSumEnergyPerMod
! N clusters vs sum of energies in different module, Reco
AliPHOSGeoUtils * GetPHOSGeometry() const
TH2F * fhEMCALDCALCorrEClusters
! EMCAL vs DCAL, total measured cluster energy
TH1F * fhGenMCAccE[4]
! pt of primary particle, in acceptance
TH2F * fhXNCells
! X (cm) cluster distribution vs N cells in cluster
TH2F * fhRCellE
! R=sqrt(x^2+y^2) (cm) cell distribution vs cell energy
TH1F * fhGenMCPt[4]
! pt of primary particle
TH2F * fhClusterPairDiffTimeESameMod
! Pair of clusters time difference vs E, in same Mod
Float_t GetHistodRMax() const
virtual Double_t GetEventPlaneAngle() const
void ClusterMatchedWithTrackHistograms(AliVCluster *clus, Bool_t mcOK, Int_t pdg)
TH2F * fhEtaPhi
! eta-phi distribution, Reco
TH2F * fhIMSame
! Cluster pairs invariant mass vs pair pT, for EMCAL or PHOS pairs
TH1F * fhGenMCAccPt[4]
! pt of primary particle, in acceptance
Float_t GetHistoXMin() const
Double_t fTimeCutMax
Remove clusters/cells with time larger than this value, in ns.
Float_t fCellAmpMin
Amplitude Threshold on calorimeter cells, set at execution time.
TH2F * fhIMEMCALPHOSSame
! Cluster pairs invariant mass vs pair pT, for EMCAL(DCal eta acceptance)-EMCAL (PHOS eta acceptance)...
Int_t fNModules
Number of EMCAL/PHOS modules.
TH2F * fhCaloEvPECells
! Calo vs event plane angle, total measured cell energy
virtual Int_t GetV0Multiplicity(Int_t i) const
TH1F * fhNCellsCutAmpMin
! Number of towers/crystals with signal, with min amplitude
Int_t GetHistoMassBins() const
TH2F ** fhNCellsPerClusterModNoCut
! N cells per clusters different module, Reco, No cut
Int_t GetHistoPhiBins() const
TH2F * fhClusterMaxCellCloseCellRatio
! Ratio between max cell energy and cell energy of the same cluster
void InvariantMassHistograms(Int_t iclus, Int_t nModule, const TObjArray *caloClusters, AliVCaloCells *cells)
TH2F * fhRecoMCDeltaE[7][2]
! Gen-Reco E generated particle vs reconstructed E
TH2F ** fhTimeAmpPerRCU
! Time vs Amplitude measured in towers/crystals different RCU
Class for the Calorimeter QA analysis.
TH2F * fhExoDTime[10]
! Difference in time between cell with max energy and rest of cells for exotic
Float_t fInvMassMaxECut
Maximum energy cut value for clusters entering the invariant mass calculation.
Float_t GetHistoMassMin() const
void WeightHistograms(AliVCluster *clus, AliVCaloCells *cells)
Calculate cluster weights.
Bool_t fFillAllPosHisto
Fill all the position related histograms.
TH2F ** fhECellTotalRatioMod
! e cell / e total vs e total, per SM
TH2F * fhEMCALPHOSCorrEClusters
! EMCAL vs PHOS, total measured cluster energy
TH2F * fhNCellsPerClusterWeirdModNoCut
! N cells per clusters different module, Reco, No cut, ridiculously large energy
Bool_t fFillAllTH3
Fill TH3 histograms.
Int_t GetHistoXBins() const
Int_t GetHistoV0SignalBins() const
TH2F * fhClusterTimeEnergy
! Cluster Time vs Energy
TH2F * fhDeltaCellClusterRNCells
! R cluster - R cell distribution (cm) vs N cells in cluster
Int_t GetHistoTrackMultiplicityMin() const
TH1F * fhMCChHad1dR
! distance between projected track and cluster, MC charged hadrons
TH1F * fhTime
! Time measured in towers/crystals
TH2F * fhCaloCenNClusters
! Calo vs centrality, number of clusters
Float_t GetHistoTrackResidualPhiMin() const
TH2F * fhBadClusterMaxCellDiff
! Difference between cluster energy and energy of cell with more energy
TH2F * fhDeltaIEtaDeltaIPhiE6[2]
! Difference between max cell index and farthest cell, eta vs phi, E > 6 GeV, with and without matchi...
TH2F * fhBadClusterMaxCellECross
! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, bad clusters ...
virtual Int_t GetEventCentrality() const
Float_t GetHistoTrackResidualEtaMin() const
TH2F * fhTrackMatchedDEtaDPhiNeg
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
Int_t GetHistoNClusterCellBins() const
TH1F * fhPhiCharged
! phi distribution, Reco, matched with track
TH2F * fh1EOverPR02
! p/E for track-cluster matches, dR < 0.2
TH2F * fhMCEle1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC electrons
TH2F * fhBadClusterMaxCellCloseCellDiff
! Difference between max cell energy and cell energy of the same cluster for bad clusters ...
Float_t GetHistoYMax() const
Float_t GetHistoDiffTimeMin() const
void MakeAnalysisFillHistograms()
Main task method, call all the methods filling QA histograms.
TH2F * fhCellECross
! 1 - Energy in cross around cell / cell energy
TH2F * fhClusterPairDiffTimeE
! Pair of clusters time difference vs E
virtual void GetVertex(Double_t v[3]) const
TH2F * fhBadClusterDeltaIEtaDeltaIPhiE0
! Difference between max cell index and farthest cell, eta vs phi, E < 2 GeV, with and without matchi...
Int_t GetHistoPOverEBins() const
TH2F * fhClusterPairDiffTimeEPi0Mass
! EMCal/PHOS Cluster time TOF difference, for pairs in 0.1 < mass < 0.18
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
Int_t fNRCU
Number of EMCAL/PHOS RCU.
TH2F * fhBadClusterMaxCellCloseCellRatio
! Ratio between max cell energy and cell energy of the same cluster for bad clusters ...
TH2F * fhTimeVz
! Time measured in towers/crystals vs vertex z component, for E > 0.5
Float_t GetHistoPhiMin() const
Float_t GetHistoDiffTimeMax() const
TH1F * fhCellIdCellLargeTimeSpread
! Cells with large time respect to max (diff > 100 ns)
Int_t GetHistoVertexDistBins() const
TH2F * fhEMCALPHOSCorrNClusters
! EMCAL vs PHOS, number of clusters
TH2F * fhIMDCALSame
! Cluster pairs invariant mass vs pair pT, for DCal pairs
TH2F * fhCaloTrackMCorrEClusters
! Calo vs Track Multiplicity, total measured cluster energy
TH2F * fhZNCells
! Z (cm) cluster distribution vs N cells in cluster
Int_t GetHistoZBins() const
TH2F * fhExoL0[10][5]
! Long shower shape axis for exotic
TH1F * fhE
! E distribution, Reco
TH2F * fhTrackMatchedDPhiPosMod
! Phi distance between positive track and cluster vs module for E > 0.5 GeV
TH2F * fhDeltaCellClusterYE
! Y cluster - Y cell distribution (cm) vs cluster energy
TH2F * fhZE
! Z (cm) cluster distribution vs cluster energy
TH2F * fhEMCALDCALCorrNClusters
! EMCAL vs DCAL, number of clusters
TH1F * fhEtaCharged
! eta-phi distribution, Reco, matched with track
Bool_t fFillAllPi0Histo
Fill invariant mass histograms.
AliAnaCalorimeterQA()
Default Constructor. Initialize parameters.
TList * GetCreateOutputObjects()
Float_t GetHistoAsymmetryMax() const
Float_t GetHistoMassMax() const
TH1F * fhPhi
! phi distribution, Reco
Base class for CaloTrackCorr analysis algorithms.
TH2F * fhLambda0ForW0[14]
! L0 for 7 defined w0= 3, 3.5 ... 6
virtual TString GetCalorimeterString() const
Bool_t fFillInvMassInEMCALWithPHOSDCalAcc
Fill invariant mass histograms of EMCal clusters in DCal and PHOS eta acceptance each, only if fFillAllPi0Histo=kTRUE.
TH2F * fhBadClusterPairDiffTimeE
! Pair of clusters time difference vs E, bad cluster
TLorentzVector fClusterMomentum
! Cluster momentum, temporary container
TH2F * fhEtaPhiCharged
! eta distribution, Reco, matched with track
TH2F * fhRecoMCDeltaPhi[7][2]
! Gen-Reco phi generated particle vs reconstructed E
virtual Bool_t IsRealCaloAcceptanceOn() const
Float_t GetHistodEdxMin() const
TLorentzVector fClusterMomentum2
! Cluster momentum, temporary container
AliEMCALGeometry * GetEMCALGeometry() const
virtual AliFiducialCut * GetFiducialCut()
TH2F * fhECellTotalLogRatio
! log (e cell / e total) vs e total
TH2F * fhClusterMaxCellDiffNoCut
! Difference between cluster energy and energy of cell with more energy, no bad cluster rejection ...
Float_t fExoECrossCuts[10]
List of ecross cuts.
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhMCNeutral2MatchdEdx
! dE/dx vs. momentum for all matches, MC neutral
TH2F * fhCaloCenEClusters
! Calo vs centrality, total measured cluster energy
Int_t GetHistoDiffTimeBins() const
TH2F * fhClusterMaxCellDiffAverageTime
! Difference between cluster average time and time of cell with more energy
void ExoticHistograms(Int_t absIdMax, Float_t ampMax, AliVCluster *clus, AliVCaloCells *cells)
Fill histograms with exoticity parameters.
Int_t GetMaxEnergyCell(AliVCaloCells *cells, const AliVCluster *clu, Float_t &fraction) const
For a given CaloCluster, it gets the absId of the cell with maximum energy deposit.
TH3F * fhEtaPhiECharged
! eta vs phi vs E, Reco, matched with track
TH2F * fhEMaxCellClusterLogRatio
! log (e max cell / e cluster) vs e cluster
TH2F * fhBadCellTimeSpreadRespectToCellMax
! Difference of the time of cell with maximum dep energy and the rest of cells for bad clusters ...
TH2F * fhDeltaCellClusterXE
! X cluster - X cell distribution (cm) vs cluster energy
Float_t GetHistoTrackResidualPhiMax() const
TH2F * fhEMCALPHOSCorrNCells
! EMCAL vs PHOS, number of cells
TH2F * fhDeltaIANCells[2]
! Cluster "asymmetry" in cell units vs number of cells in cluster for E > 0.5, with and without match...
Int_t fNMaxCols
Number of EMCAL/PHOS rows.
TH2F * fhEtaPhiCell
! eta vs phi, cells
Int_t GetHistoAsymmetryBins() const
Float_t fInvMassMinM02Cut
Minimum M02 shower shape cut value for clusters entering the invariant mass calculation.
Double_t fTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
Float_t GetHistoRMin() const
virtual AliEMCALGeometry * GetEMCALGeometry() const
Bool_t fStudyExotic
Study the exotic cluster for different cuts, not QA related.
Float_t GetHistoRMax() const
TH2F * fhTrackMatchedDPhiNegMod
! Phi distance between negative track and cluster vs module for E > 0.5 GeV
void InitParameters()
Initialize the parameters of the analysis.
TH2F * fhNCellsPerCluster
! N cells per cluster vs cluster energy vs eta of cluster
TH2F * fhNCellsPerClusterWeirdMod
! N cells per clusters different module, Reco, ridiculously large energy
TH2F * fhGenMCAccEtaPhi[4]
! eta vs phi of primary particle, in acceptance
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
TH2F * fhAmpMod
! Cell amplitude distribution for different module, Reco
TH2F * fhCaloV0SCorrNCells
! Calo vs V0 signal, number of cells
Float_t GetECross(Int_t absId, AliVCaloCells *cells, Float_t dtcut=10000)
Int_t GetHistoV0MultiplicityBins() const
Int_t CheckOrigin(Int_t label, const AliCaloTrackReader *reader, Int_t calorimeter)
TH2F ** fhIMMod
! cluster pairs invariant mass, different module,
TH2F ** fhNCellsPerClusterMod
! N cells per clusters different module, Reco
TH2F * fhTrackMatchedDEtaPos
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
Int_t GetHistoV0SignalMin() const
TH2F * fhECellClusterLogRatio
! log (e cell / e cluster) vs e cluster
Int_t GetHistoV0MultiplicityMin() const
Float_t GetHistoShowerShapeMin() const
TH3F * fhEtaPhiAmpCell
! eta vs phi vs amplitude, cells
TH2F * fh1EleEOverPMod
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, per SM
TH2F * fhCaloEvPNCells
! Calo vs event plane angle, number of cells
TH2F * fhBadClusterLambda0
! Cluster Lambda0 vs Energy, clusters declared bad
Float_t GetHistoXMax() const
TH2F * fhClusterPairDiffTimeEPi0MassDCalSame
! DCal Cluster time TOF difference, for pairs in 0.1 < mass < 0.18, pairs in same Module ...
TH2F * fhRecoMCPhi[7][2]
! phi generated particle vs reconstructed phi
TH2F * fhExoL1NCell[10][5]
! Lambda1 vs n cells in cluster for several E cross cuts and cluster with E > 5
Int_t GetHistodEdxBins() const
TH2F * fhTimeId
! Time vs Absolute cell Id
virtual AliCalorimeterUtils * GetCaloUtils() const
TH2F * fh1EOverP
! p/E for track-cluster matches
Int_t GetHistoNClusterCellMax() const
TH2F * fhIMvsOpAngle
! Cluster pairs opening angle vs mass
TH2F * fhRecoMCEta[7][2]
! eta generated particle vs reconstructed Eta
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fh2EledEdxMod
! dE/dx for electron candidates, per SM
TH2F * fhBadClusterLambda1
! Cluster Lambda1 vs Energy, clusters declared bad
TH2F * fhMCEle1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC electrons
TH2F * fhECellTotalRatio
! e cell / e total vs e total
Int_t fEMCALClusterNCellMin
Minimum number of cells on EMCal clusters.
Int_t GetHistoTrackResidualPhiBins() const
TH1F * fhNClusters
! Number of clusters
virtual AliPHOSGeoUtils * GetPHOSGeometry() const
TH2F * fhMCEle1EOverP
! p/E for track-cluster matches, MC electrons
Int_t GetNumberOfSuperModulesUsed() const
TH2F * fhExoECross[10][5]
! E cross for max cell in cluster, for different cuts
TH1F * fhMCEle1dR
! distance between projected track and cluster, MC electrons
virtual Int_t GetV0Signal(Int_t i) const
TH2F * fhOpAngle
! Cluster pairs opening angle vs pair pT
TH1F * fhGenMCE[4]
! pt of primary particle
TH2F * fhIMDiff
! Cluster pairs invariant mass vs pair pT, for EMCAL or PHOS pairs
Float_t fExoDTimeCuts[5]
List of time cuts.
TH2F * fhEMR
! Electromagnetic distance to vertex vs rec energy
virtual Double_t GetEventWeight() const
TH2F * fhClusterPairDiffTimeEPi0MassDCal
! DCal Cluster time TOF difference, for pairs in 0.1 < mass < 0.18
TH2F * fhExoL0ECross
! Lambda0 vs E cross fraction for clusters with E > 5 GeV
virtual AliCaloPID * GetCaloPID()
TH2F * fhCaloTrackMCorrNCells
! Calo vs V0 Track Multiplicity, number of cells