17 #include <TObjArray.h>
18 #include <TParticle.h>
19 #include <TDatabasePDG.h>
21 #include <TObjString.h>
27 #include "AliVCaloCells.h"
29 #include "AliVCluster.h"
30 #include "AliVTrack.h"
31 #include "AliVEvent.h"
32 #include "AliVEventHandler.h"
33 #include "AliAODMCParticle.h"
37 #include "AliPHOSGeoUtils.h"
38 #include "AliEMCALGeometry.h"
51 fFillAllCellTimeHisto(kTRUE),
52 fFillAllPosHisto(kFALSE), fFillAllPosHisto2(kFALSE),
54 fFillAllTMHisto(kTRUE),
55 fFillAllPi0Histo(kTRUE), fFillInvMassOpenAngle(kFALSE),
56 fFillPi0PairDiffTime(kFALSE), fFillInvMassInEMCALWithPHOSDCalAcc(kFALSE),
57 fCorrelate(kTRUE), fStudyBadClusters(kFALSE),
58 fStudyClustersAsymmetry(kFALSE), fStudyExotic(kFALSE),
62 fNModules(12), fNRCU(2),
63 fNMaxCols(48), fNMaxRows(24),
64 fTimeCutMin(-10000), fTimeCutMax(10000),
66 fEMCALCellAmpMin(0), fPHOSCellAmpMin(0),
67 fEMCALClusterNCellMin(0), fPHOSClusterNCellMin(0),
70 fInvMassMinECut(0), fInvMassMaxECut(0),
71 fInvMassMinM02Cut(0), fInvMassMaxM02Cut(0),
72 fInvMassMaxOpenAngle(0), fInvMassMaxTimeDifference(0),
75 fExoNECrossCuts(0), fExoECrossCuts(),
76 fExoNDTimeCuts(0), fExoDTimeCuts(),
78 fClusterMomentum(), fClusterMomentum2(),
83 fhEtaPhi(0), fhEtaPhiE(0),
84 fhECharged(0), fhPtCharged(0),
85 fhPhiCharged(0), fhEtaCharged(0),
86 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
89 fhIM(0), fhIMSame(0), fhIMDiff(0),
90 fhIMDCAL(0), fhIMDCALSame(0), fhIMDCALDiff(0),
91 fhIMDCALPHOS(0), fhIMDCALPHOSSame(0),
92 fhIMEMCALPHOS(0), fhIMEMCALPHOSSame(0),
94 fhOpAngle(0), fhIMvsOpAngle(0),
95 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
98 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
99 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
100 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
101 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
103 fhClusterMaxCellECross(0),
104 fhLambda0(0), fhLambda1(0),
107 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
108 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
109 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
110 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
111 fhBadClusterMaxCellECross(0),
112 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
113 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
114 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
117 fhRNCells(0), fhXNCells(0),
118 fhYNCells(0), fhZNCells(0),
122 fhRCellE(0), fhXCellE(0),
123 fhYCellE(0), fhZCellE(0),
125 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
126 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
127 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
128 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
131 fhNCells(0), fhNCellsCutAmpMin(0),
132 fhAmplitude(0), fhAmpId(0),
133 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
135 fhTimeId(0), fhTimeAmp(0),
136 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
140 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
141 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
142 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
143 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
144 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
145 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
146 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
147 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
148 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
149 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
150 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
151 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
152 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
153 fhCaloCenNCells(0), fhCaloCenECells(0),
154 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
155 fhCaloEvPNCells(0), fhCaloEvPECells(0),
158 fhEMod(0), fhAmpMod(0),
159 fhEWeirdMod(0), fhAmpWeirdMod(0),
161 fhNClustersMod(0), fhNCellsMod(0),
162 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
163 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
164 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
166 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
167 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
168 fhTimeAmpPerRCU(0), fhIMMod(0),
171 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
172 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
173 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
174 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
176 fhExoL0ECross(0), fhExoL1ECross(0),
179 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
180 fhRecoMCDeltaE(), fhRecoMCRatioE(),
181 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
184 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
185 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
188 fhEMVxyz(0), fhEMR(0),
189 fhHaVxyz(0), fhHaR(0),
190 fh1EOverP(0), fh2dR(0),
191 fh2EledEdx(0), fh2MatchdEdx(0),
192 fh1EOverPR02(0), fh1EleEOverP(0),
193 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
194 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
195 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
196 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
197 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
198 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
199 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
200 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
201 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0)
204 for(Int_t i =0; i < 12; i++)
209 for(Int_t j = 0; j < 5; j++)
226 for (Int_t ie = 0; ie < 10 ; ie++)
229 for (Int_t idt = 0; idt < 5 ; idt++)
243 for(Int_t i = 0; i < 7; i++)
254 for(Int_t i = 0; i < 4; i++)
279 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
286 Double_t tof = clus->GetTOF()*1.e9;
287 Float_t
energy = clus->E();
295 if(phi < 0) phi += TMath::TwoPi();
306 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
308 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
310 if(clus->GetID() == clus2->GetID())
continue;
312 Float_t maxCellFraction2 = 0.;
315 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
317 Double_t tof2 = clus2->GetTOF()*1.e9;
326 Double_t timeAverages[2] = {0.,0.};
333 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
335 Int_t absId = clus->GetCellsAbsId()[ipos];
336 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
338 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
345 Double_t time = cells->GetCellTime(absId);
348 Float_t diff = (tmax-time*1e9);
363 AliVCaloCells* cells,
364 Double_t timeAverages[2])
368 Float_t ampMax = 0, amp = 0;
371 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
373 Int_t
id = clus->GetCellsAbsId()[ipos];
376 amp = cells->GetCellAmplitude(
id);
395 Int_t ncells = clus->GetNCells();
397 for (Int_t ipos = 0; ipos < ncells; ipos++)
399 id = clus ->GetCellsAbsId()[ipos];
400 amp = cells->GetCellAmplitude(
id);
401 time = cells->GetCellTime(
id);
409 wTime += time*1e9 * w;
413 if(ncells > 0) aTime /= ncells;
416 if(wTot > 0) wTime /= wTot;
419 timeAverages[0] = aTime;
420 timeAverages[1] = wTime;
428 Int_t ncells = cells->GetNumberOfCells();
432 Float_t ecellsCut = 0;
437 Int_t *nCellsInModule =
new Int_t [
fNModules];
438 Float_t *eCellsInModule =
new Float_t[
fNModules];
440 for(Int_t imod = 0; imod <
fNModules; imod++ )
442 nCellsInModule[imod] = 0 ;
443 eCellsInModule[imod] = 0.;
446 Int_t icol = -1, icolAbs = -1;
447 Int_t irow = -1, irowAbs = -1;
452 Bool_t highG = kFALSE;
456 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
458 if ( cells->GetCellNumber(iCell) < 0 )
continue;
460 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
466 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
468 if(nModule < fNModules)
475 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
479 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
483 amp = cells->GetAmplitude(iCell)*recalF;
484 time = cells->GetTime(iCell);
485 id = cells->GetCellNumber(iCell);
486 highG = cells->GetCellHighGain(
id);
500 AliDebug(1,Form(
"Remove cell with Time %f",time));
506 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
525 nCellsInModule[nModule]++ ;
569 Float_t celleta = 0.;
570 Float_t cellphi = 0.;
573 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
580 Double_t cellpos[] = {0, 0, 0};
587 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
595 Int_t relId[4], module;
596 Float_t xCell, zCell;
603 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
621 for(Int_t imod = 0; imod <
fNModules; imod++ )
623 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
634 for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
636 if ( cells->GetCellNumber(iCell) < 0 )
continue;
638 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
642 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
644 if(nModule < fNModules)
651 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
655 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
659 amp = cells->GetAmplitude(iCell)*recalF;
660 time = cells->GetTime(iCell);
661 id = cells->GetCellNumber(iCell);
668 GetReader()->GetInputEvent()->GetBunchCrossNumber());
675 AliDebug(1,Form(
"Remove cell with Time %f",time));
681 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
688 Float_t ratio = amp/ecellsCut;
693 if(eCellsInModule[nModule] > 0)
695 Float_t ratioMod = amp/eCellsInModule[nModule];
704 delete [] nCellsInModule;
705 delete [] eCellsInModule;
713 Int_t nCaloCellsPerCluster = clus->GetNCells();
715 UShort_t * indexList = clus->GetCellsAbsId();
718 clus->GetPosition(pos);
720 Float_t clEnergy = clus->E();
723 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
726 Int_t absId = indexList[ipos];
732 Double_t cellpos[] = {0, 0, 0};
743 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
744 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
752 Int_t relId[4], module;
753 Float_t xCell, zCell;
768 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
769 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
784 if( clus->GetNCells() <= 3 )
return;
789 Int_t ietaMax=-1; Int_t iphiMax = 0; Int_t rcuMax = 0;
792 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
794 Int_t absId = clus->GetCellsAbsId()[ipos];
796 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
799 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
803 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
807 Int_t ietaShift = ieta;
808 Int_t ietaMaxShift = ietaMax;
809 if (ieta > ietaMax) ietaMaxShift+=48;
811 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
815 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
836 Int_t nLabel = clus->GetNLabels();
837 Int_t* labels = clus->GetLabels();
883 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
886 Double_t tof = clus->GetTOF()*1.e9;
899 Int_t nCaloCellsPerCluster = clus->GetNCells();
902 for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
904 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
906 if( clus->GetID() == clus2->GetID() )
continue;
908 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
912 Double_t tof2 = clus2->GetTOF()*1.e9;
915 if ( nModule2 == nModule )
920 if(nCaloCellsPerCluster > 1)
934 for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
936 Int_t absId = clus->GetCellsAbsId()[ipos];
937 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
939 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
945 Double_t time = cells->GetCellTime(absId);
948 Float_t diff = (tmax-time*1.0e9);
961 if(phi < 0) phi +=TMath::TwoPi();
963 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
988 clus->GetPosition(pos);
1000 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1023 AliVCaloCells* cells)
1026 Int_t *labels = 0x0;
1027 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1028 Int_t nCaloClustersAccepted = 0 ;
1029 Int_t nCaloCellsPerCluster = 0 ;
1030 Bool_t matched = kFALSE;
1034 Double_t v[3] = {0,0,0};
1037 Int_t *nClustersInModule =
new Int_t [
fNModules];
1038 Float_t *energyInModule =
new Float_t[
fNModules];
1039 for(Int_t imod = 0; imod <
fNModules; imod++ )
1041 nClustersInModule[imod] = 0;
1042 energyInModule [imod] = 0;
1048 for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1050 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1052 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1055 Float_t maxCellFraction = 0.;
1059 Double_t tof = clus->GetTOF()*1.e9;
1062 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1075 nLabel = clus->GetNLabels();
1076 labels = clus->GetLabels();
1082 nCaloCellsPerCluster = clus->GetNCells();
1088 Double_t tmax = cells->GetCellTime(absIdMax);
1101 if(nModule >=0 && nModule < fNModules)
1110 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1116 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1118 Float_t eCrossFrac = 0;
1119 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1121 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1134 maxCellFraction, eCrossFrac, tmax);
1136 nCaloClustersAccepted++;
1140 nClustersInModule[nModule]++;
1142 energyInModule [nModule] += clus->E();
1152 Int_t mcOK = kFALSE;
1154 if(
IsDataMC() && nLabel > 0 && labels)
1166 && nCaloClusters > 1
1167 && nCaloCellsPerCluster > 1
1168 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1182 for(Int_t imod = 0; imod <
fNModules; imod++ )
1184 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1192 delete [] nClustersInModule;
1193 delete [] energyInModule;
1201 Int_t nLabels, Int_t &
pdg )
1203 if(!labels || nLabels<=0)
1205 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1209 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1214 if(phi < 0) phi +=TMath::TwoPi();
1216 AliAODMCParticle * aodprimary = 0x0;
1217 TParticle * primary = 0x0;
1220 Int_t label = labels[0];
1224 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1228 Int_t pdg0 =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
1229 Float_t vxMC = 0; Float_t vyMC = 0;
1231 Float_t phiMC = 0; Float_t etaMC = 0;
1243 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1249 pdg0 = TMath::Abs(primary->GetPdgCode());
1251 status = primary->GetStatusCode();
1252 vxMC = primary->Vx();
1253 vyMC = primary->Vy();
1254 iParent = primary->GetFirstMother();
1256 AliDebug(1,
"Cluster most contributing mother:");
1257 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1265 pdg = TMath::Abs(primary->GetPdgCode());
1267 AliDebug(2,
"Converted cluster!. Find before conversion:");
1269 while((pdg == 22 || pdg == 11) && status != 1)
1271 Int_t iMotherOrg = iMother;
1274 status = primary->GetStatusCode();
1275 pdg = TMath::Abs(primary->GetPdgCode());
1276 iParent = primary->GetFirstMother();
1280 if(pdg==111 || pdg==221)
1282 primary =
GetMCStack()->Particle(iMotherOrg);
1292 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1295 AliDebug(1,
"Converted Cluster mother before conversion:");
1296 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1304 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1306 while(pdg != 111 && pdg != 221)
1311 status = primary->GetStatusCode();
1312 pdg = TMath::Abs(primary->GetPdgCode());
1313 iParent = primary->GetFirstMother();
1315 if( iParent < 0 )
break;
1317 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1321 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1326 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1329 eMC = primary->Energy();
1331 phiMC = primary->Phi();
1332 etaMC = primary->Eta();
1333 pdg = TMath::Abs(primary->GetPdgCode());
1334 charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1337 else if(
GetReader()->ReadAODMCParticles() &&
1343 AliFatal(
"MCParticles not available!");
1347 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1349 status = aodprimary->IsPrimary();
1350 vxMC = aodprimary->Xv();
1351 vyMC = aodprimary->Yv();
1352 iParent = aodprimary->GetMother();
1354 AliDebug(1,
"Cluster most contributing mother:");
1355 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1356 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1361 AliDebug(2,
"Converted cluster!. Find before conversion:");
1365 pdg = TMath::Abs(aodprimary->GetPdgCode());
1367 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1369 Int_t iMotherOrg = iMother;
1372 status = aodprimary->IsPrimary();
1373 iParent = aodprimary->GetMother();
1374 pdg = TMath::Abs(aodprimary->GetPdgCode());
1378 if( pdg == 111 || pdg == 221 )
1390 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1391 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1394 AliDebug(1,
"Converted Cluster mother before conversion:");
1395 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1396 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1404 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1406 while(pdg != 111 && pdg != 221)
1410 status = aodprimary->IsPrimary();
1411 iParent = aodprimary->GetMother();
1412 pdg = TMath::Abs(aodprimary->GetPdgCode());
1414 if( iParent < 0 )
break;
1416 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1420 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1425 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1428 status = aodprimary->IsPrimary();
1429 eMC = aodprimary->E();
1431 phiMC = aodprimary->Phi();
1432 etaMC = aodprimary->Eta();
1433 pdg = TMath::Abs(aodprimary->GetPdgCode());
1434 charge = aodprimary->Charge();
1438 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1439 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1472 else if(charge == 0)
1487 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1498 if( primary || aodprimary )
return kTRUE ;
1514 if(phi < 0) phi +=TMath::TwoPi();
1530 Double_t tpt = track->Pt();
1531 Double_t tmom = track->P();
1532 Double_t dedx = track->GetTPCsignal();
1533 Int_t nITS = track->GetNcls(0);
1534 Int_t nTPC = track->GetNcls(1);
1535 Bool_t positive = kFALSE;
1536 if(track) positive = (track->Charge()>0);
1539 Float_t deta = clus->GetTrackDz();
1540 Float_t dphi = clus->GetTrackDx();
1541 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1544 if( TMath::Abs(dphi) < 999 )
1572 Double_t eOverP = e/tmom;
1581 if(dedx > 60 && dedx < 100)
1591 if(e > 0.5 && tmom > 0.5)
1597 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1598 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1606 Double_t
charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1608 if(TMath::Abs(pdg) == 11)
1632 else if(charge == 0)
1657 if(!caloClustersEMCAL || !caloClustersPHOS)
1659 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1667 if(!cellsEMCAL || !cellsPHOS)
1669 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1678 Float_t sumClusterEnergyEMCAL = 0;
1679 Float_t sumClusterEnergyDCAL = 0;
1680 Float_t sumClusterEnergyPHOS = 0;
1684 AliVCluster* cluster = 0;
1685 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1687 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1688 Float_t energy = cluster->E();
1690 if( energy < 0.5 )
continue;
1692 if(cluster->GetCellsAbsId()[0] < 12288)
1695 sumClusterEnergyEMCAL +=
energy;
1700 sumClusterEnergyDCAL +=
energy;
1704 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1706 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
1708 energy = cluster->E();
1710 if( energy < 0.5 )
continue;
1713 sumClusterEnergyPHOS +=
energy;
1717 Int_t ncellsEMCAL = 0 ;
1718 Int_t ncellsDCAL = 0 ;
1719 Int_t ncellsPHOS = 0;
1721 Float_t sumCellEnergyEMCAL = 0;
1722 Float_t sumCellEnergyDCAL = 0;
1723 Float_t sumCellEnergyPHOS = 0;
1725 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1727 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1728 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1735 sumCellEnergyEMCAL += amp;
1740 sumCellEnergyDCAL += amp;
1744 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1746 Float_t amp = cellsPHOS->GetAmplitude(icell);
1747 Int_t cellId = cellsPHOS->GetCellNumber(icell);
1749 if ( cellId < 0 ) continue ;
1754 sumCellEnergyPHOS += amp;
1780 Int_t ncl = nclPHOS;
1781 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1782 Int_t ncells = ncellsPHOS;
1783 Float_t sumCellEnergy = sumCellEnergyPHOS;
1787 ncl = nclEMCAL + nclDCAL;
1788 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1789 ncells = ncellsEMCAL + ncellsDCAL;
1790 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1818 AliDebug(1,
"Correlate():");
1819 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1820 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1821 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1822 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1823 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1824 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1825 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1826 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1835 const Int_t buffersize = 255;
1836 char onePar[buffersize] ;
1838 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1863 return new TObjString(parList) ;
1870 AliVCluster *clus, AliVCaloCells* cells)
1874 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1878 Float_t l0 = clus->GetM02();
1879 Float_t l1 = clus->GetM20();
1880 Float_t en = clus->E();
1881 Int_t nc = clus->GetNCells();
1882 Double_t tmax = clus->GetTOF()*1.e9;
1884 Float_t eCrossFrac = 1-
GetECross(absIdMax,cells, 10000000)/ampMax;
1914 for (Int_t icell = 0; icell < clus->GetNCells(); icell++)
1916 Int_t absId = clus->GetCellsAbsId()[icell];
1917 Double_t time = cells->GetCellTime(absId);
1920 Float_t diff = (tmax-time)*1e9;
1940 TList * outputContainer =
new TList() ;
1941 outputContainer->SetName(
"QAHistos") ;
1992 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
1993 fhE->SetXTitle(
"#it{E} (GeV)");
1994 outputContainer->Add(
fhE);
1996 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
1997 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1998 outputContainer->Add(
fhPt);
2000 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2001 fhPhi->SetXTitle(
"#phi (rad)");
2002 outputContainer->Add(
fhPhi);
2004 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2005 fhEta->SetXTitle(
"#eta ");
2006 outputContainer->Add(
fhEta);
2010 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2011 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2019 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2020 netabins,etamin,etamax,nphibins,phimin,phimax);
2026 fhClusterTimeEnergy =
new TH2F (
"hClusterTimeEnergy",
"energy vs TOF, reconstructed clusters",
2027 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2032 fhClusterPairDiffTimeE =
new TH2F(
"hClusterPairDiffTimeE",
"cluster pair time difference vs E, only good clusters",
2033 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2039 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2044 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2045 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2046 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2047 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2050 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2051 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2052 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2053 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2062 fhClusterMaxCellCloseCellRatio =
new TH2F (
"hClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2063 nptbins,ptmin,ptmax, 100,0,1.);
2068 fhClusterMaxCellCloseCellDiff =
new TH2F (
"hClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell / neighbour cell, reconstructed clusters",
2069 nptbins,ptmin,ptmax, 500,0,100.);
2074 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2075 nptbins,ptmin,ptmax, 500,0,1.);
2082 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2083 nptbins,ptmin,ptmax, 500,0,1.);
2089 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2090 nptbins,ptmin,ptmax, 400,-1,1.);
2097 fhNCellsPerClusterNoCut =
new TH2F (
"hNCellsPerClusterNoCut",
"# cells per cluster vs energy, no bad clusters cut",
2098 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2104 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2124 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2130 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2134 fhBadClusterEtaPhi =
new TH2F (
"hBadClusterEtaPhi",
"Bad cluster, #eta vs #phi, #it{E} > 0.5 GeV",
2135 netabins,etamin,etamax,nphibins,phimin,phimax);
2140 fhBadClusterLambda0 =
new TH2F (
"hBadClusterLambda0",
"Bad cluster,shower shape, #lambda^{2}_{0} vs E",
2141 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2146 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2147 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2152 fhBadClusterMaxCellCloseCellRatio =
new TH2F (
"hBadClusterMaxCellCloseCellRatio",
"energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
2153 nptbins,ptmin,ptmax, 100,0,1.);
2158 fhBadClusterMaxCellCloseCellDiff =
new TH2F (
"hBadClusterMaxCellCloseCellDiff",
"energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
2159 nptbins,ptmin,ptmax, 500,0,100);
2164 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2165 nptbins,ptmin,ptmax, 500,0,1.);
2170 fhBadClusterTimeEnergy =
new TH2F (
"hBadClusterTimeEnergy",
"energy vs TOF of reconstructed bad clusters",
2171 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2176 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2181 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2182 nptbins,ptmin,ptmax, 400,-1,1.);
2189 fhBadCellTimeSpreadRespectToCellMax =
new TH2F (
"hBadCellTimeSpreadRespectToCellMax",
"#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2194 fhBadClusterMaxCellDiffAverageTime =
new TH2F (
"hBadClusterMaxCellDiffAverageTime",
"#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2199 fhBadClusterMaxCellDiffWeightedTime =
new TH2F (
"hBadClusterMaxCellDiffWeightedTime",
"#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2211 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2212 400,0,1,ssbins,ssmin,ssmax);
2213 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2218 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2219 400,0,1,ssbins,ssmin,ssmax);
2220 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2227 fhExoDTime[ie] =
new TH2F(Form(
"hExoDTime_ECross%d",ie),
2228 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2229 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2230 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2236 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2237 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2238 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2239 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2240 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2243 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2244 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]),
2245 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2246 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2247 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2248 outputContainer->Add(
fhExoL0[ie][idt]) ;
2250 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2251 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]),
2252 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2253 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2254 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2255 outputContainer->Add(
fhExoL1[ie][idt]) ;
2257 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2258 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]),
2259 nptbins,ptmin,ptmax,400,0,1);
2260 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2261 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2264 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2265 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]),
2266 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2267 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2268 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2269 outputContainer->Add(
fhExoTime[ie][idt]) ;
2271 fhExoL0NCell[ie][idt] =
new TH2F(Form(
"hExoL0_NCell%d_DT%d",ie,idt),
2272 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]),
2273 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2278 fhExoL1NCell[ie][idt] =
new TH2F(Form(
"hExoL1_NCell%d_DT%d",ie,idt),
2279 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]),
2280 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2292 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2298 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2304 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2310 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2311 nptbins,ptmin,ptmax,21,-1.05,1.05);
2312 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2313 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2316 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2317 ssbins,ssmin,ssmax,21,-1.05,1.05);
2319 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2322 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2323 ssbins,ssmin,ssmax,21,-1.05,1.05);
2325 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2328 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2329 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2335 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2341 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2347 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2353 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2354 nptbins,ptmin,ptmax,21,-1.05,1.05);
2355 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2356 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2359 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2360 ssbins,ssmin,ssmax,21,-1.05,1.05);
2362 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2365 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2366 ssbins,ssmin,ssmax,21,-1.05,1.05);
2368 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2371 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2372 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2378 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2379 for (Int_t iPart = 0; iPart < 4; iPart++) {
2381 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2382 nptbins,ptmin,ptmax,21,-1.05,1.05);
2383 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2384 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2409 fhBadClusterDeltaIA =
new TH2F (
"hBadClusterDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2410 nptbins,ptmin,ptmax,21,-1.05,1.05);
2419 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy",
2420 nptbins,ptmin,ptmax, 100,0,1.);
2425 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy",
2426 nptbins,ptmin,ptmax, 100,-10,0);
2431 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy",
2432 nptbins,ptmin,ptmax, 100,0,1.);
2437 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy",
2438 nptbins,ptmin,ptmax, 100,-10,0);
2443 fhECellTotalRatio =
new TH2F (
"hECellTotalRatio",
" cell energy / sum all energy vs all energy",
2444 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2449 fhECellTotalLogRatio =
new TH2F (
"hECellTotalLogRatio",
" Log(cell energy / sum all energy) vs all energy",
2450 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2458 for(Int_t imod = 0; imod <
fNModules; imod++)
2461 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2462 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2468 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2469 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2475 for(Int_t iw = 0; iw < 12; iw++)
2477 Float_t w0 = 3+0.25*iw;
2478 fhLambda0ForW0[iw] =
new TH2F (Form(
"hLambda0ForW0%d",iw),Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",w0),
2479 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2491 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2492 for(Int_t imc = 0; imc < 5; imc++){
2494 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
2495 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2521 fhTrackMatchedDEtaNeg =
new TH2F(
"hTrackMatchedDEtaNeg",
"d#eta of cluster-negative track vs cluster energy",
2522 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2526 fhTrackMatchedDPhiNeg =
new TH2F(
"hTrackMatchedDPhiNeg",
"d#phi of cluster-negative track vs cluster energy",
2527 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2531 fhTrackMatchedDEtaDPhiNeg =
new TH2F(
"hTrackMatchedDEtaDPhiNeg",
"d#eta vs d#phi of cluster- negative track vs cluster energy",
2532 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2536 fhTrackMatchedDEtaPos =
new TH2F(
"hTrackMatchedDEtaPos",
"d#eta of cluster-positive track vs cluster energy",
2537 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2541 fhTrackMatchedDPhiPos =
new TH2F(
"hTrackMatchedDPhiPos",
"d#phi of cluster-positive track vs cluster energy",
2542 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2546 fhTrackMatchedDEtaDPhiPos =
new TH2F(
"hTrackMatchedDEtaDPhiPos",
"d#eta vs d#phi of cluster-positive track vs cluster energy",
2547 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2552 fhTrackMatchedDEtaNegMod =
new TH2F(
"hTrackMatchedDEtaNegPerModule",
"d#eta of cluster-negative track vs module, E > 0.5 GeV",
2557 fhTrackMatchedDPhiNegMod =
new TH2F(
"hTrackMatchedDPhiNegPerModule",
"d#phi of cluster-negative track vs module, E > 0.5 GeV",
2562 fhTrackMatchedDEtaPosMod =
new TH2F(
"hTrackMatchedDEtaPosPerModule",
"d#eta of cluster-positive track vs module, E > 0.5 GeV",
2567 fhTrackMatchedDPhiPosMod =
new TH2F(
"hTrackMatchedDPhiPosPerModule",
"d#phi of cluster-positive track vs module, E > 0.5 GeV",
2584 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2588 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2589 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2592 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2596 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2602 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2603 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2611 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2612 netabins,etamin,etamax,nphibins,phimin,phimax);
2618 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2620 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2623 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2624 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2625 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2626 outputContainer->Add(
fh2dR) ;
2628 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2633 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2638 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2643 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2651 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);
2656 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);
2657 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2661 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);
2666 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);
2671 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);
2676 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);
2684 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2685 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2686 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2687 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2688 outputContainer->Add(
fhIM);
2690 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2691 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2692 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2693 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2696 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2697 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2698 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2699 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2704 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2705 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2706 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2707 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2710 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2711 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2712 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2713 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2716 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2717 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2718 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2719 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2722 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2723 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2724 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2725 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2728 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2729 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2737 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2738 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2739 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2740 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2743 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2744 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2753 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2759 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2767 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2773 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2780 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2781 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2782 fhAsym->SetYTitle(
"#it{Asymmetry}");
2783 outputContainer->Add(
fhAsym);
2787 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2788 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2789 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2790 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2794 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2797 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2804 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2805 fhXYZ->SetXTitle(
"#it{x} (cm)");
2806 fhXYZ->SetYTitle(
"#it{y} (cm)");
2807 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2808 outputContainer->Add(
fhXYZ);
2810 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2811 fhXE->SetXTitle(
"#it{x} (cm)");
2812 fhXE->SetYTitle(
"#it{E} (GeV)");
2813 outputContainer->Add(
fhXE);
2815 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2816 fhYE->SetXTitle(
"#it{y} (cm)");
2817 fhYE->SetYTitle(
"#it{E} (GeV)");
2818 outputContainer->Add(
fhYE);
2820 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2821 fhZE->SetXTitle(
"#it{z} (cm)");
2822 fhZE->SetYTitle(
"#it{E} (GeV)");
2823 outputContainer->Add(
fhZE);
2825 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2826 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2827 fhRE->SetYTitle(
"#it{E} (GeV)");
2828 outputContainer->Add(
fhRE);
2830 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2832 fhXNCells->SetYTitle(
"N cells per cluster");
2835 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2837 fhYNCells->SetYTitle(
"N cells per cluster");
2840 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2842 fhZNCells->SetYTitle(
"N cells per cluster");
2845 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2846 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2847 fhRNCells->SetYTitle(
"N cells per cluster");
2853 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2854 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2855 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2858 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2859 fhXCellE->SetXTitle(
"#it{x} (cm)");
2860 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2863 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2864 fhYCellE->SetXTitle(
"#it{y} (cm)");
2865 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2868 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2869 fhZCellE->SetXTitle(
"#it{z} (cm)");
2870 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2873 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2879 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2880 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2881 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2882 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2884 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2889 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2894 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2899 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2904 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2905 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2909 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2914 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
2919 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
2926 fhEtaPhiAmpCell =
new TH3F (
"hEtaPhiAmpCell",
"Cell #eta vs cell #phi vs cell energy",
2927 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2935 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
2936 netabins,etamin,etamax,nphibins,phimin,phimax);
2945 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
2946 fhNCells->SetXTitle(
"#it{n}_{cells}");
2953 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
2958 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
2959 outputContainer->Add(
fhAmpId);
2967 fhCellTimeSpreadRespectToCellMax =
new TH2F (
"hCellTimeSpreadRespectToCellMax",
"t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2987 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
2988 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
2989 outputContainer->Add(
fhTime);
2996 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
2998 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
2999 fhTimeId->SetYTitle(
"Cell Absolute Id");
3002 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3003 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3004 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3007 fhTimeIdLowGain =
new TH2F (
"hTimeIdLG",
"Low gain: #it{t}_{cell} vs Absolute Id",
3013 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3019 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3020 nptbins,ptmin,ptmax, 400,-1,1.);
3022 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3029 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3034 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3039 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3044 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3050 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3055 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3060 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3065 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3072 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3077 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3082 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3087 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3157 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3162 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3167 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3172 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3173 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3177 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3182 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3187 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3192 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3193 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3200 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3201 fhEMod->SetXTitle(
"#it{E} (GeV)");
3202 fhEMod->SetYTitle(
"Module");
3203 outputContainer->Add(
fhEMod);
3205 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3206 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3210 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3215 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3222 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3228 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3233 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3238 fhSumClustersEnergyMod =
new TH2F (
"hSumClustersEnergy_Mod",
"# clusters vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3243 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3260 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3261 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3266 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3267 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3272 fhGridCellsLowGain =
new TH2F (
"hGridCellsLG",Form(
"Low gain: Entries in grid of cells"),
3273 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3278 fhGridCellsELowGain =
new TH2F (
"hGridCellsELG",
"Low gain: Accumulated energy in grid of cells",
3279 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3286 fhGridCellsTime =
new TH2F (
"hGridCellsTime",
"Accumulated time in grid of cells",
3287 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3293 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3313 for(Int_t imod = 0; imod <
fNModules; imod++)
3316 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3317 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3323 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3324 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3330 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3331 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3339 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3340 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3348 for(Int_t ircu = 0; ircu <
fNRCU; ircu++)
3350 fhTimeAmpPerRCU[imod*fNRCU+ircu] =
new TH2F (Form(
"hTimeAmp_Mod%d_RCU%d",imod,ircu),
3351 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3352 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3361 fhIMMod[imod] =
new TH2F (Form(
"hIM_Mod%d",imod),
3362 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3363 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3364 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3365 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3366 outputContainer->Add(
fhIMMod[imod]);
3372 TString particleName[] = {
3373 "Photon",
"Pi0",
"Eta",
3374 "Electron",
"PhotonConv",
3375 "NeutralHadron",
"ChargedHadron" };
3379 for(Int_t iPart = 0; iPart < 7; iPart++)
3381 for(Int_t iCh = 0; iCh < 2; iCh++)
3383 fhRecoMCRatioE[iPart][iCh] =
new TH2F (Form(
"hRecoMCRatioE_%s_Match%d",particleName[iPart].
Data(),iCh),
3384 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3385 nptbins, ptmin, ptmax, 200,0,2);
3386 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3387 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3391 fhRecoMCDeltaE[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaE_%s_Match%d",particleName[iPart].
Data(),iCh),
3392 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3393 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3395 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3398 fhRecoMCDeltaPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3399 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3400 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3405 fhRecoMCDeltaEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCDeltaEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3406 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3407 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3412 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3413 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3414 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3415 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3416 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3417 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3419 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3420 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3421 nphibins,phimin,phimax, nphibins,phimin,phimax);
3422 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3423 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3426 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3427 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3428 netabins,etamin,etamax,netabins,etamin,etamax);
3429 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3430 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3437 for(Int_t iPart = 0; iPart < 4; iPart++)
3439 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3440 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3441 nptbins,ptmin,ptmax);
3443 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
3444 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3445 nptbins,ptmin,ptmax);
3447 fhGenMCEtaPhi[iPart] =
new TH2F(Form(
"hGenMCEtaPhi_%s",particleName[iPart].
Data()),
3448 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3449 200,-1,1,360,0,TMath::TwoPi());
3451 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3452 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3456 outputContainer->Add(
fhGenMCE [iPart]);
3457 outputContainer->Add(
fhGenMCPt [iPart]);
3461 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
3462 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3463 nptbins,ptmin,ptmax);
3464 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
3465 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3466 nptbins,ptmin,ptmax);
3468 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3469 netabins,etamin,etamax,nphibins,phimin,phimax);
3472 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3484 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3490 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3496 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3497 fhEMR->SetXTitle(
"#it{E} (GeV)");
3498 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3499 outputContainer->Add(
fhEMR);
3501 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3502 fhHaR->SetXTitle(
"#it{E} (GeV)");
3503 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3504 outputContainer->Add(
fhHaR);
3508 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3513 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3514 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3517 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3522 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3527 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3531 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3536 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3541 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3545 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3550 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3555 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3560 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3565 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3570 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3575 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3584 return outputContainer;
3593 Int_t icol =-1, irow=-1,iRCU = -1;
3603 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3610 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3615 else if( icol == 0 && imod%2 )
3622 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3631 Double_t tcell = cells->GetCellTime(absID);
3634 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3635 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3639 ecell1 = cells->GetCellAmplitude(absID1);
3641 tcell1 = cells->GetCellTime(absID1);
3647 ecell2 = cells->GetCellAmplitude(absID2);
3649 tcell2 = cells->GetCellTime(absID2);
3655 ecell3 = cells->GetCellAmplitude(absID3);
3657 tcell3 = cells->GetCellTime(absID3);
3663 ecell4 = cells->GetCellAmplitude(absID4);
3665 tcell4 = cells->GetCellTime(absID4);
3669 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3670 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3671 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3672 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3674 return ecell1+ecell2+ecell3+ecell4;
3678 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3680 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3681 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3682 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3683 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3690 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3692 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3693 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3694 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3695 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3697 return ecell1+ecell2+ecell3+ecell4;
3709 AliVCaloCells * cells)
3711 AliDebug(1,
"Start");
3714 Double_t v[3] = {0,0,0};
3717 Int_t nModule2 = -1;
3718 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3721 if(phi1 < 0) phi1 += TMath::TwoPi();
3723 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3725 for(Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3727 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3729 Float_t maxCellFraction = 0.;
3732 Double_t tof2 = clus2->GetTOF()*1.e9;
3734 Double_t diffTof = tof1-tof2;
3739 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3777 if(phi2 < 0) phi2 += TMath::TwoPi();
3779 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));
3781 Bool_t inPi0Window = kFALSE;
3782 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3784 if ( nModule < 12 && nModule2 < 12 )
3791 if ( nModule == nModule2 )
3805 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3812 if ( nModule == nModule2 )
3828 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3842 AliDebug(1,
"Check DCal-PHOS pairs\n");
3847 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3848 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3849 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3851 for(Int_t jclus = 0 ; jclus <
GetPHOSClusters()->GetEntriesFast() ; jclus++)
3855 Float_t maxCellFraction = 0.;
3859 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3877 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3879 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
3880 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
3881 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
3893 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
3898 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
3899 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
3900 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
3901 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
3902 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
3903 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
3905 for(Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
3907 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3909 Float_t maxCellFraction = 0.;
3912 Double_t tof2 = clus2->GetTOF()*1.e9;
3914 Double_t diffTof = TMath::Abs(tof1-tof2);
3918 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3943 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3945 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
3946 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
3947 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
3948 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
3949 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
3950 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4015 Int_t nCellsPerCluster, AliVCaloCells* cells)
4024 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4037 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4040 if(ampMax < 0.01)
return kFALSE;
4042 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4055 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4076 AliDebug(1,
"Start");
4087 TObjArray * caloClusters = NULL;
4088 AliVCaloCells * cells = 0x0;
4102 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().
Data()));
4104 if( !caloClusters || !cells )
4106 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4110 if(caloClusters->GetEntriesFast() == 0)
return ;
4134 TParticle * primStack = 0;
4135 AliAODMCParticle * primAOD = 0;
4140 AliStack * stack = 0;
4145 nprim = stack->GetNtrack();
4149 TClonesArray * mcparticles = 0;
4153 if( !mcparticles )
return;
4154 nprim = mcparticles->GetEntriesFast();
4158 for(Int_t i=0 ; i < nprim; i++)
4160 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
4166 primStack = stack->Particle(i) ;
4169 AliWarning(
"ESD primaries pointer not available!!");
4173 pdg = primStack->GetPdgCode();
4174 status = primStack->GetStatusCode();
4178 if ( status > 11 )
continue;
4180 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ) continue ;
4189 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4192 AliWarning(
"AOD primaries pointer not available!!");
4196 pdg = primAOD->GetPdgCode();
4197 status = primAOD->GetStatus();
4201 if (!primAOD->IsPrimary())
continue;
4203 if ( status > 11 )
continue;
4205 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ) continue ;
4210 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4214 if(eMC < 0.2)
continue;
4221 if (TMath::Abs(etaMC) > 1)
continue;
4225 phiMC += TMath::TwoPi();
4229 else if (pdg==111) mcIndex =
kmcPi0;
4230 else if (pdg==221) mcIndex =
kmcEta;
4231 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4239 Bool_t inacceptance = kTRUE;
4242 inacceptance = kFALSE ;
4252 if(!inacceptance)
continue;
4269 Float_t energyOrg = clus->E();
4272 if(clus->GetNCells() < 3)
return ;
4274 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4276 Int_t
id = clus->GetCellsAbsId()[ipos];
4279 Float_t amp = cells->GetCellAmplitude(
id);
4291 AliWarning(Form(
"Wrong calculated energy %f",energy));
4302 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4304 Int_t
id = clus->GetCellsAbsId()[ipos];
4307 Float_t amp = cells->GetCellAmplitude(
id);
4317 Float_t l0org = clus->GetM02();
4318 Float_t l1org = clus->GetM20();
4319 Float_t dorg = clus->GetDispersion();
4322 if(
IsDataMC() && clus->GetNLabels() > 0)
4348 for(Int_t iw = 0; iw < 12; iw++)
4364 clus->SetM02(l0org);
4365 clus->SetM20(l1org);
4366 clus->SetDispersion(dorg);
4370 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.
Int_t GetHistoTrackResidualPhiBins() const
TH1F * fhNClusters
! Number of clusters
virtual AliPHOSGeoUtils * GetPHOSGeometry() const
TH2F * fhMCEle1EOverP
! p/E for track-cluster matches, MC electrons
Int_t GetNumberOfSuperModulesUsed() const
TH2F * fhExoECross[10][5]
! E cross for max cell in cluster, for different cuts
TH1F * fhMCEle1dR
! distance between projected track and cluster, MC electrons
virtual Int_t GetV0Signal(Int_t i) const