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++)
210 for(Int_t j = 0; j < 5; j++)
227 for (Int_t ie = 0; ie < 10 ; ie++)
230 for (Int_t idt = 0; idt < 5 ; idt++)
244 for(Int_t i = 0; i < 7; i++)
255 for(Int_t i = 0; i < 4; i++)
280 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
287 Double_t tof = clus->GetTOF()*1.e9;
290 Float_t
energy = clus->E();
298 if(phi < 0) phi += TMath::TwoPi();
309 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
311 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
313 if(clus->GetID() == clus2->GetID())
continue;
315 Float_t maxCellFraction2 = 0.;
318 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
320 Double_t tof2 = clus2->GetTOF()*1.e9;
331 Double_t timeAverages[2] = {0.,0.};
338 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
340 Int_t absId = clus->GetCellsAbsId()[ipos];
341 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
343 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
350 Double_t time = cells->GetCellTime(absId);
368 AliVCaloCells* cells,
369 Double_t timeAverages[2])
373 Float_t ampMax = 0, amp = 0;
376 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
378 Int_t
id = clus->GetCellsAbsId()[ipos];
381 amp = cells->GetCellAmplitude(
id);
400 Int_t ncells = clus->GetNCells();
402 for (Int_t ipos = 0; ipos < ncells; ipos++)
404 id = clus ->GetCellsAbsId()[ipos];
405 amp = cells->GetCellAmplitude(
id);
406 time = cells->GetCellTime(
id);
414 wTime += time*1e9 * w;
418 if(ncells > 0) aTime /= ncells;
421 if(wTot > 0) wTime /= wTot;
424 timeAverages[0] = aTime;
425 timeAverages[1] = wTime;
433 Int_t ncells = cells->GetNumberOfCells();
437 Float_t ecellsCut = 0;
442 Int_t *nCellsInModule =
new Int_t [
fNModules];
443 Float_t *eCellsInModule =
new Float_t[
fNModules];
445 for(Int_t imod = 0; imod <
fNModules; imod++ )
447 nCellsInModule[imod] = 0 ;
448 eCellsInModule[imod] = 0.;
451 Int_t icol = -1, icolAbs = -1;
452 Int_t irow = -1, irowAbs = -1;
457 Bool_t highG = kFALSE;
461 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
463 if ( cells->GetCellNumber(iCell) < 0 )
continue;
465 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
471 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
473 if(nModule < fNModules)
480 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
484 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
488 amp = cells->GetAmplitude(iCell)*recalF;
489 time = cells->GetTime(iCell);
490 id = cells->GetCellNumber(iCell);
491 highG = cells->GetCellHighGain(
id);
506 AliDebug(1,Form(
"Remove cell with Time %f",time));
512 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
531 nCellsInModule[nModule]++ ;
575 Float_t celleta = 0.;
576 Float_t cellphi = 0.;
579 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
586 Double_t cellpos[] = {0, 0, 0};
593 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
601 Int_t relId[4], module;
602 Float_t xCell, zCell;
609 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
627 for(Int_t imod = 0; imod <
fNModules; imod++ )
629 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
640 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
642 if ( cells->GetCellNumber(iCell) < 0 )
continue;
644 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
648 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
650 if(nModule < fNModules)
657 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
661 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
665 amp = cells->GetAmplitude(iCell)*recalF;
666 time = cells->GetTime(iCell);
667 id = cells->GetCellNumber(iCell);
674 GetReader()->GetInputEvent()->GetBunchCrossNumber());
682 AliDebug(1,Form(
"Remove cell with Time %f",time));
688 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
695 Float_t ratio = amp/ecellsCut;
700 if(eCellsInModule[nModule] > 0)
702 Float_t ratioMod = amp/eCellsInModule[nModule];
711 delete [] nCellsInModule;
712 delete [] eCellsInModule;
720 Int_t nCaloCellsPerCluster = clus->GetNCells();
722 UShort_t * indexList = clus->GetCellsAbsId();
725 clus->GetPosition(pos);
727 Float_t clEnergy = clus->E();
730 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
733 Int_t absId = indexList[ipos];
739 Double_t cellpos[] = {0, 0, 0};
750 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
751 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
759 Int_t relId[4], module;
760 Float_t xCell, zCell;
775 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
776 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
791 if( clus->GetNCells() <= 3 )
return;
796 Int_t ietaMax=-1; Int_t iphiMax = 0; Int_t rcuMax = 0;
799 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
801 Int_t absId = clus->GetCellsAbsId()[ipos];
803 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
806 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
810 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
814 Int_t ietaShift = ieta;
815 Int_t ietaMaxShift = ietaMax;
816 if (ieta > ietaMax) ietaMaxShift+=48;
818 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
822 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
843 Int_t nLabel = clus->GetNLabels();
844 Int_t* labels = clus->GetLabels();
890 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
893 Double_t tof = clus->GetTOF()*1.e9;
907 Int_t nCaloCellsPerCluster = clus->GetNCells();
910 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
912 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
914 if( clus->GetID() == clus2->GetID() )
continue;
916 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
920 Double_t tof2 = clus2->GetTOF()*1.e9;
925 if ( nModule2 == nModule )
930 if(nCaloCellsPerCluster > 1)
944 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
946 Int_t absId = clus->GetCellsAbsId()[ipos];
947 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
949 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
955 Double_t time = cells->GetCellTime(absId);
971 if(phi < 0) phi +=TMath::TwoPi();
973 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
998 clus->GetPosition(pos);
1010 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1033 AliVCaloCells* cells)
1036 Int_t *labels = 0x0;
1037 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1038 Int_t nCaloClustersAccepted = 0 ;
1039 Int_t nCaloCellsPerCluster = 0 ;
1040 Bool_t matched = kFALSE;
1044 Double_t v[3] = {0,0,0};
1047 Int_t *nClustersInModule =
new Int_t [
fNModules];
1048 Float_t *energyInModule =
new Float_t[
fNModules];
1049 for(Int_t imod = 0; imod <
fNModules; imod++ )
1051 nClustersInModule[imod] = 0;
1052 energyInModule [imod] = 0;
1058 for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1060 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1062 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1065 Float_t maxCellFraction = 0.;
1069 Double_t tof = clus->GetTOF()*1.e9;
1074 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1087 nLabel = clus->GetNLabels();
1088 labels = clus->GetLabels();
1094 nCaloCellsPerCluster = clus->GetNCells();
1100 Double_t tmax = cells->GetCellTime(absIdMax);
1113 if(nModule >=0 && nModule < fNModules)
1122 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1128 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1130 Float_t eCrossFrac = 0;
1131 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1133 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1146 maxCellFraction, eCrossFrac, tmax);
1148 nCaloClustersAccepted++;
1152 nClustersInModule[nModule]++;
1154 energyInModule [nModule] += clus->E();
1164 Int_t mcOK = kFALSE;
1166 if(
IsDataMC() && nLabel > 0 && labels)
1178 && nCaloClusters > 1
1179 && nCaloCellsPerCluster > 1
1180 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1194 for(Int_t imod = 0; imod <
fNModules; imod++ )
1196 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1204 delete [] nClustersInModule;
1205 delete [] energyInModule;
1213 Int_t nLabels, Int_t &
pdg )
1215 if(!labels || nLabels<=0)
1217 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1221 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1226 if(phi < 0) phi +=TMath::TwoPi();
1228 AliAODMCParticle * aodprimary = 0x0;
1229 TParticle * primary = 0x0;
1232 Int_t label = labels[0];
1236 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1240 Int_t pdg0 =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
1241 Float_t vxMC = 0; Float_t vyMC = 0;
1243 Float_t phiMC = 0; Float_t etaMC = 0;
1255 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1261 pdg0 = TMath::Abs(primary->GetPdgCode());
1263 status = primary->GetStatusCode();
1264 vxMC = primary->Vx();
1265 vyMC = primary->Vy();
1266 iParent = primary->GetFirstMother();
1268 AliDebug(1,
"Cluster most contributing mother:");
1269 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1277 pdg = TMath::Abs(primary->GetPdgCode());
1279 AliDebug(2,
"Converted cluster!. Find before conversion:");
1281 while((pdg == 22 || pdg == 11) && status != 1)
1283 Int_t iMotherOrg = iMother;
1286 status = primary->GetStatusCode();
1287 pdg = TMath::Abs(primary->GetPdgCode());
1288 iParent = primary->GetFirstMother();
1292 if(pdg==111 || pdg==221)
1294 primary =
GetMCStack()->Particle(iMotherOrg);
1304 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1307 AliDebug(1,
"Converted Cluster mother before conversion:");
1308 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1316 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1318 while(pdg != 111 && pdg != 221)
1323 status = primary->GetStatusCode();
1324 pdg = TMath::Abs(primary->GetPdgCode());
1325 iParent = primary->GetFirstMother();
1327 if( iParent < 0 )
break;
1329 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1333 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1338 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1341 eMC = primary->Energy();
1343 phiMC = primary->Phi();
1344 etaMC = primary->Eta();
1345 pdg = TMath::Abs(primary->GetPdgCode());
1346 charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1349 else if(
GetReader()->ReadAODMCParticles() &&
1355 AliFatal(
"MCParticles not available!");
1359 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1361 status = aodprimary->IsPrimary();
1362 vxMC = aodprimary->Xv();
1363 vyMC = aodprimary->Yv();
1364 iParent = aodprimary->GetMother();
1366 AliDebug(1,
"Cluster most contributing mother:");
1367 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1368 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1373 AliDebug(2,
"Converted cluster!. Find before conversion:");
1377 pdg = TMath::Abs(aodprimary->GetPdgCode());
1379 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1381 Int_t iMotherOrg = iMother;
1384 status = aodprimary->IsPrimary();
1385 iParent = aodprimary->GetMother();
1386 pdg = TMath::Abs(aodprimary->GetPdgCode());
1390 if( pdg == 111 || pdg == 221 )
1402 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1403 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1406 AliDebug(1,
"Converted Cluster mother before conversion:");
1407 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1408 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1416 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1418 while(pdg != 111 && pdg != 221)
1422 status = aodprimary->IsPrimary();
1423 iParent = aodprimary->GetMother();
1424 pdg = TMath::Abs(aodprimary->GetPdgCode());
1426 if( iParent < 0 )
break;
1428 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1432 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1437 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1440 status = aodprimary->IsPrimary();
1441 eMC = aodprimary->E();
1443 phiMC = aodprimary->Phi();
1444 etaMC = aodprimary->Eta();
1445 pdg = TMath::Abs(aodprimary->GetPdgCode());
1446 charge = aodprimary->Charge();
1450 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1451 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1484 else if(charge == 0)
1499 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1510 if( primary || aodprimary )
return kTRUE ;
1526 if(phi < 0) phi +=TMath::TwoPi();
1542 Double_t tpt = track->Pt();
1543 Double_t tmom = track->P();
1544 Double_t dedx = track->GetTPCsignal();
1545 Int_t nITS = track->GetNcls(0);
1546 Int_t nTPC = track->GetNcls(1);
1547 Bool_t positive = kFALSE;
1548 if(track) positive = (track->Charge()>0);
1551 Float_t deta = clus->GetTrackDz();
1552 Float_t dphi = clus->GetTrackDx();
1553 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1556 if( TMath::Abs(dphi) < 999 )
1584 Double_t eOverP = e/tmom;
1593 if(dedx > 60 && dedx < 100)
1603 if(e > 0.5 && tmom > 0.5)
1609 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1610 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1618 Double_t
charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1620 if(TMath::Abs(pdg) == 11)
1644 else if(charge == 0)
1669 if(!caloClustersEMCAL || !caloClustersPHOS)
1671 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1679 if(!cellsEMCAL || !cellsPHOS)
1681 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1690 Float_t sumClusterEnergyEMCAL = 0;
1691 Float_t sumClusterEnergyDCAL = 0;
1692 Float_t sumClusterEnergyPHOS = 0;
1696 AliVCluster* cluster = 0;
1697 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1699 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1700 Float_t energy = cluster->E();
1702 if( energy < 0.5 )
continue;
1704 if(cluster->GetCellsAbsId()[0] < 12288)
1707 sumClusterEnergyEMCAL +=
energy;
1712 sumClusterEnergyDCAL +=
energy;
1716 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1718 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
1720 energy = cluster->E();
1722 if( energy < 0.5 )
continue;
1725 sumClusterEnergyPHOS +=
energy;
1729 Int_t ncellsEMCAL = 0 ;
1730 Int_t ncellsDCAL = 0 ;
1731 Int_t ncellsPHOS = 0;
1733 Float_t sumCellEnergyEMCAL = 0;
1734 Float_t sumCellEnergyDCAL = 0;
1735 Float_t sumCellEnergyPHOS = 0;
1737 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1739 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1740 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1747 sumCellEnergyEMCAL += amp;
1752 sumCellEnergyDCAL += amp;
1756 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1758 Float_t amp = cellsPHOS->GetAmplitude(icell);
1759 Int_t cellId = cellsPHOS->GetCellNumber(icell);
1761 if ( cellId < 0 ) continue ;
1766 sumCellEnergyPHOS += amp;
1792 Int_t ncl = nclPHOS;
1793 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1794 Int_t ncells = ncellsPHOS;
1795 Float_t sumCellEnergy = sumCellEnergyPHOS;
1799 ncl = nclEMCAL + nclDCAL;
1800 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1801 ncells = ncellsEMCAL + ncellsDCAL;
1802 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1830 AliDebug(1,
"Correlate():");
1831 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1832 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1833 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1834 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1835 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1836 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1837 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1838 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1847 const Int_t buffersize = 255;
1848 char onePar[buffersize] ;
1850 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1875 return new TObjString(parList) ;
1882 AliVCluster *clus, AliVCaloCells* cells)
1886 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1890 Float_t l0 = clus->GetM02();
1891 Float_t l1 = clus->GetM20();
1892 Float_t en = clus->E();
1893 Int_t nc = clus->GetNCells();
1896 Float_t eCrossFrac = 1-
GetECross(absIdMax,cells, 10000000)/ampMax;
1926 for (Int_t icell = 0; icell < clus->GetNCells(); icell++)
1928 Int_t absId = clus->GetCellsAbsId()[icell];
1929 Double_t time = cells->GetCellTime(absId);
1934 Float_t diff = tmax-time;
1954 TList * outputContainer =
new TList() ;
1955 outputContainer->SetName(
"QAHistos") ;
2006 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2007 fhE->SetXTitle(
"#it{E} (GeV)");
2008 outputContainer->Add(
fhE);
2010 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2011 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2012 outputContainer->Add(
fhPt);
2014 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2015 fhPhi->SetXTitle(
"#phi (rad)");
2016 outputContainer->Add(
fhPhi);
2018 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2019 fhEta->SetXTitle(
"#eta ");
2020 outputContainer->Add(
fhEta);
2024 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2025 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2033 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2034 netabins,etamin,etamax,nphibins,phimin,phimax);
2040 fhClusterTimeEnergy =
new TH2F (
"hClusterTimeEnergy",
"energy vs TOF, reconstructed clusters",
2041 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2046 fhClusterPairDiffTimeE =
new TH2F(
"hClusterPairDiffTimeE",
"cluster pair time difference vs E, only good clusters",
2047 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2053 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2058 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2059 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2060 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2061 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2064 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2065 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2066 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2067 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2076 fhClusterMaxCellCloseCellRatio =
new TH2F (
"hClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2077 nptbins,ptmin,ptmax, 100,0,1.);
2082 fhClusterMaxCellCloseCellDiff =
new TH2F (
"hClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2083 nptbins,ptmin,ptmax, 500,0,100.);
2088 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2089 nptbins,ptmin,ptmax, 500,0,1.);
2096 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2097 nptbins,ptmin,ptmax, 500,0,1.);
2103 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2104 nptbins,ptmin,ptmax, 400,-1,1.);
2111 fhNCellsPerClusterNoCut =
new TH2F (
"hNCellsPerClusterNoCut",
"# cells per cluster vs energy, no bad clusters cut",
2112 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2118 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2138 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2144 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2148 fhBadClusterEtaPhi =
new TH2F (
"hBadClusterEtaPhi",
"Bad cluster, #eta vs #phi, #it{E} > 0.5 GeV",
2149 netabins,etamin,etamax,nphibins,phimin,phimax);
2154 fhBadClusterLambda0 =
new TH2F (
"hBadClusterLambda0",
"Bad cluster,shower shape, #lambda^{2}_{0} vs E",
2155 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2160 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2161 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2166 fhBadClusterMaxCellCloseCellRatio =
new TH2F (
"hBadClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
2167 nptbins,ptmin,ptmax, 100,0,1.);
2172 fhBadClusterMaxCellCloseCellDiff =
new TH2F (
"hBadClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
2173 nptbins,ptmin,ptmax, 500,0,100);
2178 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2179 nptbins,ptmin,ptmax, 500,0,1.);
2184 fhBadClusterTimeEnergy =
new TH2F (
"hBadClusterTimeEnergy",
"energy vs TOF of reconstructed bad clusters",
2185 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2190 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2195 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2196 nptbins,ptmin,ptmax, 400,-1,1.);
2203 fhBadCellTimeSpreadRespectToCellMax =
new TH2F (
"hBadCellTimeSpreadRespectToCellMax",
"#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2208 fhBadClusterMaxCellDiffAverageTime =
new TH2F (
"hBadClusterMaxCellDiffAverageTime",
"#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2213 fhBadClusterMaxCellDiffWeightedTime =
new TH2F (
"hBadClusterMaxCellDiffWeightedTime",
"#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2225 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2226 400,0,1,ssbins,ssmin,ssmax);
2227 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2232 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2233 400,0,1,ssbins,ssmin,ssmax);
2234 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2241 fhExoDTime[ie] =
new TH2F(Form(
"hExoDTime_ECross%d",ie),
2242 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2243 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2244 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2250 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2251 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2252 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2253 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2254 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2257 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2258 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]),
2259 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2260 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2261 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2262 outputContainer->Add(
fhExoL0[ie][idt]) ;
2264 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2265 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]),
2266 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2267 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2268 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2269 outputContainer->Add(
fhExoL1[ie][idt]) ;
2271 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2272 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]),
2273 nptbins,ptmin,ptmax,400,0,1);
2274 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2275 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2278 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2279 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]),
2280 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2281 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2282 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2283 outputContainer->Add(
fhExoTime[ie][idt]) ;
2285 fhExoL0NCell[ie][idt] =
new TH2F(Form(
"hExoL0_NCell%d_DT%d",ie,idt),
2286 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]),
2287 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2292 fhExoL1NCell[ie][idt] =
new TH2F(Form(
"hExoL1_NCell%d_DT%d",ie,idt),
2293 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]),
2294 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2306 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2312 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2318 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2324 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2325 nptbins,ptmin,ptmax,21,-1.05,1.05);
2326 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2327 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2330 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2331 ssbins,ssmin,ssmax,21,-1.05,1.05);
2333 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2336 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2337 ssbins,ssmin,ssmax,21,-1.05,1.05);
2339 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2342 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2343 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2349 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2355 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2361 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2367 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2368 nptbins,ptmin,ptmax,21,-1.05,1.05);
2369 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2370 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2373 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2374 ssbins,ssmin,ssmax,21,-1.05,1.05);
2376 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2379 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2380 ssbins,ssmin,ssmax,21,-1.05,1.05);
2382 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2385 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2386 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2392 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2393 for (Int_t iPart = 0; iPart < 4; iPart++) {
2395 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2396 nptbins,ptmin,ptmax,21,-1.05,1.05);
2397 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2398 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2423 fhBadClusterDeltaIA =
new TH2F (
"hBadClusterDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2424 nptbins,ptmin,ptmax,21,-1.05,1.05);
2433 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy",
2434 nptbins,ptmin,ptmax, 100,0,1.);
2439 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy",
2440 nptbins,ptmin,ptmax, 100,-10,0);
2445 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy",
2446 nptbins,ptmin,ptmax, 100,0,1.);
2451 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy",
2452 nptbins,ptmin,ptmax, 100,-10,0);
2457 fhECellTotalRatio =
new TH2F (
"hECellTotalRatio",
" cell energy / sum all energy vs all energy",
2458 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2463 fhECellTotalLogRatio =
new TH2F (
"hECellTotalLogRatio",
" Log(cell energy / sum all energy) vs all energy",
2464 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2472 for(Int_t imod = 0; imod <
fNModules; imod++)
2475 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2476 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2482 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2483 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2489 for(Int_t iw = 0; iw < 12; iw++)
2491 Float_t w0 = 3+0.25*iw;
2492 fhLambda0ForW0[iw] =
new TH2F (Form(
"hLambda0ForW0%d",iw),Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",w0),
2493 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2505 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2506 for(Int_t imc = 0; imc < 5; imc++){
2508 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
2509 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2535 fhTrackMatchedDEtaNeg =
new TH2F(
"hTrackMatchedDEtaNeg",
"d#eta of cluster-negative track vs cluster energy",
2536 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2540 fhTrackMatchedDPhiNeg =
new TH2F(
"hTrackMatchedDPhiNeg",
"d#phi of cluster-negative track vs cluster energy",
2541 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2545 fhTrackMatchedDEtaDPhiNeg =
new TH2F(
"hTrackMatchedDEtaDPhiNeg",
"d#eta vs d#phi of cluster- negative track vs cluster energy",
2546 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2550 fhTrackMatchedDEtaPos =
new TH2F(
"hTrackMatchedDEtaPos",
"d#eta of cluster-positive track vs cluster energy",
2551 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2555 fhTrackMatchedDPhiPos =
new TH2F(
"hTrackMatchedDPhiPos",
"d#phi of cluster-positive track vs cluster energy",
2556 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2560 fhTrackMatchedDEtaDPhiPos =
new TH2F(
"hTrackMatchedDEtaDPhiPos",
"d#eta vs d#phi of cluster-positive track vs cluster energy",
2561 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2566 fhTrackMatchedDEtaNegMod =
new TH2F(
"hTrackMatchedDEtaNegPerModule",
"d#eta of cluster-negative track vs module, E > 0.5 GeV",
2571 fhTrackMatchedDPhiNegMod =
new TH2F(
"hTrackMatchedDPhiNegPerModule",
"d#phi of cluster-negative track vs module, E > 0.5 GeV",
2576 fhTrackMatchedDEtaPosMod =
new TH2F(
"hTrackMatchedDEtaPosPerModule",
"d#eta of cluster-positive track vs module, E > 0.5 GeV",
2581 fhTrackMatchedDPhiPosMod =
new TH2F(
"hTrackMatchedDPhiPosPerModule",
"d#phi of cluster-positive track vs module, E > 0.5 GeV",
2598 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2602 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2603 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2606 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2610 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2616 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2617 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2625 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2626 netabins,etamin,etamax,nphibins,phimin,phimax);
2632 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2634 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2637 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2638 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2639 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2640 outputContainer->Add(
fh2dR) ;
2642 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2647 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2652 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2657 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2665 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);
2670 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);
2671 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2675 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);
2680 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);
2685 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);
2690 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);
2698 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2699 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2700 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2701 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2702 outputContainer->Add(
fhIM);
2704 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2705 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2706 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2707 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2710 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2711 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2712 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2713 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2718 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2719 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2720 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2721 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2724 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2725 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2726 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2727 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2730 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2731 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2732 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2733 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2736 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2737 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2738 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2739 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2742 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2743 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2751 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2752 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2753 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2754 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2757 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2758 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2767 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2773 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2781 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2787 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2794 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2795 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2796 fhAsym->SetYTitle(
"#it{Asymmetry}");
2797 outputContainer->Add(
fhAsym);
2801 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2802 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2803 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2804 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2808 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2811 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2818 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2819 fhXYZ->SetXTitle(
"#it{x} (cm)");
2820 fhXYZ->SetYTitle(
"#it{y} (cm)");
2821 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2822 outputContainer->Add(
fhXYZ);
2824 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2825 fhXE->SetXTitle(
"#it{x} (cm)");
2826 fhXE->SetYTitle(
"#it{E} (GeV)");
2827 outputContainer->Add(
fhXE);
2829 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2830 fhYE->SetXTitle(
"#it{y} (cm)");
2831 fhYE->SetYTitle(
"#it{E} (GeV)");
2832 outputContainer->Add(
fhYE);
2834 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2835 fhZE->SetXTitle(
"#it{z} (cm)");
2836 fhZE->SetYTitle(
"#it{E} (GeV)");
2837 outputContainer->Add(
fhZE);
2839 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2840 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2841 fhRE->SetYTitle(
"#it{E} (GeV)");
2842 outputContainer->Add(
fhRE);
2844 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2846 fhXNCells->SetYTitle(
"N cells per cluster");
2849 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2851 fhYNCells->SetYTitle(
"N cells per cluster");
2854 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2856 fhZNCells->SetYTitle(
"N cells per cluster");
2859 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2860 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2861 fhRNCells->SetYTitle(
"N cells per cluster");
2867 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2868 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2869 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2872 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2873 fhXCellE->SetXTitle(
"#it{x} (cm)");
2874 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2877 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2878 fhYCellE->SetXTitle(
"#it{y} (cm)");
2879 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2882 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2883 fhZCellE->SetXTitle(
"#it{z} (cm)");
2884 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2887 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2893 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2894 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2895 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2896 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2898 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2903 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2908 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2913 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2918 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2919 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2923 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2928 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
2933 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
2940 fhEtaPhiAmpCell =
new TH3F (
"hEtaPhiAmpCell",
"Cell #eta vs cell #phi vs cell energy",
2941 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2949 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
2950 netabins,etamin,etamax,nphibins,phimin,phimax);
2959 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
2960 fhNCells->SetXTitle(
"#it{n}_{cells}");
2967 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
2972 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
2973 outputContainer->Add(
fhAmpId);
2981 fhCellTimeSpreadRespectToCellMax =
new TH2F (
"hCellTimeSpreadRespectToCellMax",
"t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
3001 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3002 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3003 outputContainer->Add(
fhTime);
3010 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3012 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3013 fhTimeId->SetYTitle(
"Cell Absolute Id");
3016 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3017 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3018 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3021 fhTimeIdLowGain =
new TH2F (
"hTimeIdLG",
"Low gain: #it{t}_{cell} vs Absolute Id",
3027 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3033 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3034 nptbins,ptmin,ptmax, 400,-1,1.);
3036 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3043 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3048 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3053 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3058 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3064 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3069 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3074 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3079 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3086 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3091 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3096 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3101 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3171 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3176 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3181 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3186 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3187 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3191 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3196 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3201 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3206 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3207 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3214 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3215 fhEMod->SetXTitle(
"#it{E} (GeV)");
3216 fhEMod->SetYTitle(
"Module");
3217 outputContainer->Add(
fhEMod);
3219 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3220 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3224 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3229 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3236 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3242 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3247 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3252 fhSumClustersEnergyMod =
new TH2F (
"hSumClustersEnergy_Mod",
"# clusters vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3257 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3274 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3275 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3280 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3281 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3286 fhGridCellsLowGain =
new TH2F (
"hGridCellsLG",Form(
"Low gain: Entries in grid of cells"),
3287 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3292 fhGridCellsELowGain =
new TH2F (
"hGridCellsELG",
"Low gain: Accumulated energy in grid of cells",
3293 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3300 fhGridCellsTime =
new TH2F (
"hGridCellsTime",
"Accumulated time in grid of cells",
3301 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3307 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3327 for(Int_t imod = 0; imod <
fNModules; imod++)
3330 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3331 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3337 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3338 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3344 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3345 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3353 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3354 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3362 for(Int_t ircu = 0; ircu <
fNRCU; ircu++)
3364 fhTimeAmpPerRCU[imod*fNRCU+ircu] =
new TH2F (Form(
"hTimeAmp_Mod%d_RCU%d",imod,ircu),
3365 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3366 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3375 fhIMMod[imod] =
new TH2F (Form(
"hIM_Mod%d",imod),
3376 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3377 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3378 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3379 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3380 outputContainer->Add(
fhIMMod[imod]);
3386 TString particleName[] = {
3387 "Photon",
"Pi0",
"Eta",
3388 "Electron",
"PhotonConv",
3389 "NeutralHadron",
"ChargedHadron" };
3393 for(Int_t iPart = 0; iPart < 7; iPart++)
3395 for(Int_t iCh = 0; iCh < 2; iCh++)
3397 fhRecoMCRatioE[iPart][iCh] =
new TH2F (Form(
"hRecoMCRatioE_%s_Match%d",particleName[iPart].
Data(),iCh),
3398 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3399 nptbins, ptmin, ptmax, 200,0,2);
3400 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3401 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3405 fhRecoMCDeltaE[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaE_%s_Match%d",particleName[iPart].
Data(),iCh),
3406 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3407 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3409 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3412 fhRecoMCDeltaPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3413 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3414 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3419 fhRecoMCDeltaEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3420 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3421 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3426 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3427 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3428 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3429 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3430 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3431 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3433 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3434 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3435 nphibins,phimin,phimax, nphibins,phimin,phimax);
3436 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3437 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3440 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3441 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3442 netabins,etamin,etamax,netabins,etamin,etamax);
3443 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3444 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3451 for(Int_t iPart = 0; iPart < 4; iPart++)
3453 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3454 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3455 nptbins,ptmin,ptmax);
3457 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
3458 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3459 nptbins,ptmin,ptmax);
3461 fhGenMCEtaPhi[iPart] =
new TH2F(Form(
"hGenMCEtaPhi_%s",particleName[iPart].
Data()),
3462 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3463 200,-1,1,360,0,TMath::TwoPi());
3465 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3466 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3470 outputContainer->Add(
fhGenMCE [iPart]);
3471 outputContainer->Add(
fhGenMCPt [iPart]);
3475 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
3476 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3477 nptbins,ptmin,ptmax);
3478 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
3479 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3480 nptbins,ptmin,ptmax);
3482 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3483 netabins,etamin,etamax,nphibins,phimin,phimax);
3486 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3498 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3504 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3510 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3511 fhEMR->SetXTitle(
"#it{E} (GeV)");
3512 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3513 outputContainer->Add(
fhEMR);
3515 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3516 fhHaR->SetXTitle(
"#it{E} (GeV)");
3517 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3518 outputContainer->Add(
fhHaR);
3522 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3527 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3528 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3531 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3536 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3541 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3545 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3550 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3555 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3559 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3564 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3569 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3574 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3579 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3584 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3589 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3598 return outputContainer;
3607 Int_t icol =-1, irow=-1,iRCU = -1;
3617 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3624 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3629 else if( icol == 0 && imod%2 )
3636 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3645 Double_t tcell = cells->GetCellTime(absID);
3648 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3649 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3653 ecell1 = cells->GetCellAmplitude(absID1);
3655 tcell1 = cells->GetCellTime(absID1);
3661 ecell2 = cells->GetCellAmplitude(absID2);
3663 tcell2 = cells->GetCellTime(absID2);
3669 ecell3 = cells->GetCellAmplitude(absID3);
3671 tcell3 = cells->GetCellTime(absID3);
3677 ecell4 = cells->GetCellAmplitude(absID4);
3679 tcell4 = cells->GetCellTime(absID4);
3683 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3684 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3685 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3686 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3688 return ecell1+ecell2+ecell3+ecell4;
3692 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3694 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3695 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3696 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3697 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3704 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3706 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3707 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3708 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3709 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3711 return ecell1+ecell2+ecell3+ecell4;
3723 AliVCaloCells * cells)
3725 AliDebug(1,
"Start");
3728 Double_t v[3] = {0,0,0};
3731 Int_t nModule2 = -1;
3732 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3735 if(phi1 < 0) phi1 += TMath::TwoPi();
3737 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3740 for(Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3742 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3744 Float_t maxCellFraction = 0.;
3747 Double_t tof2 = clus2->GetTOF()*1.e9;
3750 Double_t diffTof = tof1-tof2;
3755 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3793 if(phi2 < 0) phi2 += TMath::TwoPi();
3795 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));
3797 Bool_t inPi0Window = kFALSE;
3798 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3800 if ( nModule < 12 && nModule2 < 12 )
3807 if ( nModule == nModule2 )
3821 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3828 if ( nModule == nModule2 )
3844 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3858 AliDebug(1,
"Check DCal-PHOS pairs\n");
3863 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3864 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3865 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3867 for(Int_t jclus = 0 ; jclus <
GetPHOSClusters()->GetEntriesFast() ; jclus++)
3871 Float_t maxCellFraction = 0.;
3875 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3893 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3895 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
3896 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
3897 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
3909 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
3914 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
3915 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
3916 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
3917 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
3918 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
3919 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
3921 for(Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
3923 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3925 Float_t maxCellFraction = 0.;
3928 Double_t tof2 = clus2->GetTOF()*1.e9;
3931 Double_t diffTof = TMath::Abs(tof1-tof2);
3935 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3960 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3962 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
3963 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
3964 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
3965 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
3966 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
3967 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4032 Int_t nCellsPerCluster, AliVCaloCells* cells)
4041 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4054 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4057 if(ampMax < 0.01)
return kFALSE;
4059 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4072 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4093 AliDebug(1,
"Start");
4104 TObjArray * caloClusters = NULL;
4105 AliVCaloCells * cells = 0x0;
4119 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().
Data()));
4121 if( !caloClusters || !cells )
4123 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4127 if(caloClusters->GetEntriesFast() == 0)
return ;
4151 TParticle * primStack = 0;
4152 AliAODMCParticle * primAOD = 0;
4157 AliStack * stack = 0;
4162 nprim = stack->GetNtrack();
4166 TClonesArray * mcparticles = 0;
4170 if( !mcparticles )
return;
4171 nprim = mcparticles->GetEntriesFast();
4175 for(Int_t i=0 ; i < nprim; i++)
4177 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
4183 primStack = stack->Particle(i) ;
4186 AliWarning(
"ESD primaries pointer not available!!");
4190 pdg = primStack->GetPdgCode();
4191 status = primStack->GetStatusCode();
4195 if ( status > 11 )
continue;
4197 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ) continue ;
4206 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4209 AliWarning(
"AOD primaries pointer not available!!");
4213 pdg = primAOD->GetPdgCode();
4214 status = primAOD->GetStatus();
4218 if (!primAOD->IsPrimary())
continue;
4220 if ( status > 11 )
continue;
4222 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ) continue ;
4227 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4231 if(eMC < 0.2)
continue;
4238 if (TMath::Abs(etaMC) > 1)
continue;
4242 phiMC += TMath::TwoPi();
4246 else if (pdg==111) mcIndex =
kmcPi0;
4247 else if (pdg==221) mcIndex =
kmcEta;
4248 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4256 Bool_t inacceptance = kTRUE;
4259 inacceptance = kFALSE ;
4269 if(!inacceptance)
continue;
4286 Float_t energyOrg = clus->E();
4289 if(clus->GetNCells() < 3)
return ;
4291 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4293 Int_t
id = clus->GetCellsAbsId()[ipos];
4296 Float_t amp = cells->GetCellAmplitude(
id);
4308 AliWarning(Form(
"Wrong calculated energy %f",energy));
4319 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4321 Int_t
id = clus->GetCellsAbsId()[ipos];
4324 Float_t amp = cells->GetCellAmplitude(
id);
4334 Float_t l0org = clus->GetM02();
4335 Float_t l1org = clus->GetM20();
4336 Float_t dorg = clus->GetDispersion();
4339 if(
IsDataMC() && clus->GetNLabels() > 0)
4365 for(Int_t iw = 0; iw < 12; iw++)
4381 clus->SetM02(l0org);
4382 clus->SetM20(l1org);
4383 clus->SetDispersion(dorg);
4387 clus->SetE(energyOrg);
Float_t GetHistoZMax() const
TH2F * fhCaloV0MCorrEClusters
! Calo vs V0 multiplicity, total measured cluster energy
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TH2F * fhTimeIdLowGain
! Time vs Absolute cell Id, low gain
TH2F * fhDeltaCellClusterRE
! R cluster - R cell distribution (cm) vs cluster energy
Bool_t IsGoodCluster(Int_t absIdMax, Float_t m02, Int_t nCellsPerCluster, AliVCaloCells *cells)
Identify cluster as exotic or not.
TH2F * fhDCALPHOSCorrNCells
! DCAL vs PHOS, number of cells
TH2F * fhNCellsPerClusterNoCut
! N cells per cluster vs cluster energy vs eta of cluster
TH2F * fhMCNeutral1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC neutral
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH2F * fhNCellsMod
! Number of towers/crystals with signal for different module, Reco
TH3F * fhXYZ
! cluster X vs Y vs Z (cm)
TH2F * fh1EOverPMod
! p/E for track-cluster matches, per SM
TH2F * fh1EOverPR02Mod
! p/E for track-cluster matches, dR < 0.2, per SM
Int_t GetHistoNClusterCellMin() const
TH2F * fhDeltaCellClusterYNCells
! Y cluster - Y cell distribution (cm) vs N cells in cluster
TH1F * fhPt
! pT distribution, Reco
Float_t GetHistoPtMin() const
Int_t GetHistoFinePtBins() const
TH2F * fhClusterMaxCellECross
! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters ...
virtual Int_t GetTrackMultiplicity() const
Bool_t fFillPi0PairDiffTime
Fill time difference histograms of cluster pairs in pi0 mass window, only if fFillAllPi0Histo=kTRUE.
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
TH2F * fhGridCellsE
! Cells ordered in column/row for different module, weighted with energy, Reco
TH1F * fhPtCharged
! pT distribution, Reco, matched with track
Float_t GetHistodEdxMax() const
TH2F * fhClusterMaxCellDiff
! Difference between cluster energy and energy of cell with more energy, good clusters only ...
TH2F * fhBadClusterDeltaIEtaDeltaIPhiE2
! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without ma...
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fh2dR
! distance between projected track and cluster (eta-phi units)
Float_t fInvMassMinECut
Minimum energy cut value for clusters entering the invariant mass calculation.
Bool_t fStudyClustersAsymmetry
Study asymmetry of clusters, not QA related.
TH2F * fh2dRMod
! distance between projected track and cluster (eta-phi units), per SM
TH2F * fhExoL1[10][5]
! Short shower shape axis for exotic
TH2F * fhExoNCell[10][5]
! Number of cells per cluster for different cuts
Int_t GetHistoNCellsMin() const
TH2F * fhBadClusterEtaPhi
! Time Max cell of bad cluster
virtual Bool_t IsDataMC() const
Float_t fEMCALCellAmpMin
Amplitude Threshold on EMCal cells.
TH2F * fhIMDCALPHOS
! Cluster pairs invariant mass vs pair pT, for DCal-PHOS pairs
TH1F * fhEta
! eta distribution, Reco
TH2F * fhTimeMod
! Cell time distribution for different module, Reco
TH2F * fhMCChHad1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC charged hadrons
Bool_t fStudyWeight
Study the energy weight used in different cluster calculations, not QA related.
TH2F * fh2MatchdEdxMod
! dE/dx for all matches, per SM
TH2F * fh2EledEdx
! dE/dx vs. momentum for electron candidates
TH2F * fhTrackMatchedDPhiNeg
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhLambda0ForW0MC[14][5]
! L0 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
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
Float_t fInvMassMaxECut
Maximum energy cut value for clusters entering the invariant mass calculation.
Float_t GetHistoMassMin() const
void WeightHistograms(AliVCluster *clus, AliVCaloCells *cells)
Calculate cluster weights.
Bool_t fFillAllPosHisto
Fill all the position related histograms.
TH2F ** fhECellTotalRatioMod
! e cell / e total vs e total, per SM
TH2F * fhEMCALPHOSCorrEClusters
! EMCAL vs PHOS, total measured cluster energy
TH2F * fhNCellsPerClusterWeirdModNoCut
! N cells per clusters different module, Reco, No cut, ridiculously large energy
Bool_t fFillAllTH3
Fill TH3 histograms.
Int_t GetHistoXBins() const
Int_t GetHistoV0SignalBins() const
TH2F * fhClusterTimeEnergy
! Cluster Time vs Energy
TH2F * fhDeltaCellClusterRNCells
! R cluster - R cell distribution (cm) vs N cells in cluster
Int_t GetHistoTrackMultiplicityMin() const
TH1F * fhMCChHad1dR
! distance between projected track and cluster, MC charged hadrons
TH1F * fhTime
! Time measured in towers/crystals
TH2F * fhCaloCenNClusters
! Calo vs centrality, number of clusters
Float_t GetHistoTrackResidualPhiMin() const
TH2F * fhBadClusterMaxCellDiff
! Difference between cluster energy and energy of cell with more energy
TH2F * fhDeltaIEtaDeltaIPhiE6[2]
! Difference between max cell index and farthest cell, eta vs phi, E > 6 GeV, with and without matchi...
TH2F * fhBadClusterMaxCellECross
! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, bad clusters ...
virtual Int_t GetEventCentrality() const
Float_t GetHistoTrackResidualEtaMin() const
TH2F * fhTrackMatchedDEtaDPhiNeg
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
Int_t GetHistoNClusterCellBins() const
TH1F * fhPhiCharged
! phi distribution, Reco, matched with track
TH2F * fh1EOverPR02
! p/E for track-cluster matches, dR < 0.2
TH2F * fhMCEle1EleEOverP
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC electrons
TH2F * fhBadClusterMaxCellCloseCellDiff
! Difference between max cell energy and cell energy of the same cluster for bad clusters ...
Float_t GetHistoYMax() const
Float_t GetHistoDiffTimeMin() const
void MakeAnalysisFillHistograms()
Main task method, call all the methods filling QA histograms.
TH2F * fhCellECross
! 1 - Energy in cross around cell / cell energy
TH2F * fhClusterPairDiffTimeE
! Pair of clusters time difference vs E
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.
TH2F * fhLambda0ForW0[14]
! L0 for 7 defined w0= 3, 3.5 ... 6
virtual TString GetCalorimeterString() const
Bool_t fFillInvMassInEMCALWithPHOSDCalAcc
Fill invariant mass histograms of EMCal clusters in DCal and PHOS eta acceptance each, only if fFillAllPi0Histo=kTRUE.
TH2F * fhBadClusterPairDiffTimeE
! Pair of clusters time difference vs E, bad cluster
TLorentzVector fClusterMomentum
! Cluster momentum, temporary container
TH2F * fhEtaPhiCharged
! eta distribution, Reco, matched with track
TH2F * fhRecoMCDeltaPhi[7][2]
! Gen-Reco phi generated particle vs reconstructed E
virtual Bool_t IsRealCaloAcceptanceOn() const
Float_t GetHistodEdxMin() const
TLorentzVector fClusterMomentum2
! Cluster momentum, temporary container
AliEMCALGeometry * GetEMCALGeometry() const
virtual AliFiducialCut * GetFiducialCut()
TH2F * fhECellTotalLogRatio
! log (e cell / e total) vs e total
TH2F * fhClusterMaxCellDiffNoCut
! Difference between cluster energy and energy of cell with more energy, no bad cluster rejection ...
Float_t fExoECrossCuts[10]
List of ecross cuts.
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhMCNeutral2MatchdEdx
! dE/dx vs. momentum for all matches, MC neutral
TH2F * fhCaloCenEClusters
! Calo vs centrality, total measured cluster energy
Int_t GetHistoDiffTimeBins() const
void ExoticHistograms(Int_t absIdMax, Float_t ampMax, AliVCluster *clus, AliVCaloCells *cells)
Fill histograms with exoticity parameters.
TH3F * fhEtaPhiECharged
! eta vs phi vs E, Reco, matched with track
TH2F * fhEMaxCellClusterLogRatio
! log (e max cell / e cluster) vs e cluster
TH2F * fhBadCellTimeSpreadRespectToCellMax
! Difference of the time of cell with maximum dep energy and the rest of cells for bad clusters ...
TH2F * fhDeltaCellClusterXE
! X cluster - X cell distribution (cm) vs cluster energy
Float_t GetHistoTrackResidualPhiMax() const
TH2F * fhEMCALPHOSCorrNCells
! EMCAL vs PHOS, number of cells
TH2F * fhDeltaIANCells[2]
! Cluster "asymmetry" in cell units vs number of cells in cluster for E > 0.5, with and without match...
Int_t fNMaxCols
Number of EMCAL/PHOS rows.
TH2F * fhEtaPhiCell
! eta vs phi, cells
Int_t GetHistoAsymmetryBins() const
Float_t fInvMassMinM02Cut
Minimum M02 shower shape cut value for clusters entering the invariant mass calculation.
Double_t fTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
Float_t GetHistoRMin() const
virtual AliEMCALGeometry * GetEMCALGeometry() const
Bool_t fStudyExotic
Study the exotic cluster for different cuts, not QA related.
Float_t GetHistoRMax() const
TH2F * fhTrackMatchedDPhiNegMod
! Phi distance between negative track and cluster vs module for E > 0.5 GeV
void InitParameters()
Initialize the parameters of the analysis.
TH2F * fhNCellsPerCluster
! N cells per cluster vs cluster energy vs eta of cluster
TH2F * fhNCellsPerClusterWeirdMod
! N cells per clusters different module, Reco, ridiculously large energy
TH2F * fhGenMCAccEtaPhi[4]
! eta vs phi of primary particle, in acceptance
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
TH2F * fhAmpMod
! Cell amplitude distribution for different module, Reco
TH2F * fhCaloV0SCorrNCells
! Calo vs V0 signal, number of cells
Float_t GetECross(Int_t absId, AliVCaloCells *cells, Float_t dtcut=10000)
Int_t GetHistoV0MultiplicityBins() const
Int_t CheckOrigin(Int_t label, const AliCaloTrackReader *reader, Int_t calorimeter)
TH2F ** fhIMMod
! cluster pairs invariant mass, different module,
TH2F ** fhNCellsPerClusterMod
! N cells per clusters different module, Reco
TH2F * fhTrackMatchedDEtaPos
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
Int_t GetHistoV0SignalMin() const
TH2F * fhECellClusterLogRatio
! log (e cell / e cluster) vs e cluster
Int_t GetHistoV0MultiplicityMin() const
Float_t GetHistoShowerShapeMin() const
TH3F * fhEtaPhiAmpCell
! eta vs phi vs amplitude, cells
TH2F * fh1EleEOverPMod
! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, per SM
TH2F * fhCaloEvPNCells
! Calo vs event plane angle, number of cells
TH2F * fhBadClusterLambda0
! Cluster Lambda0 vs Energy, clusters declared bad
Float_t GetHistoXMax() const
TH2F * fhClusterPairDiffTimeEPi0MassDCalSame
! DCal Cluster time TOF difference, for pairs in 0.1 < mass < 0.18, pairs in same Module ...
TH2F * fhRecoMCPhi[7][2]
! phi generated particle vs reconstructed phi
TH2F * fhExoL1NCell[10][5]
! Lambda1 vs n cells in cluster for several E cross cuts and cluster with E > 5
Int_t GetHistodEdxBins() const
TH2F * fhTimeId
! Time vs Absolute cell Id
virtual AliCalorimeterUtils * GetCaloUtils() const
TH2F * fh1EOverP
! p/E for track-cluster matches
Int_t GetHistoNClusterCellMax() const
TH2F * fhIMvsOpAngle
! Cluster pairs opening angle vs mass
TH2F * fhRecoMCEta[7][2]
! eta generated particle vs reconstructed Eta
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fh2EledEdxMod
! dE/dx for electron candidates, per SM
TH2F * fhBadClusterLambda1
! Cluster Lambda1 vs Energy, clusters declared bad
TH2F * fhMCEle1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC electrons
TH2F * fhECellTotalRatio
! e cell / e total vs e total
Int_t fEMCALClusterNCellMin
Minimum number of cells on EMCal clusters.