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(),
80 fConstantTimeShift(0),
84 fhEtaPhi(0), fhEtaPhiE(0),
85 fhECharged(0), fhPtCharged(0),
86 fhPhiCharged(0), fhEtaCharged(0),
87 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
90 fhIM(0), fhIMSame(0), fhIMDiff(0),
91 fhIMDCAL(0), fhIMDCALSame(0), fhIMDCALDiff(0),
92 fhIMDCALPHOS(0), fhIMDCALPHOSSame(0),
93 fhIMEMCALPHOS(0), fhIMEMCALPHOSSame(0),
95 fhOpAngle(0), fhIMvsOpAngle(0),
96 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
99 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
100 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
101 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
102 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
104 fhClusterMaxCellECross(0),
105 fhLambda0(0), fhLambda1(0),
108 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
109 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
110 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
111 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
112 fhBadClusterMaxCellECross(0),
113 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
114 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
115 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
118 fhRNCells(0), fhXNCells(0),
119 fhYNCells(0), fhZNCells(0),
123 fhRCellE(0), fhXCellE(0),
124 fhYCellE(0), fhZCellE(0),
126 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
127 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
128 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
129 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
132 fhNCells(0), fhNCellsCutAmpMin(0),
133 fhAmplitude(0), fhAmpId(0),
134 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
136 fhTimeId(0), fhTimeAmp(0),
137 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
141 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
142 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
143 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
144 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
145 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
146 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
147 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
148 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
149 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
150 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
151 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
152 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
153 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
154 fhCaloCenNCells(0), fhCaloCenECells(0),
155 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
156 fhCaloEvPNCells(0), fhCaloEvPECells(0),
159 fhEMod(0), fhAmpMod(0),
160 fhEWeirdMod(0), fhAmpWeirdMod(0),
162 fhNClustersMod(0), fhNCellsMod(0),
163 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
164 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
165 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
167 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
168 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
169 fhTimeAmpPerRCU(0), fhIMMod(0),
172 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
173 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
174 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
175 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
177 fhExoL0ECross(0), fhExoL1ECross(0),
180 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
181 fhRecoMCDeltaE(), fhRecoMCRatioE(),
182 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
185 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
186 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
189 fhEMVxyz(0), fhEMR(0),
190 fhHaVxyz(0), fhHaR(0),
191 fh1EOverP(0), fh2dR(0),
192 fh2EledEdx(0), fh2MatchdEdx(0),
193 fh1EOverPR02(0), fh1EleEOverP(0),
194 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
195 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
196 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
197 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
198 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
199 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
200 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
201 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
202 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0)
205 for(Int_t i =0; i < 12; i++)
207 for(Int_t j = 0; j < 4; j++)
209 for(Int_t k = 0; k < 3; k++)
216 for(Int_t j = 0; j < 5; j++)
233 for (Int_t ie = 0; ie < 10 ; ie++)
236 for (Int_t idt = 0; idt < 5 ; idt++)
250 for(Int_t i = 0; i < 7; i++)
261 for(Int_t i = 0; i < 4; i++)
286 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
293 Double_t tof = clus->GetTOF()*1.e9;
296 Float_t
energy = clus->E();
304 if(phi < 0) phi += TMath::TwoPi();
315 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
317 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
319 if(clus->GetID() == clus2->GetID())
continue;
321 Float_t maxCellFraction2 = 0.;
324 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
326 Double_t tof2 = clus2->GetTOF()*1.e9;
337 Double_t timeAverages[2] = {0.,0.};
344 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
346 Int_t absId = clus->GetCellsAbsId()[ipos];
347 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
349 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
356 Double_t time = cells->GetCellTime(absId);
374 AliVCaloCells* cells,
375 Double_t timeAverages[2])
379 Float_t ampMax = 0, amp = 0;
382 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
384 Int_t
id = clus->GetCellsAbsId()[ipos];
387 amp = cells->GetCellAmplitude(
id);
406 Int_t ncells = clus->GetNCells();
408 for (Int_t ipos = 0; ipos < ncells; ipos++)
410 id = clus ->GetCellsAbsId()[ipos];
411 amp = cells->GetCellAmplitude(
id);
412 time = cells->GetCellTime(
id);
420 wTime += time*1e9 * w;
424 if(ncells > 0) aTime /= ncells;
427 if(wTot > 0) wTime /= wTot;
430 timeAverages[0] = aTime;
431 timeAverages[1] = wTime;
439 Int_t ncells = cells->GetNumberOfCells();
443 Float_t ecellsCut = 0;
448 Int_t *nCellsInModule =
new Int_t [
fNModules];
449 Float_t *eCellsInModule =
new Float_t[
fNModules];
451 for(Int_t imod = 0; imod <
fNModules; imod++ )
453 nCellsInModule[imod] = 0 ;
454 eCellsInModule[imod] = 0.;
457 Int_t icol = -1, icolAbs = -1;
458 Int_t irow = -1, irowAbs = -1;
463 Bool_t highG = kFALSE;
467 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
469 if ( cells->GetCellNumber(iCell) < 0 )
continue;
471 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
477 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
479 if(nModule < fNModules)
486 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
490 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
494 amp = cells->GetAmplitude(iCell)*recalF;
495 time = cells->GetTime(iCell);
496 id = cells->GetCellNumber(iCell);
497 highG = cells->GetCellHighGain(
id);
512 AliDebug(1,Form(
"Remove cell with Time %f",time));
518 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
537 nCellsInModule[nModule]++ ;
581 Float_t celleta = 0.;
582 Float_t cellphi = 0.;
585 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
592 Double_t cellpos[] = {0, 0, 0};
599 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
607 Int_t relId[4], module;
608 Float_t xCell, zCell;
615 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
633 for(Int_t imod = 0; imod <
fNModules; imod++ )
635 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
646 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
648 if ( cells->GetCellNumber(iCell) < 0 )
continue;
650 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
654 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
656 if(nModule < fNModules)
663 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
667 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
671 amp = cells->GetAmplitude(iCell)*recalF;
672 time = cells->GetTime(iCell);
673 id = cells->GetCellNumber(iCell);
680 GetReader()->GetInputEvent()->GetBunchCrossNumber());
688 AliDebug(1,Form(
"Remove cell with Time %f",time));
694 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
701 Float_t ratio = amp/ecellsCut;
706 if(eCellsInModule[nModule] > 0)
708 Float_t ratioMod = amp/eCellsInModule[nModule];
717 delete [] nCellsInModule;
718 delete [] eCellsInModule;
726 Int_t nCaloCellsPerCluster = clus->GetNCells();
728 UShort_t * indexList = clus->GetCellsAbsId();
731 clus->GetPosition(pos);
733 Float_t clEnergy = clus->E();
736 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
739 Int_t absId = indexList[ipos];
745 Double_t cellpos[] = {0, 0, 0};
756 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
757 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
765 Int_t relId[4], module;
766 Float_t xCell, zCell;
781 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
782 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
797 if( clus->GetNCells() <= 3 )
return;
802 Int_t ietaMax=-1; Int_t iphiMax = 0; Int_t rcuMax = 0;
805 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
807 Int_t absId = clus->GetCellsAbsId()[ipos];
809 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
812 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
816 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
820 Int_t ietaShift = ieta;
821 Int_t ietaMaxShift = ietaMax;
822 if (ieta > ietaMax) ietaMaxShift+=48;
824 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
828 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
849 Int_t nLabel = clus->GetNLabels();
850 Int_t* labels = clus->GetLabels();
896 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
899 Double_t tof = clus->GetTOF()*1.e9;
913 Int_t nCaloCellsPerCluster = clus->GetNCells();
916 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
918 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
920 if( clus->GetID() == clus2->GetID() )
continue;
922 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
926 Double_t tof2 = clus2->GetTOF()*1.e9;
931 if ( nModule2 == nModule )
936 if(nCaloCellsPerCluster > 1)
950 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
952 Int_t absId = clus->GetCellsAbsId()[ipos];
953 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
955 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
961 Double_t time = cells->GetCellTime(absId);
977 if(phi < 0) phi +=TMath::TwoPi();
979 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1004 clus->GetPosition(pos);
1016 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1039 AliVCaloCells* cells)
1042 Int_t *labels = 0x0;
1043 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1044 Int_t nCaloClustersAccepted = 0 ;
1045 Int_t nCaloCellsPerCluster = 0 ;
1046 Bool_t matched = kFALSE;
1050 Double_t v[3] = {0,0,0};
1053 Int_t *nClustersInModule =
new Int_t [
fNModules];
1054 Float_t *energyInModule =
new Float_t[
fNModules];
1055 for(Int_t imod = 0; imod <
fNModules; imod++ )
1057 nClustersInModule[imod] = 0;
1058 energyInModule [imod] = 0;
1064 for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1066 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1068 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1071 Float_t maxCellFraction = 0.;
1075 Double_t tof = clus->GetTOF()*1.e9;
1080 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1093 nLabel = clus->GetNLabels();
1094 labels = clus->GetLabels();
1100 nCaloCellsPerCluster = clus->GetNCells();
1106 Double_t tmax = cells->GetCellTime(absIdMax);
1119 if(nModule >=0 && nModule < fNModules)
1128 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1134 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1136 Float_t eCrossFrac = 0;
1137 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1139 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1152 maxCellFraction, eCrossFrac, tmax);
1154 nCaloClustersAccepted++;
1158 nClustersInModule[nModule]++;
1160 energyInModule [nModule] += clus->E();
1170 Int_t mcOK = kFALSE;
1172 if(
IsDataMC() && nLabel > 0 && labels)
1184 && nCaloClusters > 1
1185 && nCaloCellsPerCluster > 1
1186 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1200 for(Int_t imod = 0; imod <
fNModules; imod++ )
1202 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1210 delete [] nClustersInModule;
1211 delete [] energyInModule;
1219 Int_t nLabels, Int_t &
pdg )
1221 if(!labels || nLabels<=0)
1223 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1227 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1232 if(phi < 0) phi +=TMath::TwoPi();
1234 AliAODMCParticle * aodprimary = 0x0;
1235 TParticle * primary = 0x0;
1238 Int_t label = labels[0];
1242 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1246 Int_t pdg0 =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
1247 Float_t vxMC = 0; Float_t vyMC = 0;
1249 Float_t phiMC = 0; Float_t etaMC = 0;
1261 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1267 pdg0 = TMath::Abs(primary->GetPdgCode());
1269 status = primary->GetStatusCode();
1270 vxMC = primary->Vx();
1271 vyMC = primary->Vy();
1272 iParent = primary->GetFirstMother();
1274 AliDebug(1,
"Cluster most contributing mother:");
1275 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1283 pdg = TMath::Abs(primary->GetPdgCode());
1285 AliDebug(2,
"Converted cluster!. Find before conversion:");
1287 while((pdg == 22 || pdg == 11) && status != 1)
1289 Int_t iMotherOrg = iMother;
1292 status = primary->GetStatusCode();
1293 pdg = TMath::Abs(primary->GetPdgCode());
1294 iParent = primary->GetFirstMother();
1298 if(pdg==111 || pdg==221)
1300 primary =
GetMCStack()->Particle(iMotherOrg);
1310 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1313 AliDebug(1,
"Converted Cluster mother before conversion:");
1314 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1322 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1324 while(pdg != 111 && pdg != 221)
1329 status = primary->GetStatusCode();
1330 pdg = TMath::Abs(primary->GetPdgCode());
1331 iParent = primary->GetFirstMother();
1333 if( iParent < 0 )
break;
1335 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1339 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1344 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1347 eMC = primary->Energy();
1349 phiMC = primary->Phi();
1350 etaMC = primary->Eta();
1351 pdg = TMath::Abs(primary->GetPdgCode());
1352 charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1355 else if(
GetReader()->ReadAODMCParticles() &&
1361 AliFatal(
"MCParticles not available!");
1365 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1367 status = aodprimary->IsPrimary();
1368 vxMC = aodprimary->Xv();
1369 vyMC = aodprimary->Yv();
1370 iParent = aodprimary->GetMother();
1372 AliDebug(1,
"Cluster most contributing mother:");
1373 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1374 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1379 AliDebug(2,
"Converted cluster!. Find before conversion:");
1383 pdg = TMath::Abs(aodprimary->GetPdgCode());
1385 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1387 Int_t iMotherOrg = iMother;
1390 status = aodprimary->IsPrimary();
1391 iParent = aodprimary->GetMother();
1392 pdg = TMath::Abs(aodprimary->GetPdgCode());
1396 if( pdg == 111 || pdg == 221 )
1408 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1409 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1412 AliDebug(1,
"Converted Cluster mother before conversion:");
1413 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1414 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1422 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1424 while(pdg != 111 && pdg != 221)
1428 status = aodprimary->IsPrimary();
1429 iParent = aodprimary->GetMother();
1430 pdg = TMath::Abs(aodprimary->GetPdgCode());
1432 if( iParent < 0 )
break;
1434 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1438 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1443 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1446 status = aodprimary->IsPrimary();
1447 eMC = aodprimary->E();
1449 phiMC = aodprimary->Phi();
1450 etaMC = aodprimary->Eta();
1451 pdg = TMath::Abs(aodprimary->GetPdgCode());
1452 charge = aodprimary->Charge();
1456 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1457 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1490 else if(charge == 0)
1505 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1516 if( primary || aodprimary )
return kTRUE ;
1532 if(phi < 0) phi +=TMath::TwoPi();
1548 Double_t tpt = track->Pt();
1549 Double_t tmom = track->P();
1550 Double_t dedx = track->GetTPCsignal();
1551 Int_t nITS = track->GetNcls(0);
1552 Int_t nTPC = track->GetNcls(1);
1553 Bool_t positive = kFALSE;
1554 if(track) positive = (track->Charge()>0);
1557 Float_t deta = clus->GetTrackDz();
1558 Float_t dphi = clus->GetTrackDx();
1559 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1562 if( TMath::Abs(dphi) < 999 )
1590 Double_t eOverP = e/tmom;
1599 if(dedx > 60 && dedx < 100)
1609 if(e > 0.5 && tmom > 0.5)
1615 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1616 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1624 Double_t
charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1626 if(TMath::Abs(pdg) == 11)
1650 else if(charge == 0)
1675 if(!caloClustersEMCAL || !caloClustersPHOS)
1677 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1685 if(!cellsEMCAL || !cellsPHOS)
1687 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1696 Float_t sumClusterEnergyEMCAL = 0;
1697 Float_t sumClusterEnergyDCAL = 0;
1698 Float_t sumClusterEnergyPHOS = 0;
1702 AliVCluster* cluster = 0;
1703 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1705 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1706 Float_t energy = cluster->E();
1708 if( energy < 0.5 )
continue;
1710 if(cluster->GetCellsAbsId()[0] < 12288)
1713 sumClusterEnergyEMCAL +=
energy;
1718 sumClusterEnergyDCAL +=
energy;
1722 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1724 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
1726 energy = cluster->E();
1728 if( energy < 0.5 )
continue;
1731 sumClusterEnergyPHOS +=
energy;
1735 Int_t ncellsEMCAL = 0 ;
1736 Int_t ncellsDCAL = 0 ;
1737 Int_t ncellsPHOS = 0;
1739 Float_t sumCellEnergyEMCAL = 0;
1740 Float_t sumCellEnergyDCAL = 0;
1741 Float_t sumCellEnergyPHOS = 0;
1743 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1745 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1746 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1753 sumCellEnergyEMCAL += amp;
1758 sumCellEnergyDCAL += amp;
1762 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1764 Float_t amp = cellsPHOS->GetAmplitude(icell);
1765 Int_t cellId = cellsPHOS->GetCellNumber(icell);
1767 if ( cellId < 0 ) continue ;
1772 sumCellEnergyPHOS += amp;
1798 Int_t ncl = nclPHOS;
1799 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1800 Int_t ncells = ncellsPHOS;
1801 Float_t sumCellEnergy = sumCellEnergyPHOS;
1805 ncl = nclEMCAL + nclDCAL;
1806 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1807 ncells = ncellsEMCAL + ncellsDCAL;
1808 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1836 AliDebug(1,
"Correlate():");
1837 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1838 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1839 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1840 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1841 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1842 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1843 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1844 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1853 const Int_t buffersize = 255;
1854 char onePar[buffersize] ;
1856 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1881 return new TObjString(parList) ;
1888 AliVCluster *clus, AliVCaloCells* cells)
1892 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1896 Float_t l0 = clus->GetM02();
1897 Float_t l1 = clus->GetM20();
1898 Float_t en = clus->E();
1899 Int_t nc = clus->GetNCells();
1902 Float_t eCrossFrac = 1-
GetECross(absIdMax,cells, 10000000)/ampMax;
1932 for (Int_t icell = 0; icell < clus->GetNCells(); icell++)
1934 Int_t absId = clus->GetCellsAbsId()[icell];
1935 Double_t time = cells->GetCellTime(absId);
1940 Float_t diff = tmax-time;
1960 TList * outputContainer =
new TList() ;
1961 outputContainer->SetName(
"QAHistos") ;
2012 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2013 fhE->SetXTitle(
"#it{E} (GeV)");
2014 outputContainer->Add(
fhE);
2016 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2017 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2018 outputContainer->Add(
fhPt);
2020 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2021 fhPhi->SetXTitle(
"#phi (rad)");
2022 outputContainer->Add(
fhPhi);
2024 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2025 fhEta->SetXTitle(
"#eta ");
2026 outputContainer->Add(
fhEta);
2030 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2031 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2039 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2040 netabins,etamin,etamax,nphibins,phimin,phimax);
2046 fhClusterTimeEnergy =
new TH2F (
"hClusterTimeEnergy",
"energy vs TOF, reconstructed clusters",
2047 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2052 fhClusterPairDiffTimeE =
new TH2F(
"hClusterPairDiffTimeE",
"cluster pair time difference vs E, only good clusters",
2053 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2059 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2064 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2065 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2066 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2067 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2070 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2071 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2072 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2073 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2082 fhClusterMaxCellCloseCellRatio =
new TH2F (
"hClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2083 nptbins,ptmin,ptmax, 100,0,1.);
2088 fhClusterMaxCellCloseCellDiff =
new TH2F (
"hClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2089 nptbins,ptmin,ptmax, 500,0,100.);
2094 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2095 nptbins,ptmin,ptmax, 500,0,1.);
2102 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2103 nptbins,ptmin,ptmax, 500,0,1.);
2109 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2110 nptbins,ptmin,ptmax, 400,-1,1.);
2117 fhNCellsPerClusterNoCut =
new TH2F (
"hNCellsPerClusterNoCut",
"# cells per cluster vs energy, no bad clusters cut",
2118 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2124 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2144 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2150 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2154 fhBadClusterEtaPhi =
new TH2F (
"hBadClusterEtaPhi",
"Bad cluster, #eta vs #phi, #it{E} > 0.5 GeV",
2155 netabins,etamin,etamax,nphibins,phimin,phimax);
2160 fhBadClusterLambda0 =
new TH2F (
"hBadClusterLambda0",
"Bad cluster,shower shape, #lambda^{2}_{0} vs E",
2161 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2166 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2167 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2172 fhBadClusterMaxCellCloseCellRatio =
new TH2F (
"hBadClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
2173 nptbins,ptmin,ptmax, 100,0,1.);
2178 fhBadClusterMaxCellCloseCellDiff =
new TH2F (
"hBadClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
2179 nptbins,ptmin,ptmax, 500,0,100);
2184 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2185 nptbins,ptmin,ptmax, 500,0,1.);
2190 fhBadClusterTimeEnergy =
new TH2F (
"hBadClusterTimeEnergy",
"energy vs TOF of reconstructed bad clusters",
2191 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2196 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2201 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2202 nptbins,ptmin,ptmax, 400,-1,1.);
2209 fhBadCellTimeSpreadRespectToCellMax =
new TH2F (
"hBadCellTimeSpreadRespectToCellMax",
"#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2214 fhBadClusterMaxCellDiffAverageTime =
new TH2F (
"hBadClusterMaxCellDiffAverageTime",
"#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2219 fhBadClusterMaxCellDiffWeightedTime =
new TH2F (
"hBadClusterMaxCellDiffWeightedTime",
"#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2231 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2232 400,0,1,ssbins,ssmin,ssmax);
2233 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2238 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2239 400,0,1,ssbins,ssmin,ssmax);
2240 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2247 fhExoDTime[ie] =
new TH2F(Form(
"hExoDTime_ECross%d",ie),
2248 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2249 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2250 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2256 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2257 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2258 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2259 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2260 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2263 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2264 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]),
2265 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2266 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2267 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2268 outputContainer->Add(
fhExoL0[ie][idt]) ;
2270 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2271 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]),
2272 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2273 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2274 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2275 outputContainer->Add(
fhExoL1[ie][idt]) ;
2277 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2278 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]),
2279 nptbins,ptmin,ptmax,400,0,1);
2280 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2281 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2284 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2285 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]),
2286 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2287 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2288 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2289 outputContainer->Add(
fhExoTime[ie][idt]) ;
2291 fhExoL0NCell[ie][idt] =
new TH2F(Form(
"hExoL0_NCell%d_DT%d",ie,idt),
2292 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]),
2293 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2298 fhExoL1NCell[ie][idt] =
new TH2F(Form(
"hExoL1_NCell%d_DT%d",ie,idt),
2299 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]),
2300 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2312 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2318 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2324 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2330 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2331 nptbins,ptmin,ptmax,21,-1.05,1.05);
2332 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2333 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2336 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2337 ssbins,ssmin,ssmax,21,-1.05,1.05);
2339 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2342 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2343 ssbins,ssmin,ssmax,21,-1.05,1.05);
2345 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2348 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2349 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2355 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2361 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2367 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2373 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2374 nptbins,ptmin,ptmax,21,-1.05,1.05);
2375 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2376 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2379 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2380 ssbins,ssmin,ssmax,21,-1.05,1.05);
2382 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2385 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2386 ssbins,ssmin,ssmax,21,-1.05,1.05);
2388 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2391 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2392 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2398 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2399 for (Int_t iPart = 0; iPart < 4; iPart++) {
2401 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2402 nptbins,ptmin,ptmax,21,-1.05,1.05);
2403 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2404 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2429 fhBadClusterDeltaIA =
new TH2F (
"hBadClusterDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2430 nptbins,ptmin,ptmax,21,-1.05,1.05);
2439 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy",
2440 nptbins,ptmin,ptmax, 100,0,1.);
2445 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy",
2446 nptbins,ptmin,ptmax, 100,-10,0);
2451 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy",
2452 nptbins,ptmin,ptmax, 100,0,1.);
2457 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy",
2458 nptbins,ptmin,ptmax, 100,-10,0);
2463 fhECellTotalRatio =
new TH2F (
"hECellTotalRatio",
" cell energy / sum all energy vs all energy",
2464 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2469 fhECellTotalLogRatio =
new TH2F (
"hECellTotalLogRatio",
" Log(cell energy / sum all energy) vs all energy",
2470 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2478 for(Int_t imod = 0; imod <
fNModules; imod++)
2481 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2482 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2488 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2489 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2496 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
2497 Float_t cellTmin [] = {50.,100.,1000000.};
2499 for(Int_t iw = 0; iw < 12; iw++)
2501 Float_t w0 = 4+0.05*iw;
2502 for(Int_t iEmin = 0; iEmin < 4; iEmin++)
2504 for(Int_t iTmin = 0; iTmin < 3; iTmin++)
2507 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns",
2508 w0, cellEmin[iEmin], cellTmin[iTmin]),
2509 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2524 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns, |#eta| < 0.15",
2525 w0, cellEmin[iEmin], cellTmin[iTmin]),
2526 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2535 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2536 for(Int_t imc = 0; imc < 5; imc++)
2539 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
2540 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2566 fhTrackMatchedDEtaNeg =
new TH2F(
"hTrackMatchedDEtaNeg",
"d#eta of cluster-negative track vs cluster energy",
2567 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2571 fhTrackMatchedDPhiNeg =
new TH2F(
"hTrackMatchedDPhiNeg",
"d#phi of cluster-negative track vs cluster energy",
2572 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2576 fhTrackMatchedDEtaDPhiNeg =
new TH2F(
"hTrackMatchedDEtaDPhiNeg",
"d#eta vs d#phi of cluster- negative track vs cluster energy",
2577 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2581 fhTrackMatchedDEtaPos =
new TH2F(
"hTrackMatchedDEtaPos",
"d#eta of cluster-positive track vs cluster energy",
2582 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2586 fhTrackMatchedDPhiPos =
new TH2F(
"hTrackMatchedDPhiPos",
"d#phi of cluster-positive track vs cluster energy",
2587 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2591 fhTrackMatchedDEtaDPhiPos =
new TH2F(
"hTrackMatchedDEtaDPhiPos",
"d#eta vs d#phi of cluster-positive track vs cluster energy",
2592 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2597 fhTrackMatchedDEtaNegMod =
new TH2F(
"hTrackMatchedDEtaNegPerModule",
"d#eta of cluster-negative track vs module, E > 0.5 GeV",
2602 fhTrackMatchedDPhiNegMod =
new TH2F(
"hTrackMatchedDPhiNegPerModule",
"d#phi of cluster-negative track vs module, E > 0.5 GeV",
2607 fhTrackMatchedDEtaPosMod =
new TH2F(
"hTrackMatchedDEtaPosPerModule",
"d#eta of cluster-positive track vs module, E > 0.5 GeV",
2612 fhTrackMatchedDPhiPosMod =
new TH2F(
"hTrackMatchedDPhiPosPerModule",
"d#phi of cluster-positive track vs module, E > 0.5 GeV",
2629 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2633 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2634 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2637 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2641 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2647 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2648 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2656 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2657 netabins,etamin,etamax,nphibins,phimin,phimax);
2663 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2665 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2668 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2669 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2670 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2671 outputContainer->Add(
fh2dR) ;
2673 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2678 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2683 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2688 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2696 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);
2701 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);
2702 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2706 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);
2711 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);
2716 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);
2721 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);
2729 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2730 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2731 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2732 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2733 outputContainer->Add(
fhIM);
2735 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2736 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2737 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2738 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2741 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2742 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2743 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2744 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2749 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2750 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2751 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2752 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2755 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2756 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2757 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2758 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2761 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2762 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2763 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2764 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2767 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2768 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2769 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2770 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2773 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2774 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2782 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2783 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2784 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2785 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2788 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2789 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2798 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2804 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2812 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2818 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2825 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2826 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2827 fhAsym->SetYTitle(
"#it{Asymmetry}");
2828 outputContainer->Add(
fhAsym);
2832 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2833 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2834 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2835 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2839 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2842 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2849 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2850 fhXYZ->SetXTitle(
"#it{x} (cm)");
2851 fhXYZ->SetYTitle(
"#it{y} (cm)");
2852 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2853 outputContainer->Add(
fhXYZ);
2855 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2856 fhXE->SetXTitle(
"#it{x} (cm)");
2857 fhXE->SetYTitle(
"#it{E} (GeV)");
2858 outputContainer->Add(
fhXE);
2860 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2861 fhYE->SetXTitle(
"#it{y} (cm)");
2862 fhYE->SetYTitle(
"#it{E} (GeV)");
2863 outputContainer->Add(
fhYE);
2865 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2866 fhZE->SetXTitle(
"#it{z} (cm)");
2867 fhZE->SetYTitle(
"#it{E} (GeV)");
2868 outputContainer->Add(
fhZE);
2870 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2871 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2872 fhRE->SetYTitle(
"#it{E} (GeV)");
2873 outputContainer->Add(
fhRE);
2875 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2877 fhXNCells->SetYTitle(
"N cells per cluster");
2880 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2882 fhYNCells->SetYTitle(
"N cells per cluster");
2885 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2887 fhZNCells->SetYTitle(
"N cells per cluster");
2890 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2891 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2892 fhRNCells->SetYTitle(
"N cells per cluster");
2898 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2899 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2900 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2903 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2904 fhXCellE->SetXTitle(
"#it{x} (cm)");
2905 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2908 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2909 fhYCellE->SetXTitle(
"#it{y} (cm)");
2910 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2913 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2914 fhZCellE->SetXTitle(
"#it{z} (cm)");
2915 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2918 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2924 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2925 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2926 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2927 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2929 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2934 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2939 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2944 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2949 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2950 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2954 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2959 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
2964 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
2971 fhEtaPhiAmpCell =
new TH3F (
"hEtaPhiAmpCell",
"Cell #eta vs cell #phi vs cell energy",
2972 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2980 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
2981 netabins,etamin,etamax,nphibins,phimin,phimax);
2990 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
2991 fhNCells->SetXTitle(
"#it{n}_{cells}");
2998 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
3003 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
3004 outputContainer->Add(
fhAmpId);
3012 fhCellTimeSpreadRespectToCellMax =
new TH2F (
"hCellTimeSpreadRespectToCellMax",
"t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
3032 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3033 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3034 outputContainer->Add(
fhTime);
3041 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3043 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3044 fhTimeId->SetYTitle(
"Cell Absolute Id");
3047 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3048 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3049 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3052 fhTimeIdLowGain =
new TH2F (
"hTimeIdLG",
"Low gain: #it{t}_{cell} vs Absolute Id",
3058 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3064 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3065 nptbins,ptmin,ptmax, 400,-1,1.);
3067 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3074 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3079 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3084 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3089 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3095 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3100 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3105 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3110 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3117 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3122 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3127 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3132 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3202 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3207 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3212 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3217 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3218 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3222 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3227 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3232 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3237 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3238 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3245 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3246 fhEMod->SetXTitle(
"#it{E} (GeV)");
3247 fhEMod->SetYTitle(
"Module");
3248 outputContainer->Add(
fhEMod);
3250 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3251 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3255 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3260 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3267 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3273 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3278 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3283 fhSumClustersEnergyMod =
new TH2F (
"hSumClustersEnergy_Mod",
"# clusters vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3288 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3305 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3306 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3311 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3312 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3317 fhGridCellsLowGain =
new TH2F (
"hGridCellsLG",Form(
"Low gain: Entries in grid of cells"),
3318 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3323 fhGridCellsELowGain =
new TH2F (
"hGridCellsELG",
"Low gain: Accumulated energy in grid of cells",
3324 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3331 fhGridCellsTime =
new TH2F (
"hGridCellsTime",
"Accumulated time in grid of cells",
3332 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3338 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3358 for(Int_t imod = 0; imod <
fNModules; imod++)
3361 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3362 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3368 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3369 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3375 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3376 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3384 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3385 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3393 for(Int_t ircu = 0; ircu <
fNRCU; ircu++)
3395 fhTimeAmpPerRCU[imod*fNRCU+ircu] =
new TH2F (Form(
"hTimeAmp_Mod%d_RCU%d",imod,ircu),
3396 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3397 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3406 fhIMMod[imod] =
new TH2F (Form(
"hIM_Mod%d",imod),
3407 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3408 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3409 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3410 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3411 outputContainer->Add(
fhIMMod[imod]);
3417 TString particleName[] = {
3418 "Photon",
"Pi0",
"Eta",
3419 "Electron",
"PhotonConv",
3420 "NeutralHadron",
"ChargedHadron" };
3424 for(Int_t iPart = 0; iPart < 7; iPart++)
3426 for(Int_t iCh = 0; iCh < 2; iCh++)
3428 fhRecoMCRatioE[iPart][iCh] =
new TH2F (Form(
"hRecoMCRatioE_%s_Match%d",particleName[iPart].
Data(),iCh),
3429 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3430 nptbins, ptmin, ptmax, 200,0,2);
3431 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3432 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3436 fhRecoMCDeltaE[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaE_%s_Match%d",particleName[iPart].
Data(),iCh),
3437 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3438 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3440 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3443 fhRecoMCDeltaPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3444 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3445 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3450 fhRecoMCDeltaEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3451 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3452 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3457 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3458 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3459 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3460 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3461 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3462 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3464 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3465 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3466 nphibins,phimin,phimax, nphibins,phimin,phimax);
3467 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3468 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3471 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3472 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3473 netabins,etamin,etamax,netabins,etamin,etamax);
3474 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3475 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3482 for(Int_t iPart = 0; iPart < 4; iPart++)
3484 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3485 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3486 nptbins,ptmin,ptmax);
3488 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
3489 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3490 nptbins,ptmin,ptmax);
3492 fhGenMCEtaPhi[iPart] =
new TH2F(Form(
"hGenMCEtaPhi_%s",particleName[iPart].
Data()),
3493 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3494 200,-1,1,360,0,TMath::TwoPi());
3496 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3497 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3501 outputContainer->Add(
fhGenMCE [iPart]);
3502 outputContainer->Add(
fhGenMCPt [iPart]);
3506 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
3507 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3508 nptbins,ptmin,ptmax);
3509 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
3510 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3511 nptbins,ptmin,ptmax);
3513 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3514 netabins,etamin,etamax,nphibins,phimin,phimax);
3517 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3529 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3535 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3541 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3542 fhEMR->SetXTitle(
"#it{E} (GeV)");
3543 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3544 outputContainer->Add(
fhEMR);
3546 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3547 fhHaR->SetXTitle(
"#it{E} (GeV)");
3548 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3549 outputContainer->Add(
fhHaR);
3553 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3558 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3559 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3562 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3567 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3572 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3576 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3581 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3586 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3590 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3595 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3600 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3605 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3610 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3615 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3620 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3629 return outputContainer;
3638 Int_t icol =-1, irow=-1,iRCU = -1;
3648 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3655 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3660 else if( icol == 0 && imod%2 )
3667 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3676 Double_t tcell = cells->GetCellTime(absID);
3679 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3680 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3684 ecell1 = cells->GetCellAmplitude(absID1);
3686 tcell1 = cells->GetCellTime(absID1);
3692 ecell2 = cells->GetCellAmplitude(absID2);
3694 tcell2 = cells->GetCellTime(absID2);
3700 ecell3 = cells->GetCellAmplitude(absID3);
3702 tcell3 = cells->GetCellTime(absID3);
3708 ecell4 = cells->GetCellAmplitude(absID4);
3710 tcell4 = cells->GetCellTime(absID4);
3714 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3715 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3716 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3717 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3719 return ecell1+ecell2+ecell3+ecell4;
3723 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3725 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3726 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3727 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3728 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3735 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3737 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3738 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3739 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3740 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3742 return ecell1+ecell2+ecell3+ecell4;
3754 AliVCaloCells * cells)
3756 AliDebug(1,
"Start");
3759 Double_t v[3] = {0,0,0};
3762 Int_t nModule2 = -1;
3763 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3766 if(phi1 < 0) phi1 += TMath::TwoPi();
3768 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3771 for(Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3773 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3775 Float_t maxCellFraction = 0.;
3778 Double_t tof2 = clus2->GetTOF()*1.e9;
3781 Double_t diffTof = tof1-tof2;
3786 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3824 if(phi2 < 0) phi2 += TMath::TwoPi();
3826 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));
3828 Bool_t inPi0Window = kFALSE;
3829 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3831 if ( nModule < 12 && nModule2 < 12 )
3838 if ( nModule == nModule2 )
3852 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3859 if ( nModule == nModule2 )
3875 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3889 AliDebug(1,
"Check DCal-PHOS pairs\n");
3894 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3895 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3896 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3898 for(Int_t jclus = 0 ; jclus <
GetPHOSClusters()->GetEntriesFast() ; jclus++)
3902 Float_t maxCellFraction = 0.;
3906 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3924 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3926 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
3927 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
3928 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
3940 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
3945 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
3946 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
3947 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
3948 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
3949 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
3950 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
3952 for(Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
3954 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3956 Float_t maxCellFraction = 0.;
3959 Double_t tof2 = clus2->GetTOF()*1.e9;
3962 Double_t diffTof = TMath::Abs(tof1-tof2);
3966 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3991 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3993 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
3994 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
3995 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
3996 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
3997 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
3998 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4063 Int_t nCellsPerCluster, AliVCaloCells* cells)
4072 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4085 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4088 if(ampMax < 0.01)
return kFALSE;
4090 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4103 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4124 AliDebug(1,
"Start");
4135 TObjArray * caloClusters = NULL;
4136 AliVCaloCells * cells = 0x0;
4150 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().
Data()));
4152 if( !caloClusters || !cells )
4154 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4158 if(caloClusters->GetEntriesFast() == 0)
return ;
4182 TParticle * primStack = 0;
4183 AliAODMCParticle * primAOD = 0;
4188 AliStack * stack = 0;
4193 nprim = stack->GetNtrack();
4197 TClonesArray * mcparticles = 0;
4201 if( !mcparticles )
return;
4202 nprim = mcparticles->GetEntriesFast();
4206 for(Int_t i=0 ; i < nprim; i++)
4208 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
4214 primStack = stack->Particle(i) ;
4217 AliWarning(
"ESD primaries pointer not available!!");
4221 pdg = primStack->GetPdgCode();
4222 status = primStack->GetStatusCode();
4226 if ( status > 11 )
continue;
4229 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
4230 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
4231 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
4240 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4243 AliWarning(
"AOD primaries pointer not available!!");
4247 pdg = primAOD->GetPdgCode();
4248 status = primAOD->GetStatus();
4252 if (!primAOD->IsPrimary())
continue;
4254 if ( status > 11 )
continue;
4257 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
4258 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
4259 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
4264 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4268 if(eMC < 0.2)
continue;
4275 if (TMath::Abs(etaMC) > 1)
continue;
4279 phiMC += TMath::TwoPi();
4283 else if (pdg==111) mcIndex =
kmcPi0;
4284 else if (pdg==221) mcIndex =
kmcEta;
4285 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4293 Bool_t inacceptance = kTRUE;
4296 inacceptance = kFALSE ;
4306 if(!inacceptance)
continue;
4325 Float_t enOrg = clus->E();
4328 if(clus->GetNCells() < 3)
return ;
4330 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4332 Int_t
id = clus->GetCellsAbsId()[ipos];
4335 Float_t amp = cells->GetCellAmplitude(
id);
4347 AliWarning(Form(
"Wrong calculated energy %f",energy));
4358 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4360 Int_t
id = clus->GetCellsAbsId()[ipos];
4363 Float_t amp = cells->GetCellAmplitude(
id);
4375 Float_t l0org = clus->GetM02();
4376 Float_t l1org = clus->GetM20();
4377 Float_t dorg = clus->GetDispersion();
4381 if(
IsDataMC() && clus->GetNLabels() > 0)
4408 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
4409 Float_t cellTmin [] = {50.,100.,1000000.};
4411 for(Int_t iw = 0; iw < 12; iw++)
4413 for(Int_t iEmin = 0; iEmin < 4; iEmin++)
4415 for(Int_t iTmin = 0; iTmin < 3; iTmin++)
4419 Float_t newEnergy = 0;
4420 Float_t l0 = 0, l1 = 0;
4421 Float_t disp = 0, dEta = 0, dPhi = 0;
4422 Float_t sEta = 0, sPhi = 0, sEtaPhi = 0;
4426 cellEmin[iEmin], cellTmin[iTmin], bc,
4427 newEnergy, l0, l1, disp, dEta, dPhi,
4428 sEta, sPhi, sEtaPhi);
4449 clus->SetM02(l0org);
4450 clus->SetM20(l1org);
4451 clus->SetDispersion(dorg);
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 * fhLambda0ForW0AndCellCutsEta0[12][4][3]
! L0 for different w0 and cell cuts, |eta| < 0.15
TH2F * fhMCNeutral1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC neutral
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 ...
virtual Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const
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
TH2F * fhLambda0ForW0AndCellCuts[12][4][3]
! L0 for different w0 and cell cuts
Float_t fInvMassMaxECut
Maximum energy cut value for clusters entering the invariant mass calculation.
Float_t GetHistoMassMin() const
void WeightHistograms(AliVCluster *clus, AliVCaloCells *cells)
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
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 ...
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.
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