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++)
315 if(phi < 0) phi += TMath::TwoPi();
326 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
328 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
330 if(clus->GetID() == clus2->GetID())
continue;
335 if(
IsGoodCluster(absIdMax2, clus->GetM02(), clus->GetNCells(), cells) && clus2->GetM02() > 0.1 )
337 Double_t tof2 = clus2->GetTOF()*1.e9;
355 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
357 Int_t absId = clus->GetCellsAbsId()[ipos];
358 if(absId!=absIdMax && cells->GetCellAmplitude(absIdMax) > 0.01)
360 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
367 Double_t time = cells->GetCellTime(absId);
385 AliVCaloCells* cells,
393 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
395 Int_t id = clus->GetCellsAbsId()[ipos];
398 amp = cells->GetCellAmplitude(
id);
417 Int_t ncells = clus->GetNCells();
419 for (
Int_t ipos = 0; ipos < ncells; ipos++)
421 id = clus ->GetCellsAbsId()[ipos];
422 amp = cells->GetCellAmplitude(
id);
423 time = cells->GetCellTime(
id);
431 wTime += time*1e9 * w;
435 if(ncells > 0) aTime /= ncells;
438 if(wTot > 0) wTime /= wTot;
441 timeAverages[0] = aTime;
442 timeAverages[1] = wTime;
450 Int_t ncells = cells->GetNumberOfCells();
464 nCellsInModule[imod] = 0 ;
465 eCellsInModule[imod] = 0.;
468 Int_t icol = -1, icolAbs = -1;
469 Int_t irow = -1, irowAbs = -1;
478 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
480 if ( cells->GetCellNumber(iCell) < 0 )
continue;
482 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
488 AliDebug(2,Form(
"\t module %d, column %d (%d), row %d (%d)", nModule,icolAbs,icol,irowAbs,irow));
490 if(nModule < fNModules)
497 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow))
continue;
501 if(
GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) )
continue;
505 amp = cells->GetAmplitude(iCell)*recalF;
506 time = cells->GetTime(iCell);
507 id = cells->GetCellNumber(iCell);
508 highG = cells->GetCellHighGain(
id);
523 AliDebug(1,Form(
"Remove cell with Time %f",time));
529 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
559 nCellsInModule[nModule]++ ;
610 if ( cellphi < 0 ) cellphi+=TMath::TwoPi();
624 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0]+cellpos[1]*cellpos[1]);
632 Int_t relId[4], module;
640 Float_t rcell = TMath::Sqrt(xyz.X()*xyz.X()+xyz.Y()*xyz.Y());
660 AliDebug(1,Form(
"Module %d, calo %s, N cells %d, sum Amp %f", imod,
GetCalorimeterString().
Data(), nCellsInModule[imod], eCellsInModule[imod]));
671 for (
Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
673 if ( cells->GetCellNumber(iCell) < 0 )
continue;
675 AliDebug(2,Form(
"Cell : amp %f, absId %d", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell)));
679 AliDebug(2,Form(
"\t module %d, column %d, row %d", nModule,icol,irow));
681 if(nModule < fNModules)
688 if(
GetCaloUtils()->GetEMCALChannelStatus(nModule, icol, irow))
continue;
692 if(
GetCaloUtils()->GetPHOSChannelStatus (nModule, icol, irow) )
continue;
696 amp = cells->GetAmplitude(iCell)*recalF;
697 time = cells->GetTime(iCell);
698 id = cells->GetCellNumber(iCell);
705 GetReader()->GetInputEvent()->GetBunchCrossNumber());
713 AliDebug(1,Form(
"Remove cell with Time %f",time));
719 GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(
id, cells, bc))
continue;
731 if(eCellsInModule[nModule] > 0)
733 Float_t ratioMod = amp/eCellsInModule[nModule];
742 delete [] nCellsInModule;
743 delete [] eCellsInModule;
751 Int_t nCaloCellsPerCluster = clus->GetNCells();
753 UShort_t * indexList = clus->GetCellsAbsId();
756 clus->GetPosition(pos);
761 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
764 Int_t absId = indexList[ipos];
781 Float_t r = TMath::Sqrt(pos[0] *pos[0] + pos[1] * pos[1] );
782 Float_t rcell = TMath::Sqrt(cellpos[0]*cellpos[0] + cellpos[1]* cellpos[1]);
790 Int_t relId[4], module;
806 Float_t r = TMath::Sqrt(pos[0] * pos[0] + pos[1] * pos[1] );
807 Float_t rcell = TMath::Sqrt(xyz.X() * xyz.X() + xyz.Y() * xyz.Y());
822 if( clus->GetNCells() <= 3 )
return;
830 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
832 Int_t absId = clus->GetCellsAbsId()[ipos];
837 if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
841 if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
845 Int_t ietaShift = ieta;
846 Int_t ietaMaxShift = ietaMax;
847 if (ieta > ietaMax) ietaMaxShift+=48;
849 if(dIeta < TMath::Abs(ietaShift-ietaMaxShift)) dIeta = TMath::Abs(ietaShift-ietaMaxShift);
853 Float_t dIA = 1.*(dIphi-dIeta)/(dIeta+dIphi);
874 Int_t nLabel = clus->GetNLabels();
875 Int_t* labels = clus->GetLabels();
938 Int_t nCaloCellsPerCluster = clus->GetNCells();
941 for(
Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
943 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(iclus2);
945 if( clus->GetID() == clus2->GetID() )
continue;
947 if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
951 Double_t tof2 = clus2->GetTOF()*1.e9;
956 if ( nModule2 == nModule )
961 if(nCaloCellsPerCluster > 1)
975 for (
Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
977 Int_t absId = clus->GetCellsAbsId()[ipos];
978 if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 )
continue;
980 Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);
986 Double_t time = cells->GetCellTime(absId);
1003 AliDebug(1,Form(
"cluster: E %2.3f, pT %2.3f, eta %2.3f, phi %2.3f",e,pt,eta,phi*TMath::RadToDeg()));
1021 Int_t icol = -1, irow = -1, iRCU = -1, icolAbs = -1, irowAbs = -1;
1046 clus->GetPosition(pos);
1058 Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
1081 AliVCaloCells* cells)
1084 Int_t *labels = 0x0;
1085 Int_t nCaloClusters = caloClusters->GetEntriesFast() ;
1086 Int_t nCaloClustersAccepted = 0 ;
1087 Int_t nCaloCellsPerCluster = 0 ;
1099 nClustersInModule[imod] = 0;
1100 energyInModule [imod] = 0;
1106 for(
Int_t iclus = 0; iclus < nCaloClusters; iclus++)
1108 AliDebug(1,Form(
"Cluster: %d/%d, data %d",iclus+1,nCaloClusters,
GetReader()->GetDataType()));
1110 AliVCluster* clus = (AliVCluster*) caloClusters->At(iclus);
1117 Double_t tof = clus->GetTOF()*1.e9;
1122 AliDebug(1,Form(
"Remove cluster with TOF %f",tof));
1135 nLabel = clus->GetNLabels();
1136 labels = clus->GetLabels();
1142 nCaloCellsPerCluster = clus->GetNCells();
1148 Double_t tmax = cells->GetCellTime(absIdMax);
1161 if(nModule >=0 && nModule < fNModules)
1170 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
1176 Bool_t goodCluster =
IsGoodCluster(absIdMax, clus->GetM02(), nCaloCellsPerCluster, cells);
1179 if(ampMax > 0.01) eCrossFrac = 1-
GetECross(absIdMax,cells)/ampMax;
1181 AliDebug(1,Form(
"Accept cluster? %d",goodCluster));
1194 maxCellFraction, eCrossFrac, tmax);
1196 nCaloClustersAccepted++;
1200 nClustersInModule[nModule]++;
1202 energyInModule [nModule] += clus->E();
1212 Int_t mcOK = kFALSE;
1214 if(
IsDataMC() && nLabel > 0 && labels)
1226 && nCaloClusters > 1
1227 && nCaloCellsPerCluster > 1
1228 &&
GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1
1244 AliDebug(1,Form(
"Module %d calo %s clusters %d, sum E %f", imod,
GetCalorimeterString().
Data(), nClustersInModule[imod], energyInModule[imod]));
1252 delete [] nClustersInModule;
1253 delete [] energyInModule;
1263 if(!labels || nLabels<=0)
1265 AliWarning(Form(
"Strange, labels array %p, n labels %d", labels,nLabels));
1269 AliDebug(1,Form(
"Primaries: nlabels %d",nLabels));
1274 if(phi < 0) phi +=TMath::TwoPi();
1276 AliAODMCParticle * aodprimary = 0x0;
1277 TParticle * primary = 0x0;
1280 Int_t label = labels[0];
1284 AliDebug(1,Form(
" *** bad label ***: label %d", label));
1303 AliDebug(1,Form(
"*** large label ***: label %d, n tracks %d", label,
GetMCStack()->GetNtrack()));
1309 pdg0 = TMath::Abs(primary->GetPdgCode());
1311 status = primary->GetStatusCode();
1312 vxMC = primary->Vx();
1313 vyMC = primary->Vy();
1314 iParent = primary->GetFirstMother();
1316 AliDebug(1,
"Cluster most contributing mother:");
1317 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg0, primary->GetName(),status, iParent));
1325 pdg = TMath::Abs(primary->GetPdgCode());
1327 AliDebug(2,
"Converted cluster!. Find before conversion:");
1329 while((pdg == 22 || pdg == 11) && status != 1)
1331 Int_t iMotherOrg = iMother;
1334 status = primary->GetStatusCode();
1335 pdg = TMath::Abs(primary->GetPdgCode());
1336 iParent = primary->GetFirstMother();
1340 if(pdg==111 || pdg==221)
1342 primary =
GetMCStack()->Particle(iMotherOrg);
1352 AliDebug(2,Form(
"\t pdg %d, index %d, %s, status %d",pdg, iMother, primary->GetName(),status));
1355 AliDebug(1,
"Converted Cluster mother before conversion:");
1356 AliDebug(1,Form(
"\t Mother label %d, pdg %d, %s, status %d, parent %d",iMother, pdg, primary->GetName(), status, iParent));
1364 AliDebug(2,
"Overlapped Meson decay!, Find it:");
1366 while(pdg != 111 && pdg != 221)
1371 status = primary->GetStatusCode();
1372 pdg = TMath::Abs(primary->GetPdgCode());
1373 iParent = primary->GetFirstMother();
1375 if( iParent < 0 )
break;
1377 AliDebug(2,Form(
"\t pdg %d, %s, index %d",pdg, primary->GetName(),iMother));
1381 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1386 AliDebug(2,Form(
"Overlapped %s decay, label %d",primary->GetName(),iMother));
1389 eMC = primary->Energy();
1391 phiMC = primary->Phi();
1392 etaMC = primary->Eta();
1393 pdg = TMath::Abs(primary->GetPdgCode());
1394 charge = (
Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1397 else if(
GetReader()->ReadAODMCParticles() &&
1403 AliFatal(
"MCParticles not available!");
1407 pdg0 = TMath::Abs(aodprimary->GetPdgCode());
1409 status = aodprimary->IsPrimary();
1410 vxMC = aodprimary->Xv();
1411 vyMC = aodprimary->Yv();
1412 iParent = aodprimary->GetMother();
1414 AliDebug(1,
"Cluster most contributing mother:");
1415 AliDebug(1,Form(
"\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d",
1416 iMother, pdg0, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary(), iParent));
1421 AliDebug(2,
"Converted cluster!. Find before conversion:");
1425 pdg = TMath::Abs(aodprimary->GetPdgCode());
1427 while ((pdg == 22 || pdg == 11) && !aodprimary->IsPhysicalPrimary())
1429 Int_t iMotherOrg = iMother;
1432 status = aodprimary->IsPrimary();
1433 iParent = aodprimary->GetMother();
1434 pdg = TMath::Abs(aodprimary->GetPdgCode());
1438 if( pdg == 111 || pdg == 221 )
1450 AliDebug(2,Form(
"\t pdg %d, index %d, Primary? %d, Physical Primary? %d",
1451 pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1454 AliDebug(1,
"Converted Cluster mother before conversion:");
1455 AliDebug(1,Form(
"\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d",
1456 iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary()));
1464 AliDebug(2,Form(
"Overlapped Meson decay!, Find it: PDG %d, mom %d",pdg, iMother));
1466 while(pdg != 111 && pdg != 221)
1470 status = aodprimary->IsPrimary();
1471 iParent = aodprimary->GetMother();
1472 pdg = TMath::Abs(aodprimary->GetPdgCode());
1474 if( iParent < 0 )
break;
1476 AliDebug(2,Form(
"\t pdg %d, index %d",pdg, iMother));
1480 AliWarning(
"Tagged as Overlapped photon but meson not found, why?");
1485 AliDebug(2,Form(
"Overlapped %s decay, label %d",aodprimary->GetName(),iMother));
1488 status = aodprimary->IsPrimary();
1489 eMC = aodprimary->E();
1491 phiMC = aodprimary->Phi();
1492 etaMC = aodprimary->Eta();
1493 pdg = TMath::Abs(aodprimary->GetPdgCode());
1494 charge = aodprimary->Charge();
1498 Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
1499 if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
1532 else if(charge == 0)
1547 if( mcIndex >= 0 && mcIndex < 7 && e > 0.5 && eMC > 0.5)
1558 if( primary || aodprimary )
return kTRUE ;
1574 if(phi < 0) phi +=TMath::TwoPi();
1592 Double_t dedx = track->GetTPCsignal();
1593 Int_t nITS = track->GetNcls(0);
1594 Int_t nTPC = track->GetNcls(1);
1595 Bool_t positive = kFALSE;
1596 if(track) positive = (track->Charge()>0);
1599 Float_t deta = clus->GetTrackDz();
1600 Float_t dphi = clus->GetTrackDx();
1601 Double_t dR = TMath::Sqrt(dphi*dphi + deta*deta);
1604 if( TMath::Abs(dphi) < 999 )
1641 if(dedx > 60 && dedx < 100)
1651 if(e > 0.5 && tmom > 0.5)
1657 if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
1658 && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20)
1666 Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
1668 if(TMath::Abs(pdg) == 11)
1692 else if(charge == 0)
1717 if(!caloClustersEMCAL || !caloClustersPHOS)
1719 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) clusters array not available, do not correlate",caloClustersPHOS,caloClustersEMCAL));
1727 if(!cellsEMCAL || !cellsPHOS)
1729 AliDebug(1,Form(
"PHOS (%p) or EMCAL (%p) cells array ot available, do not correlate",cellsPHOS,cellsEMCAL));
1738 Float_t sumClusterEnergyEMCAL = 0;
1739 Float_t sumClusterEnergyDCAL = 0;
1740 Float_t sumClusterEnergyPHOS = 0;
1744 AliVCluster* cluster = 0;
1745 for(iclus = 0 ; iclus < caloClustersEMCAL->GetEntriesFast() ; iclus++)
1747 cluster = (AliVCluster*)caloClustersEMCAL->At(iclus);
1748 Float_t energy = cluster->E();
1750 if( energy < 0.5 )
continue;
1752 if(cluster->GetCellsAbsId()[0] < 12288)
1755 sumClusterEnergyEMCAL +=
energy;
1760 sumClusterEnergyDCAL +=
energy;
1764 for(iclus = 0 ; iclus < caloClustersPHOS ->GetEntriesFast(); iclus++)
1766 cluster = (AliVCluster*) caloClustersPHOS->At(iclus);
1768 energy = cluster->E();
1770 if( energy < 0.5 )
continue;
1773 sumClusterEnergyPHOS +=
energy;
1777 Int_t ncellsEMCAL = 0 ;
1778 Int_t ncellsDCAL = 0 ;
1779 Int_t ncellsPHOS = 0;
1781 Float_t sumCellEnergyEMCAL = 0;
1782 Float_t sumCellEnergyDCAL = 0;
1783 Float_t sumCellEnergyPHOS = 0;
1785 for(icell = 0 ; icell < cellsEMCAL->GetNumberOfCells() ; icell++)
1787 Float_t amp = cellsEMCAL->GetAmplitude(icell);
1788 Int_t cellId = cellsEMCAL->GetCellNumber(icell);
1795 sumCellEnergyEMCAL += amp;
1800 sumCellEnergyDCAL += amp;
1804 for(icell = 0 ; icell < cellsPHOS->GetNumberOfCells(); icell++)
1806 Float_t amp = cellsPHOS->GetAmplitude(icell);
1807 Int_t cellId = cellsPHOS->GetCellNumber(icell);
1809 if ( cellId < 0 ) continue ;
1814 sumCellEnergyPHOS += amp;
1840 Int_t ncl = nclPHOS;
1841 Float_t sumClusterEnergy = sumClusterEnergyPHOS;
1842 Int_t ncells = ncellsPHOS;
1843 Float_t sumCellEnergy = sumCellEnergyPHOS;
1847 ncl = nclEMCAL + nclDCAL;
1848 sumClusterEnergy = sumClusterEnergyEMCAL + sumClusterEnergyDCAL;
1849 ncells = ncellsEMCAL + ncellsDCAL;
1850 sumCellEnergy = sumCellEnergyEMCAL + sumCellEnergyDCAL;
1878 AliDebug(1,
"Correlate():");
1879 AliDebug(1,Form(
"\t EMCAL: N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1880 ncellsEMCAL,nclEMCAL, sumCellEnergyEMCAL,sumClusterEnergyEMCAL));
1881 AliDebug(1,Form(
"\t DCAL : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1882 ncellsDCAL,nclDCAL, sumCellEnergyDCAL,sumClusterEnergyDCAL));
1883 AliDebug(1,Form(
"\t PHOS : N cells %d, N clusters %d, summed E cells %f, summed E clusters %f",
1884 ncellsPHOS,nclPHOS,sumCellEnergyPHOS,sumClusterEnergyPHOS));
1885 AliDebug(1,Form(
"\t V0 : Signal %d, Multiplicity %d, Track Multiplicity %d", v0S,v0M,trM));
1886 AliDebug(1,Form(
"\t centrality : %f, Event plane angle %f", cen,ep));
1895 const Int_t buffersize = 255;
1896 char onePar[buffersize] ;
1898 snprintf(onePar,buffersize,
"--- AliAnaCalorimeterQA ---:") ;
1923 return new TObjString(parList) ;
1930 AliVCluster *clus, AliVCaloCells* cells)
1934 AliDebug(1,Form(
"Low amplitude energy %f",ampMax));
1941 Int_t nc = clus->GetNCells();
1974 for (
Int_t icell = 0; icell < clus->GetNCells(); icell++)
1976 Int_t absId = clus->GetCellsAbsId()[icell];
1977 Double_t time = cells->GetCellTime(absId);
2003 outputContainer->SetName(
"QAHistos") ;
2054 fhE =
new TH1F (
"hE",
"#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);
2055 fhE->SetXTitle(
"#it{E} (GeV)");
2056 outputContainer->Add(
fhE);
2058 fhPt =
new TH1F (
"hPt",
"#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
2059 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2060 outputContainer->Add(
fhPt);
2062 fhPhi =
new TH1F (
"hPhi",
"#phi reconstructed clusters ",nphibins,phimin,phimax);
2063 fhPhi->SetXTitle(
"#phi (rad)");
2064 outputContainer->Add(
fhPhi);
2066 fhEta =
new TH1F (
"hEta",
"#eta reconstructed clusters ",netabins,etamin,etamax);
2067 fhEta->SetXTitle(
"#eta ");
2068 outputContainer->Add(
fhEta);
2074 fhEtaPhiE =
new TH3F (
"hEtaPhiE",
"#eta vs #phi vs energy, reconstructed clusters",
2075 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2083 fhEtaPhi =
new TH2F (
"hEtaPhi",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters",
2084 netabins,etamin,etamax,nphibins,phimin,phimax);
2092 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2098 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2104 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2109 fhLambda0 =
new TH2F (
"hLambda0",
"shower shape, #lambda^{2}_{0} vs E",
2110 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2111 fhLambda0->SetXTitle(
"#it{E}_{cluster}");
2112 fhLambda0->SetYTitle(
"#lambda^{2}_{0}");
2115 fhLambda1 =
new TH2F (
"hLambda1",
"shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2116 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2117 fhLambda1->SetXTitle(
"#it{E}_{cluster}");
2118 fhLambda1->SetYTitle(
"#lambda^{2}_{1}");
2128 nptbins,ptmin,ptmax, 100,0,1.);
2134 nptbins,ptmin,ptmax, 500,0,100.);
2139 fhClusterMaxCellDiff =
new TH2F (
"hClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
2140 nptbins,ptmin,ptmax, 500,0,1.);
2147 fhClusterMaxCellDiffNoCut =
new TH2F (
"hClusterMaxCellDiffNoCut",
"energy vs difference of cluster energy - max cell energy / cluster energy",
2148 nptbins,ptmin,ptmax, 500,0,1.);
2154 fhClusterMaxCellECross =
new TH2F (
"hClusterMaxCellECross",
"1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
2155 nptbins,ptmin,ptmax, 400,-1,1.);
2163 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2169 fhNCellsPerCluster =
new TH2F (
"hNCellsPerCluster",
"# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
2189 fhNClusters =
new TH1F (
"hNClusters",
"# clusters", nclbins,nclmin,nclmax);
2195 fhBadClusterEnergy =
new TH1F (
"hBadClusterEnergy",
"Bad cluster energy", nptbins,ptmin,ptmax);
2200 netabins,etamin,etamax,nphibins,phimin,phimax);
2206 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2211 fhBadClusterLambda1 =
new TH2F (
"hBadClusterLambda1",
"Bad cluster,shower shape, #lambda^{2}_{1} vs E for bad cluster ",
2212 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2218 nptbins,ptmin,ptmax, 100,0,1.);
2224 nptbins,ptmin,ptmax, 500,0,100);
2229 fhBadClusterMaxCellDiff =
new TH2F (
"hBadClusterMaxCellDiff",
"energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
2230 nptbins,ptmin,ptmax, 500,0,1.);
2236 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2241 fhBadClusterPairDiffTimeE =
new TH2F(
"hBadClusterPairDiffTimeE",
"cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2246 fhBadClusterMaxCellECross =
new TH2F (
"hBadClusterMaxCellECross",
"1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
2247 nptbins,ptmin,ptmax, 400,-1,1.);
2276 "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2277 400,0,1,ssbins,ssmin,ssmax);
2278 fhExoL0ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2283 "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
2284 400,0,1,ssbins,ssmin,ssmax);
2285 fhExoL1ECross ->SetXTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2293 Form(
"#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",
fExoECrossCuts[ie]),
2294 nptbins,ptmin,ptmax,tdbins,tdmin,tdmax);
2295 fhExoDTime[ie] ->SetYTitle(
"#Delta #it{t} (ns)");
2301 fhExoNCell[ie][idt] =
new TH2F(Form(
"hExoNCell_ECross%d_DT%d",ie,idt),
2302 Form(
"N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",
fExoECrossCuts[ie],
fExoDTimeCuts[idt]),
2303 nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax);
2304 fhExoNCell[ie][idt] ->SetYTitle(
"#it{n}_cells");
2305 fhExoNCell[ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2308 fhExoL0 [ie][idt] =
new TH2F(Form(
"hExoL0_ECross%d_DT%d",ie,idt),
2309 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]),
2310 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2311 fhExoL0 [ie][idt] ->SetYTitle(
"#lambda^{2}_{0}");
2312 fhExoL0 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2313 outputContainer->Add(
fhExoL0[ie][idt]) ;
2315 fhExoL1 [ie][idt] =
new TH2F(Form(
"hExoL1_ECross%d_DT%d",ie,idt),
2316 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]),
2317 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2318 fhExoL1 [ie][idt] ->SetYTitle(
"#lambda^{2}_{1}");
2319 fhExoL1 [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2320 outputContainer->Add(
fhExoL1[ie][idt]) ;
2322 fhExoECross[ie][idt] =
new TH2F(Form(
"hExoECross_ECross%d_DT%d",ie,idt),
2323 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]),
2324 nptbins,ptmin,ptmax,400,0,1);
2325 fhExoECross[ie][idt] ->SetYTitle(
"1-#it{E}_{+}/#it{E}_{cell max}");
2326 fhExoECross[ie][idt] ->SetXTitle(
"#it{E}_{cell} (GeV)");
2329 fhExoTime [ie][idt] =
new TH2F(Form(
"hExoTime_ECross%d_DT%d",ie,idt),
2330 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]),
2331 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2332 fhExoTime [ie][idt] ->SetYTitle(
"#it{t}_{max} (ns)");
2333 fhExoTime [ie][idt] ->SetXTitle(
"#it{E} (GeV)");
2334 outputContainer->Add(
fhExoTime[ie][idt]) ;
2337 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]),
2338 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2344 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]),
2345 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2357 fhDeltaIEtaDeltaIPhiE0[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
2363 fhDeltaIEtaDeltaIPhiE2[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
2369 fhDeltaIEtaDeltaIPhiE6[0] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
2375 fhDeltaIA[0] =
new TH2F (
"hDeltaIA",
" Cluster *asymmetry* in cell units vs E",
2376 nptbins,ptmin,ptmax,21,-1.05,1.05);
2377 fhDeltaIA[0]->SetXTitle(
"#it{E}_{cluster}");
2378 fhDeltaIA[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2381 fhDeltaIAL0[0] =
new TH2F (
"hDeltaIAL0",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
2382 ssbins,ssmin,ssmax,21,-1.05,1.05);
2384 fhDeltaIAL0[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2387 fhDeltaIAL1[0] =
new TH2F (
"hDeltaIAL1",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
2388 ssbins,ssmin,ssmax,21,-1.05,1.05);
2390 fhDeltaIAL1[0]->SetYTitle(
"#it{A}_{cell in cluster}");
2393 fhDeltaIANCells[0] =
new TH2F (
"hDeltaIANCells",
" Cluster *asymmetry* in cell units vs N cells in cluster",
2394 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2400 fhDeltaIEtaDeltaIPhiE0[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE0Charged",
" Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
2406 fhDeltaIEtaDeltaIPhiE2[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE2Charged",
" Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
2412 fhDeltaIEtaDeltaIPhiE6[1] =
new TH2F (
"hDeltaIEtaDeltaIPhiE6Charged",
" Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
2418 fhDeltaIA[1] =
new TH2F (
"hDeltaIACharged",
" Cluster *asymmetry* in cell units vs E, matched with track",
2419 nptbins,ptmin,ptmax,21,-1.05,1.05);
2420 fhDeltaIA[1]->SetXTitle(
"#it{E}_{cluster}");
2421 fhDeltaIA[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2424 fhDeltaIAL0[1] =
new TH2F (
"hDeltaIAL0Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
2425 ssbins,ssmin,ssmax,21,-1.05,1.05);
2427 fhDeltaIAL0[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2430 fhDeltaIAL1[1] =
new TH2F (
"hDeltaIAL1Charged",
" Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
2431 ssbins,ssmin,ssmax,21,-1.05,1.05);
2433 fhDeltaIAL1[1]->SetYTitle(
"#it{A}_{cell in cluster}");
2436 fhDeltaIANCells[1] =
new TH2F (
"hDeltaIANCellsCharged",
" Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
2437 nceclbins,nceclmin,nceclmax,21,-1.05,1.05);
2443 TString particle[]={
"Photon",
"Electron",
"Conversion",
"Hadron"};
2444 for (
Int_t iPart = 0; iPart < 4; iPart++) {
2446 fhDeltaIAMC[iPart] =
new TH2F (Form(
"hDeltaIA_MC%s",particle[iPart].
Data()),Form(
" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].
Data()),
2447 nptbins,ptmin,ptmax,21,-1.05,1.05);
2448 fhDeltaIAMC[iPart]->SetXTitle(
"#it{E}_{cluster}");
2449 fhDeltaIAMC[iPart]->SetYTitle(
"#it{A}_{cell in cluster}");
2475 nptbins,ptmin,ptmax,21,-1.05,1.05);
2485 nptbins,ptmin,ptmax, 100,0,1.);
2491 nptbins,ptmin,ptmax, 100,-10,0);
2497 nptbins,ptmin,ptmax, 100,0,1.);
2503 nptbins,ptmin,ptmax, 100,-10,0);
2509 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2515 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2526 Form(
"#cell energy / sum all energy vs all energy in Module %d",imod),
2527 nptbins*2,ptmin,ptmax*2, 100,0,1.);
2533 Form(
"Log(cell energy / sum all energy) vs all energy in Module %d",imod),
2534 nptbins*2,ptmin,ptmax*2, 100,-10,0);
2541 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
2542 Float_t cellTmin [] = {50.,100.,1000000.};
2544 for(
Int_t iw = 0; iw < 12; iw++)
2547 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
2549 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
2552 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns",
2553 w0, cellEmin[iEmin], cellTmin[iTmin]),
2554 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2569 Form(
"#lambda^{2}_{0} vs E, w0=%1.2f, cell E>%2.2f MeV, |t|<%2.0f ns, |#eta| < 0.15",
2570 w0, cellEmin[iEmin], cellTmin[iTmin]),
2571 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2580 TString mcnames[] = {
"Photon",
"Electron",
"Conversion",
"Pi0",
"Hadron"};
2581 for(
Int_t imc = 0; imc < 5; imc++)
2584 Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].
Data()),
2585 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2612 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2617 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2622 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2627 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2632 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2637 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2674 fhECharged =
new TH1F (
"hECharged",
"#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2678 fhPtCharged =
new TH1F (
"hPtCharged",
"#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
2679 fhPtCharged->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2682 fhPhiCharged =
new TH1F (
"hPhiCharged",
"#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
2686 fhEtaCharged =
new TH1F (
"hEtaCharged",
"#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
2692 fhEtaPhiECharged =
new TH3F (
"hEtaPhiECharged",
"#eta vs #phi, reconstructed clusters, matched with track",
2693 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
2701 fhEtaPhiCharged =
new TH2F (
"hEtaPhiCharged",
"#eta vs #phi for #it{E} > 0.5 GeV, reconstructed clusters, with matched track",
2702 netabins,etamin,etamax,nphibins,phimin,phimax);
2708 fh1EOverP =
new TH2F(
"h1EOverP",
"TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2710 fh1EOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2713 fh2dR =
new TH2F(
"h2dR",
"TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
2714 fh2dR->SetYTitle(
"#Delta #it{R} (rad)");
2715 fh2dR->SetXTitle(
"#it{E} cluster (GeV)");
2716 outputContainer->Add(
fh2dR) ;
2718 fh2MatchdEdx =
new TH2F(
"h2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2723 fh2EledEdx =
new TH2F(
"h2EledEdx",
"#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
2728 fh1EOverPR02 =
new TH2F(
"h1EOverPR02",
"TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2733 fh1EleEOverP =
new TH2F(
"h1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
2741 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);
2746 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);
2747 fh2dRMod->SetXTitle(
"#Delta #it{R} (rad)");
2751 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);
2756 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);
2761 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);
2766 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);
2774 fhIM =
new TH2F (
"hIM",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2775 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2776 fhIM->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2777 fhIM->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2778 outputContainer->Add(
fhIM);
2780 fhIMDiff =
new TH2F (
"hIMDiff",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2781 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2782 fhIMDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2783 fhIMDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2786 fhIMSame =
new TH2F (
"hIMSame",
"Cluster pairs (EMCAL or PHOS) Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2787 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2788 fhIMSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2789 fhIMSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2794 fhIMDCAL =
new TH2F (
"hIMDCAL",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2795 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2796 fhIMDCAL->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2797 fhIMDCAL->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2800 fhIMDCALDiff =
new TH2F (
"hIMDCALDiff",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, different SM",
2801 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2802 fhIMDCALDiff->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2803 fhIMDCALDiff->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2806 fhIMDCALSame =
new TH2F (
"hIMDCALSame",
"Cluster pairs in DCAL Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same SM",
2807 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2808 fhIMDCALSame->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2809 fhIMDCALSame->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2812 fhIMDCALPHOS =
new TH2F (
"hIMDCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2813 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2814 fhIMDCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2815 fhIMDCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2818 fhIMDCALPHOSSame =
new TH2F (
"hIMDCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2819 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2827 fhIMEMCALPHOS =
new TH2F (
"hIMEMCALPHOS",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1",
2828 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2829 fhIMEMCALPHOS->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2830 fhIMEMCALPHOS->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2833 fhIMEMCALPHOSSame =
new TH2F (
"hIMEMCALPHOSSame",
"Cluster pairs in DCAL-PHOS Invariant mass vs reconstructed pair #it{p}_{T}, ncell > 1, same #phi sector",
2834 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2843 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2849 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2857 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2863 nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
2870 fhAsym =
new TH2F (
"hAssym",
"Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax);
2871 fhAsym->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2872 fhAsym->SetYTitle(
"#it{Asymmetry}");
2873 outputContainer->Add(
fhAsym);
2877 fhOpAngle =
new TH2F (
"hOpeningAngle",
"Cluster pairs opening angle vs reconstructed pair #it{p}_{T}, ncell > 1",
2878 nptbins,ptmin,ptmax, 180,0,TMath::Pi());
2879 fhOpAngle->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
2880 fhOpAngle->SetYTitle(
"Opening angle (degrees)");
2884 fhIMvsOpAngle =
new TH2F (
"hIMvsOpAngle",
"Cluster pairs Invariant mass vs reconstructed pair opening angle, ncell > 1",
2887 fhIMvsOpAngle->SetYTitle(
"M_{cluster pairs} (GeV/#it{c}^{2})");
2894 fhXYZ =
new TH3F (
"hXYZ",
"Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2895 fhXYZ->SetXTitle(
"#it{x} (cm)");
2896 fhXYZ->SetYTitle(
"#it{y} (cm)");
2897 fhXYZ->SetZTitle(
"#it{z} (cm) ");
2898 outputContainer->Add(
fhXYZ);
2900 fhXE =
new TH2F (
"hXE",
"Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2901 fhXE->SetXTitle(
"#it{x} (cm)");
2902 fhXE->SetYTitle(
"#it{E} (GeV)");
2903 outputContainer->Add(
fhXE);
2905 fhYE =
new TH2F (
"hYE",
"Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2906 fhYE->SetXTitle(
"#it{y} (cm)");
2907 fhYE->SetYTitle(
"#it{E} (GeV)");
2908 outputContainer->Add(
fhYE);
2910 fhZE =
new TH2F (
"hZE",
"Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2911 fhZE->SetXTitle(
"#it{z} (cm)");
2912 fhZE->SetYTitle(
"#it{E} (GeV)");
2913 outputContainer->Add(
fhZE);
2915 fhRE =
new TH2F (
"hRE",
"Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2916 fhRE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2917 fhRE->SetYTitle(
"#it{E} (GeV)");
2918 outputContainer->Add(
fhRE);
2920 fhXNCells =
new TH2F (
"hXNCells",
"Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax);
2922 fhXNCells->SetYTitle(
"N cells per cluster");
2925 fhYNCells =
new TH2F (
"hYNCells",
"Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax);
2927 fhYNCells->SetYTitle(
"N cells per cluster");
2930 fhZNCells =
new TH2F (
"hZNCells",
"Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax);
2932 fhZNCells->SetYTitle(
"N cells per cluster");
2935 fhRNCells =
new TH2F (
"hRNCells",
"Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax);
2936 fhRNCells->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2937 fhRNCells->SetYTitle(
"N cells per cluster");
2943 fhRCellE =
new TH2F (
"hRCellE",
"Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax);
2944 fhRCellE->SetXTitle(
"r = #sqrt{x^{2}+y^{2}} (cm)");
2945 fhRCellE->SetYTitle(
"#it{E} (GeV)");
2948 fhXCellE =
new TH2F (
"hXCellE",
"Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax);
2949 fhXCellE->SetXTitle(
"#it{x} (cm)");
2950 fhXCellE->SetYTitle(
"#it{E} (GeV)");
2953 fhYCellE =
new TH2F (
"hYCellE",
"Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax);
2954 fhYCellE->SetXTitle(
"#it{y} (cm)");
2955 fhYCellE->SetYTitle(
"#it{E} (GeV)");
2958 fhZCellE =
new TH2F (
"hZCellE",
"Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax);
2959 fhZCellE->SetXTitle(
"#it{z} (cm)");
2960 fhZCellE->SetYTitle(
"#it{E} (GeV)");
2963 fhXYZCell =
new TH3F (
"hXYZCell",
"Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
2969 Float_t dx = TMath::Abs(xmin)+TMath::Abs(xmax);
2970 Float_t dy = TMath::Abs(ymin)+TMath::Abs(ymax);
2971 Float_t dz = TMath::Abs(zmin)+TMath::Abs(zmax);
2972 Float_t dr = TMath::Abs(rmin)+TMath::Abs(rmax);
2974 fhDeltaCellClusterRNCells =
new TH2F (
"hDeltaCellClusterRNCells",
"Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax);
2979 fhDeltaCellClusterXNCells =
new TH2F (
"hDeltaCellClusterXNCells",
"Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax);
2984 fhDeltaCellClusterYNCells =
new TH2F (
"hDeltaCellClusterYNCells",
"Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax);
2989 fhDeltaCellClusterZNCells =
new TH2F (
"hDeltaCellClusterZNCells",
"Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax);
2994 fhDeltaCellClusterRE =
new TH2F (
"hDeltaCellClusterRE",
"Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax);
2995 fhDeltaCellClusterRE->SetXTitle(
"#it{r} = #sqrt{x^{2}+y^{2}}, #it{r}_{clus}-#it{r}_{cell} (cm)");
2999 fhDeltaCellClusterXE =
new TH2F (
"hDeltaCellClusterXE",
"Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax);
3004 fhDeltaCellClusterYE =
new TH2F (
"hDeltaCellClusterYE",
"Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax);
3009 fhDeltaCellClusterZE =
new TH2F (
"hDeltaCellClusterZE",
"Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax);
3017 netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax);
3025 fhEtaPhiCell =
new TH2F (
"hEtaPhiCell",
"Cell #eta vs cell #phi vs cell energy",
3026 netabins,etamin,etamax,nphibins,phimin,phimax);
3035 fhNCells =
new TH1F (
"hNCells",
"# cells", ncebins,ncemin+0.5,ncemax);
3036 fhNCells->SetXTitle(
"#it{n}_{cells}");
3043 fhAmplitude =
new TH1F (
"hAmplitude",
"#it{E}_{cell}", nptbins*2,ptmin,ptmax);
3048 fhAmpId->SetXTitle(
"#it{E}_{cell} (GeV)");
3049 outputContainer->Add(
fhAmpId);
3077 fhTime =
new TH1F (
"hTime",
"#it{t}_{cell}",ntimebins,timemin,timemax);
3078 fhTime->SetXTitle(
"#it{t}_{cell} (ns)");
3079 outputContainer->Add(
fhTime);
3086 fhTimeId =
new TH2F (
"hTimeId",
"#it{t}_{cell} vs Absolute Id",
3088 fhTimeId->SetXTitle(
"#it{t}_{cell} (ns)");
3089 fhTimeId->SetYTitle(
"Cell Absolute Id");
3092 fhTimeAmp =
new TH2F (
"hTimeAmp",
"#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3093 fhTimeAmp->SetYTitle(
"#it{t}_{cell} (ns)");
3094 fhTimeAmp->SetXTitle(
"#it{E}_{cell} (GeV)");
3097 for(
Int_t bc = 0; bc < 4; bc++)
3100 Form(
"#it{t}_{cell} vs super-module, for BC/4=%d",bc),
3101 ntimebins,timemin,timemax,fNModules,0,fNModules);
3113 fhTimeAmpLowGain =
new TH2F (
"hTimeAmpLG",
"Low gain: #it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax);
3119 fhCellECross =
new TH2F (
"hCellECross",
"1 - Energy in cross around cell / cell energy",
3120 nptbins,ptmin,ptmax, 400,-1,1.);
3122 fhCellECross->SetYTitle(
"1- #it{E}_{cross}/#it{E}_{cell}");
3129 fhEMCALPHOSCorrNClusters =
new TH2F (
"hEMCALPHOSCorrNClusters",
"# clusters in EMCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3134 fhEMCALPHOSCorrEClusters =
new TH2F (
"hEMCALPHOSCorrEClusters",
"summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3139 fhEMCALPHOSCorrNCells =
new TH2F (
"hEMCALPHOSCorrNCells",
"# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3144 fhEMCALPHOSCorrECells =
new TH2F (
"hEMCALPHOSCorrECells",
"summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3150 fhEMCALDCALCorrNClusters =
new TH2F (
"hEMCALDCALCorrNClusters",
"# clusters in EMCAL vs DCAL", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3155 fhEMCALDCALCorrEClusters =
new TH2F (
"hEMCALDCALCorrEClusters",
"summed energy of clusters in EMCAL vs DCAL", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3160 fhEMCALDCALCorrNCells =
new TH2F (
"hEMCALDCALCorrNCells",
"# Cells in EMCAL vs DCAL", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3165 fhEMCALDCALCorrECells =
new TH2F (
"hEMCALDCALCorrECells",
"summed energy of Cells in EMCAL vs DCAL", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3172 fhDCALPHOSCorrNClusters =
new TH2F (
"hDCALPHOSCorrNClusters",
"# clusters in DCAL vs PHOS", nclbins,nclmin,nclmax,nclbins,nclmin,nclmax);
3177 fhDCALPHOSCorrEClusters =
new TH2F (
"hDCALPHOSCorrEClusters",
"summed energy of clusters in DCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
3182 fhDCALPHOSCorrNCells =
new TH2F (
"hDCALPHOSCorrNCells",
"# Cells in DCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax);
3187 fhDCALPHOSCorrECells =
new TH2F (
"hDCALPHOSCorrECells",
"summed energy of Cells in DCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
3257 fhCaloCenNClusters =
new TH2F (
"hCaloCenNClusters",
"# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
3262 fhCaloCenEClusters =
new TH2F (
"hCaloCenEClusters",
"summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
3267 fhCaloCenNCells =
new TH2F (
"hCaloCenNCells",
"# Cells in calorimeter vs centrality",100,0,100,ncebins,ncemin,ncemax);
3272 fhCaloCenECells =
new TH2F (
"hCaloCenECells",
"summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
3273 fhCaloCenECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3277 fhCaloEvPNClusters =
new TH2F (
"hCaloEvPNClusters",
"# clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nclbins,nclmin,nclmax);
3282 fhCaloEvPEClusters =
new TH2F (
"hCaloEvPEClusters",
"summed energy of clusters in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
3287 fhCaloEvPNCells =
new TH2F (
"hCaloEvPNCells",
"# Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),ncebins,ncemin,ncemax);
3292 fhCaloEvPECells =
new TH2F (
"hCaloEvPECells",
"summed energy of Cells in calorimeter vs event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
3293 fhCaloEvPECells->SetYTitle(
"#Sigma #it{E} of Cells in calorimeter (GeV)");
3300 fhEMod =
new TH2F (
"hE_Mod",
"Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3301 fhEMod->SetXTitle(
"#it{E} (GeV)");
3302 fhEMod->SetYTitle(
"Module");
3303 outputContainer->Add(
fhEMod);
3305 fhAmpMod =
new TH2F (
"hAmp_Mod",
"Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules);
3306 fhAmpMod->SetXTitle(
"#it{E} (GeV)");
3310 fhEWeirdMod =
new TH2F (
"hEWeird_Mod",
"Cluster reconstructed Energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3315 fhAmpWeirdMod =
new TH2F (
"hAmpWeird_Mod",
"Cell energy in each present Module, ridiculously large E",200,0,10000,fNModules,0,fNModules);
3322 fhTimeMod =
new TH2F (
"hTime_Mod",
"Cell time in each present Module",ntimebins,timemin,timemax,fNModules,0,fNModules);
3328 fhNClustersMod =
new TH2F (
"hNClusters_Mod",
"# clusters vs Module", nclbins,nclmin+0.5,nclmax,fNModules,0,fNModules);
3333 fhNCellsMod =
new TH2F (
"hNCells_Mod",
"# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules);
3343 fhSumCellsAmpMod =
new TH2F (
"hSumCellsAmp_Mod",
"# cells vs Module", 1000, 0, 2000,fNModules,0,fNModules);
3360 fhGridCells =
new TH2F (
"hGridCells",Form(
"Entries in grid of cells"),
3361 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3366 fhGridCellsE =
new TH2F (
"hGridCellsE",
"Accumulated energy in grid of cells",
3367 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3373 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3379 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3387 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3393 colmaxs+2,-1.5,colmaxs+0.5, rowmaxs+2,-1.5,rowmaxs+0.5);
3416 Form(
"# cells in SM vs sum of cells energy in Module %d",imod),
3417 nptbins,ptmin,ptmax*4, ncebins,ncemin,ncemax);
3423 Form(
"# clusters in SM vs sum of clusters energy in Module %d",imod),
3424 nptbins,ptmin,ptmax*4, nclbins,nclmin,nclmax);
3430 Form(
"# cells per cluster vs cluster energy in Module %d",imod),
3431 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3439 Form(
"# cells per cluster vs cluster energy in Module %d, no cut",imod),
3440 nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax);
3451 Form(
"#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu),
3452 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
3462 Form(
"Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
3463 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
3464 fhIMMod[imod]->SetXTitle(
"#it{p}_{T, cluster pairs} (GeV) ");
3465 fhIMMod[imod]->SetYTitle(
"#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
3466 outputContainer->Add(
fhIMMod[imod]);
3473 "Photon",
"Pi0",
"Eta",
3474 "Electron",
"PhotonConv",
3475 "NeutralHadron",
"ChargedHadron" };
3479 for(
Int_t iPart = 0; iPart < 7; iPart++)
3481 for(
Int_t iCh = 0; iCh < 2; iCh++)
3484 Form(
"Reconstructed/Generated E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3485 nptbins, ptmin, ptmax, 200,0,2);
3486 fhRecoMCRatioE[iPart][iCh]->SetYTitle(
"#it{E}_{reconstructed}/#it{E}_{generated}");
3487 fhRecoMCRatioE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3492 Form(
"Generated - Reconstructed E, %s, Matched %d",particleName[iPart].
Data(),iCh),
3493 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax);
3495 fhRecoMCDeltaE[iPart][iCh]->SetXTitle(
"#it{E}_{reconstructed} (GeV)");
3499 Form(
"Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].
Data(),iCh),
3500 nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax);
3506 Form(
"Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].
Data(),iCh),
3507 nptbins, ptmin, ptmax,netabins*2,-etamax,etamax);
3512 fhRecoMCE[iPart][iCh] =
new TH2F (Form(
"hRecoMCE_%s_Match%d",particleName[iPart].
Data(),iCh),
3513 Form(
"#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3514 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3515 fhRecoMCE[iPart][iCh]->SetXTitle(
"#it{E}_{rec} (GeV)");
3516 fhRecoMCE[iPart][iCh]->SetYTitle(
"#it{E}_{gen} (GeV)");
3517 outputContainer->Add(
fhRecoMCE[iPart][iCh]);
3519 fhRecoMCPhi[iPart][iCh] =
new TH2F (Form(
"hRecoMCPhi_%s_Match%d",particleName[iPart].
Data(),iCh),
3520 Form(
"#phi distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3521 nphibins,phimin,phimax, nphibins,phimin,phimax);
3522 fhRecoMCPhi[iPart][iCh]->SetXTitle(
"#phi_{reconstructed} (rad)");
3523 fhRecoMCPhi[iPart][iCh]->SetYTitle(
"#phi_{generated} (rad)");
3526 fhRecoMCEta[iPart][iCh] =
new TH2F (Form(
"hRecoMCEta_%s_Match%d",particleName[iPart].
Data(),iCh),
3527 Form(
"#eta distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].
Data(),iCh),
3528 netabins,etamin,etamax,netabins,etamin,etamax);
3529 fhRecoMCEta[iPart][iCh]->SetXTitle(
"#eta_{reconstructed} ");
3530 fhRecoMCEta[iPart][iCh]->SetYTitle(
"#eta_{generated} ");
3537 for(
Int_t iPart = 0; iPart < 4; iPart++)
3539 fhGenMCE [iPart] =
new TH1F(Form(
"hGenMCE_%s",particleName[iPart].
Data()) ,
3540 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3541 nptbins,ptmin,ptmax);
3543 fhGenMCPt[iPart] =
new TH1F(Form(
"hGenMCPt_%s",particleName[iPart].
Data()) ,
3544 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3545 nptbins,ptmin,ptmax);
3548 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3549 200,-1,1,360,0,TMath::TwoPi());
3551 fhGenMCE [iPart] ->SetXTitle(
"#it{E} (GeV)");
3552 fhGenMCPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3556 outputContainer->Add(
fhGenMCE [iPart]);
3557 outputContainer->Add(
fhGenMCPt [iPart]);
3561 fhGenMCAccE [iPart] =
new TH1F(Form(
"hGenMCAccE_%s",particleName[iPart].
Data()) ,
3562 Form(
"#it{E} of generated %s",particleName[iPart].
Data()),
3563 nptbins,ptmin,ptmax);
3564 fhGenMCAccPt[iPart] =
new TH1F(Form(
"hGenMCAccPt_%s",particleName[iPart].
Data()) ,
3565 Form(
"#it{p}_{T} of generated %s",particleName[iPart].
Data()),
3566 nptbins,ptmin,ptmax);
3568 Form(
"Y vs #phi of generated %s",particleName[iPart].
Data()),
3569 netabins,etamin,etamax,nphibins,phimin,phimax);
3572 fhGenMCAccPt[iPart] ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
3584 fhEMVxyz =
new TH2F (
"hEMVxyz",
"Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3590 fhHaVxyz =
new TH2F (
"hHaVxyz",
"Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);
3596 fhEMR =
new TH2F (
"hEMR",
"Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3597 fhEMR->SetXTitle(
"#it{E} (GeV)");
3598 fhEMR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3599 outputContainer->Add(
fhEMR);
3601 fhHaR =
new TH2F (
"hHaR",
"Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax);
3602 fhHaR->SetXTitle(
"#it{E} (GeV)");
3603 fhHaR->SetYTitle(
"TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
3604 outputContainer->Add(
fhHaR);
3608 fhMCEle1EOverP =
new TH2F(
"hMCEle1EOverP",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3613 fhMCEle1dR =
new TH1F(
"hMCEle1dR",
"TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
3614 fhMCEle1dR->SetXTitle(
"#Delta #it{R} (rad)");
3617 fhMCEle2MatchdEdx =
new TH2F(
"hMCEle2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3622 fhMCChHad1EOverP =
new TH2F(
"hMCChHad1EOverP",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3627 fhMCChHad1dR =
new TH1F(
"hMCChHad1dR",
"TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
3631 fhMCChHad2MatchdEdx =
new TH2F(
"hMCChHad2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3636 fhMCNeutral1EOverP =
new TH2F(
"hMCNeutral1EOverP",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3641 fhMCNeutral1dR =
new TH1F(
"hMCNeutral1dR",
"TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
3645 fhMCNeutral2MatchdEdx =
new TH2F(
"hMCNeutral2MatchdEdx",
"#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
3650 fhMCEle1EOverPR02 =
new TH2F(
"hMCEle1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3655 fhMCChHad1EOverPR02 =
new TH2F(
"hMCChHad1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3660 fhMCNeutral1EOverPR02 =
new TH2F(
"hMCNeutral1EOverPR02",
"TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3665 fhMCEle1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3670 fhMCChHad1EleEOverP =
new TH2F(
"hMCEle1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3675 fhMCNeutral1EleEOverP =
new TH2F(
"hMCNeutral1EleEOverP",
"Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
3687 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
3688 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3689 netabins,etamin,etamax,nphibins,phimin,phimax);
3695 (Form(
"hEBin%d_Cluster_ColRow",ie),
3696 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3697 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3703 (Form(
"hEBin%d_Cell_ColRow",ie),
3704 Form(
"column vs row, cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3705 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3716 return outputContainer;
3725 Int_t icol =-1, irow=-1,iRCU = -1;
3735 if( irow < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
GetCaloUtils()->
GetEMCALGeometry()->GetAbsCellIdFromCellIndexes(imod, irow+1, icol);
3742 if ( icol == AliEMCALGeoParams::fgkEMCALCols - 1 && !(imod%2) )
3747 else if( icol == 0 && imod%2 )
3754 if( icol < AliEMCALGeoParams::fgkEMCALCols-1 )
3763 Double_t tcell = cells->GetCellTime(absID);
3766 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3767 Double_t tcell1 = 0, tcell2 = 0, tcell3 = 0, tcell4 = 0;
3771 ecell1 = cells->GetCellAmplitude(absID1);
3773 tcell1 = cells->GetCellTime(absID1);
3779 ecell2 = cells->GetCellAmplitude(absID2);
3781 tcell2 = cells->GetCellTime(absID2);
3787 ecell3 = cells->GetCellAmplitude(absID3);
3789 tcell3 = cells->GetCellTime(absID3);
3795 ecell4 = cells->GetCellAmplitude(absID4);
3797 tcell4 = cells->GetCellTime(absID4);
3801 if(TMath::Abs(tcell-tcell1)*1.e9 > dtcut) ecell1 = 0 ;
3802 if(TMath::Abs(tcell-tcell2)*1.e9 > dtcut) ecell2 = 0 ;
3803 if(TMath::Abs(tcell-tcell3)*1.e9 > dtcut) ecell3 = 0 ;
3804 if(TMath::Abs(tcell-tcell4)*1.e9 > dtcut) ecell4 = 0 ;
3806 return ecell1+ecell2+ecell3+ecell4;
3810 Int_t absId1 = -1, absId2 = -1, absId3 = -1, absId4 = -1;
3812 Int_t relId1[] = { imod+1, 0, irow+1, icol };
3813 Int_t relId2[] = { imod+1, 0, irow-1, icol };
3814 Int_t relId3[] = { imod+1, 0, irow , icol+1 };
3815 Int_t relId4[] = { imod+1, 0, irow , icol-1 };
3822 Float_t ecell1 = 0, ecell2 = 0, ecell3 = 0, ecell4 = 0;
3824 if(absId1 > 0 ) ecell1 = cells->GetCellAmplitude(absId1);
3825 if(absId2 > 0 ) ecell2 = cells->GetCellAmplitude(absId2);
3826 if(absId3 > 0 ) ecell3 = cells->GetCellAmplitude(absId3);
3827 if(absId4 > 0 ) ecell4 = cells->GetCellAmplitude(absId4);
3829 return ecell1+ecell2+ecell3+ecell4;
3841 AliVCaloCells * cells)
3843 AliDebug(1,
"Start");
3849 Int_t nModule2 = -1;
3850 Int_t nCaloClusters = caloClusters->GetEntriesFast();
3853 if(phi1 < 0) phi1 += TMath::TwoPi();
3855 Double_t tof1 = ((AliVCluster*) caloClusters->At(iclus))->GetTOF()*1.e9;
3858 for(
Int_t jclus = iclus + 1 ; jclus < nCaloClusters ; jclus++)
3860 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
3865 Double_t tof2 = clus2->GetTOF()*1.e9;
3873 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
3911 if(phi2 < 0) phi2 += TMath::TwoPi();
3913 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));
3915 Bool_t inPi0Window = kFALSE;
3916 if(mass < 0.18 && mass > 0.1) inPi0Window = kTRUE ;
3918 if ( nModule < 12 && nModule2 < 12 )
3925 if ( nModule == nModule2 )
3939 nModule > 11 && nModule2 > 11 &&
fNModules > 12 )
3946 if ( nModule == nModule2 )
3962 if(nModule == nModule2 && nModule >= 0 && nModule <
fNModules)
3976 AliDebug(1,
"Check DCal-PHOS pairs\n");
3981 if(phi1 >= 260*TMath::DegToRad() && phi1 < 280) sector1 = 0;
3982 if(phi1 >= 280*TMath::DegToRad() && phi1 < 300) sector1 = 1;
3983 if(phi1 >= 300*TMath::DegToRad() && phi1 < 320) sector1 = 2;
3993 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4011 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4013 if(phiPHOS >= 260*TMath::DegToRad() && phiPHOS < 280) sector2 = 0;
4014 if(phiPHOS >= 280*TMath::DegToRad() && phiPHOS < 300) sector2 = 1;
4015 if(phiPHOS >= 300*TMath::DegToRad() && phiPHOS < 320) sector2 = 2;
4027 AliDebug(1,
"Check EMCAL(DCal)-EMCAL(PHOS) pairs\n");
4032 if(phi1 >= 80*TMath::DegToRad() && phi1 < 100) sector1 = 0;
4033 if(phi1 >= 100*TMath::DegToRad() && phi1 < 120) sector1 = 1;
4034 if(phi1 >= 120*TMath::DegToRad() && phi1 < 140) sector1 = 2;
4035 if(phi1 >= 140*TMath::DegToRad() && phi1 < 160) sector1 = 3;
4036 if(phi1 >= 160*TMath::DegToRad() && phi1 < 180) sector1 = 4;
4037 if(phi1 >= 180*TMath::DegToRad() && phi1 < 190) sector1 = 5;
4039 for(
Int_t jclus = 0 ; jclus < caloClusters->GetEntriesFast() ; jclus++)
4041 AliVCluster* clus2 = (AliVCluster*) caloClusters->At(jclus);
4046 Double_t tof2 = clus2->GetTOF()*1.e9;
4049 Double_t diffTof = TMath::Abs(tof1-tof2);
4053 if( !
IsGoodCluster(absIdMax, clus2->GetM02(), clus2->GetNCells(), cells)
4078 if(phiPHOS < 0) phiPHOS += TMath::TwoPi();
4080 if(phiPHOS >= 80*TMath::DegToRad() && phiPHOS < 100) sector2 = 0;
4081 if(phiPHOS >= 100*TMath::DegToRad() && phiPHOS < 120) sector2 = 1;
4082 if(phiPHOS >= 120*TMath::DegToRad() && phiPHOS < 140) sector2 = 2;
4083 if(phiPHOS >= 140*TMath::DegToRad() && phiPHOS < 160) sector2 = 3;
4084 if(phiPHOS >= 160*TMath::DegToRad() && phiPHOS < 180) sector2 = 4;
4085 if(phiPHOS >= 180*TMath::DegToRad() && phiPHOS < 190) sector2 = 5;
4160 Int_t nCellsPerCluster, AliVCaloCells* cells)
4169 if(!
GetCaloUtils()->GetEMCALRecoUtils()->IsRejectExoticCluster())
4182 Float_t ampMax = cells->GetCellAmplitude(absIdMax);
4185 if(ampMax < 0.01)
return kFALSE;
4187 if(1-
GetECross(absIdMax,cells)/ampMax > 0.95)
return kFALSE;
4200 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4221 AliDebug(1,
"Start");
4233 AliVCaloCells * cells = 0x0;
4247 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END",
GetCalorimeterString().
Data()));
4249 if( !caloClusters || !cells )
4251 AliFatal(Form(
"AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available"));
4255 if(caloClusters->GetEntriesFast() == 0)
return ;
4279 TParticle * primStack = 0;
4280 AliAODMCParticle * primAOD = 0;
4285 AliStack * stack = 0;
4290 nprim = stack->GetNtrack();
4294 TClonesArray * mcparticles = 0;
4298 if( !mcparticles )
return;
4299 nprim = mcparticles->GetEntriesFast();
4303 for(
Int_t i=0 ; i < nprim; i++)
4305 if ( !
GetReader()->AcceptParticleMCLabel( i ) ) continue ;
4311 primStack = stack->Particle(i) ;
4314 AliWarning(
"ESD primaries pointer not available!!");
4318 pdg = primStack->GetPdgCode();
4319 status = primStack->GetStatusCode();
4323 if ( status > 11 )
continue;
4326 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
4327 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
4328 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
4337 primAOD = (AliAODMCParticle *) mcparticles->At(i);
4340 AliWarning(
"AOD primaries pointer not available!!");
4344 pdg = primAOD->GetPdgCode();
4345 status = primAOD->GetStatus();
4349 if (!primAOD->IsPrimary())
continue;
4351 if ( status > 11 )
continue;
4354 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
4355 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
4356 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
4361 fPrimaryMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
4365 if(eMC < 0.2)
continue;
4372 if (TMath::Abs(etaMC) > 1)
continue;
4376 phiMC += TMath::TwoPi();
4380 else if (pdg==111) mcIndex =
kmcPi0;
4381 else if (pdg==221) mcIndex =
kmcEta;
4382 else if (TMath::Abs(pdg)==11) mcIndex =
kmcElectron;
4390 Bool_t inacceptance = kTRUE;
4393 inacceptance = kFALSE ;
4403 if(!inacceptance)
continue;
4425 if(clus->GetNCells() < 3)
return ;
4427 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4429 Int_t id = clus->GetCellsAbsId()[ipos];
4432 Float_t amp = cells->GetCellAmplitude(
id);
4444 AliWarning(Form(
"Wrong calculated energy %f",energy));
4455 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
4457 Int_t id = clus->GetCellsAbsId()[ipos];
4460 Float_t amp = cells->GetCellAmplitude(
id);
4472 Float_t l0org = clus->GetM02();
4473 Float_t l1org = clus->GetM20();
4474 Float_t dorg = clus->GetDispersion();
4478 if(
IsDataMC() && clus->GetNLabels() > 0)
4505 Float_t cellEmin [] = {0.05,0.1,0.15,0.2};
4506 Float_t cellTmin [] = {50.,100.,1000000.};
4508 for(
Int_t iw = 0; iw < 12; iw++)
4510 for(
Int_t iEmin = 0; iEmin < 4; iEmin++)
4512 for(
Int_t iTmin = 0; iTmin < 3; iTmin++)
4518 Float_t disp = 0, dEta = 0, dPhi = 0;
4519 Float_t sEta = 0, sPhi = 0, sEtaPhi = 0;
4523 cellEmin[iEmin], cellTmin[iTmin], bc,
4524 newEnergy, l0, l1, disp, dEta, dPhi,
4525 sEta, sPhi, sEtaPhi);
4546 clus->SetM02(l0org);
4547 clus->SetM20(l1org);
4548 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