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(kTRUE),
54 fFillAllTMHisto(kTRUE), fFillAllPi0Histo(kTRUE),
55 fCorrelate(kTRUE), fStudyBadClusters(kFALSE),
56 fStudyClustersAsymmetry(kFALSE), fStudyExotic(kFALSE),
60 fNModules(12), fNRCU(2),
61 fNMaxCols(48), fNMaxRows(24),
62 fTimeCutMin(-10000), fTimeCutMax(10000),
63 fCellAmpMin(0), fEMCALCellAmpMin(0),
64 fPHOSCellAmpMin(0), fMinInvMassECut(0),
67 fExoNECrossCuts(0), fExoECrossCuts(),
68 fExoNDTimeCuts(0), fExoDTimeCuts(),
70 fClusterMomentum(), fClusterMomentum2(),
75 fhEtaPhi(0), fhEtaPhiE(0),
76 fhECharged(0), fhPtCharged(0),
77 fhPhiCharged(0), fhEtaCharged(0),
78 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
83 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
86 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
87 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0),
88 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
89 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
90 fhClusterMaxCellDiffAverageTime(0), fhClusterMaxCellDiffWeightedTime(0),
91 fhClusterMaxCellECross(0),
92 fhLambda0(0), fhLambda1(0), fhDispersion(0),
95 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0),
96 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
97 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
98 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
99 fhBadClusterMaxCellECross(0),
100 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
101 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
104 fhRNCells(0), fhXNCells(0),
105 fhYNCells(0), fhZNCells(0),
109 fhRCellE(0), fhXCellE(0),
110 fhYCellE(0), fhZCellE(0),
112 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
113 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
114 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
115 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
118 fhNCells(0), fhNCellsCutAmpMin(0),
119 fhAmplitude(0), fhAmpId(0), fhEtaPhiAmp(0),
120 fhTime(0), fhTimeVz(0),
121 fhTimeId(0), fhTimeAmp(0),
122 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
126 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
127 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
128 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
129 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
130 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
131 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
132 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
133 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
134 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
135 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
136 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
137 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
138 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
139 fhCaloCenNCells(0), fhCaloCenECells(0),
140 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
141 fhCaloEvPNCells(0), fhCaloEvPECells(0),
144 fhEMod(0), fhAmpMod(0), fhTimeMod(0),
145 fhNClustersMod(0), fhNCellsMod(0),
146 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
148 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
149 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
150 fhTimeAmpPerRCU(0), fhIMMod(0),
153 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
154 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
155 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
156 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
158 fhExoL0ECross(0), fhExoL1ECross(0),
161 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
162 fhRecoMCDeltaE(), fhRecoMCRatioE(),
163 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
166 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
167 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
170 fhEMVxyz(0), fhEMR(0),
171 fhHaVxyz(0), fhHaR(0),
172 fh1EOverP(0), fh2dR(0),
173 fh2EledEdx(0), fh2MatchdEdx(0),
174 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
175 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
176 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0), fh1EOverPR02(0),
177 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
178 fh1EleEOverP(0), fhMCEle1EleEOverP(0),
179 fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
180 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
181 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
182 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
183 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0)
186 for(Int_t i =0; i < 12; i++)
191 for(Int_t j = 0; j < 5; j++)
208 for (Int_t ie = 0; ie < 10 ; ie++)
211 for (Int_t idt = 0; idt < 5 ; idt++)
225 for(Int_t i = 0; i < 7; i++)
236 for(Int_t i = 0; i < 4; i++)
261 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
268 Double_t tof = clus->GetTOF()*1.e9;
279 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
281 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
283 if(clus->GetID() == clus2->GetID())
continue;
285 Float_t maxCellFraction2 = 0.;
289 Double_t tof2 = clus2->GetTOF()*1.e9;
298 Double_t timeAverages[2] = {0.,0.};
305 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
307 Int_t absId = clus->GetCellsAbsId()[ipos];
308 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
310 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
317 Double_t time = cells->GetCellTime(absId);
320 Float_t diff = (tmax-time*1e9);
335 AliVCaloCells* cells,
336 Double_t timeAverages[2])
340 Float_t ampMax = 0, amp = 0;
343 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
345 Int_t
id = clus->GetCellsAbsId()[ipos];
348 amp = cells->GetCellAmplitude(
id);
367 Int_t ncells = clus->GetNCells();
369 for (Int_t ipos = 0; ipos < ncells; ipos++)
371 id = clus ->GetCellsAbsId()[ipos];
372 amp = cells->GetCellAmplitude(
id);
373 time = cells->GetCellTime(
id);
381 wTime += time*1e9 * w;
385 if(ncells > 0) aTime /= ncells;
388 if(wTot > 0) wTime /= wTot;
391 timeAverages[0] = aTime;
392 timeAverages[1] = wTime;
400 Int_t ncells = cells->GetNumberOfCells();
404 Float_t ecellsCut = 0;
409 Int_t *nCellsInModule =
new Int_t [
fNModules];
410 Float_t *eCellsInModule =
new Float_t[
fNModules];
412 for(Int_t imod = 0; imod <
fNModules; imod++ )
414 nCellsInModule[imod] = 0 ;
415 eCellsInModule[imod] = 0.;
424 Bool_t highG = kFALSE;
428 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
430 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
434 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
436 if(nModule < fNModules)
443 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
447 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
451 amp = cells->GetAmplitude(iCell)*recalF;
452 time = cells->GetTime(iCell);
453 id = cells->GetCellNumber(iCell);
454 highG = cells->GetCellHighGain(
id);
467 AliDebug(1,Form(
"Remove cell with Time %f",time));
473 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
485 eCellsInModule[nModule]+=amp ;
491 nCellsInModule[nModule]++ ;
503 if ( nModule > 11 && nModule < 18) shiftEta+=
fNMaxCols/3;
505 icols = (nModule % 2) ? icol + shiftEta : icol;
509 irows = irow +
fNMaxRows * Int_t(nModule / 2);
512 if ( nModule > 11 && nModule < 20) irows -= (2*
fNMaxRows / 3);
532 Double_t v[3] = {0,0,0};
559 Float_t celleta = 0.;
560 Float_t cellphi = 0.;
565 Double_t cellpos[] = {0, 0, 0};
572 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
580 Int_t relId[4], module;
581 Float_t xCell, zCell;
588 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
606 for(Int_t imod = 0; imod <
fNModules; imod++ )
608 AliDebug(1,Form(
"Module %d calo %s cells %d", imod,
GetCalorimeterString().Data(), nCellsInModule[imod]));
616 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
618 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
622 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
624 if(nModule < fNModules)
631 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
635 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
639 amp = cells->GetAmplitude(iCell)*recalF;
640 time = cells->GetTime(iCell);
641 id = cells->GetCellNumber(iCell);
648 GetReader()->GetInputEvent()->GetBunchCrossNumber());
655 AliDebug(1,Form(
"Remove cell with Time %f",time));
661 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
668 Float_t ratio = amp/ecellsCut;
673 if(eCellsInModule[nModule] > 0)
675 Float_t ratioMod = amp/eCellsInModule[nModule];
684 delete [] nCellsInModule;
685 delete [] eCellsInModule;
693 Int_t nCaloCellsPerCluster = clus->GetNCells();
695 UShort_t * indexList = clus->GetCellsAbsId();
698 clus->GetPosition(pos);
700 Float_t clEnergy = clus->E();
703 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
706 Int_t absId = indexList[ipos];
712 Double_t cellpos[] = {0, 0, 0};
723 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
724 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
732 Int_t relId[4], module;
733 Float_t xCell, zCell;
748 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
749 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
764 if( clus->GetNCells() <= 3 )
return;
769 Int_t ietaMax=-1; Int_t iphiMax = 0; Int_t rcuMax = 0;
772 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
774 Int_t absId = clus->GetCellsAbsId()[ipos];
776 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
779 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
783 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
787 Int_t ietaShift = ieta;
788 Int_t ietaMaxShift = ietaMax;
789 if (ieta > ietaMax) ietaMaxShift+=48;
791 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
795 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
816 Int_t nLabel = clus->GetNLabels();
817 Int_t* labels = clus->GetLabels();
863 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
866 Double_t tof = clus->GetTOF()*1.e9;
879 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
881 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
883 if( clus->GetID() == clus2->GetID() )
continue;
885 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
887 Double_t tof2 = clus2->GetTOF()*1.e9;
893 Int_t nCaloCellsPerCluster = clus->GetNCells();
895 if(nCaloCellsPerCluster > 1)
902 Double_t timeAverages[2] = {0.,0.};
909 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
911 Int_t absId = clus->GetCellsAbsId()[ipos];
912 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
914 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
920 Double_t time = cells->GetCellTime(absId);
923 Float_t diff = (tmax-time*1.0e9);
936 if(phi < 0) phi +=TMath::TwoPi();
938 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
957 clus->GetPosition(pos);
969 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
992 AliVCaloCells* cells)
996 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
997 Int_t nCaloClustersAccepted = 0 ;
998 Int_t nCaloCellsPerCluster = 0 ;
999 Bool_t matched = kFALSE;
1003 Double_t v[3] = {0,0,0};
1006 Int_t *nClustersInModule =
new Int_t[
fNModules];
1007 for(Int_t imod = 0; imod <
fNModules; imod++ ) nClustersInModule[imod] = 0;
1012 for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1014 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1016 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1019 Float_t maxCellFraction = 0.;
1023 Double_t tof = clus->GetTOF()*1.e9;
1026 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1039 nLabel = clus->GetNLabels();
1040 labels = clus->GetLabels();
1046 nCaloCellsPerCluster = clus->GetNCells();
1052 Double_t tmax = cells->GetCellTime(absIdMax);
1060 if(nModule >=0 && nModule < fNModules)
1065 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1073 Float_t eCrossFrac = 0;
1074 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1079 maxCellFraction, eCrossFrac, tmax);
1084 maxCellFraction, eCrossFrac, tmax);
1086 nCaloClustersAccepted++;
1089 nClustersInModule[nModule]++;
1098 Int_t mcOK = kFALSE;
1100 if(
IsDataMC() && nLabel > 0 && labels)
1111 GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1 &&
1121 for(Int_t imod = 0; imod <
fNModules; imod++ )
1123 AliDebug(1,Form(
"Module %d calo %s clusters %d", imod,
GetCalorimeterString().Data(), nClustersInModule[imod]));
1127 delete [] nClustersInModule;
1135 Int_t nLabels, Int_t & pdg )
1137 if(!labels || nLabels<=0)
1139 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1143 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1148 if(phi < 0) phi +=TMath::TwoPi();
1150 AliAODMCParticle * aodprimary = 0x0;
1151 TParticle * primary = 0x0;
1154 Int_t label = labels[0];
1158 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1162 Int_t pdg0 =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
1163 Float_t vxMC = 0; Float_t vyMC = 0;
1165 Float_t phiMC = 0; Float_t etaMC = 0;
1177 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1183 pdg0 = TMath::Abs(primary->GetPdgCode());
1185 status = primary->GetStatusCode();
1186 vxMC = primary->Vx();
1187 vyMC = primary->Vy();
1188 iParent = primary->GetFirstMother();
1190 AliDebug(1,
"Cluster most contributing mother:");
1191 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1199 pdg = TMath::Abs(primary->GetPdgCode());
1201 AliDebug(2,
"Converted cluster!. Find before conversion:");
1203 while((pdg == 22 || pdg == 11) && status != 1)
1205 Int_t iMotherOrg = iMother;
1208 status = primary->GetStatusCode();
1209 pdg = TMath::Abs(primary->GetPdgCode());
1210 iParent = primary->GetFirstMother();
1214 if(pdg==111 || pdg==221)
1216 primary =
GetMCStack()->Particle(iMotherOrg);
1226 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1229 AliDebug(1,
"Converted Cluster mother before conversion:");
1230 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1238 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1240 while(pdg != 111 && pdg != 221)
1245 status = primary->GetStatusCode();
1246 pdg = TMath::Abs(primary->GetPdgCode());
1247 iParent = primary->GetFirstMother();
1249 if( iParent < 0 )
break;
1251 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1255 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1260 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1263 eMC = primary->Energy();
1265 phiMC = primary->Phi();
1266 etaMC = primary->Eta();
1267 pdg = TMath::Abs(primary->GetPdgCode());
1268 charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1271 else if(
GetReader()->ReadAODMCParticles() &&
1277 AliFatal(
"MCParticles not available!");
1281 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1283 status = aodprimary->IsPrimary();
1284 vxMC = aodprimary->Xv();
1285 vyMC = aodprimary->Yv();
1286 iParent = aodprimary->GetMother();
1288 AliDebug(1,
"Cluster most contributing mother:");
1289 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1290 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1295 AliDebug(2,
"Converted cluster!. Find before conversion:");
1299 pdg = TMath::Abs(aodprimary->GetPdgCode());
1301 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1303 Int_t iMotherOrg = iMother;
1306 status = aodprimary->IsPrimary();
1307 iParent = aodprimary->GetMother();
1308 pdg = TMath::Abs(aodprimary->GetPdgCode());
1312 if( pdg == 111 || pdg == 221 )
1324 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1325 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1328 AliDebug(1,
"Converted Cluster mother before conversion:");
1329 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1330 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1338 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1340 while(pdg != 111 && pdg != 221)
1344 status = aodprimary->IsPrimary();
1345 iParent = aodprimary->GetMother();
1346 pdg = TMath::Abs(aodprimary->GetPdgCode());
1348 if( iParent < 0 )
break;
1350 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1354 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1359 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1362 status = aodprimary->IsPrimary();
1363 eMC = aodprimary->E();
1365 phiMC = aodprimary->Phi();
1366 etaMC = aodprimary->Eta();
1367 pdg = TMath::Abs(aodprimary->GetPdgCode());
1368 charge = aodprimary->Charge();
1372 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1373 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1406 else if(charge == 0)
1421 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1432 if( primary || aodprimary )
return kTRUE ;
1448 if(phi < 0) phi +=TMath::TwoPi();
1464 Double_t tpt = track->Pt();
1465 Double_t tmom = track->P();
1466 Double_t dedx = track->GetTPCsignal();
1467 Int_t nITS = track->GetNcls(0);
1468 Int_t nTPC = track->GetNcls(1);
1469 Bool_t positive = kFALSE;
1470 if(track) positive = (track->Charge()>0);
1473 Float_t deta = clus->GetTrackDz();
1474 Float_t dphi = clus->GetTrackDx();
1475 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1478 if( TMath::Abs(dphi) < 999 )
1506 Double_t eOverP = e/tmom;
1520 Double_t
charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1522 if(TMath::Abs(pdg) == 11)
1546 else if(charge == 0)
1560 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1561 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1577 if(!caloClustersEMCAL || !caloClustersPHOS)
1579 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1587 if(!cellsEMCAL || !cellsPHOS)
1589 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1598 Float_t sumClusterEnergyEMCAL = 0;
1599 Float_t sumClusterEnergyDCAL = 0;
1600 Float_t sumClusterEnergyPHOS = 0;
1604 AliVCluster* cluster = 0;
1605 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1607 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1608 Float_t energy = cluster->E();
1610 if( energy < 0.5 )
continue;
1612 if(cluster->GetCellsAbsId()[0] < 12288)
1615 sumClusterEnergyEMCAL += energy;
1620 sumClusterEnergyDCAL += energy;
1624 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1626 cluster = (AliVCluster*)caloClustersPHOS->At(iclus);
1628 energy = cluster->E();
1630 if( energy < 0.5 )
continue;
1633 sumClusterEnergyPHOS += energy;
1637 Int_t ncellsEMCAL = 0 ;
1638 Int_t ncellsDCAL = 0 ;
1639 Int_t ncellsPHOS = 0;
1641 Float_t sumCellEnergyEMCAL = 0;
1642 Float_t sumCellEnergyDCAL = 0;
1643 Float_t sumCellEnergyPHOS = 0;
1645 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1647 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1648 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1655 sumCellEnergyEMCAL += amp;
1660 sumCellEnergyDCAL += amp;
1664 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1666 Float_t amp = cellsPHOS->GetAmplitude(icell);
1671 sumCellEnergyPHOS += amp;
1697 Int_t ncl = nclPHOS;
1698 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1699 Int_t ncells = ncellsPHOS;
1700 Float_t sumCellEnergy = sumCellEnergyPHOS;
1704 ncl = nclEMCAL + nclDCAL;
1705 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1706 ncells = ncellsEMCAL + ncellsDCAL;
1707 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1735 AliDebug(1,
"Correlate():");
1736 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1737 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1738 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1739 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1740 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1741 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1742 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1743 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1752 const Int_t buffersize = 255;
1753 char onePar[buffersize] ;
1755 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1763 snprintf(onePar,buffersize,
"Inv. Mass E1, E2 > %2.2f GeV;",
fMinInvMassECut) ;
1772 return new TObjString(parList) ;
1779 AliVCluster *clus, AliVCaloCells* cells)
1783 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1787 Float_t l0 = clus->GetM02();
1788 Float_t l1 = clus->GetM20();
1789 Float_t en = clus->E();
1790 Int_t nc = clus->GetNCells();
1791 Double_t tmax = clus->GetTOF()*1.e9;
1793 Float_t eCrossFrac = 1-
GetECross(absIdMax,cells, 10000000)/ampMax;
1823 for (Int_t icell = 0; icell < clus->GetNCells(); icell++)
1825 Int_t absId = clus->GetCellsAbsId()[icell];
1826 Double_t time = cells->GetCellTime(absId);
1829 Float_t diff = (tmax-time)*1e9;
1849 TList * outputContainer =
new TList() ;
1850 outputContainer->SetName(
"QAHistos") ;
1901 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
1902 fhE->SetXTitle(
"#it{E} (GeV)");
1903 outputContainer->Add(
fhE);
1905 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
1906 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1907 outputContainer->Add(
fhPt);
1909 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
1910 fhPhi->SetXTitle(
"#phi (rad)");
1911 outputContainer->Add(
fhPhi);
1913 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
1914 fhEta->SetXTitle(
"#eta ");
1915 outputContainer->Add(
fhEta);
1919 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
1920 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
1928 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
1929 netabins,etamin,etamax,nphibins,phimin,phimax);
1935 fhClusterTimeEnergy =
new TH2F (
"hClusterTimeEnergy",
"energy vs TOF, reconstructed clusters",
1936 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1941 fhClusterPairDiffTimeE =
new TH2F(
"hClusterPairDiffTimeE",
"cluster pair time difference vs E, only good clusters",
1942 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
1947 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
1948 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1949 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
1950 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
1953 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
1954 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1955 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
1956 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
1959 fhDispersion =
new TH2F (
"hDispersion",
"shower shape, Dispersion^{2} vs E for bad cluster ",
1960 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1965 fhClusterMaxCellCloseCellRatio =
new TH2F (
"hClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
1966 nptbins,ptmin,ptmax, 100,0,1.);
1971 fhClusterMaxCellCloseCellDiff =
new TH2F (
"hClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
1972 nptbins,ptmin,ptmax, 500,0,100.);
1977 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
1978 nptbins,ptmin,ptmax, 500,0,1.);
1983 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
1984 nptbins,ptmin,ptmax, 500,0,1.);
1989 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
1990 nptbins,ptmin,ptmax, 400,-1,1.);
1995 fhNCellsPerClusterNoCut =
new TH2F (
"hNCellsPerClusterNoCut",
"# cells per cluster vs energy, no bad clusters cut",
1996 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2001 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2006 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2012 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2016 fhBadClusterMaxCellCloseCellRatio =
new TH2F (
"hBadClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
2017 nptbins,ptmin,ptmax, 100,0,1.);
2022 fhBadClusterMaxCellCloseCellDiff =
new TH2F (
"hBadClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
2023 nptbins,ptmin,ptmax, 500,0,100);
2028 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2029 nptbins,ptmin,ptmax, 500,0,1.);
2034 fhBadClusterTimeEnergy =
new TH2F (
"hBadClusterTimeEnergy",
"energy vs TOF of reconstructed bad clusters",
2035 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2040 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2045 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2046 nptbins,ptmin,ptmax, 400,-1,1.);
2053 fhBadCellTimeSpreadRespectToCellMax =
new TH2F (
"hBadCellTimeSpreadRespectToCellMax",
"#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2058 fhBadClusterMaxCellDiffAverageTime =
new TH2F (
"hBadClusterMaxCellDiffAverageTime",
"#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2063 fhBadClusterMaxCellDiffWeightedTime =
new TH2F (
"hBadClusterMaxCellDiffWeightedTime",
"#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2075 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2076 400,0,1,ssbins,ssmin,ssmax);
2077 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2082 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2083 400,0,1,ssbins,ssmin,ssmax);
2084 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2091 fhExoDTime[ie] =
new TH2F(Form(
"hExoDTime_ECross%d",ie),
2092 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2093 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2094 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2100 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2101 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2102 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2103 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2104 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2107 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2108 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]),
2109 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2110 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2111 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2112 outputContainer->Add(
fhExoL0[ie][idt]) ;
2114 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2115 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]),
2116 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2117 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2118 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2119 outputContainer->Add(
fhExoL1[ie][idt]) ;
2121 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2122 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]),
2123 nptbins,ptmin,ptmax,400,0,1);
2124 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2125 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2128 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2129 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]),
2130 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2131 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2132 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2133 outputContainer->Add(
fhExoTime[ie][idt]) ;
2135 fhExoL0NCell[ie][idt] =
new TH2F(Form(
"hExoL0_NCell%d_DT%d",ie,idt),
2136 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]),
2137 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2142 fhExoL1NCell[ie][idt] =
new TH2F(Form(
"hExoL1_NCell%d_DT%d",ie,idt),
2143 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]),
2144 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2156 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2162 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2168 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2174 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2175 nptbins,ptmin,ptmax,21,-1.05,1.05);
2176 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2177 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2180 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2181 ssbins,ssmin,ssmax,21,-1.05,1.05);
2183 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2186 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2187 ssbins,ssmin,ssmax,21,-1.05,1.05);
2189 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2192 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2193 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2199 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2205 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2211 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2217 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2218 nptbins,ptmin,ptmax,21,-1.05,1.05);
2219 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2220 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2223 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2224 ssbins,ssmin,ssmax,21,-1.05,1.05);
2226 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2229 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2230 ssbins,ssmin,ssmax,21,-1.05,1.05);
2232 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2235 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2236 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2242 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2243 for (Int_t iPart = 0; iPart < 4; iPart++) {
2245 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].Data()),
2246 nptbins,ptmin,ptmax,21,-1.05,1.05);
2247 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2248 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2273 fhBadClusterDeltaIA =
new TH2F (
"hBadClusterDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2274 nptbins,ptmin,ptmax,21,-1.05,1.05);
2283 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy",
2284 nptbins,ptmin,ptmax, 100,0,1.);
2289 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy",
2290 nptbins,ptmin,ptmax, 100,-10,0);
2295 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy",
2296 nptbins,ptmin,ptmax, 100,0,1.);
2301 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy",
2302 nptbins,ptmin,ptmax, 100,-10,0);
2307 fhECellTotalRatio =
new TH2F (
"hECellTotalRatio",
" cell energy / sum all energy vs all energy",
2308 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2313 fhECellTotalLogRatio =
new TH2F (
"hECellTotalLogRatio",
" Log(cell energy / sum all energy) vs all energy",
2314 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2322 for(Int_t imod = 0; imod <
fNModules; imod++)
2325 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2326 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2332 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2333 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2339 for(Int_t iw = 0; iw < 12; iw++)
2341 Float_t w0 = 3+0.25*iw;
2342 fhLambda0ForW0[iw] =
new TH2F (Form(
"hLambda0ForW0%d",iw),Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",w0),
2343 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2355 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2356 for(Int_t imc = 0; imc < 5; imc++){
2357 fhLambda0ForW0MC[iw][imc] =
new TH2F (Form(
"hLambda0ForW0%d_MC%s",iw,mcnames[imc].Data()),
2358 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].Data()),
2359 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2385 fhTrackMatchedDEtaNeg =
new TH2F(
"hTrackMatchedDEtaNeg",
"d#eta of cluster-negative track vs cluster energy",
2386 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2390 fhTrackMatchedDPhiNeg =
new TH2F(
"hTrackMatchedDPhiNeg",
"d#phi of cluster-negative track vs cluster energy",
2391 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2395 fhTrackMatchedDEtaDPhiNeg =
new TH2F(
"hTrackMatchedDEtaDPhiNeg",
"d#eta vs d#phi of cluster- negative track vs cluster energy",
2396 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2400 fhTrackMatchedDEtaPos =
new TH2F(
"hTrackMatchedDEtaPos",
"d#eta of cluster-positive track vs cluster energy",
2401 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2405 fhTrackMatchedDPhiPos =
new TH2F(
"hTrackMatchedDPhiPos",
"d#phi of cluster-positive track vs cluster energy",
2406 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2410 fhTrackMatchedDEtaDPhiPos =
new TH2F(
"hTrackMatchedDEtaDPhiPos",
"d#eta vs d#phi of cluster-positive track vs cluster energy",
2411 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2416 fhTrackMatchedDEtaNegMod =
new TH2F(
"hTrackMatchedDEtaNegPerModule",
"d#eta of cluster-negative track vs module, E > 0.5 GeV",
2421 fhTrackMatchedDPhiNegMod =
new TH2F(
"hTrackMatchedDPhiNegPerModule",
"d#phi of cluster-negative track vs module, E > 0.5 GeV",
2426 fhTrackMatchedDEtaPosMod =
new TH2F(
"hTrackMatchedDEtaPosPerModule",
"d#eta of cluster-positive track vs module, E > 0.5 GeV",
2431 fhTrackMatchedDPhiPosMod =
new TH2F(
"hTrackMatchedDPhiPosPerModule",
"d#phi of cluster-positive track vs module, E > 0.5 GeV",
2448 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2452 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2453 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2456 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2460 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2466 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2467 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2475 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2476 netabins,etamin,etamax,nphibins,phimin,phimax);
2482 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2484 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2487 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2488 fh2dR->SetXTitle(
"#Delta #it{R} (rad)");
2489 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2490 outputContainer->Add(
fh2dR) ;
2492 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2497 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2502 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2507 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2515 fhIM =
new TH2F (
"hIM",
"Cluster pairs Invariant mass vs reconstructed pair energy, ncell > 1",nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2516 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2517 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2518 outputContainer->Add(
fhIM);
2520 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2521 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2522 fhAsym->SetYTitle(
"#it{Asymmetry}");
2523 outputContainer->Add(
fhAsym);
2530 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2531 fhXYZ->SetXTitle(
"#it{x} (cm)");
2532 fhXYZ->SetYTitle(
"#it{y} (cm)");
2533 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2534 outputContainer->Add(
fhXYZ);
2537 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2539 fhXNCells->SetYTitle(
"N cells per cluster");
2542 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2544 fhZNCells->SetYTitle(
"N cells per cluster");
2547 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2548 fhXE->SetXTitle(
"#it{x} (cm)");
2549 fhXE->SetYTitle(
"#it{E} (GeV)");
2550 outputContainer->Add(
fhXE);
2552 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2553 fhZE->SetXTitle(
"#it{z} (cm)");
2554 fhZE->SetYTitle(
"#it{E} (GeV)");
2555 outputContainer->Add(
fhZE);
2557 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2558 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2559 fhRNCells->SetYTitle(
"N cells per cluster");
2563 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2565 fhYNCells->SetYTitle(
"N cells per cluster");
2568 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2569 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2570 fhRE->SetYTitle(
"#it{E} (GeV)");
2571 outputContainer->Add(
fhRE);
2573 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2574 fhYE->SetXTitle(
"#it{y} (cm)");
2575 fhYE->SetYTitle(
"#it{E} (GeV)");
2576 outputContainer->Add(
fhYE);
2581 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2582 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2583 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2586 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2587 fhXCellE->SetXTitle(
"#it{x} (cm)");
2588 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2591 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2592 fhYCellE->SetXTitle(
"#it{y} (cm)");
2593 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2596 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2597 fhZCellE->SetXTitle(
"#it{z} (cm)");
2598 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2601 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2607 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2608 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2609 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2610 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2612 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2617 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2622 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2627 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2632 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2637 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2642 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
2647 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
2652 fhEtaPhiAmp =
new TH3F (
"hEtaPhiAmp",
"Cell #eta vs cell #phi vs cell energy",netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2661 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
2662 fhNCells->SetXTitle(
"#it{n}_{cells}");
2669 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
2674 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
2675 outputContainer->Add(
fhAmpId);
2683 fhCellTimeSpreadRespectToCellMax =
new TH2F (
"hCellTimeSpreadRespectToCellMax",
"t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2688 fhClusterMaxCellDiffAverageTime =
new TH2F (
"hClusterMaxCellDiffAverageTime",
"t_{cell max}-t_{average} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2693 fhClusterMaxCellDiffWeightedTime =
new TH2F (
"hClusterMaxCellDiffWeightedTime",
"t_{cell max}-t_{weighted} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2703 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
2704 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
2705 outputContainer->Add(
fhTime);
2707 fhTimeVz =
new TH2F (
"hTimeVz",
"#it{t}_{cell} vs vertex, amplitude > 0.5 GeV",100, 0, 50,ntimebins,timemin,timemax);
2708 fhTimeVz->SetXTitle(
"|v_{z}| (cm)");
2709 fhTimeVz->SetYTitle(
"#it{t}_{cell} (ns)");
2712 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
2714 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
2715 fhTimeId->SetYTitle(
"Cell Absolute Id");
2718 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
2719 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
2720 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
2723 fhTimeIdLowGain =
new TH2F (
"hTimeIdLG",
"Low gain: #it{t}_{cell} vs Absolute Id",
2729 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
2735 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
2736 nptbins,ptmin,ptmax, 400,-1,1.);
2738 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
2745 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
2750 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
2755 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
2760 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
2766 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
2771 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
2776 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
2781 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
2788 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
2793 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
2798 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
2803 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
2873 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
2878 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
2883 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
2888 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
2889 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
2893 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
2898 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
2903 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
2908 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
2909 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
2916 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
2917 fhEMod->SetXTitle(
"#it{E} (GeV)");
2918 fhEMod->SetYTitle(
"Module");
2919 outputContainer->Add(
fhEMod);
2921 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
2922 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
2928 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
2934 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
2939 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
2956 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
2957 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
2962 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
2963 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
2968 fhGridCellsLowGain =
new TH2F (
"hGridCellsLG",Form(
"Low gain: Entries in grid of cells"),
2969 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
2974 fhGridCellsELowGain =
new TH2F (
"hGridCellsELG",
"Low gain: Accumulated energy in grid of cells",
2975 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
2982 fhGridCellsTime =
new TH2F (
"hGridCellsTime",
"Accumulated time in grid of cells",
2983 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
2989 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3000 for(Int_t imod = 0; imod <
fNModules; imod++)
3003 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3004 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3010 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3011 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3018 for(Int_t ircu = 0; ircu <
fNRCU; ircu++)
3020 fhTimeAmpPerRCU[imod*fNRCU+ircu] =
new TH2F (Form(
"hTimeAmp_Mod%d_RCU%d",imod,ircu),
3021 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3022 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3031 fhIMMod[imod] =
new TH2F (Form(
"hIM_Mod%d",imod),
3032 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3033 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3034 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3035 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3036 outputContainer->Add(
fhIMMod[imod]);
3042 TString particleName[] = {
3043 "Photon",
"Pi0",
"Eta",
3044 "Electron",
"PhotonConv",
3045 "NeutralHadron",
"ChargedHadron" };
3049 for(Int_t iPart = 0; iPart < 7; iPart++)
3051 for(Int_t iCh = 0; iCh < 2; iCh++)
3053 fhRecoMCRatioE[iPart][iCh] =
new TH2F (Form(
"hRecoMCRatioE_%s_Match%d",particleName[iPart].Data(),iCh),
3054 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].Data(),iCh),
3055 nptbins, ptmin, ptmax, 200,0,2);
3056 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3057 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3061 fhRecoMCDeltaE[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaE_%s_Match%d",particleName[iPart].Data(),iCh),
3062 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].Data(),iCh),
3063 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3065 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3068 fhRecoMCDeltaPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].Data(),iCh),
3069 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].Data(),iCh),
3070 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3075 fhRecoMCDeltaEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaEta_%s_Match%d",particleName[iPart].Data(),iCh),
3076 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].Data(),iCh),
3077 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3082 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].Data(),iCh),
3083 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3084 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3085 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3086 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3087 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3089 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].Data(),iCh),
3090 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3091 nphibins,phimin,phimax, nphibins,phimin,phimax);
3092 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3093 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3096 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].Data(),iCh),
3097 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
3098 netabins,etamin,etamax,netabins,etamin,etamax);
3099 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3100 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3107 for(Int_t iPart = 0; iPart < 4; iPart++)
3109 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].Data()) ,
3110 Form(
"#it{E} of generated %s",particleName[iPart].Data()),
3111 nptbins,ptmin,ptmax);
3113 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].Data()) ,
3114 Form(
"#it{p}_{T} of generated %s",particleName[iPart].Data()),
3115 nptbins,ptmin,ptmax);
3117 fhGenMCEtaPhi[iPart] =
new TH2F(Form(
"hGenMCEtaPhi_%s",particleName[iPart].Data()),
3118 Form(
"Y vs #phi of generated %s",particleName[iPart].Data()),
3119 200,-1,1,360,0,TMath::TwoPi());
3121 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3122 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3126 outputContainer->Add(
fhGenMCE [iPart]);
3127 outputContainer->Add(
fhGenMCPt [iPart]);
3131 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].Data()) ,
3132 Form(
"#it{E} of generated %s",particleName[iPart].Data()),
3133 nptbins,ptmin,ptmax);
3134 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].Data()) ,
3135 Form(
"#it{p}_{T} of generated %s",particleName[iPart].Data()),
3136 nptbins,ptmin,ptmax);
3137 fhGenMCAccEtaPhi[iPart] =
new TH2F(Form(
"hGenMCAccEtaPhi_%s",particleName[iPart].Data()),
3138 Form(
"Y vs #phi of generated %s",particleName[iPart].Data()),
3139 netabins,etamin,etamax,nphibins,phimin,phimax);
3142 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3154 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3160 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3166 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3167 fhEMR->SetXTitle(
"#it{E} (GeV)");
3168 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3169 outputContainer->Add(
fhEMR);
3171 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3172 fhHaR->SetXTitle(
"#it{E} (GeV)");
3173 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3174 outputContainer->Add(
fhHaR);
3178 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3183 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3184 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3187 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3192 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3197 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3201 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3206 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3211 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3215 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3220 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3225 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3230 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3235 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3240 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3245 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3254 return outputContainer;
3263 Int_t icol =-1, irow=-1,iRCU = -1;
3273 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3280 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3285 else if( icol == 0 && imod%2 )
3292 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3301 Double_t tcell = cells->GetCellTime(absID);
3304 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3305 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3309 ecell1 = cells->GetCellAmplitude(absID1);
3311 tcell1 = cells->GetCellTime(absID1);
3317 ecell2 = cells->GetCellAmplitude(absID2);
3319 tcell2 = cells->GetCellTime(absID2);
3325 ecell3 = cells->GetCellAmplitude(absID3);
3327 tcell3 = cells->GetCellTime(absID3);
3333 ecell4 = cells->GetCellAmplitude(absID4);
3335 tcell4 = cells->GetCellTime(absID4);
3339 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3340 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3341 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3342 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3344 return ecell1+ecell2+ecell3+ecell4;
3348 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3350 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3351 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3352 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3353 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3360 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3362 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3363 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3364 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3365 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3367 return ecell1+ecell2+ecell3+ecell4;
3379 AliVCaloCells * cells)
3381 AliDebug(1,
"Start");
3384 Double_t v[3] = {0,0,0};
3387 Int_t nModule2 = -1;
3388 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3390 for(Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3392 AliVCluster* clus2 = (AliVCluster*)caloClusters->At(jclus);
3394 Float_t maxCellFraction = 0.;
3399 if( clus2->GetNCells() <= 1 || !
IsGoodCluster(absIdMax,cells) ||
3425 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3481 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
3492 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
3495 if(ampMax < 0.01)
return kFALSE;
3497 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
3510 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3532 TObjArray * caloClusters = NULL;
3533 AliVCaloCells * cells = 0x0;
3547 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().Data()));
3549 if( !caloClusters || !cells )
3551 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
3555 if(caloClusters->GetEntriesFast() == 0)
return ;
3579 TParticle * primStack = 0;
3580 AliAODMCParticle * primAOD = 0;
3585 AliStack * stack = 0;
3590 nprim = stack->GetNtrack();
3594 TClonesArray * mcparticles = 0;
3598 if( !mcparticles )
return;
3599 nprim = mcparticles->GetEntriesFast();
3603 for(Int_t i=0 ; i < nprim; i++)
3605 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
3611 primStack = stack->Particle(i) ;
3614 AliWarning(
"ESD primaries pointer not available!!");
3618 pdg = primStack->GetPdgCode();
3619 status = primStack->GetStatusCode();
3623 if ( status > 11 )
continue;
3625 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ) continue ;
3634 primAOD = (AliAODMCParticle *) mcparticles->At(i);
3637 AliWarning(
"AOD primaries pointer not available!!");
3641 pdg = primAOD->GetPdgCode();
3642 status = primAOD->GetStatus();
3646 if (!primAOD->IsPrimary())
continue;
3648 if ( status > 11 )
continue;
3650 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ) continue ;
3655 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
3659 if(eMC < 0.2)
continue;
3666 if (TMath::Abs(etaMC) > 1)
continue;
3670 phiMC += TMath::TwoPi();
3674 else if (pdg==111) mcIndex =
kmcPi0;
3675 else if (pdg==221) mcIndex =
kmcEta;
3676 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
3684 Bool_t inacceptance = kTRUE;
3687 inacceptance = kFALSE ;
3697 if(!inacceptance)
continue;
3714 Float_t energyOrg = clus->E();
3717 if(clus->GetNCells() < 3)
return ;
3719 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
3721 Int_t
id = clus->GetCellsAbsId()[ipos];
3724 Float_t amp = cells->GetCellAmplitude(
id);
3736 AliWarning(Form(
"Wrong calculated energy %f",energy));
3747 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
3749 Int_t
id = clus->GetCellsAbsId()[ipos];
3752 Float_t amp = cells->GetCellAmplitude(
id);
3762 Float_t l0org = clus->GetM02();
3763 Float_t l1org = clus->GetM20();
3764 Float_t dorg = clus->GetDispersion();
3767 if(
IsDataMC() && clus->GetNLabels() > 0)
3793 for(Int_t iw = 0; iw < 12; iw++)
3809 clus->SetM02(l0org);
3810 clus->SetM20(l1org);
3811 clus->SetDispersion(dorg);
3815 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
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 different module, Reco
TH3F * fhXYZ
! cluster X vs Y vs Z (cm)
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
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)
Bool_t fStudyClustersAsymmetry
Study asymmetry of clusters.
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
virtual Bool_t IsDataMC() const
Float_t fEMCALCellAmpMin
amplitude Threshold on emcal cells
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.
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
AliEMCALRecoUtils * GetEMCALRecoUtils() const
virtual AliStack * GetMCStack() const
Bool_t ReadAODMCParticles() const
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
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
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
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
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 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
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
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 * 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 * fhDispersion
! Cluster Dispersion vs 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
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.
Int_t GetHistoAsymmetryBins() const
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.
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 * 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
TH2F * fhCaloEvPNCells
! Calo vs event plane angle, number of cells
Float_t GetHistoXMax() const
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 * fhRecoMCEta[7][2]
! eta generated particle vs reconstructed Eta
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fhMCEle1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC electrons
TH2F * fhECellTotalRatio
! e cell / e total vs e total
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
TH1F * fhGenMCE[4]
! pt of primary particle
Float_t fExoDTimeCuts[5]
List of time cuts.
TH2F * fhEMR
! Electromagnetic distance to vertex vs rec energy
virtual Double_t GetEventWeight() const
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
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVCaloCells *cells)
Find the number of local maxima in cluster.
void ClusterAsymmetryHistograms(AliVCluster *clus, Int_t absIdMax, Bool_t goodCluster)
Int_t GetHistoTrackMultiplicityBins() const
TH2F * fhDeltaCellClusterXNCells
! X cluster - X cell distribution (cm) vs N cells in cluster
TH2F * fhTrackMatchedDEtaDPhiPos
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
TH1F * fhNCells
! Number of towers/crystals with signal
TH2F * fhTrackMatchedDPhiPos
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhCaloEvPNClusters
! Calo vs event plane angle, number of clusters
virtual TObjArray * GetPHOSClusters() const
TH2F * fhDCALPHOSCorrNClusters
! DCAL vs PHOS, number of clusters
Int_t GetHistoRBins() const
Float_t GetHistoEtaMin() const
TH2F * fhXCellE
! X (cm) cell distribution vs cell energy
TH2F * fhBadClusterDeltaIA
! Cluster "asymmetry" in cell terms vs E, with and without matching; bad clusters.
TH2F * fhHaR
! Hadron distance to vertex vs rec energy
TH2F * fhRE
! R=sqrt(x^2+y^2) (cm) cluster distribution vs cluster energy
Int_t GetHistoNClustersMin() const
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
TH2F * fhIM
! Cluster pairs invariant mass
TH2F * fhExoTime[10][5]
! Time of exotic cluster, for different cuts
Float_t GetHistoVertexDistMax() const
TH2F * fhTimeAmp
! Time vs Amplitude
TH2F * fhClusterMaxCellDiffWeightedTime
! Difference between cluster weighted time and time of cell with more energy
Float_t GetHistoZMin() const
void CalculateAverageTime(AliVCluster *clus, AliVCaloCells *cells, Double_t timeAverages[2])
TH2F * fhMCEle2MatchdEdx
! dE/dx vs. momentum for all matches, MC electrons
Int_t GetHistoYBins() const
Int_t GetHistoNClustersBins() const
TH1F * fhECharged
! E distribution, Reco, matched with track
TH2F * fhNClustersMod
! Number of clusters for different module, Reco
TH2F * fhHaVxyz
! Hadron production vertex
TH2F * fhAmpId
! Amplitude measured in towers/crystals vs id of tower.
TH2F * fhCaloV0SCorrECells
! Calo vs V0 signal, total measured cell energy
TH2F * fhDeltaIAL1[2]
! Cluster "asymmetry" in cell units vs Lambda1 for E > 0.5 GeV, n cells in cluster > 3...
Float_t GetHistoEtaMax() const
Float_t GetHistodRMin() const
TH1F * fhAmplitude
! Amplitude measured in towers/crystals
Int_t GetHistoPtBins() const
TH2F * fhEMod
! Cluster E distribution for different module, Reco
TH2F * fhRNCells
! R=sqrt(x^2+y^2) (cm) cluster distribution vs N cells in cluster
TH2F * fhTrackMatchedDEtaNeg
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhBadClusterDeltaIEtaDeltaIPhiE6
! Difference between max cell index and farthest cell, eta vs phi, E > 6 GeV, with and without matchi...
TH2F * fhZCellE
! Z (cm) cell distribution vs cell energy
TH2F * fhGridCellsTime
! Cells ordered in column/row for different module, weighted with time, Reco
Float_t fExoNECrossCuts
Number of ecross cuts.
AliVTrack * GetMatchedTrack(AliVCluster *cluster, AliVEvent *event, Int_t index=-1) const
TH3F * fhXYZCell
! cell X vs Y vs Z (cm)
TLorentzVector fPrimaryMomentum
! Primary MC momentum, temporary container
Float_t GetHistoPOverEMax() const
TH2F * fhCaloEvPEClusters
! Calo vs event plane angle, total measured cluster energy
Bool_t fCorrelate
Correlate PHOS/EMCAL cells/clusters, also with V0 and track multiplicity.
TH2F * fhDeltaIEtaDeltaIPhiE2[2]
! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without ma...
Bool_t fFillAllCellTimeHisto
Fill all cell time histo.
TH2F ** fhECellTotalLogRatioMod
! log (e cell / e total) vs e total, per SM
TH2F * fhTrackMatchedDEtaPosMod
! Eta distance between positive track and cluster vs module for E > 0.5 GeV
TH2F * fhDeltaCellClusterZNCells
! Z cluster - Z cell distribution (cm) vs N cells in cluster
void ClusterHistograms(AliVCluster *cluster, const TObjArray *caloClusters, AliVCaloCells *cells, Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax)
Bool_t fFillAllPosHisto2
Fill all the position related histograms 2.
TObjString * GetAnalysisCuts()
Save parameters used for analysis in a string.
void RecalibrateCellAmplitude(Float_t &, Int_t calo, Int_t absId) const
Recalculate cell energy if recalibration factor.
TH2F * fhYCellE
! Y (cm) cell distribution vs cell energy
Int_t GetHistoV0MultiplicityMax() const
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
Float_t GetHistoAsymmetryMin() const
Int_t GetHistoV0SignalMax() const
TH2F * fhCaloV0MCorrNClusters
! Calo vs V0 multiplicity , number of clusters
TH2F * fh1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100
Int_t GetHistoNCellsMax() const
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Int_t GetHistoTimeBins() const
Float_t GetHistoPOverEMin() const
TH2F * fhDeltaCellClusterZE
! Z cluster - Z cell distribution (cm) vs cluster energy
Float_t GetHistoFinePtMin() const
TH2F * fhAmpIdLowGain
! Amplitude measured in towers/crystals vs id of tower, low gain towers
void CellInClusterPositionHistograms(AliVCluster *cluster)
Fill histograms releated to cluster cell position.
Bool_t ClusterMCHistograms(Bool_t matched, const Int_t *labels, Int_t nLabels, Int_t &pdg)
TH2F * fhGridCellsELowGain
! Cells ordered in column/row for different module, weighted with energy, Reco, low gain ...
TH2F * fh2MatchdEdx
! dE/dx vs. momentum for all matches
void BadClusterHistograms(AliVCluster *clus, const TObjArray *caloClusters, AliVCaloCells *cells, Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax)
Float_t GetHistoTimeMax() const
Float_t GetHistoTimeMin() const
Float_t GetHistoShowerShapeMax() const
TH2F * fhMCChHad1EOverP
! p/E for track-cluster matches, MC charged hadrons
TH2F * fhRecoMCDeltaEta[7][2]
! Gen-Reco eta generated particle vs reconstructed E
TH2F * fhMCChHad2MatchdEdx
! dE/dx vs. momentum for all matches, MC charged
TH2F * fhClusterMaxCellCloseCellDiff
! Difference between max cell energy and cell energy of the same cluster
TH2F * fhXE
! X (cm) cluster distribution vs cluster energy
TH2F * fhGridCells
! Cells ordered in column/row for different module, Reco
Float_t GetHistoPhiMax() const
Int_t GetHistoNCellsBins() const
TH2F * fhGridCellsTimeLowGain
! Cells ordered in column/row for different module, weighted with time, Reco, low gain ...
TH2F * fhCaloTrackMCorrECells
! Calo vs V0 Track Multipliticy, total measured cell energy
virtual AliCaloTrackReader * GetReader() const
TH2F * fhEMVxyz
! Electromagnetic particle production vertex
Int_t GetHistoEtaBins() const
TH2F * fhLambda0
! Cluster Lambda0 vs Energy
void CellHistograms(AliVCaloCells *cells)
Fill histograms related to cells only.
TH2F * fhCaloV0MCorrECells
! Calo vs V0 multiplicity, total measured cell energy
virtual Int_t GetModuleNumberCellIndexes(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU) const
TH2F * fhDeltaIA[2]
! Cluster "asymmetry" in cell terms vs E, with and without matching
Float_t GetHistoTrackResidualEtaMax() const
TH2F * fhEMCALDCALCorrNCells
! EMCAL vs DCAL, number of cells
TH2F * fhMCNeutral1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC neutral
virtual TObjArray * GetEMCALClusters() const
Int_t fNMaxRows
Number of EMCAL/PHOS columns.
TH2F * fhDeltaIAMC[4]
! Cluster "asymmetry" in cell terms vs E, from MC photon, electron, conversion or hadron...
TH2F * fhEMaxCellClusterRatio
! e max cell / e cluster vs e cluster
Float_t fExoNDTimeCuts
Number of time cuts.
Float_t GetHistoFinePtMax() const
TH2F * fhYE
! Y (cm) cluster distribution vs cluster energy
virtual AliVCaloCells * GetPHOSCells() const
TH1F * fhMCNeutral1dR
! Distance between projected track and cluster, MC neutral
Float_t GetHistoYMin() const
TH2F * fhBadClusterTimeEnergy
! Time Max cell of bad cluster
TH2F * fhCaloV0SCorrEClusters
! Calo vs V0 signal, total measured cluster energy
TH2F * fhDCALPHOSCorrEClusters
! DCAL vs PHOS, total measured cluster energy
Bool_t fStudyBadClusters
Study bad clusters.
TH2F * fhCaloCenNCells
! Calo vs centrality, number of cells
TH2F * fhYNCells
! Y (cm) cluster distribution vs N cells in cluster
void RecalibrateCellTime(Double_t &time, Int_t calo, Int_t absId, Int_t bunchCrossNumber) const
Recalculate time if time recalibration available for EMCAL not ready for PHOS.
Bool_t CheckTagBit(Int_t tag, UInt_t test) const
TH2F * fhCaloV0MCorrNCells
! Calo vs V0 multiplicity, number of cells
TH2F * fhMCNeutral1EOverP
! p/E for track-cluster matches, MC neutral
TH2F * fhMCChHad1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC charged hadrons
Int_t GetHistodRBins() const
Bool_t IsGoodCluster(Int_t absIdMax, AliVCaloCells *cells)
Identify cluster as exotic or not.
TH2F * fhGridCellsLowGain
! Cells ordered in column/row for different module, Reco, low gain
TH2F * fhAsym
! Cluster pairs invariant mass
Bool_t IsTrackMatched(AliVCluster *cluster, AliCalorimeterUtils *cu, AliVEvent *event) const
TH2F * fhRecoMCE[7][2]
! E generated particle vs reconstructed E
TH2F * fhTrackMatchedDEtaNegMod
! Eta distance between negative track and cluster vs module for E > 0.5 GeV
TH2F * fhEMCALPHOSCorrECells
! EMCAL vs PHOS, total measured cell energy
TH2F * fhDeltaIEtaDeltaIPhiE0[2]
! Difference between max cell index and farthest cell, eta vs phi, E < 2 GeV, with and without matchi...
Int_t GetHistoNClustersMax() const
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH2F * fhTimeAmpLowGain
! Time vs Amplitude, low gain
void ClusterLoopHistograms(const TObjArray *clusters, AliVCaloCells *cells)
TH2F * fhDCALPHOSCorrECells
! DCAL vs PHOS, total measured cell energy
TH2F * fhEMCALDCALCorrECells
! EMCAL vs DCAL, total measured cell energy
TH2F * fhCellTimeSpreadRespectToCellMax
! Difference of the time of cell with maximum dep energy and the rest of cells
Bool_t fFillAllTMHisto
Fill track matching histograms.
TH2F * fhECellClusterRatio
! e cell / e cluster vs e cluster
TH3F * fhEtaPhiAmp
! eta vs phi vs amplitude, cells
TH2F * fhExoL1ECross
! Lambda1 vs E cross fraction for clusters with E > 5 GeV
Float_t fMinInvMassECut
Minimum energy cut value for clusters entering the invariant mass calculation.
TH2F * fhDeltaIAL0[2]
! Cluster "asymmetry" in cell units vs Lambda0 for E > 0.5 GeV, n cells in cluster > 3...
TH2F * fhCaloV0SCorrNClusters
! Calo vs V0 signal , number of clusters
TH2F * fhGenMCEtaPhi[4]
! eta vs phi of primary particle
TH2F * fhLambda1
! Cluster Lambda1 vs Energy