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 fFillEBinAcceptanceHisto(kFALSE),
58 fCorrelate(kTRUE), fStudyBadClusters(kFALSE),
59 fStudyClustersAsymmetry(kFALSE), fStudyExotic(kFALSE),
63 fNModules(12), fNRCU(2),
64 fNMaxCols(48), fNMaxRows(24),
65 fTimeCutMin(-10000), fTimeCutMax(10000),
67 fEMCALCellAmpMin(0), fPHOSCellAmpMin(0),
68 fEMCALClusterNCellMin(0), fPHOSClusterNCellMin(0),
72 fInvMassMinECut(0), fInvMassMaxECut(0),
73 fInvMassMinM02Cut(0), fInvMassMaxM02Cut(0),
74 fInvMassMaxOpenAngle(0), fInvMassMaxTimeDifference(0),
77 fExoNECrossCuts(0), fExoECrossCuts(),
78 fExoNDTimeCuts(0), fExoDTimeCuts(),
80 fClusterMomentum(), fClusterMomentum2(),
82 fConstantTimeShift(0),
86 fhEtaPhi(0), fhEtaPhiE(0),
87 fhECharged(0), fhPtCharged(0),
88 fhPhiCharged(0), fhEtaCharged(0),
89 fhEtaPhiCharged(0), fhEtaPhiECharged(0),
92 fhIM(0), fhIMSame(0), fhIMDiff(0),
93 fhIMDCAL(0), fhIMDCALSame(0), fhIMDCALDiff(0),
94 fhIMDCALPHOS(0), fhIMDCALPHOSSame(0),
95 fhIMEMCALPHOS(0), fhIMEMCALPHOSSame(0),
97 fhOpAngle(0), fhIMvsOpAngle(0),
98 fhNCellsPerCluster(0), fhNCellsPerClusterNoCut(0), fhNClusters(0),
101 fhClusterTimeEnergy(0), fhCellTimeSpreadRespectToCellMax(0),
102 fhCellIdCellLargeTimeSpread(0), fhClusterPairDiffTimeE(0), fhClusterPairDiffTimeESameMod(0),
103 fhClusterMaxCellCloseCellRatio(0), fhClusterMaxCellCloseCellDiff(0),
104 fhClusterMaxCellDiff(0), fhClusterMaxCellDiffNoCut(0),
106 fhClusterMaxCellECross(0),
107 fhLambda0(0), fhLambda1(0),
110 fhBadClusterEnergy(0), fhBadClusterTimeEnergy(0), fhBadClusterEtaPhi(0),
111 fhBadClusterPairDiffTimeE(0), fhBadCellTimeSpreadRespectToCellMax(0),
112 fhBadClusterMaxCellCloseCellRatio(0), fhBadClusterMaxCellCloseCellDiff(0), fhBadClusterMaxCellDiff(0),
113 fhBadClusterMaxCellDiffAverageTime(0), fhBadClusterMaxCellDiffWeightedTime(0),
114 fhBadClusterMaxCellECross(0),
115 fhBadClusterLambda0(0), fhBadClusterLambda1(0),
116 fhBadClusterDeltaIEtaDeltaIPhiE0(0), fhBadClusterDeltaIEtaDeltaIPhiE2(0),
117 fhBadClusterDeltaIEtaDeltaIPhiE6(0), fhBadClusterDeltaIA(0),
120 fhRNCells(0), fhXNCells(0),
121 fhYNCells(0), fhZNCells(0),
125 fhRCellE(0), fhXCellE(0),
126 fhYCellE(0), fhZCellE(0),
128 fhDeltaCellClusterRNCells(0), fhDeltaCellClusterXNCells(0),
129 fhDeltaCellClusterYNCells(0), fhDeltaCellClusterZNCells(0),
130 fhDeltaCellClusterRE(0), fhDeltaCellClusterXE(0),
131 fhDeltaCellClusterYE(0), fhDeltaCellClusterZE(0),
134 fhNCells(0), fhNCellsCutAmpMin(0),
135 fhAmplitude(0), fhAmpId(0),
136 fhEtaPhiAmpCell(0), fhEtaPhiCell(0),
138 fhTimeId(0), fhTimeAmp(0),
139 fhAmpIdLowGain(0), fhTimeIdLowGain(0), fhTimeAmpLowGain(0),
143 fhEMCALPHOSCorrNClusters(0), fhEMCALPHOSCorrEClusters(0),
144 fhEMCALPHOSCorrNCells(0), fhEMCALPHOSCorrECells(0),
145 fhEMCALDCALCorrNClusters(0), fhEMCALDCALCorrEClusters(0),
146 fhEMCALDCALCorrNCells(0), fhEMCALDCALCorrECells(0),
147 fhDCALPHOSCorrNClusters(0), fhDCALPHOSCorrEClusters(0),
148 fhDCALPHOSCorrNCells(0), fhDCALPHOSCorrECells(0),
149 fhCaloV0SCorrNClusters(0), fhCaloV0SCorrEClusters(0),
150 fhCaloV0SCorrNCells(0), fhCaloV0SCorrECells(0),
151 fhCaloV0MCorrNClusters(0), fhCaloV0MCorrEClusters(0),
152 fhCaloV0MCorrNCells(0), fhCaloV0MCorrECells(0),
153 fhCaloTrackMCorrNClusters(0), fhCaloTrackMCorrEClusters(0),
154 fhCaloTrackMCorrNCells(0), fhCaloTrackMCorrECells(0),
155 fhCaloCenNClusters(0), fhCaloCenEClusters(0),
156 fhCaloCenNCells(0), fhCaloCenECells(0),
157 fhCaloEvPNClusters(0), fhCaloEvPEClusters(0),
158 fhCaloEvPNCells(0), fhCaloEvPECells(0),
161 fhEMod(0), fhAmpMod(0),
162 fhEWeirdMod(0), fhAmpWeirdMod(0),
164 fhNClustersMod(0), fhNCellsMod(0),
165 fhNCellsSumAmpPerMod(0), fhNClustersSumEnergyPerMod(0),
166 fhNCellsPerClusterMod(0), fhNCellsPerClusterModNoCut(0),
167 fhNCellsPerClusterWeirdMod(0), fhNCellsPerClusterWeirdModNoCut(0),
169 fhGridCells(0), fhGridCellsE(0), fhGridCellsTime(0),
170 fhGridCellsLowGain(0), fhGridCellsELowGain(0), fhGridCellsTimeLowGain(0),
171 fhTimeAmpPerRCU(0), fhIMMod(0),
174 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
175 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
176 fhECellTotalRatio(0), fhECellTotalLogRatio(0),
177 fhECellTotalRatioMod(0), fhECellTotalLogRatioMod(0),
179 fhExoL0ECross(0), fhExoL1ECross(0),
182 fhRecoMCE(), fhRecoMCPhi(), fhRecoMCEta(),
183 fhRecoMCDeltaE(), fhRecoMCRatioE(),
184 fhRecoMCDeltaPhi(), fhRecoMCDeltaEta(),
187 fhGenMCE(), fhGenMCPt(), fhGenMCEtaPhi(),
188 fhGenMCAccE(), fhGenMCAccPt(), fhGenMCAccEtaPhi(),
191 fhEMVxyz(0), fhEMR(0),
192 fhHaVxyz(0), fhHaR(0),
193 fh1EOverP(0), fh2dR(0),
194 fh2EledEdx(0), fh2MatchdEdx(0),
195 fh1EOverPR02(0), fh1EleEOverP(0),
196 fhMCEle1EOverP(0), fhMCEle1dR(0), fhMCEle2MatchdEdx(0),
197 fhMCChHad1EOverP(0), fhMCChHad1dR(0), fhMCChHad2MatchdEdx(0),
198 fhMCNeutral1EOverP(0), fhMCNeutral1dR(0), fhMCNeutral2MatchdEdx(0),
199 fhMCEle1EOverPR02(0), fhMCChHad1EOverPR02(0), fhMCNeutral1EOverPR02(0),
200 fhMCEle1EleEOverP(0), fhMCChHad1EleEOverP(0), fhMCNeutral1EleEOverP(0),
201 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
202 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
203 fhTrackMatchedDEtaNegMod(0), fhTrackMatchedDPhiNegMod(0),
204 fhTrackMatchedDEtaPosMod(0), fhTrackMatchedDPhiPosMod(0)
207 for(
Int_t i =0; i < 12; i++)
209 for(
Int_t j = 0; j < 4; j++)
211 for(
Int_t k = 0; k < 3; k++)
218 for(
Int_t j = 0; j < 5; j++)
235 for (
Int_t ie = 0; ie < 10 ; ie++)
238 for (
Int_t idt = 0; idt < 5 ; idt++)
252 for(
Int_t i = 0; i < 7; i++)
263 for(
Int_t i = 0; i < 4; i++)
273 for(
Int_t i = 0; i < 14; i++)
313 if(phi < 0) phi += TMath::TwoPi();
324 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
326 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
328 if(clus->GetID() == clus2->GetID())
continue;
333 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
335 Double_t tof2 = clus2->GetTOF()*1.e9;
353 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
355 Int_t absId = clus->GetCellsAbsId()[ipos];
356 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
358 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
365 Double_t time = cells->GetCellTime(absId);
383 AliVCaloCells* cells,
391 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
393 Int_t id = clus->GetCellsAbsId()[ipos];
396 amp = cells->GetCellAmplitude(
id);
415 Int_t ncells = clus->GetNCells();
417 for (
Int_t ipos = 0; ipos < ncells; ipos++)
419 id = clus ->GetCellsAbsId()[ipos];
420 amp = cells->GetCellAmplitude(
id);
421 time = cells->GetCellTime(
id);
429 wTime += time*1e9 * w;
433 if(ncells > 0) aTime /= ncells;
436 if(wTot > 0) wTime /= wTot;
439 timeAverages[0] = aTime;
440 timeAverages[1] = wTime;
448 Int_t ncells = cells->GetNumberOfCells();
462 nCellsInModule[imod] = 0 ;
463 eCellsInModule[imod] = 0.;
466 Int_t icol = -1, icolAbs = -1;
467 Int_t irow = -1, irowAbs = -1;
476 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
478 if ( cells->GetCellNumber(iCell) < 0 )
continue;
480 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
486 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
488 if(nModule < fNModules)
495 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
499 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
503 amp = cells->GetAmplitude(iCell)*recalF;
504 time = cells->GetTime(iCell);
505 id = cells->GetCellNumber(iCell);
506 highG = cells->GetCellHighGain(
id);
521 AliDebug(1,Form(
"Remove cell with Time %f",time));
527 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
557 nCellsInModule[nModule]++ ;
605 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
619 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
627 Int_t relId[4], module;
635 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
655 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
666 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
668 if ( cells->GetCellNumber(iCell) < 0 )
continue;
670 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
674 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
676 if(nModule < fNModules)
683 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
687 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
691 amp = cells->GetAmplitude(iCell)*recalF;
692 time = cells->GetTime(iCell);
693 id = cells->GetCellNumber(iCell);
700 GetReader()->GetInputEvent()->GetBunchCrossNumber());
708 AliDebug(1,Form(
"Remove cell with Time %f",time));
714 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
726 if(eCellsInModule[nModule] > 0)
728 Float_t ratioMod = amp/eCellsInModule[nModule];
737 delete [] nCellsInModule;
738 delete [] eCellsInModule;
746 Int_t nCaloCellsPerCluster = clus->GetNCells();
748 UShort_t * indexList = clus->GetCellsAbsId();
751 clus->GetPosition(pos);
756 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
759 Int_t absId = indexList[ipos];
776 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
777 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
785 Int_t relId[4], module;
801 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
802 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
817 if( clus->GetNCells() <= 3 )
return;
825 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
827 Int_t absId = clus->GetCellsAbsId()[ipos];
832 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
836 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
840 Int_t ietaShift = ieta;
841 Int_t ietaMaxShift = ietaMax;
842 if (ieta > ietaMax) ietaMaxShift+=48;
844 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
848 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
869 Int_t nLabel = clus->GetNLabels();
870 Int_t* labels = clus->GetLabels();
933 Int_t nCaloCellsPerCluster = clus->GetNCells();
936 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
938 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
940 if( clus->GetID() == clus2->GetID() )
continue;
942 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
946 Double_t tof2 = clus2->GetTOF()*1.e9;
951 if ( nModule2 == nModule )
956 if(nCaloCellsPerCluster > 1)
970 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
972 Int_t absId = clus->GetCellsAbsId()[ipos];
973 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
975 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
981 Double_t time = cells->GetCellTime(absId);
998 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1016 Int_t icol = -1, irow = -1, iRCU = -1, icolAbs = -1, irowAbs = -1;
1041 clus->GetPosition(pos);
1053 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1076 AliVCaloCells* cells)
1079 Int_t *labels = 0x0;
1080 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1081 Int_t nCaloClustersAccepted = 0 ;
1082 Int_t nCaloCellsPerCluster = 0 ;
1094 nClustersInModule[imod] = 0;
1095 energyInModule [imod] = 0;
1101 for(
Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1103 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1105 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1112 Double_t tof = clus->GetTOF()*1.e9;
1117 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1130 nLabel = clus->GetNLabels();
1131 labels = clus->GetLabels();
1137 nCaloCellsPerCluster = clus->GetNCells();
1143 Double_t tmax = cells->GetCellTime(absIdMax);
1156 if(nModule >=0 && nModule < fNModules)
1165 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1171 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1174 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1176 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1189 maxCellFraction, eCrossFrac, tmax);
1191 nCaloClustersAccepted++;
1195 nClustersInModule[nModule]++;
1197 energyInModule [nModule] += clus->E();
1207 Int_t mcOK = kFALSE;
1209 if(
IsDataMC() && nLabel > 0 && labels)
1221 && nCaloClusters > 1
1222 && nCaloCellsPerCluster > 1
1223 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1239 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1247 delete [] nClustersInModule;
1248 delete [] energyInModule;
1258 if(!labels || nLabels<=0)
1260 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1264 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1269 if(phi < 0) phi +=TMath::TwoPi();
1271 AliAODMCParticle * aodprimary = 0x0;
1272 TParticle * primary = 0x0;
1275 Int_t label = labels[0];
1279 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1298 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1304 pdg0 = TMath::Abs(primary->GetPdgCode());
1306 status = primary->GetStatusCode();
1307 vxMC = primary->Vx();
1308 vyMC = primary->Vy();
1309 iParent = primary->GetFirstMother();
1311 AliDebug(1,
"Cluster most contributing mother:");
1312 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1320 pdg = TMath::Abs(primary->GetPdgCode());
1322 AliDebug(2,
"Converted cluster!. Find before conversion:");
1324 while((pdg == 22 || pdg == 11) && status != 1)
1326 Int_t iMotherOrg = iMother;
1329 status = primary->GetStatusCode();
1330 pdg = TMath::Abs(primary->GetPdgCode());
1331 iParent = primary->GetFirstMother();
1335 if(pdg==111 || pdg==221)
1337 primary =
GetMCStack()->Particle(iMotherOrg);
1347 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1350 AliDebug(1,
"Converted Cluster mother before conversion:");
1351 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1359 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1361 while(pdg != 111 && pdg != 221)
1366 status = primary->GetStatusCode();
1367 pdg = TMath::Abs(primary->GetPdgCode());
1368 iParent = primary->GetFirstMother();
1370 if( iParent < 0 )
break;
1372 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1376 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1381 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1384 eMC = primary->Energy();
1386 phiMC = primary->Phi();
1387 etaMC = primary->Eta();
1388 pdg = TMath::Abs(primary->GetPdgCode());
1389 charge = (
Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1392 else if(
GetReader()->ReadAODMCParticles() &&
1398 AliFatal(
"MCParticles not available!");
1402 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1404 status = aodprimary->IsPrimary();
1405 vxMC = aodprimary->Xv();
1406 vyMC = aodprimary->Yv();
1407 iParent = aodprimary->GetMother();
1409 AliDebug(1,
"Cluster most contributing mother:");
1410 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1411 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1416 AliDebug(2,
"Converted cluster!. Find before conversion:");
1420 pdg = TMath::Abs(aodprimary->GetPdgCode());
1422 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1424 Int_t iMotherOrg = iMother;
1427 status = aodprimary->IsPrimary();
1428 iParent = aodprimary->GetMother();
1429 pdg = TMath::Abs(aodprimary->GetPdgCode());
1433 if( pdg == 111 || pdg == 221 )
1445 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1446 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1449 AliDebug(1,
"Converted Cluster mother before conversion:");
1450 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1451 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1459 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1461 while(pdg != 111 && pdg != 221)
1465 status = aodprimary->IsPrimary();
1466 iParent = aodprimary->GetMother();
1467 pdg = TMath::Abs(aodprimary->GetPdgCode());
1469 if( iParent < 0 )
break;
1471 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1475 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1480 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1483 status = aodprimary->IsPrimary();
1484 eMC = aodprimary->E();
1486 phiMC = aodprimary->Phi();
1487 etaMC = aodprimary->Eta();
1488 pdg = TMath::Abs(aodprimary->GetPdgCode());
1489 charge = aodprimary->Charge();
1493 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1494 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1527 else if(charge == 0)
1542 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1553 if( primary || aodprimary )
return kTRUE ;
1569 if(phi < 0) phi +=TMath::TwoPi();
1587 Double_t dedx = track->GetTPCsignal();
1588 Int_t nITS = track->GetNcls(0);
1589 Int_t nTPC = track->GetNcls(1);
1590 Bool_t positive = kFALSE;
1591 if(track) positive = (track->Charge()>0);
1594 Float_t deta = clus->GetTrackDz();
1595 Float_t dphi = clus->GetTrackDx();
1596 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1599 if( TMath::Abs(dphi) < 999 )
1636 if(dedx > 60 && dedx < 100)
1646 if(e > 0.5 && tmom > 0.5)
1652 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1653 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1661 Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1663 if(TMath::Abs(pdg) == 11)
1687 else if(charge == 0)
1712 if(!caloClustersEMCAL || !caloClustersPHOS)
1714 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1722 if(!cellsEMCAL || !cellsPHOS)
1724 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1733 Float_t sumClusterEnergyEMCAL = 0;
1734 Float_t sumClusterEnergyDCAL = 0;
1735 Float_t sumClusterEnergyPHOS = 0;
1739 AliVCluster* cluster = 0;
1740 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1742 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1743 Float_t energy = cluster->E();
1745 if( energy < 0.5 )
continue;
1747 if(cluster->GetCellsAbsId()[0] < 12288)
1750 sumClusterEnergyEMCAL +=
energy;
1755 sumClusterEnergyDCAL +=
energy;
1759 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1761 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
1763 energy = cluster->E();
1765 if( energy < 0.5 )
continue;
1768 sumClusterEnergyPHOS +=
energy;
1772 Int_t ncellsEMCAL = 0 ;
1773 Int_t ncellsDCAL = 0 ;
1774 Int_t ncellsPHOS = 0;
1776 Float_t sumCellEnergyEMCAL = 0;
1777 Float_t sumCellEnergyDCAL = 0;
1778 Float_t sumCellEnergyPHOS = 0;
1780 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1782 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1783 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1790 sumCellEnergyEMCAL += amp;
1795 sumCellEnergyDCAL += amp;
1799 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1801 Float_t amp = cellsPHOS->GetAmplitude(icell);
1802 Int_t cellId = cellsPHOS->GetCellNumber(icell);
1804 if ( cellId < 0 ) continue ;
1809 sumCellEnergyPHOS += amp;
1835 Int_t ncl = nclPHOS;
1836 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1837 Int_t ncells = ncellsPHOS;
1838 Float_t sumCellEnergy = sumCellEnergyPHOS;
1842 ncl = nclEMCAL + nclDCAL;
1843 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1844 ncells = ncellsEMCAL + ncellsDCAL;
1845 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1873 AliDebug(1,
"Correlate():");
1874 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1875 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1876 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1877 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1878 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1879 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1880 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1881 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1890 const Int_t buffersize = 255;
1891 char onePar[buffersize] ;
1893 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1918 return new TObjString(parList) ;
1925 AliVCluster *clus, AliVCaloCells* cells)
1929 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1936 Int_t nc = clus->GetNCells();
1969 for (
Int_t icell = 0; icell < clus->GetNCells(); icell++)
1971 Int_t absId = clus->GetCellsAbsId()[icell];
1972 Double_t time = cells->GetCellTime(absId);
1998 outputContainer->SetName(
"QAHistos") ;
2049 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2050 fhE->SetXTitle(
"#it{E} (GeV)");
2051 outputContainer->Add(
fhE);
2053 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2054 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2055 outputContainer->Add(
fhPt);
2057 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2058 fhPhi->SetXTitle(
"#phi (rad)");
2059 outputContainer->Add(
fhPhi);
2061 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2062 fhEta->SetXTitle(
"#eta ");
2063 outputContainer->Add(
fhEta);
2069 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2070 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2078 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2079 netabins,etamin,etamax,nphibins,phimin,phimax);
2087 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2093 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2099 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2104 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2105 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2106 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2107 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2110 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2111 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2112 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2113 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2123 nptbins,ptmin,ptmax, 100,0,1.);
2129 nptbins,ptmin,ptmax, 500,0,100.);
2134 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2135 nptbins,ptmin,ptmax, 500,0,1.);
2142 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2143 nptbins,ptmin,ptmax, 500,0,1.);
2149 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2150 nptbins,ptmin,ptmax, 400,-1,1.);
2158 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2164 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2184 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2190 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2195 netabins,etamin,etamax,nphibins,phimin,phimax);
2201 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2206 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2207 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2213 nptbins,ptmin,ptmax, 100,0,1.);
2219 nptbins,ptmin,ptmax, 500,0,100);
2224 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2225 nptbins,ptmin,ptmax, 500,0,1.);
2231 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2236 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2241 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2242 nptbins,ptmin,ptmax, 400,-1,1.);
2271 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2272 400,0,1,ssbins,ssmin,ssmax);
2273 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2278 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2279 400,0,1,ssbins,ssmin,ssmax);
2280 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2288 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2289 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2290 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2296 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2297 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2298 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2299 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2300 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2303 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2304 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]),
2305 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2306 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2307 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2308 outputContainer->Add(
fhExoL0[ie][idt]) ;
2310 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2311 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]),
2312 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2313 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2314 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2315 outputContainer->Add(
fhExoL1[ie][idt]) ;
2317 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2318 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]),
2319 nptbins,ptmin,ptmax,400,0,1);
2320 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2321 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2324 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2325 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]),
2326 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2327 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2328 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2329 outputContainer->Add(
fhExoTime[ie][idt]) ;
2332 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]),
2333 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2339 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]),
2340 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2352 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2358 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2364 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2370 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2371 nptbins,ptmin,ptmax,21,-1.05,1.05);
2372 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2373 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2376 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2377 ssbins,ssmin,ssmax,21,-1.05,1.05);
2379 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2382 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2383 ssbins,ssmin,ssmax,21,-1.05,1.05);
2385 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2388 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2389 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2395 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2401 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2407 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2413 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2414 nptbins,ptmin,ptmax,21,-1.05,1.05);
2415 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2416 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2419 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2420 ssbins,ssmin,ssmax,21,-1.05,1.05);
2422 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2425 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2426 ssbins,ssmin,ssmax,21,-1.05,1.05);
2428 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2431 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2432 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2438 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2439 for (
Int_t iPart = 0; iPart < 4; iPart++) {
2441 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2442 nptbins,ptmin,ptmax,21,-1.05,1.05);
2443 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2444 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2470 nptbins,ptmin,ptmax,21,-1.05,1.05);
2480 nptbins,ptmin,ptmax, 100,0,1.);
2486 nptbins,ptmin,ptmax, 100,-10,0);
2492 nptbins,ptmin,ptmax, 100,0,1.);
2498 nptbins,ptmin,ptmax, 100,-10,0);
2504 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2510 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2521 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2522 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2528 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2529 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2536 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
2537 Float_t cellTmin [] = {50.,100.,1000000.};
2539 for(
Int_t iw = 0; iw < 12; iw++)
2542 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
2544 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
2547 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns",
2548 w0, cellEmin[iEmin], cellTmin[iTmin]),
2549 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2564 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns, |#eta| < 0.15",
2565 w0, cellEmin[iEmin], cellTmin[iTmin]),
2566 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2575 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2576 for(
Int_t imc = 0; imc < 5; imc++)
2579 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
2580 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2607 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2612 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2617 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2622 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2627 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2632 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2669 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2673 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2674 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2677 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2681 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2687 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2688 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2696 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2697 netabins,etamin,etamax,nphibins,phimin,phimax);
2703 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2705 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2708 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2709 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2710 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2711 outputContainer->Add(
fh2dR) ;
2713 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2718 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2723 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2728 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2736 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);
2741 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);
2742 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2746 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);
2751 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);
2756 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);
2761 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);
2769 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2770 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2771 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2772 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2773 outputContainer->Add(
fhIM);
2775 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2776 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2777 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2778 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2781 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2782 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2783 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2784 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2789 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2790 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2791 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2792 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2795 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2796 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2797 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2798 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2801 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2802 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2803 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2804 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2807 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2808 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2809 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2810 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2813 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2814 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2822 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2823 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2824 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2825 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2828 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2829 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2838 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2844 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2852 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2858 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2865 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2866 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2867 fhAsym->SetYTitle(
"#it{Asymmetry}");
2868 outputContainer->Add(
fhAsym);
2872 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2873 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2874 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2875 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2879 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2882 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2889 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2890 fhXYZ->SetXTitle(
"#it{x} (cm)");
2891 fhXYZ->SetYTitle(
"#it{y} (cm)");
2892 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2893 outputContainer->Add(
fhXYZ);
2895 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2896 fhXE->SetXTitle(
"#it{x} (cm)");
2897 fhXE->SetYTitle(
"#it{E} (GeV)");
2898 outputContainer->Add(
fhXE);
2900 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2901 fhYE->SetXTitle(
"#it{y} (cm)");
2902 fhYE->SetYTitle(
"#it{E} (GeV)");
2903 outputContainer->Add(
fhYE);
2905 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2906 fhZE->SetXTitle(
"#it{z} (cm)");
2907 fhZE->SetYTitle(
"#it{E} (GeV)");
2908 outputContainer->Add(
fhZE);
2910 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2911 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2912 fhRE->SetYTitle(
"#it{E} (GeV)");
2913 outputContainer->Add(
fhRE);
2915 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2917 fhXNCells->SetYTitle(
"N cells per cluster");
2920 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2922 fhYNCells->SetYTitle(
"N cells per cluster");
2925 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2927 fhZNCells->SetYTitle(
"N cells per cluster");
2930 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2931 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2932 fhRNCells->SetYTitle(
"N cells per cluster");
2938 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2939 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2940 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2943 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2944 fhXCellE->SetXTitle(
"#it{x} (cm)");
2945 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2948 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2949 fhYCellE->SetXTitle(
"#it{y} (cm)");
2950 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2953 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2954 fhZCellE->SetXTitle(
"#it{z} (cm)");
2955 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2958 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2964 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2965 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2966 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2967 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2969 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2974 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2979 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2984 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2989 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2990 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2994 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
2999 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
3004 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
3012 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3020 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
3021 netabins,etamin,etamax,nphibins,phimin,phimax);
3030 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
3031 fhNCells->SetXTitle(
"#it{n}_{cells}");
3038 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
3043 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
3044 outputContainer->Add(
fhAmpId);
3072 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3073 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3074 outputContainer->Add(
fhTime);
3081 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3083 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3084 fhTimeId->SetYTitle(
"Cell Absolute Id");
3087 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3088 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3089 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3098 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3104 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3105 nptbins,ptmin,ptmax, 400,-1,1.);
3107 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3114 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3119 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3124 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3129 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3135 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3140 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3145 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3150 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3157 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3162 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3167 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3172 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3242 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3247 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3252 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3257 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3258 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3262 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3267 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3272 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3277 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3278 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3285 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3286 fhEMod->SetXTitle(
"#it{E} (GeV)");
3287 fhEMod->SetYTitle(
"Module");
3288 outputContainer->Add(
fhEMod);
3290 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3291 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3295 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3300 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3307 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3313 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3318 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3328 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3345 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3346 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3351 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3352 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3358 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3364 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3372 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3378 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3401 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3402 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3408 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3409 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3415 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3416 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3424 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3425 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3436 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3437 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3447 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3448 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3449 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3450 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3451 outputContainer->Add(
fhIMMod[imod]);
3458 "Photon",
"Pi0",
"Eta",
3459 "Electron",
"PhotonConv",
3460 "NeutralHadron",
"ChargedHadron" };
3464 for(
Int_t iPart = 0; iPart < 7; iPart++)
3466 for(
Int_t iCh = 0; iCh < 2; iCh++)
3469 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3470 nptbins, ptmin, ptmax, 200,0,2);
3471 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3472 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3477 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3478 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3480 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3484 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3485 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3491 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3492 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3497 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3498 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3499 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3500 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3501 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3502 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3504 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3505 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3506 nphibins,phimin,phimax, nphibins,phimin,phimax);
3507 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3508 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3511 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3512 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3513 netabins,etamin,etamax,netabins,etamin,etamax);
3514 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3515 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3522 for(
Int_t iPart = 0; iPart < 4; iPart++)
3524 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3525 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3526 nptbins,ptmin,ptmax);
3528 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
3529 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3530 nptbins,ptmin,ptmax);
3533 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3534 200,-1,1,360,0,TMath::TwoPi());
3536 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3537 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3541 outputContainer->Add(
fhGenMCE [iPart]);
3542 outputContainer->Add(
fhGenMCPt [iPart]);
3546 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
3547 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3548 nptbins,ptmin,ptmax);
3549 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
3550 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3551 nptbins,ptmin,ptmax);
3553 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3554 netabins,etamin,etamax,nphibins,phimin,phimax);
3557 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3569 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3575 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3581 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3582 fhEMR->SetXTitle(
"#it{E} (GeV)");
3583 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3584 outputContainer->Add(
fhEMR);
3586 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3587 fhHaR->SetXTitle(
"#it{E} (GeV)");
3588 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3589 outputContainer->Add(
fhHaR);
3593 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3598 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3599 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3602 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3607 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3612 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3616 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3621 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3626 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3630 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3635 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3640 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3645 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3650 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3655 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3660 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3672 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
3673 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3674 netabins,etamin,etamax,nphibins,phimin,phimax);
3680 (Form(
"hEBin%d_Cluster_ColRow",ie),
3681 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3682 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3688 (Form(
"hEBin%d_Cell_ColRow",ie),
3689 Form(
"column vs row, cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3690 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3701 return outputContainer;
3710 Int_t icol =-1, irow=-1,iRCU = -1;
3720 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3727 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3732 else if( icol == 0 && imod%2 )
3739 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3748 Double_t tcell = cells->GetCellTime(absID);
3751 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3752 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3756 ecell1 = cells->GetCellAmplitude(absID1);
3758 tcell1 = cells->GetCellTime(absID1);
3764 ecell2 = cells->GetCellAmplitude(absID2);
3766 tcell2 = cells->GetCellTime(absID2);
3772 ecell3 = cells->GetCellAmplitude(absID3);
3774 tcell3 = cells->GetCellTime(absID3);
3780 ecell4 = cells->GetCellAmplitude(absID4);
3782 tcell4 = cells->GetCellTime(absID4);
3786 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3787 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3788 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3789 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3791 return ecell1+ecell2+ecell3+ecell4;
3795 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3797 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3798 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3799 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3800 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3807 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3809 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3810 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3811 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3812 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3814 return ecell1+ecell2+ecell3+ecell4;
3826 AliVCaloCells * cells)
3828 AliDebug(1,
"Start");
3834 Int_t nModule2 = -1;
3835 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3838 if(phi1 < 0) phi1 += TMath::TwoPi();
3840 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3843 for(
Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3845 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3850 Double_t tof2 = clus2->GetTOF()*1.e9;
3858 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3896 if(phi2 < 0) phi2 += TMath::TwoPi();
3898 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));
3900 Bool_t inPi0Window = kFALSE;
3901 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3903 if ( nModule < 12 && nModule2 < 12 )
3910 if ( nModule == nModule2 )
3924 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3931 if ( nModule == nModule2 )
3947 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3961 AliDebug(1,
"Check DCal-PHOS pairs\n");
3966 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3967 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3968 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3978 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3996 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
3998 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
3999 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
4000 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
4012 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
4017 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
4018 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
4019 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
4020 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
4021 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
4022 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
4024 for(
Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
4026 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4031 Double_t tof2 = clus2->GetTOF()*1.e9;
4034 Double_t diffTof = TMath::Abs(tof1-tof2);
4038 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4063 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4065 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
4066 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
4067 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
4068 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
4069 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
4070 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4145 Int_t nCellsPerCluster, AliVCaloCells* cells)
4154 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4167 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4170 if(ampMax < 0.01)
return kFALSE;
4172 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4185 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4206 AliDebug(1,
"Start");
4218 AliVCaloCells * cells = 0x0;
4232 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().
Data()));
4234 if( !caloClusters || !cells )
4236 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4240 if(caloClusters->GetEntriesFast() == 0)
return ;
4264 TParticle * primStack = 0;
4265 AliAODMCParticle * primAOD = 0;
4270 AliStack * stack = 0;
4275 nprim = stack->GetNtrack();
4279 TClonesArray * mcparticles = 0;
4283 if( !mcparticles )
return;
4284 nprim = mcparticles->GetEntriesFast();
4288 for(
Int_t i=0 ; i < nprim; i++)
4290 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
4296 primStack = stack->Particle(i) ;
4299 AliWarning(
"ESD primaries pointer not available!!");
4303 pdg = primStack->GetPdgCode();
4304 status = primStack->GetStatusCode();
4308 if ( status > 11 )
continue;
4311 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
4312 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
4313 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
4322 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4325 AliWarning(
"AOD primaries pointer not available!!");
4329 pdg = primAOD->GetPdgCode();
4330 status = primAOD->GetStatus();
4334 if (!primAOD->IsPrimary())
continue;
4336 if ( status > 11 )
continue;
4339 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
4340 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
4341 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
4346 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4350 if(eMC < 0.2)
continue;
4357 if (TMath::Abs(etaMC) > 1)
continue;
4361 phiMC += TMath::TwoPi();
4365 else if (pdg==111) mcIndex =
kmcPi0;
4366 else if (pdg==221) mcIndex =
kmcEta;
4367 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4375 Bool_t inacceptance = kTRUE;
4378 inacceptance = kFALSE ;
4388 if(!inacceptance)
continue;
4410 if(clus->GetNCells() < 3)
return ;
4412 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4414 Int_t id = clus->GetCellsAbsId()[ipos];
4417 Float_t amp = cells->GetCellAmplitude(
id);
4429 AliWarning(Form(
"Wrong calculated energy %f",energy));
4440 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4442 Int_t id = clus->GetCellsAbsId()[ipos];
4445 Float_t amp = cells->GetCellAmplitude(
id);
4457 Float_t l0org = clus->GetM02();
4458 Float_t l1org = clus->GetM20();
4459 Float_t dorg = clus->GetDispersion();
4463 if(
IsDataMC() && clus->GetNLabels() > 0)
4490 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
4491 Float_t cellTmin [] = {50.,100.,1000000.};
4493 for(
Int_t iw = 0; iw < 12; iw++)
4495 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
4497 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
4503 Float_t disp = 0, dEta = 0, dPhi = 0;
4504 Float_t sEta = 0, sPhi = 0, sEtaPhi = 0;
4508 cellEmin[iEmin], cellTmin[iTmin], bc,
4509 newEnergy, l0, l1, disp, dEta, dPhi,
4510 sEta, sPhi, sEtaPhi);
4531 clus->SetM02(l0org);
4532 clus->SetM20(l1org);
4533 clus->SetDispersion(dorg);
Float_t GetHistoZMax() const
TH2F * fhCaloV0MCorrEClusters
! Calo vs V0 multiplicity, total measured cluster energy
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TH2F * fhTimeIdLowGain
! Time vs Absolute cell Id, low gain
TH2F * fhDeltaCellClusterRE
! R cluster - R cell distribution (cm) vs cluster energy
Bool_t IsGoodCluster(Int_t absIdMax, Float_t m02, Int_t nCellsPerCluster, AliVCaloCells *cells)
Identify cluster as exotic or not.
TH2F * fhDCALPHOSCorrNCells
! DCAL vs PHOS, number of cells
TH2F * fhNCellsPerClusterNoCut
! N cells per cluster vs cluster energy vs eta of cluster
TH2F * fhLambda0ForW0AndCellCutsEta0[12][4][3]
! L0 for different w0 and cell cuts, |eta| < 0.15
TH2F * fhMCNeutral1EOverPR02
! p/E for track-cluster matches, dR < 0.2, MC neutral
TH2F * fhNCellsMod
! Number of towers/crystals with signal for different module, Reco
TH3F * fhXYZ
! cluster X vs Y vs Z (cm)
TH2F * fh1EOverPMod
! p/E for track-cluster matches, per SM
TH2F * fh1EOverPR02Mod
! p/E for track-cluster matches, dR < 0.2, per SM
Int_t GetHistoNClusterCellMin() const
TH2F * fhDeltaCellClusterYNCells
! Y cluster - Y cell distribution (cm) vs N cells in cluster
TH1F * fhPt
! pT distribution, Reco
Float_t GetHistoPtMin() const
Int_t GetHistoFinePtBins() const
TH2F * fhClusterMaxCellECross
! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters ...
virtual Int_t GetTrackMultiplicity() const
Bool_t fFillPi0PairDiffTime
Fill time difference histograms of cluster pairs in pi0 mass window, only if fFillAllPi0Histo=kTRUE.
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
TH2F * fhGridCellsE
! Cells ordered in column/row for different module, weighted with energy, Reco
TH1F * fhPtCharged
! pT distribution, Reco, matched with track
Float_t GetHistodEdxMax() const
TH2F * fhClusterMaxCellDiff
! Difference between cluster energy and energy of cell with more energy, good clusters only ...
TH2F * fhBadClusterDeltaIEtaDeltaIPhiE2
! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without ma...
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fh2dR
! distance between projected track and cluster (et