18 #include <TClonesArray.h>
19 #include <TObjString.h>
20 #include "TParticle.h"
21 #include "TDatabasePDG.h"
30 #include "AliVCluster.h"
31 #include "AliAODMCParticle.h"
32 #include "AliMixedEvent.h"
33 #include "AliAODEvent.h"
34 #include "AliESDEvent.h"
37 #include "AliPHOSGeoUtils.h"
38 #include "AliEMCALGeometry.h"
50 fMinDist(0.), fMinDist2(0.), fMinDist3(0.),
51 fRejectTrackMatch(0), fFillTMHisto(kFALSE),
52 fTimeCutMin(-10000), fTimeCutMax(10000),
54 fNLMCutMin(-1), fNLMCutMax(10),
55 fFillSSHistograms(0), fFillEMCALRegionSSHistograms(0), fFillOnlySimpleSSHisto(1),
56 fNOriginHistograms(9), fNPrimaryHistograms(5),
57 fMomentum(), fPrimaryMom(), fProdVertex(),
58 fConstantTimeShift(0),
62 fhNCellsE(0), fhCellsE(0),
63 fhMaxCellDiffClusterE(0), fhTimePt(0), fhEtaPhi(0),
65 fhEPhoton(0), fhPtPhoton(0),
66 fhPhiPhoton(0), fhEtaPhoton(0),
67 fhEtaPhiPhoton(0), fhEtaPhi05Photon(0),
68 fhPtCentralityPhoton(0), fhPtEventPlanePhoton(0),
72 fhDispE(0), fhLam0E(0), fhLam0Pt(0), fhLam1E(0),
73 fhDispETRD(0), fhLam0ETRD(0), fhLam0PtTRD(0), fhLam1ETRD(0),
74 fhDispETM(0), fhLam0ETM(0), fhLam0PtTM(0), fhLam1ETM(0),
75 fhDispETMTRD(0), fhLam0ETMTRD(0), fhLam0PtTMTRD(0), fhLam1ETMTRD(0),
77 fhNCellsLam0LowE(0), fhNCellsLam1LowE(0), fhNCellsDispLowE(0),
78 fhNCellsLam0HighE(0), fhNCellsLam1HighE(0), fhNCellsDispHighE(0),
80 fhEtaLam0LowE(0), fhPhiLam0LowE(0),
81 fhEtaLam0HighE(0), fhPhiLam0HighE(0),
82 fhLam0DispLowE(0), fhLam0DispHighE(0),
83 fhLam1Lam0LowE(0), fhLam1Lam0HighE(0),
84 fhDispLam1LowE(0), fhDispLam1HighE(0),
85 fhDispEtaE(0), fhDispPhiE(0),
86 fhSumEtaE(0), fhSumPhiE(0), fhSumEtaPhiE(0),
87 fhDispEtaPhiDiffE(0), fhSphericityE(0),
88 fhDispSumEtaDiffE(0), fhDispSumPhiDiffE(0),
91 fhMCPhotonELambda0NoOverlap(0), fhMCPhotonELambda0TwoOverlap(0), fhMCPhotonELambda0NOverlap(0),
93 fhEmbeddedSignalFractionEnergy(0),
94 fhEmbedPhotonELambda0FullSignal(0), fhEmbedPhotonELambda0MostlySignal(0),
95 fhEmbedPhotonELambda0MostlyBkg(0), fhEmbedPhotonELambda0FullBkg(0),
96 fhEmbedPi0ELambda0FullSignal(0), fhEmbedPi0ELambda0MostlySignal(0),
97 fhEmbedPi0ELambda0MostlyBkg(0), fhEmbedPi0ELambda0FullBkg(0),
99 fhTimePtPhotonNoCut(0), fhTimePtPhotonSPD(0),
100 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
101 fhPtPhotonNPileUpSPDVtx(0), fhPtPhotonNPileUpTrkVtx(0),
102 fhPtPhotonNPileUpSPDVtxTimeCut(0), fhPtPhotonNPileUpTrkVtxTimeCut(0),
103 fhPtPhotonNPileUpSPDVtxTimeCut2(0), fhPtPhotonNPileUpTrkVtxTimeCut2(0),
105 fhEClusterSM(0), fhEPhotonSM(0),
106 fhPtClusterSM(0), fhPtPhotonSM(0),
107 fhMCConversionVertex(0), fhMCConversionVertexTRD(0)
136 for(Int_t i = 0; i < 7; i++)
178 for(Int_t i = 0; i < 5; i++)
185 for(Int_t i = 0; i < 2; i++)
199 for(Int_t i = 0; i < 6; i++)
207 for(Int_t ieta = 0; ieta < 4; ieta++)
209 for(Int_t iphi = 0; iphi < 3; iphi++)
219 for(Int_t ism =0; ism < 20; ism++)
227 for(Int_t il0 = 0; il0 < 2; il0++)
229 for(Int_t i = 0; i < 7; i++)
242 for(Int_t ism =0; ism < 20; ism++)
278 for(Int_t ism = 0; ism < 20; ism++)
288 for(Int_t ilarge = 0; ilarge < 5; ilarge++)
322 if(phicluster < 0) phicluster+=TMath::TwoPi();
326 AliDebug(2,Form(
"Current Event %d; Before selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
328 ecluster,ptcluster, phicluster*TMath::RadToDeg(),etacluster));
336 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
346 AliDebug(2,Form(
"\t Cluster %d Pass E Cut",calo->GetID()));
353 Double_t tof = calo->GetTOF()*1e9;
356 if(tof < fTimeCutMin || tof >
fTimeCutMax)
return kFALSE;
358 AliDebug(2,Form(
"\t Cluster %d Pass Time Cut",calo->GetID()));
366 AliDebug(2,Form(
"\t Cluster %d Pass NCell Cut",calo->GetID()));
371 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
return kFALSE ;
372 AliDebug(2,Form(
"\t Cluster %d pass NLM %d of out of range",calo->GetID(), nMaxima));
382 if(! in )
return kFALSE ;
385 AliDebug(2,Form(
"\t Fiducial cut passed"));
400 AliDebug(2,
"\t Reject track-matched clusters");
404 AliDebug(2,
"\t Track-matching cut passed");
412 Double_t distBad=calo->GetDistanceToBadChannel() ;
413 if(distBad < 0.) distBad=9999. ;
418 else AliDebug(2,Form(
"\t Bad channel cut passed %4.2f > %2.2f",distBad,
fMinDist));
423 AliDebug(1,Form(
"Current Event %d; After selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
440 Double_t photonY = -100 ;
441 Double_t photonE = -1 ;
442 Double_t photonPt = -1 ;
443 Double_t photonPhi = 100 ;
444 Double_t photonEta = -1 ;
451 Bool_t inacceptance = kFALSE ;
453 TParticle * primStack = 0;
454 AliAODMCParticle * primAOD = 0;
457 AliStack * stack = 0;
463 AliFatal(
"Stack not available, is the MC handler called? STOP");
466 nprim = stack->GetNtrack();
470 TClonesArray * mcparticles = 0;
476 AliFatal(
"Standard MCParticles not available!");
479 nprim = mcparticles->GetEntriesFast();
482 for(Int_t i=0 ; i < nprim; i++)
484 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
488 primStack = stack->Particle(i) ;
491 AliWarning(
"ESD primaries pointer not available!!");
495 pdg = primStack->GetPdgCode();
496 status = primStack->GetStatusCode();
498 if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ;
506 photonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
510 primAOD = (AliAODMCParticle *) mcparticles->At(i);
513 AliWarning(
"AOD primaries pointer not available!!");
517 pdg = primAOD->GetPdgCode();
518 status = primAOD->GetStatus();
520 if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ;
523 fMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
525 photonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
529 if(pdg != 22 ) continue ;
540 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
543 inacceptance = kTRUE;
573 if(status > 1) continue ;
575 Bool_t takeIt = kFALSE ;
613 if(!takeIt) continue ;
617 if(TMath::Abs(photonY) < 1.0)
638 if(TMath::Abs(photonY) < 1.0)
665 Float_t time = cluster->GetTOF()*1.e9;
686 if(cells->GetCellAmplitude(absIdMax) > 0.1 && TMath::Abs(time) < 30)
688 for (Int_t ipos = 0; ipos < cluster->GetNCells(); ipos++)
690 Int_t absId = cluster->GetCellsAbsId()[ipos];
692 if( absId == absIdMax ) continue ;
694 Double_t tcell = cells->GetCellTime(absId);
695 Float_t amp = cells->GetCellAmplitude(absId);
702 Float_t diff = (time-tcell);
704 if( cells->GetCellAmplitude(absIdMax) < 0.1 )
continue ;
717 AliESDEvent* esdEv =
dynamic_cast<AliESDEvent*
> (event);
718 AliAODEvent* aodEv =
dynamic_cast<AliAODEvent*
> (event);
729 nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD();
730 nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks();
735 nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD();
736 nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks();
748 if(TMath::Abs(time) < 25)
754 if(time < 75 && time > -25)
765 Float_t maxCellFraction, Int_t & largeTime)
769 Float_t
energy = cluster->E();
770 Int_t ncells = cluster->GetNCells();
771 Float_t lambda0 = cluster->GetM02();
772 Float_t lambda1 = cluster->GetM20();
773 Float_t disp = cluster->GetDispersion()*cluster->GetDispersion();
778 if(phi < 0) phi+=TMath::TwoPi();
812 Int_t etaRegion = -1, phiRegion = -1;
814 if(etaRegion >= 0 && etaRegion < 4 && phiRegion >=0 && phiRegion < 3)
836 if ( lambda0 >=0.30 && lambda0 <= 0.40 ) l0bin = 1;
837 else if( lambda0 >=0.23 && lambda0 <= 0.26 ) l0bin = 0;
839 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
841 for(Int_t ipt = 0; ipt < 7; ipt++)
843 if( pt >= ptLimit[ipt] && pt < ptLimit[ipt+1] )
872 Int_t ncell = cluster->GetNCells();
873 Int_t * sortList =
new Int_t [ncell];
874 Float_t * enerList =
new Float_t [ncell];
875 Double_t * timeList =
new Double_t[ncell];
877 for(Int_t icell = 0; icell < ncell; icell++)
879 Int_t absId = cluster->GetCellAbsId(icell);
880 Float_t cellE = cells->GetCellAmplitude(absId);
881 Double_t cellTime = cells->GetCellTime(absId);
887 enerList[icell] = cellE;
888 timeList[icell] = cellTime;
891 TMath::Sort(ncell,enerList,sortList);
897 Int_t absIdMax = cluster->GetCellAbsId(sortList[0]);
899 Double_t cellTimeMax = timeList[sortList[0]];
906 Float_t largeTimeE = 0;
907 for(Int_t icell = 1; icell < ncell; icell++)
909 Int_t absId = cluster->GetCellAbsId(sortList[icell]);
910 Float_t cellE = enerList[sortList[icell]];
911 Double_t cellTime = timeList[sortList[icell]];
915 if ( absId == absIdMax )
continue;
920 if(weight < 0.01)
continue;
922 if ( TMath::Abs(cellTime) > 50 )
928 if ( l0bin == -1 )
continue;
949 if ( TMath::Abs(cellTime) > 50 )
960 Int_t icol = -1, icolAbs = -1;
961 Int_t irow = -1, irowAbs = -1;
968 if ( TMath::Abs(cellTime) > 50 )
1000 delete [] enerList ;
1001 delete [] timeList ;
1005 Float_t l0 = 0., l1 = 0.;
1006 Float_t dispp= 0., dEta = 0., dPhi = 0.;
1007 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1011 l0, l1, dispp, dEta, dPhi, sEta, sPhi, sEtaPhi);
1028 if (energy < 2 ) ebin = 0;
1029 else if (energy < 4 ) ebin = 1;
1030 else if (energy < 6 ) ebin = 2;
1031 else if (energy < 10) ebin = 3;
1032 else if (energy < 15) ebin = 4;
1033 else if (energy < 20) ebin = 5;
1045 Float_t dZ = cluster->GetTrackDz();
1046 Float_t dR = cluster->GetTrackDx();
1053 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1101 AliVCaloCells* cells = 0;
1106 Float_t fraction = 0;
1109 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1114 Float_t clusterE = 0;
1116 for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
1118 cellE = cells->GetCellAmplitude(cluster->GetCellAbsId(icell));
1120 fraction+=cellE*cluster->GetCellAmplitudeFraction(icell);
1126 AliDebug(1,Form(
"Energy fraction of embedded signal %2.3f, Energy %2.3f",fraction, clusterE));
1142 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
1148 const UInt_t nlabels = cluster->GetNLabels();
1149 Int_t overpdg[nlabels];
1158 else if(noverlaps == 1)
1162 else if(noverlaps > 1)
1168 AliWarning(Form(
"n overlaps = %d!!", noverlaps));
1173 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1179 else if(fraction > 0.5)
1183 else if(fraction > 0.1)
1210 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1216 else if(fraction > 0.5)
1220 else if(fraction > 0.1)
1254 else if(energy < 6.)
1275 if (energy < 2 ) ebin = 0;
1276 else if (energy < 4 ) ebin = 1;
1277 else if (energy < 6 ) ebin = 2;
1278 else if (energy < 10) ebin = 3;
1279 else if (energy < 15) ebin = 4;
1280 else if (energy < 20) ebin = 5;
1301 Float_t dZ = cluster->GetTrackDz();
1302 Float_t dR = cluster->GetTrackDx();
1312 Bool_t positive = kFALSE;
1313 if(track) positive = (track->Charge()>0);
1348 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1352 Float_t dEdx = track->GetTPCsignal();
1353 Float_t eOverp = cluster->E()/track->P();
1365 AliWarning(Form(
"Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT?", dR,dZ));
1388 if(cluster->GetNLabels()==1)
1438 const Int_t buffersize = 255;
1439 char onePar[buffersize] ;
1441 snprintf(onePar,buffersize,
"--- AliAnaPhoton ---:") ;
1445 snprintf(onePar,buffersize,
"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster);",
fMinDist) ;
1447 snprintf(onePar,buffersize,
"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation);",
fMinDist2) ;
1449 snprintf(onePar,buffersize,
"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study);",
fMinDist3) ;
1463 return new TObjString(parList) ;
1472 TList * outputContainer =
new TList() ;
1473 outputContainer->SetName(
"PhotonHistos") ;
1496 Int_t bin[] = {0,2,4,6,10,15,20,100};
1498 TString cut[] = {
"Open",
"Reader",
"E",
"Time",
"NCells",
"NLM",
"Fidutial",
"Matching",
"Bad",
"PID"};
1499 for (Int_t i = 0; i < 10 ; i++)
1502 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1503 nptbins,ptmin,ptmax);
1509 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1510 nptbins,ptmin,ptmax);
1516 fhEClusterSM =
new TH2F(
"hEClusterSM",
"Raw clusters E and super-module number",
1517 nptbins,ptmin,ptmax,
1523 fhPtClusterSM =
new TH2F(
"hPtClusterSM",
"Raw clusters #it{p}_{T} and super-module number",
1524 nptbins,ptmin,ptmax,
1530 fhEPhotonSM =
new TH2F(
"hEPhotonSM",
"Selected clusters E and super-module number",
1531 nptbins,ptmin,ptmax,
1537 fhPtPhotonSM =
new TH2F(
"hPtPhotonSM",
"Selected clusters #it{p}_{T} and super-module number",
1538 nptbins,ptmin,ptmax,
1544 fhNCellsE =
new TH2F (
"hNCellsE",
"# of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nbins,nmin,nmax);
1546 fhNCellsE->SetYTitle(
"# of cells in cluster");
1549 fhCellsE =
new TH2F (
"hCellsE",
"energy of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nptbins*2,ptmin,ptmax);
1550 fhCellsE->SetXTitle(
"#it{E}_{cluster} (GeV)");
1551 fhCellsE->SetYTitle(
"#it{E}_{cell} (GeV)");
1554 fhTimePt =
new TH2F (
"hTimePt",
"time of cluster vs pT of clusters", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1555 fhTimePt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1556 fhTimePt->SetYTitle(
"#it{time} (ns)");
1559 fhMaxCellDiffClusterE =
new TH2F (
"hMaxCellDiffClusterE",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
1560 nptbins,ptmin,ptmax, 500,0,1.);
1565 fhEPhoton =
new TH1F(
"hEPhoton",
"Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax);
1567 fhEPhoton->SetXTitle(
"#it{E}_{#gamma}(GeV)");
1570 fhPtPhoton =
new TH1F(
"hPtPhoton",
"Number of #gamma over calorimeter vs #it{p}_{T}",nptbins,ptmin,ptmax);
1572 fhPtPhoton->SetXTitle(
"p_{T #gamma}(GeV/#it{c})");
1577 fhPtCentralityPhoton =
new TH2F(
"hPtCentralityPhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,100);
1582 fhPtEventPlanePhoton =
new TH2F(
"hPtEventPlanePhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1589 (
"hEtaPhi",
"cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1595 (
"hPhiPhoton",
"#phi_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1597 fhPhiPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1601 (
"hEtaPhoton",
"#eta_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1603 fhEtaPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1607 (
"hEtaPhiPhoton",
"#eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1614 (
"hEtaPhi05Photon",
"#eta vs #phi, E < 0.5",netabins,etamin,etamax,nphibins,phimin,phimax);
1620 fhNLocMax =
new TH2F(
"hNLocMax",
"Number of local maxima in cluster",
1621 nptbins,ptmin,ptmax,10,0,10);
1629 fhLam0E =
new TH2F (
"hLam0E",
"#lambda_{0}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1630 fhLam0E->SetYTitle(
"#lambda_{0}^{2}");
1631 fhLam0E->SetXTitle(
"#it{E} (GeV)");
1632 outputContainer->Add(
fhLam0E);
1634 fhLam0Pt =
new TH2F (
"hLam0Pt",
"#lambda_{0}^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1635 fhLam0Pt->SetYTitle(
"#lambda_{0}^{2}");
1636 fhLam0Pt->SetXTitle(
"#it{p}_{T} (GeV)");
1639 fhLam1E =
new TH2F (
"hLam1E",
"#lambda_{1}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1640 fhLam1E->SetYTitle(
"#lambda_{1}^{2}");
1641 fhLam1E->SetXTitle(
"#it{E} (GeV)");
1642 outputContainer->Add(
fhLam1E);
1644 fhDispE =
new TH2F (
"hDispE",
" dispersion^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1646 fhDispE->SetXTitle(
"#it{E} (GeV) ");
1647 outputContainer->Add(
fhDispE);
1651 fhLam0ETM =
new TH2F (
"hLam0ETM",
"#lambda_{0}^{2} vs E, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1652 fhLam0ETM->SetYTitle(
"#lambda_{0}^{2}");
1656 fhLam0PtTM =
new TH2F (
"hLam0PtTM",
"#lambda_{0}^{2} vs #it{p}_{T}, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1658 fhLam0PtTM->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1661 fhLam1ETM =
new TH2F (
"hLam1ETM",
"#lambda_{1}^{2} vs E, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1662 fhLam1ETM->SetYTitle(
"#lambda_{1}^{2}");
1666 fhDispETM =
new TH2F (
"hDispETM",
" dispersion^{2} vs E, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1674 fhLam0ETRD =
new TH2F (
"hLam0ETRD",
"#lambda_{0}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1679 fhLam0PtTRD =
new TH2F (
"hLam0PtTRD",
"#lambda_{0}^{2} vs #it{p}_{T}, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1684 fhLam1ETRD =
new TH2F (
"hLam1ETRD",
"#lambda_{1}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1689 fhDispETRD =
new TH2F (
"hDispETRD",
" dispersion^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1696 fhLam0ETMTRD =
new TH2F (
"hLam0ETMTRD",
"#lambda_{0}^{2} vs E, EMCAL SM covered by TRD, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1701 fhLam0PtTMTRD =
new TH2F (
"hLam0PtTMTRD",
"#lambda_{0}^{2} vs #it{p}_{T}, EMCAL SM covered by TRD, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1706 fhLam1ETMTRD =
new TH2F (
"hLam1ETMTRD",
"#lambda_{1}^{2} vs E, EMCAL SM covered by TRD, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1711 fhDispETMTRD =
new TH2F (
"hDispETMTRD",
" dispersion^{2} vs E, EMCAL SM covered by TRD, cut on track-matching residual |#Delta #eta| < 0.05, |#Delta #phi| < 0.05", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1720 fhNCellsLam0LowE =
new TH2F (
"hNCellsLam0LowE",
"N_{cells} in cluster vs #lambda_{0}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1725 fhNCellsLam0HighE =
new TH2F (
"hNCellsLam0HighE",
"N_{cells} in cluster vs #lambda_{0}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1730 fhNCellsLam1LowE =
new TH2F (
"hNCellsLam1LowE",
"N_{cells} in cluster vs #lambda_{1}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1735 fhNCellsLam1HighE =
new TH2F (
"hNCellsLam1HighE",
"N_{cells} in cluster vs #lambda_{1}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1740 fhNCellsDispLowE =
new TH2F (
"hNCellsDispLowE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1745 fhNCellsDispHighE =
new TH2F (
"hNCellsDispHighE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1750 fhEtaLam0LowE =
new TH2F (
"hEtaLam0LowE",
"#eta vs #lambda_{0}^{2}, E < 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1755 fhPhiLam0LowE =
new TH2F (
"hPhiLam0LowE",
"#phi vs #lambda_{0}^{2}, E < 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1760 fhEtaLam0HighE =
new TH2F (
"hEtaLam0HighE",
"#eta vs #lambda_{0}^{2}, #it{E} > 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1765 fhPhiLam0HighE =
new TH2F (
"hPhiLam0HighE",
"#phi vs #lambda_{0}^{2}, #it{E} > 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1770 fhLam1Lam0LowE =
new TH2F (
"hLam1Lam0LowE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1775 fhLam1Lam0HighE =
new TH2F (
"hLam1Lam0HighE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1780 fhLam0DispLowE =
new TH2F (
"hLam0DispLowE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1785 fhLam0DispHighE =
new TH2F (
"hLam0DispHighE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1790 fhDispLam1LowE =
new TH2F (
"hDispLam1LowE",
"Dispersion^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1795 fhDispLam1HighE =
new TH2F (
"hDispLam1HighE",
"Dispersion^{2} vs #lambda_{1^{2}} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1802 fhDispEtaE =
new TH2F (
"hDispEtaE",
"#sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1804 fhDispEtaE->SetYTitle(
"#sigma^{2}_{#eta #eta}");
1807 fhDispPhiE =
new TH2F (
"hDispPhiE",
"#sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1809 fhDispPhiE->SetYTitle(
"#sigma^{2}_{#phi #phi}");
1812 fhSumEtaE =
new TH2F (
"hSumEtaE",
"#delta^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i})^{2} / #Sigma w_{i} - <#eta>^{2} vs E", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1814 fhSumEtaE->SetYTitle(
"#delta^{2}_{#eta #eta}");
1817 fhSumPhiE =
new TH2F (
"hSumPhiE",
"#delta^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs E",
1818 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1820 fhSumPhiE->SetYTitle(
"#delta^{2}_{#phi #phi}");
1823 fhSumEtaPhiE =
new TH2F (
"hSumEtaPhiE",
"#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",
1824 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
1829 fhDispEtaPhiDiffE =
new TH2F (
"hDispEtaPhiDiffE",
"#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",
1830 nptbins,ptmin,ptmax,200, -10,10);
1835 fhSphericityE =
new TH2F (
"hSphericityE",
"(#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",
1836 nptbins,ptmin,ptmax, 200, -1,1);
1838 fhSphericityE->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
1841 fhDispSumEtaDiffE =
new TH2F (
"hDispSumEtaDiffE",
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1843 fhDispSumEtaDiffE->SetYTitle(
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average");
1846 fhDispSumPhiDiffE =
new TH2F (
"hDispSumPhiDiffE",
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1848 fhDispSumPhiDiffE->SetYTitle(
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average");
1851 for(Int_t i = 0; i < 7; i++)
1853 fhDispEtaDispPhi[i] =
new TH2F (Form(
"hDispEtaDispPhi_EBin%d",i),Form(
"#sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]),
1854 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1859 fhLambda0DispEta[i] =
new TH2F (Form(
"hLambda0DispEta_EBin%d",i),Form(
"#lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]),
1860 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1865 fhLambda0DispPhi[i] =
new TH2F (Form(
"hLambda0DispPhi_EBin%d",i),Form(
"#lambda^{2}_{0}} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",bin[i],bin[i+1]),
1866 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1879 TString cutTM [] = {
"NoCut",
""};
1881 for(Int_t i = 0; i < 2; i++)
1884 (Form(
"hTrackMatchedDEta%s",cutTM[i].
Data()),
1885 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1886 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1891 (Form(
"hTrackMatchedDPhi%s",cutTM[i].
Data()),
1892 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1893 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1898 (Form(
"hTrackMatchedDEtaDPhi%s",cutTM[i].
Data()),
1899 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1900 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1905 (Form(
"hTrackMatchedDEtaPos%s",cutTM[i].
Data()),
1906 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1907 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1912 (Form(
"hTrackMatchedDPhiPos%s",cutTM[i].
Data()),
1913 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1914 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1919 (Form(
"hTrackMatchedDEtaDPhiPos%s",cutTM[i].
Data()),
1920 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1921 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1926 (Form(
"hTrackMatchedDEtaNeg%s",cutTM[i].
Data()),
1927 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1928 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1933 (Form(
"hTrackMatchedDPhiNeg%s",cutTM[i].
Data()),
1934 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1935 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1940 (Form(
"hTrackMatchedDEtaDPhiNeg%s",cutTM[i].
Data()),
1941 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1942 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1946 fhdEdx[i] =
new TH2F (Form(
"hdEdx%s",cutTM[i].
Data()),Form(
"matched track <dE/dx> vs cluster E, %s",cutTM[i].
Data()),
1947 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
1948 fhdEdx[i]->SetXTitle(
"#it{E} (GeV)");
1949 fhdEdx[i]->SetYTitle(
"<dE/dx>");
1951 fhEOverP[i] =
new TH2F (Form(
"hEOverP%s",cutTM[i].
Data()),Form(
"matched track E/p vs cluster E, %s",cutTM[i].
Data()),
1952 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1953 fhEOverP[i]->SetXTitle(
"#it{E} (GeV)");
1965 outputContainer->Add(
fhdEdx[i]);
1971 (Form(
"hTrackMatchedDEtaTRD%s",cutTM[i].
Data()),
1972 Form(
"d#eta of cluster-track vs cluster energy, SM behind TRD, %s",cutTM[i].
Data()),
1973 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1978 (Form(
"hTrackMatchedDPhiTRD%s",cutTM[i].
Data()),
1979 Form(
"d#phi of cluster-track vs cluster energy, SM behing TRD, %s",cutTM[i].
Data()),
1980 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1985 (Form(
"hEOverPTRD%s",cutTM[i].
Data()),
1986 Form(
"matched track E/p vs cluster E, behind TRD, %s",cutTM[i].
Data()),
1987 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1999 (Form(
"hTrackMatchedDEtaMCNoOverlap%s",cutTM[i].
Data()),
2000 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2001 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2006 (Form(
"hTrackMatchedDPhiMCNoOverlap%s",cutTM[i].
Data()),
2007 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2008 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2015 (Form(
"hTrackMatchedDEtaMCOverlap%s",cutTM[i].
Data()),
2016 Form(
"d#eta of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2017 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2022 (Form(
"hTrackMatchedDPhiMCOverlap%s",cutTM[i].
Data()),
2023 Form(
"d#phi of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2024 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2032 (Form(
"hTrackMatchedDEtaMCConversion%s",cutTM[i].
Data()),
2033 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2034 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2039 (Form(
"hTrackMatchedDPhiMCConversion%s",cutTM[i].
Data()),
2040 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2041 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2049 (Form(
"hTrackMatchedMCParticle%s",cutTM[i].
Data()),
2050 Form(
"Origin of particle vs energy %s",cutTM[i].
Data()),
2051 nptbins,ptmin,ptmax,8,0,8);
2071 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
2073 for(Int_t i = 0 ; i < 7 ; i++)
2076 Form(
"Selected photon #it{p}_{T} distribution, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2081 Form(
"Photon cluster E vs #it{t}_{max}-#it{t}_{cell} in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2082 nptbins,ptmin,ptmax,400,-200,200);
2088 fhTimePtPhotonNoCut =
new TH2F (
"hTimePtPhoton_NoCut",
"time of photon cluster vs pT of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2093 fhTimePtPhotonSPD =
new TH2F (
"hTimePtPhoton_SPD",
"time of photon cluster vs pT of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2098 fhTimeNPileUpVertSPD =
new TH2F (
"hTime_NPileUpVertSPD",
"time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,20,0,20);
2103 fhTimeNPileUpVertTrack =
new TH2F (
"hTime_NPileUpVertTracks",
"time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 20,0,20 );
2109 nptbins,ptmin,ptmax,20,0,20);
2115 nptbins,ptmin,ptmax, 20,0,20 );
2121 nptbins,ptmin,ptmax,20,0,20);
2127 nptbins,ptmin,ptmax, 20,0,20 );
2133 nptbins,ptmin,ptmax,20,0,20);
2139 nptbins,ptmin,ptmax, 20,0,20 );
2148 for(Int_t ieta = 0; ieta < 4; ieta++)
2150 for(Int_t iphi = 0; iphi < 3; iphi++)
2174 new TH2F(Form(
"hLam0_eta%d_phi%d_sm%d",ieta,iphi,ism),
2175 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2176 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2182 new TH2F(Form(
"hLam1_eta%d_phi%d_sm%d",ieta,iphi,ism),
2183 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2184 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2192 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
2193 TString l0bin [] = {
"0.23<#lambda^{2}_{0}<0.26",
"0.3<#lambda^{2}_{0}<0.4"};
2195 for(Int_t il0 = 0; il0 < 2; il0++)
2197 for(Int_t ipt = 0; ipt < 7; ipt++)
2200 (Form(
"hEtaPhiLam0Bin%d_PtBin%d",il0,ipt),
2201 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2202 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2203 netabins,etamin,etamax,nphibins,phimin,phimax);
2209 (Form(
"hColRowLam0Bin%d_PtBin%d",il0,ipt),
2210 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, w > 0",
2211 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2212 96,0,96,5*24,0,5*24);
2218 (Form(
"hColRowLam0Bin%d_PtBin%dWeighted",il0,ipt),
2219 Form(
"cluster cell row vs column weighted in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2220 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2221 96,0,96,5*24,0,5*24);
2227 (Form(
"hColRowLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2228 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, |t| > 50 ns, w > 0",
2229 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2230 96,0,96,5*24,0,5*24);
2254 (Form(
"hEtaPhiLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2255 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, t > 50 ns, %s",
2256 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2257 netabins,etamin,etamax,nphibins,phimin,phimax);
2263 (Form(
"hCellClusterIndexEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2264 Form(
"#it{t}_{cell} vs cell index (E sorted) in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2265 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2266 ntimebins,timemin,timemax,30,0,30);
2272 (Form(
"hCellClusterEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2273 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2274 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2275 ntimebins,timemin,timemax,100,0,5);
2281 (Form(
"hCellClusterEFracAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2282 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2283 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2284 ntimebins,timemin,timemax,100,0,1);
2293 (Form(
"hLam1Lam0Bin%d_sm%d",il0,ism),
2294 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, %s",ism,l0bin[il0].
Data()),
2295 nptbins,ptmin,ptmax,40,0,0.4);
2301 (Form(
"hTimeLam0Bin%d_sm%d",il0,ism),
2302 Form(
"#it{p}_{T} vs cluster cell time in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2303 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2309 (Form(
"hTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2310 Form(
"#it{p}_{T} vs cluster cell time weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2311 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2317 (Form(
"hDTimeLam0Bin%d_sm%d",il0,ism),
2318 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2319 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2325 (Form(
"hDTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2326 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2327 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2333 (Form(
"hCellClusterEFracLam0Bin%d_sm%d",il0,ism),
2334 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2335 nptbins,ptmin,ptmax,100,0,1);
2349 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2350 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2351 nptbins,ptmin,ptmax,100,0,1);
2357 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell_Total",il0,ism),
2358 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, all |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2359 nptbins,ptmin,ptmax,100,0,1);
2365 (Form(
"hCellClusterELam0Bin%d_sm%d",il0,ism),
2366 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2367 nptbins,ptmin,ptmax,500,0,10);
2373 (Form(
"hCellClusterELam0Bin%d_sm%d_Weighted",il0,ism),
2374 Form(
"#it{p}_{T} vs cell E weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2375 nptbins,ptmin,ptmax,500,0,10);
2381 (Form(
"hCellClusterELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2382 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2383 nptbins,ptmin,ptmax,500,0,10);
2389 (Form(
"hCellClusterIndexELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2390 Form(
"#it{p}_{T} vs cell index (E sorted) in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2391 nptbins,ptmin,ptmax,30,0,30);
2397 (Form(
"hNCellsWithLargeTimeInClusterLam0Bin%d_sm%d",il0,ism),
2398 Form(
"#it{p}_{T} vs number of cells in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2399 nptbins,ptmin,ptmax,30,0,30);
2420 (Form(
"hLam0_sm%d",ism),
2421 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d",ism),
2422 nptbins,ptmin,ptmax,40,0,0.4);
2424 fhLam0PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2428 (Form(
"hLam1_sm%d",ism),
2429 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d",ism),
2430 nptbins,ptmin,ptmax,40,0,0.4);
2432 fhLam1PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2436 (Form(
"hLam0_sm%d_LargeTimeInClusterCell",ism),
2437 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ism),
2438 nptbins,ptmin,ptmax,40,0,0.4);
2444 (Form(
"hLam1_sm%d_LargeTimeInClusterCell",ism),
2445 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ism),
2446 nptbins,ptmin,ptmax,40,0,0.4);
2487 for(Int_t ilarge = 0; ilarge < 5; ilarge++)
2490 (Form(
"hLam0_NLargeTimeInClusterCell%d",ilarge),
2491 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ilarge),
2492 nptbins,ptmin,ptmax,40,0,0.4);
2498 (Form(
"hLam1_NLargeTimeInClusterCell%d",ilarge),
2499 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ilarge),
2500 nptbins,ptmin,ptmax,40,0,0.4);
2511 TString ptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}",
2512 "#pi^{0}" ,
"#eta" ,
"e^{#pm}" ,
"#gamma->e^{#pm}" ,
2513 "hadron?" ,
"Anti-N" ,
"Anti-P" ,
2514 "#gamma_{prompt}",
"#gamma_{fragmentation}",
"#gamma_{ISR}" ,
"String" } ;
2516 TString pname[] = {
"Photon" ,
"PhotonPi0Decay" ,
"PhotonEtaDecay",
"PhotonOtherDecay",
2517 "Pi0" ,
"Eta" ,
"Electron" ,
"Conversion" ,
2518 "Hadron" ,
"AntiNeutron" ,
"AntiProton" ,
2519 "PhotonPrompt",
"PhotonFragmentation",
"PhotonISR" ,
"String" } ;
2523 fhMCE[i] =
new TH1F(Form(
"hE_MC%s",pname[i].
Data()),
2524 Form(
"cluster from %s : E ",ptype[i].
Data()),
2525 nptbins,ptmin,ptmax);
2526 fhMCE[i]->SetXTitle(
"#it{E} (GeV)");
2527 outputContainer->Add(
fhMCE[i]) ;
2529 fhMCPt[i] =
new TH1F(Form(
"hPt_MC%s",pname[i].
Data()),
2530 Form(
"cluster from %s : #it{p}_{T} ",ptype[i].
Data()),
2531 nptbins,ptmin,ptmax);
2532 fhMCPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2533 outputContainer->Add(
fhMCPt[i]) ;
2535 fhMCEta[i] =
new TH2F(Form(
"hEta_MC%s",pname[i].
Data()),
2536 Form(
"cluster from %s : #eta ",ptype[i].
Data()),
2537 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2538 fhMCEta[i]->SetYTitle(
"#eta");
2539 fhMCEta[i]->SetXTitle(
"#it{E} (GeV)");
2540 outputContainer->Add(
fhMCEta[i]) ;
2542 fhMCPhi[i] =
new TH2F(Form(
"hPhi_MC%s",pname[i].
Data()),
2543 Form(
"cluster from %s : #phi ",ptype[i].
Data()),
2544 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2545 fhMCPhi[i]->SetYTitle(
"#phi (rad)");
2546 fhMCPhi[i]->SetXTitle(
"#it{E} (GeV)");
2547 outputContainer->Add(
fhMCPhi[i]) ;
2551 Form(
"MC - Reco E from %s",pname[i].
Data()),
2552 nptbins,ptmin,ptmax, 200,-50,50);
2553 fhMCDeltaE[i]->SetYTitle(
"#Delta #it{E} (GeV)");
2558 Form(
"MC - Reco #it{p}_{T} from %s",pname[i].
Data()),
2559 nptbins,ptmin,ptmax, 200,-50,50);
2560 fhMCDeltaPt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2561 fhMCDeltaPt[i]->SetYTitle(
"#Delta #it{p}_{T} (GeV/#it{c})");
2564 fhMC2E[i] =
new TH2F (Form(
"h2E_MC%s",pname[i].
Data()),
2565 Form(
"E distribution, reconstructed vs generated from %s",pname[i].
Data()),
2566 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2567 fhMC2E[i]->SetXTitle(
"#it{E}_{rec} (GeV)");
2568 fhMC2E[i]->SetYTitle(
"#it{E}_{gen} (GeV)");
2569 outputContainer->Add(
fhMC2E[i]);
2571 fhMC2Pt[i] =
new TH2F (Form(
"h2Pt_MC%s",pname[i].
Data()),
2572 Form(
"p_T distribution, reconstructed vs generated from %s",pname[i].
Data()),
2573 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2574 fhMC2Pt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2575 fhMC2Pt[i]->SetYTitle(
"p_{T,gen} (GeV/#it{c})");
2576 outputContainer->Add(
fhMC2Pt[i]);
2579 TString pptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
2580 "#gamma_{#eta decay}",
"#gamma_{other decay}" ,
2581 "#gamma_{prompt}" ,
"#gamma_{fragmentation}",
"#gamma_{ISR}" } ;
2583 TString ppname[] = {
"Photon" ,
"PhotonPi0Decay" ,
2584 "PhotonEtaDecay",
"PhotonOtherDecay" ,
2585 "PhotonPrompt" ,
"PhotonFragmentation",
"PhotonISR" } ;
2589 fhEPrimMC[i] =
new TH1F(Form(
"hEPrim_MC%s",ppname[i].
Data()),
2590 Form(
"primary photon %s : E ",pptype[i].
Data()),
2591 nptbins,ptmin,ptmax);
2592 fhEPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2596 Form(
"primary photon %s : #it{p}_{T} ",pptype[i].
Data()),
2597 nptbins,ptmin,ptmax);
2598 fhPtPrimMC[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2601 fhYPrimMC[i] =
new TH2F(Form(
"hYPrim_MC%s",ppname[i].
Data()),
2602 Form(
"primary photon %s : Rapidity ",pptype[i].
Data()),
2603 nptbins,ptmin,ptmax,200,-2,2);
2605 fhYPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2609 Form(
"primary photon %s : #eta",pptype[i].
Data()),
2610 nptbins,ptmin,ptmax,200,-2,2);
2616 Form(
"primary photon %s : #phi ",pptype[i].
Data()),
2617 nptbins,ptmin,ptmax,nphibins,0,TMath::TwoPi());
2624 Form(
"primary photon %s in acceptance: E ",pptype[i].
Data()),
2625 nptbins,ptmin,ptmax);
2630 Form(
"primary photon %s in acceptance: #it{p}_{T} ",pptype[i].
Data()),
2631 nptbins,ptmin,ptmax);
2636 Form(
"primary photon %s in acceptance: Rapidity ",pptype[i].
Data()),
2637 nptbins,ptmin,ptmax,100,-1,1);
2643 Form(
"primary photon %s in acceptance: #eta ",pptype[i].
Data()),
2644 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2650 Form(
"primary photon %s in acceptance: #phi ",pptype[i].
Data()),
2651 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2659 TString ptypess[] = {
"#gamma",
"hadron?",
"#pi^{0}",
"#eta",
"#gamma->e^{#pm}",
"e^{#pm}"} ;
2661 TString pnamess[] = {
"Photon",
"Hadron",
"Pi0",
"Eta",
"Conversion",
"Electron"} ;
2663 for(Int_t i = 0; i < 6; i++)
2666 Form(
"cluster from %s : E vs #lambda_{0}^{2}",ptypess[i].
Data()),
2667 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2673 Form(
"cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}",ptypess[i].
Data()),
2674 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2680 Form(
"cluster from %s : E vs #lambda_{1}^{2}",ptypess[i].
Data()),
2681 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2687 Form(
"cluster from %s : E vs dispersion^{2}",ptypess[i].
Data()),
2688 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2694 Form(
"# of cells in cluster from %s vs E of clusters",ptypess[i].
Data()),
2695 nptbins,ptmin,ptmax, nbins,nmin,nmax);
2697 fhMCNCellsE[i]->SetYTitle(
"# of cells in cluster");
2701 Form(
"energy vs difference of cluster energy from %s - max cell energy / cluster energy, good clusters",ptypess[i].
Data()),
2702 nptbins,ptmin,ptmax, 500,0,1.);
2710 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2711 ssbins,ssmin,ssmax,500,0,1.);
2717 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2718 ssbins,ssmin,ssmax,500,0,1.);
2724 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2725 ssbins,ssmin,ssmax,500,0,1.);
2731 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2732 nbins/5,nmin,nmax/5,500,0,1.);
2738 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2739 nbins/5,nmin,nmax/5,500,0,1.);
2745 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2746 nbins/5,nmin,nmax/5,500,0,1.);
2754 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptypess[i].
Data()),
2755 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2761 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptypess[i].
Data()),
2762 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2768 Form(
"cluster from %s : #delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",ptypess[i].
Data()),
2769 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
2775 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptypess[i].
Data()),
2776 nptbins,ptmin,ptmax,200,-10,10);
2782 Form(
"cluster from %s : (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",ptypess[i].
Data()),
2783 nptbins,ptmin,ptmax, 200,-1,1);
2785 fhMCESphericity[i]->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
2788 for(Int_t ie = 0; ie < 7; ie++)
2791 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",pnamess[i].
Data(),bin[ie],bin[ie+1]),
2792 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2798 Form(
"cluster from %s : #lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",pnamess[i].
Data(),bin[ie],bin[ie+1]),
2799 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2805 Form(
"cluster from %s :#lambda^{2}_{0} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",pnamess[i].
Data(),bin[ie],bin[ie+1]),
2806 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2815 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
2818 "cluster from Photon : E vs #lambda_{0}^{2}",
2819 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2825 "cluster from Photon : E vs #lambda_{0}^{2}",
2826 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2832 "cluster from Photon : E vs #lambda_{0}^{2}",
2833 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2839 if(
GetReader()->IsEmbeddedClusterSelectionOn())
2842 "Energy Fraction of embedded signal versus cluster energy",
2843 nptbins,ptmin,ptmax,100,0.,1.);
2849 "cluster from Photon embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2850 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2856 "cluster from Photon embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2857 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2863 "cluster from Photon embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2864 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2870 "cluster from Photonm embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2871 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2877 "cluster from Pi0 embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2878 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2884 "cluster from Pi0 embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2885 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2891 "cluster from Pi0 embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2892 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2898 "cluster from Pi0 embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2899 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2906 fhMCConversionVertex =
new TH2F(
"hMCPhotonConversionVertex",
"cluster from converted photon, #it{p}_{T} vs vertex distance",
2907 nptbins,ptmin,ptmax,500,0,500);
2914 fhMCConversionVertexTRD =
new TH2F(
"hMCPhotonConversionVertexTRD",
"cluster from converted photon, #it{p}_{T} vs vertex distance, SM covered by TRD",
2915 nptbins,ptmin,ptmax,500,0,500);
2923 TString region[] = {
"ITS",
"TPC",
"TRD",
"TOF",
"Top EMCal",
"In EMCal"};
2924 for(Int_t iR = 0; iR < 6; iR++)
2927 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s",region[iR].
Data()),
2928 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2934 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s",region[iR].
Data()),
2935 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2944 for(Int_t iR = 0; iR < 6; iR++)
2947 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2948 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2954 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2955 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2997 return outputContainer ;
3006 AliFatal(
"!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
3008 AliFatal(
"!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
3040 Double_t v[3] = {0,0,0};
3044 TObjArray * pl = 0x0;
3045 AliVCaloCells* cells = 0;
3088 TClonesArray * clusterList = 0;
3097 Int_t nclusters = clusterList->GetEntriesFast();
3098 for (Int_t iclus = 0; iclus < nclusters; iclus++)
3100 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
3114 Int_t nCaloClusters = pl->GetEntriesFast();
3122 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
3124 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
3128 Int_t evtIndex = 0 ;
3131 evtIndex=
GetMixedEvent()->EventIndexForCaloCluster(calo->GetID()) ;
3143 Double_t vertex[]={0,0,0};
3156 AliAODPWG4Particle aodph = AliAODPWG4Particle(
fMomentum);
3160 Int_t label = calo->GetLabel();
3161 aodph.SetLabel(label);
3162 aodph.SetCaloLabel(calo->GetID(),-1);
3168 Double_t distBad=calo->GetDistanceToBadChannel() ;
3169 if (distBad >
fMinDist3) aodph.SetDistToBad(2) ;
3170 else if(distBad >
fMinDist2) aodph.SetDistToBad(1) ;
3171 else aodph.SetDistToBad(0) ;
3186 AliDebug(1,Form(
"Origin of candidate, bit map %d",aodph.GetTag()));
3193 Float_t maxCellFraction = 0;
3195 if( absIdMax < 0 ) AliFatal(
"Wrong absID");
3197 Int_t largeTimeInCellCluster = kFALSE;
3199 aodph.SetFiducialArea(largeTimeInCellCluster);
3202 aodph.SetM02(calo->GetM02());
3204 aodph.SetNLM(nMaxima);
3206 Float_t time = calo->GetTOF()*1e9;
3208 aodph.SetTime(time);
3210 aodph.SetNCells(calo->GetNCells());
3212 aodph.SetSModNumber(nSM);
3225 aodph.SetIdentifiedParticleType(
GetCaloPID()->GetIdentifiedParticleType(calo));
3227 AliDebug(1,Form(
"PDG of identified particle %d",aodph.GetIdentifiedParticleType()));
3242 AliDebug(1,
"PID Bits set");
3245 AliDebug(1,Form(
"Photon selection cuts passed: pT %3.2f, pdg %d",aodph.Pt(),aodph.GetIdentifiedParticleType()));
3254 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
3269 for(Int_t icell = 0; icell < calo->GetNCells(); icell++)
3284 AliDebug(1,Form(
"End fill AODs, with %d entries",
GetOutputAODBranch()->GetEntriesFast()));
3296 Double_t v[3] = {0,0,0};
3304 AliDebug(1,Form(
"AOD branch entries %d", naod));
3311 for(Int_t iaod = 0; iaod < naod ; iaod++)
3314 Int_t
pdg = ph->GetIdentifiedParticleType();
3316 AliDebug(2,Form(
"PDG %d, MC TAG %d, Calorimeter <%d>",ph->GetIdentifiedParticleType(),ph->GetTag(), ph->GetDetectorTag())) ;
3323 AliDebug(2,Form(
"ID Photon: pt %f, phi %f, eta %f", ph->Pt(),ph->Phi(),ph->Eta())) ;
3327 Float_t ptcluster = ph->Pt();
3328 Float_t phicluster = ph->Phi();
3329 Float_t etacluster = ph->Eta();
3330 Float_t ecluster = ph->E();
3372 Int_t label = ph->GetLabel();
3376 AliDebug(1,Form(
"*** bad label ***: label %d", label));
3383 Int_t pdg = 0, status = 0, momLabel = -1;
3394 Int_t tag =ph->GetTag();
3395 Int_t mcParticleTag = -1;
3425 Int_t pdgD = 0, statusD = 0, daugLabel = -1;
3426 Bool_t okD = kFALSE;
3445 Float_t m02 = ph->GetM02();
3451 if(cluster) m20 = cluster->GetM20();
3454 if ( prodR < 75. ) convR = 0;
3455 else if ( prodR < 275. ) convR = 1;
3456 else if ( prodR < 375. ) convR = 2;
3457 else if ( prodR < 400. ) convR = 3;
3458 else if ( prodR < 430. ) convR = 4;
3556 if(mcParticleTag >= 0 &&
fhMCE[mcParticleTag])
3582 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3586 printf(
"Min Distance to Bad Channel = %2.1f\n",
fMinDist);
3587 printf(
"Min Distance to Bad Channel 2 = %2.1f\n",
fMinDist2);
3588 printf(
"Min Distance to Bad Channel 3 = %2.1f\n",
fMinDist3);
3591 printf(
"Number of cells in cluster is > %d \n",
fNCellsCut);
Bool_t IsPileUpFromSPD() const
virtual Bool_t IsFiducialCutOn() const
Bool_t fFillOnlySimpleSSHisto
Fill selected cluster histograms, selected SS histograms.
Float_t GetHistoPtMax() const
TH2F * fhLam1ETMTRD
! Cluster lambda1 vs E, SM covered by TRD, cut on Track Matching residual
TH1F * fhClusterCutsE[10]
! control histogram on the different photon selection cuts, E
TH2F * fhPhiLam0LowE
! Cluster phi vs lambda0, E<2
TH2F * fhNCellsLam1HighE
! number of cells in cluster vs lambda1, E>2
TH2F * fhLam1Lam0HighE
! Cluster lambda1 vs lambda0, E>2
TH2F * fhTrackMatchedDEtaTRD[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
TH1F * fhMCPt[fgkNmcTypes]
! Number of identified photon vs cluster pT coming from MC particle
TH2F * fhTrackMatchedDEtaDPhiNeg[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before photon cuts ...
Int_t fNCellsCut
Accept for the analysis clusters with more than fNCellsCut cells.
TH2F * fhEmbedPi0ELambda0FullBkg
! Lambda0 vs E for embedded photons with less than 10% of the cluster energy
TH2F * fhDispE
! Cluster dispersion vs E
TH2F * fhMCEta[fgkNmcTypes]
! eta of identified photon coming from MC particle
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Int_t fNLMCutMax
Remove clusters/cells with number of local maxima larger than this value.
TH2F * fhMCNCellsE[fgkNssTypes]
! NCells per cluster vs energy
TH2F * fhDTimeLam0BinPerSMWeighted[2][20]
! t_max-t_cell, not maximum cluster cell, in a l0 bin per SM, log weight Cell E / Cluster E ...
Int_t GetHistoNClusterCellMin() const
Float_t GetHistoPtMin() const
TH2F * fhDispEtaDispPhi[7]
! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
virtual Float_t GetMaxPt() const
TH2F * fhCellClusterEFracAndTime[2][7]
! Cell in Cluster E cell/ E cluster vs cell Time, in a l0 bin, different Pt bins
TH2F * fhLam1ETRD
! Cluster lambda1 vs E, SM covered by TRD
TH2F * fhEClusterSM
! Cluster E distribution per SM, before any selection, after reader
TH2F * fhMaxCellDiffClusterE
! Fraction of energy carried by cell with maximum energy
TH2F * fhPtClusterSM
! Cluster E distribution per SM, before any selection, after reader
TH2F * fhDispETRD
! Cluster dispersion vs E, SM covered by TRD
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
Float_t GetHistodEdxMax() const
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fhLam1PerNLargeTimeInClusterCell[5]
! Cluster lambda1 vs Pt, when any secondary cell has t > 50 ns, per number of large time secondary ce...
TH2F * fhTrackMatchedDEtaDPhiPos[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
TH2F * fhLam0PerNLargeTimeInClusterCell[5]
! Cluster lambda0 vs Pt, when any secondary cell has t > 50 ns, per number of large time secondary ce...
TH2F * fhMCPtLambda0[fgkNssTypes]
! pT vs Lambda0 from MC particle
TH2F * fhNCellsLam1LowE
! number of cells in cluster vs lambda1
Bool_t fFillTMHisto
Fill track matching plots.
TH2F * fhPtPhotonNPileUpSPDVtx
! photon pt vs number of spd pile-up vertices
virtual Bool_t IsDataMC() const
TH2F * fhPtPhotonNPileUpTrkVtx
! photon pt vs number of track pile-up vertices
TH2F * fhNCellsDispLowE
! number of cells in cluster vs dispersion
TH2F * fhTrackMatchedDEtaPos[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhSphericityE
! shower sphericity in eta vs phi
TH2F * fhDispEtaE
! shower dispersion in eta direction
TH2F * fhPtPhotonNPileUpTrkVtxTimeCut
! photon pt vs number of track pile-up vertices, time cut +- 25 ns
virtual Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const
TH2F * fhEtaPrimMC[fgkNmcPrimTypes]
! Eta of generated photon
AliEMCALRecoUtils * GetEMCALRecoUtils() const
TH2F * fhPtPhotonSM
! photon-like cluster E distribution per SM
virtual AliStack * GetMCStack() const
Bool_t ReadAODMCParticles() const
Bool_t fFillEMCALRegionSSHistograms
Fill shower shape histograms in EMCal slices.
virtual void GetVertex(Double_t vertex[3]) const
TH2F * fhTrackMatchedDPhiTRD[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
Float_t fMinDist2
Cuts on Minimal distance to study acceptance evaluation.
TH1F * fhPtPhotonPileUp[7]
! pT distribution of selected photons
TH1F * fhPtPhoton
! Number of identified photon vs transerse momentum
Bool_t fRejectTrackMatch
If PID on, reject clusters which have an associated TPC track.
void MakeAnalysisFillAOD()
TH2F * fhTrackMatchedDPhiMCNoOverlap[2]
! Phi distance between track and cluster vs cluster E, not other particle overlap, after and before photon cuts
TH2F * fhPtEventPlanePhoton
! event plane vs photon pT
virtual AliVEvent * GetInputEvent() const
TH2F * fhLam0PtTRD
! Cluster lambda0 vs pT, SM covered by TRD
TH2F * fhMCConversionVertex
! Conversion distance for photon clusters that have at least a contributor from the conversion...
TH2F * fhEmbedPi0ELambda0FullSignal
! Lambda0 vs E for embedded photons with more than 90% of the cluster energy
Bool_t IsPileUpFromSPDAndNotEMCal() const
Check if event is from pile-up determined by SPD and not by EMCal.
TH2F * fhEmbedPi0ELambda0MostlyBkg
! Lambda0 vs E for embedded photons with 50%<fraction<10%
TH2F * fhMCESphericity[fgkNssTypes]
! shower sphericity, eta vs phi
TH2F * fhEtaPhiLargeTimeInClusterCell[2][7]
! Cluster eta/phi, with at least one significant cell with large time
TH2F * fhMC2Pt[fgkNmcTypes]
! pT distribution, Reco vs MC coming from MC particle
TH2F * fhEtaPhiPhoton
! Pseudorapidity vs Phi of identified photon for E > 0.5
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
TH2F * fhPhiPhoton
! Azimuthal angle of identified photon vs transerse momentum
virtual Double_t GetEventPlaneAngle() const
TH2F * fhYPrimMC[fgkNmcPrimTypes]
! Rapidity of generated photon
TH2F * fhTrackMatchedDEtaDPhi[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
void FillAcceptanceHistograms()
TH2F * fhSumEtaE
! shower dispersion in eta direction
virtual Bool_t IsTrackMatched(AliVCluster *cluster, AliVEvent *event)
virtual Bool_t IsPileUpAnalysisOn() const
TH2F * fhMCEDispEtaPhiDiff[fgkNssTypes]
! shower dispersion in eta -phi direction
TH2F * fhColRowLam0BinPtBin[2][7]
! Cell hits, not maximum cluster cell, in a l0 bin, different Pt bins
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH2F * fhCellClusterELam0BinPerSM[2][20]
! Cell E vs cluster pT, not maximum cluster cell, in a l0 bin per SM
Int_t GetHistoPhiBins() const
TH2F * fhEtaLam0LowE
! Cluster eta vs lambda0, E<2
TH2F * fhPtPhotonNPileUpSPDVtxTimeCut
! photon pt vs number of spd pile-up vertices, time cut +-25 ns
TH2F * fhMCConversionVertexTRD
! Conversion distance for photon clusters that have at least a contributor from the conversion...
Bool_t fFillSSHistograms
Fill shower shape histograms.
TH2F * fhdEdx[2]
! Matched track dEdx vs cluster E, after and before photon cuts
TH2F * fhLam0ETRD
! Cluster lambda0 vs E, SM covered by TRD
TH2F * fhDispETM
! Cluster dispersion vs E, cut on Track Matching residual
TH2F * fhEmbedPhotonELambda0FullSignal
! Lambda0 vs E for embedded photons with more than 90% of the cluster energy
Float_t GetHistoTrackResidualPhiMin() const
TH2F * fhEtaPhoton
! Pseudorapidity of identified photon vs transerse momentum
TH2F * fhDispSumEtaDiffE
! difference of 2 eta dispersions
Bool_t IsPileUpFromNotSPDAndNotEMCal() const
Check if event not from pile-up determined neither by SPD nor by EMCal.
virtual Int_t GetEventCentrality() const
TH2F * fhTimePtPhotonSPD
! Time of photon cluster vs Pt, IsSPDPileUp
TH2F * fhMCDispEtaDispPhi[7][fgkNssTypes]
! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
Float_t GetHistoTrackResidualEtaMin() const
Int_t GetHistoNClusterCellBins() const
virtual TClonesArray * GetOutputAODBranch() const
TH2F * fhLam0EMCALRegionPerSM[4][3][20]
! Cluster lambda0 vs Pt, in different EMCal regions
virtual void GetVertex(Double_t v[3]) const
void InitParameters()
Initialize the parameters of the analysis.
Int_t GetHistoPOverEBins() const
TH2F * fhNCellsE
! number of cells in cluster vs E
TH1F * fhPtPrimMC[fgkNmcPrimTypes]
! Number of generated photon vs pT
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
Float_t GetHistoPhiMin() const
TH2F * fhTimePt
! Time of photon cluster vs pt
TH2F * fhEtaPhi
! Pseudorapidity vs Phi of clusters for E > 0.5
TH2F * fhMCLambda0DispPhi[7][fgkNssTypes]
! shower shape correlation l0 vs disp phi
virtual Bool_t IsCaloPIDOn() const
TH2F * fhLam0PerSMLargeTimeInClusterCell[20]
! Cluster lambda0 vs Pt, when any secondary cell has t > 50 ns, in different SM
TH2F * fhCellClusterEAndTime[2][7]
! Cell in Cluster E cell vs cell Time, in a l0 bin, different Pt bins
TH2F * fhNCellsWithLargeTimeInCluster[2][20]
! Number of cells in cluster with large time
TH2F * fhEPhotonSM
! photon-like cluster E distribution per SM
TH2F * fhEOverPTRD[2]
! Matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts...
TString GetPIDParametersList()
Put data member values in string to keep in output container.
TH2F * fhMCELambda0[fgkNssTypes]
! E vs Lambda0 from MC particle
TLorentzVector GetMother(Int_t label, const AliCaloTrackReader *reader, Bool_t &ok)
Bool_t IsPileUpFromSPDOrEMCal() const
Check if event is from pile-up determined by SPD or EMCal.
TH2F * fhTrackMatchedDPhiNeg[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
Bool_t IsPileUpFromEMCalAndNotSPD() const
Check if event is from pile-up determined by EMCal, not by SPD.
void MakeAnalysisFillHistograms()
TH2F * fhMCELambda1[fgkNssTypes]
! E vs Lambda1 from MC particle
virtual Float_t GetMinEnergy() const
TH2F * fhLambda0DispPhi[7]
! shower shape correlation l0 vs disp phi
TH2F * fhLambda0DispEta[7]
! shower shape correlation l0 vs disp eta
virtual AliVCaloCells * GetEMCALCells() const
Base class for CaloTrackCorr analysis algorithms.
virtual TString GetBaseParametersList()
TH2F * fhCellClusterEFracLam0BinPerSMLargeTime[2][20]
! Cell in Cluster E cell / Ecluster vs cluster pT, with large time
virtual TString GetCalorimeterString() const
Int_t fNOriginHistograms
Fill only NOriginHistograms of the 14 defined types.
static const Int_t fgkNmcPrimTypes
Total number of MC primary histograms.
virtual Bool_t IsRealCaloAcceptanceOn() const
Float_t GetHistodEdxMin() const
virtual AliFiducialCut * GetFiducialCut()
TH2F * fhCellClusterEFracLam0BinPerSMLargeTimeTotal[2][20]
! Sum of all Cell in Cluster , with large time E cell / Ecluster vs cluster pT
TH2F * fhTimePtPhotonNoCut
! Time of photon cluster vs Pt, no cut
TH2F * fhPtPhotonNPileUpSPDVtxTimeCut2
! photon pt vs number of spd pile-up vertices, time cut +-75 ns
TH2F * fhEOverP[2]
! Matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts ...
TH2F * fhTrackMatchedDEta[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH1F * fhEPrimMC[fgkNmcPrimTypes]
! Number of generated photon vs energy
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhCellsE
! energy of cells in cluster vs E of cluster
TH2F * fhDispETMTRD
! Cluster dispersion vs E, SM covered by TRD, cut on Track Matching residual
TH2F * fhPhiPrimMC[fgkNmcPrimTypes]
! Phi of generted photon
TH2F * fhLam1ETM
! Cluster lambda1 vs E, cut on Track Matching residual
Float_t GetHistoTrackResidualPhiMax() const
Filter EMCal/PHOS clusters for photon analysis.
TH2F * fhLam1PerSM[20]
! Cluster lambda0 vs Pt, in different SM
TH2F * fhEtaPhi05Photon
! Pseudorapidity vs Phi of identified photon for E < 0.5
virtual AliEMCALGeometry * GetEMCALGeometry() const
TH2F * fhDispSumPhiDiffE
! difference of 2 phi dispersions
void FillShowerShapeHistograms(AliVCluster *cluster, Int_t mcTag, Float_t maxCellEFraction, Int_t &largeTimeInside)
Fill cluster Shower Shape histograms.
TH2F * fhNCellsLam0HighE
! number of cells in cluster vs lambda0, E>2
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Int_t CheckOrigin(Int_t label, const AliCaloTrackReader *reader, Int_t calorimeter)
virtual AliAODEvent * GetOutputEvent() const
virtual Bool_t NewOutputAOD() const
Float_t GetHistoShowerShapeMin() const
TList * GetCreateOutputObjects()
TH2F * fhMCLambda0DispEta[7][fgkNssTypes]
! shower shape correlation l0 vs disp eta
Int_t GetHistodEdxBins() const
TH2F * fhMCNCellsvsClusterMaxCellDiffE6[fgkNssTypes]
! NCells vs fraction of energy of max cell for E > 6
virtual AliCalorimeterUtils * GetCaloUtils() const
Int_t GetHistoNClusterCellMax() const
TH2F * fhCellClusterELam0BinPerSMLargeTime[2][20]
! Cell in Cluster E cell vs cluster pT, with large time
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fhLam1PerSMLargeTimeInClusterCell[20]
! Cluster lambda1 vs Pt, when any secondary cell has t > 50 ns, in different SM
Float_t fMinDist3
One more cut on distance used for acceptance-efficiency study.
Int_t GetHistoTrackResidualPhiBins() const
TH2F * fhMCPhotonELambda0TwoOverlap
! E vs Lambda0 from MC photons, 2 particles overlap
Int_t GetNumberOfSuperModulesUsed() const
TH2F * fhMCConversionLambda1RcutTRD[6]
! Shower shape M20 of photon conversions, depending on conversion vertex, SM covered by TRD ...
virtual Bool_t IsHighMultiplicityAnalysisOn() const
TH2F * fhMCPhotonELambda0NOverlap
! E vs Lambda0 from MC photons, N particles overlap
TH1F * fhClusterCutsPt[10]
! control histogram on the different photon selection cuts, pT
Float_t fMinDist
Minimal distance to bad channel to accept cluster.
TH2F * fhTrackMatchedMCParticle[2]
! Trace origin of matched particle
TH2F * fhMCMaxCellDiffClusterE[fgkNssTypes]
! Fraction of energy carried by cell with maximum energy
TH2F * fhMC2E[fgkNmcTypes]
! E distribution, Reco vs MC coming from MC particle
TH2F * fhCellClusterEFracLam0BinPerSM[2][20]
! Cell E / Cluster E vs cluster pT, not maximum cluster cell, in a l0 bin per SM
Float_t fConstantTimeShift
Apply a 600 ns time shift in case of simulation, shift in ns.
TH2F * fhEmbedPhotonELambda0MostlySignal
! Lambda0 vs E for embedded photons with 90%<fraction<50%
virtual Double_t GetEventWeight() const
void SetPIDBits(AliVCluster *cluster, AliAODPWG4Particle *aodph, AliCalorimeterUtils *cu, AliVEvent *event)
Set Bits for PID selection.
Int_t fNPrimaryHistograms
Fill only NPrimaryHistograms of the 7 defined types.
virtual AliCaloPID * GetCaloPID()
void FillPileUpHistograms(AliVCluster *cluster, AliVCaloCells *cells, Int_t absIdMax)
Fill some histograms to understand effect of pile-up.
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVCaloCells *cells)
Find the number of local maxima in cluster.
TH2F * fhMCNCellsvsClusterMaxCellDiffE2[fgkNssTypes]
! NCells vs fraction of energy of max cell for 2 < E < 6 GeV
TH2F * fhNCellsDispHighE
! number of cells in cluster vs dispersion, E>2
TH2F * fhEmbeddedSignalFractionEnergy
! Fraction of photon energy of embedded signal vs cluster energy
virtual TObjArray * GetPHOSClusters() const
Float_t GetHistoEtaMin() const
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1F * fhEPhoton
! Number of identified photon vs energy
TH2F * fhTrackMatchedDEtaMCConversion[2]
! Eta distance between track and cluster vs cluster E, originated in conversion, after and before pho...
TH2F * fhLam0ETMTRD
! Cluster lambda0 vs E, SM covered by TRD, cut on Track Matching residual
TH2F * fhLam0DispLowE
! Cluster lambda0 vs dispersion, E<2
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
Double_t fTimeCutMax
Remove clusters/cells with time larger than this value, in ns.
TH2F * fhTrackMatchedDPhiMCConversion[2]
! Phi distance between track and cluster vs cluster E, originated in conversion, after and before pho...
TH1F * fhMCE[fgkNmcTypes]
! Number of identified photon vs cluster energy coming from MC particle
TH2F * fhCellClusterIndexEAndTime[2][7]
! Cell in Cluster index (low index high energy, high index low energy) vs cell Time ...
TH2F * fhColRowLam0BinPtBinLargeTime[2][7]
! Cell hits, not maximum cluster cell, in a l0 bin, different Pt bins, cell with large time ...
TH2F * fhDispLam1LowE
! Cluster disp vs lambda1, E<2
TH2F * fhMCEDispEta[fgkNssTypes]
! shower dispersion in eta direction
TLorentzVector GetDaughter(Int_t daughter, Int_t label, const AliCaloTrackReader *reader, Int_t &pdg, Int_t &status, Bool_t &ok, Int_t &daugLabel, TVector3 &prodVertex)
Float_t GetHistoEtaMax() const
TH1F * fhPtPrimMCAcc[fgkNmcPrimTypes]
! Number of generated photon vs pT, in calorimeter acceptance
virtual void AddAODParticle(AliAODPWG4Particle part)
Float_t GetPHOSPtMin() const
TH2F * fhLam0E
! Cluster lambda0 vs E
TH2F * fhLam0PtTMTRD
! Cluster lambda0 vs pT, SM covered by TRD, cut on Track Matching residual
Int_t GetHistoPtBins() const
Double_t fTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
static const Int_t fgkNssTypes
Total number of MC histograms for shower shape studies.
TH2F * fhTimeLam0BinPerSMWeighted[2][20]
! Cell time, not maximum cluster cell, in a l0 bin per SM, log weight Cell E / Cluster E ...
Float_t GetEMCALPtMin() const
TH2F * fhMCDeltaE[fgkNmcTypes]
! MC-Reco E distribution coming from MC particle
TH2F * fhTrackMatchedDEtaNeg[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhLam1EMCALRegionPerSM[4][3][20]
! Cluster lambda1 vs Pt, in different EMCal regions
TH2F * fhSumPhiE
! shower dispersion in phi direction
TH2F * fhEmbedPhotonELambda0FullBkg
! Lambda0 vs E for embedded photons with less than 10% of the cluster energy
TH2F * fhLam0ETM
! Cluster lambda0 vs E, cut on Track Matching residual
TH2F * fhMCEDispersion[fgkNssTypes]
! E vs Dispersion from MC particle
Int_t GetNOverlaps(const Int_t *label, UInt_t nlabels, Int_t mctag, Int_t mesonLabel, AliCaloTrackReader *reader, Int_t *overpdg)
TH2F * fhEtaLam0HighE
! Cluster eta vs lambda0, E>2
AliVTrack * GetMatchedTrack(AliVCluster *cluster, AliVEvent *event, Int_t index=-1) const
TH2F * fhLam1E
! Cluster lambda1 vs E
TH2F * fhPtPhotonNPileUpTrkVtxTimeCut2
! photon pt vs number of track pile-up vertices, time cut +- 75 ns
TH2F * fhDispEtaPhiDiffE
! shower dispersion eta - phi
TH2F * fhMCDeltaPt[fgkNmcTypes]
! MC-Reco pT distribution coming from MC particle
TH2F * fhDispPhiE
! shower dispersion in phi direction
TH2F * fhMCLambda0vsClusterMaxCellDiffE0[fgkNssTypes]
! Lambda0 vs fraction of energy of max cell for E < 2 GeV
Float_t GetHistoPOverEMax() const
TH2F * fhYPrimMCAcc[fgkNmcPrimTypes]
! Rapidity of generated photon, in calorimeter acceptance
TH2F * fhPhiPrimMCAcc[fgkNmcPrimTypes]
! Phi of generted photon, in calorimeter acceptance
TH2F * fhNCellsLam0LowE
! number of cells in cluster vs lambda0
TH2F * fhMCPhotonELambda0NoOverlap
! E vs Lambda0 from MC photons, no overlap
TH2F * fhColRowLam0BinPtBinWeighted[2][7]
! Cell hits, not maximum cluster cell, in a l0 bin, different Pt bins and log weight Cell E / Cluster...
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
virtual Int_t GetEventNumber() const
virtual Float_t GetMaxEnergy() const
TH2F * fhSumEtaPhiE
! shower dispersion in eta and phi direction
TH2F * fhLam0PerSM[20]
! Cluster lambda0 vs Pt, in different SM
void Init()
Init. Do some checks, abort if the cluster is not the expected PHOS or EMCal.
virtual Float_t GetMinPt() const
TH2F * fhMCPhi[fgkNmcTypes]
! Phi of identified photon coming from MC particle
TH2F * fhClusterTimeDiffPhotonPileUp[7]
! E vs Time difference inside cluster for selected photons
TLorentzVector fPrimaryMom
! Primary MC momentum, temporary container
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Bool_t ClusterSelected(AliVCluster *cl, Int_t nlm)
Int_t GetHistoTimeBins() const
Float_t GetHistoPOverEMin() const
TH1F * fhEPrimMCAcc[fgkNmcPrimTypes]
! Number of generated photon vs energy, in calorimeter acceptance
TH2F * fhTrackMatchedDEtaMCOverlap[2]
! Eta distance between track and cluster vs cluster E, several particle overlap, after and before pho...
TH2F * fhTimeNPileUpVertTrack
! Time of cluster vs n pile-up vertices from Tracks
Float_t GetHistoTimeMax() const
virtual Int_t GetDataType() const
Float_t GetHistoTimeMin() const
Float_t GetHistoShowerShapeMax() const
Bool_t IsPileUpFromEMCal() const
Check if event is from pile-up determined by EMCal.
virtual AliVCluster * FindCluster(TObjArray *clusters, Int_t clId, Int_t &iclus, Int_t first=0)
void FillTrackMatchingResidualHistograms(AliVCluster *calo, Int_t cut)
TH2F * fhTrackMatchedDPhi[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhCellClusterELam0BinPerSMWeighted[2][20]
! Cell E vs cluster pT, not maximum cluster cell, in a l0 bin per SM, log weight Cell E / Cluster E ...
TH2F * fhDispLam1HighE
! Cluster disp vs lambda1, E>2
TH2F * fhPtCentralityPhoton
! centrality vs photon pT
TH2F * fhCellClusterIndexELam0BinPerSMLargeTime[2][20]
! Cell in Cluster index (low index high energy, high index low energy) vs cluster pT...
Float_t GetHistoPhiMax() const
TH2F * fhTrackMatchedDPhiMCOverlap[2]
! Phi distance between track and cluster vs cluster E, several particle overlap, after and before pho...
virtual AliCaloTrackReader * GetReader() const
Int_t GetHistoEtaBins() const
TH2F * fhMCLambda0vsClusterMaxCellDiffE6[fgkNssTypes]
! Lambda0 vs fraction of energy of max cell for E > 6 GeV
TH2F * fhTrackMatchedDPhiPos[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
Float_t GetHistoTrackResidualEtaMax() const
TLorentzVector fMomentum
! Cluster momentum, temporary container
TH2F * fhLam0DispHighE
! Cluster lambda0 vs dispersion, E>2
TH2F * fhEtaPhiLam0BinPtBin[2][7]
! Cluster eta/phi in a l0 bin, different Pt bins
virtual TObjArray * GetEMCALClusters() const
TH2F * fhMCESumEtaPhi[fgkNssTypes]
! shower dispersion in eta vs phi direction
TH2F * fhTrackMatchedDEtaMCNoOverlap[2]
! Eta distance between track and cluster vs cluster E, not other particle overlap, after and before photon cuts
TH2F * fhLam0PtTM
! Cluster lambda0 vs pT, cut on Track Matching residual
TH2F * fhLam1Lam0BinPerSM[2][20]
! Cluster lambda1, in a l0 bin per SM
TH2F * fhLam0Pt
! Cluster lambda0 vs pT
virtual AliVCaloCells * GetPHOSCells() const
TH2F * fhTimeNPileUpVertSPD
! Time of cluster vs n pile-up vertices from SPD
TH2F * fhMCConversionLambda0RcutTRD[6]
! Shower shape M02 of photon conversions, depending on conversion vertex, SM covered by TRD ...
TH2F * fhEtaPrimMCAcc[fgkNmcPrimTypes]
! Phi of generted photon, in calorimeter acceptance
TH2F * fhNLocMax
! number of maxima in selected clusters
static const Int_t fgkNmcTypes
Total number of cluster MC origin histograms.
TH2F * fhEmbedPi0ELambda0MostlySignal
! Lambda0 vs E for embedded photons with 90%<fraction<50%
Bool_t CheckTagBit(Int_t tag, UInt_t test) const
Int_t GetMaxEnergyCell(AliVCaloCells *cells, AliVCluster *clu, Float_t &fraction) const
For a given CaloCluster, it gets the absId of the cell with maximum energy deposit.
TH2F * fhPhiLam0HighE
! Cluster phi vs lambda0, E>2
TH2F * fhMCEDispPhi[fgkNssTypes]
! shower dispersion in phi direction
virtual AliMixedEvent * GetMixedEvent() const
TH2F * fhEmbedPhotonELambda0MostlyBkg
! Lambda0 vs E for embedded photons with 50%<fraction<10%
TVector3 fProdVertex
! Primary MC production vertex, temporary container
TH2F * fhDTimeLam0BinPerSM[2][20]
! t_max-t_cell, not maximum cluster cell, in a l0 bin per SM
TObjString * GetAnalysisCuts()
Save parameters used for analysis in a string.
TH2F * fhLam1Lam0LowE
! Cluster lambda1 vs lambda0, E<2
TH2F * fhMCNCellsvsClusterMaxCellDiffE0[fgkNssTypes]
! NCells vs fraction of energy of max cell for E < 2
Bool_t IsPileUpFromSPDAndEMCal() const
Check if event is from pile-up determined by SPD and EMCal.
TH2F * fhMCConversionLambda0Rcut[6]
! Shower shape M02 of photon conversions, depending on conversion vertex.
TH2F * fhMCLambda0vsClusterMaxCellDiffE2[fgkNssTypes]
! Lambda0 vs fraction of energy of max cell for 2< E < 6 GeV
TH2F * fhMCConversionLambda1Rcut[6]
! Shower shape M20 of photon conversions, depending on conversion vertex.
Int_t GetFirstSMCoveredByTRD() const
Time cut in ns.
void GetEMCALSubregion(AliVCluster *clus, AliVCaloCells *cells, Int_t ®Eta, Int_t ®Phi) const
TH2F * fhTimeLam0BinPerSM[2][20]
! Cell time, not maximum cluster cell, in a l0 bin per SM