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),
56 fFillConversionVertexHisto(0),fFillOnlySimpleSSHisto(1),
57 fFillSSNLocMaxHisto(0),
58 fNOriginHistograms(9), fNPrimaryHistograms(5),
59 fMomentum(), fPrimaryMom(), fProdVertex(),
60 fConstantTimeShift(0), fFillEBinAcceptanceHisto(0), fNEBinCuts(0),
65 fhNCellsE(0), fhCellsE(0),
66 fhMaxCellDiffClusterE(0), fhTimePt(0), fhEtaPhi(0),
68 fhEPhoton(0), fhPtPhoton(0),
69 fhPhiPhoton(0), fhEtaPhoton(0),
70 fhEtaPhiPhoton(0), fhEtaPhi05Photon(0),
71 fhPtCentralityPhoton(0), fhPtEventPlanePhoton(0),
75 fhDispE(0), fhDispPt(0),
76 fhLam0E(0), fhLam0Pt(0),
77 fhLam1E(0), fhLam1Pt(0),
78 fhLam0PtNLM1(0), fhLam0PtNLM2(0),
79 fhLam1PtNLM1(0), fhLam1PtNLM2(0),
80 fhDispETRD(0), fhLam0ETRD(0), fhLam0PtTRD(0), fhLam1ETRD(0),
81 fhDispETM(0), fhLam0ETM(0), fhLam0PtTM(0), fhLam1ETM(0),
82 fhDispETMTRD(0), fhLam0ETMTRD(0), fhLam0PtTMTRD(0), fhLam1ETMTRD(0),
84 fhNCellsLam0LowE(0), fhNCellsLam1LowE(0), fhNCellsDispLowE(0),
85 fhNCellsLam0HighE(0), fhNCellsLam1HighE(0), fhNCellsDispHighE(0),
87 fhEtaLam0LowE(0), fhPhiLam0LowE(0),
88 fhEtaLam0HighE(0), fhPhiLam0HighE(0),
89 fhLam0DispLowE(0), fhLam0DispHighE(0),
90 fhLam1Lam0LowE(0), fhLam1Lam0HighE(0),
91 fhDispLam1LowE(0), fhDispLam1HighE(0),
92 fhDispEtaE(0), fhDispPhiE(0),
93 fhSumEtaE(0), fhSumPhiE(0), fhSumEtaPhiE(0),
94 fhDispEtaPhiDiffE(0), fhSphericityE(0),
95 fhDispSumEtaDiffE(0), fhDispSumPhiDiffE(0),
98 fhMCPhotonELambda0NoOverlap(0), fhMCPhotonELambda0TwoOverlap(0), fhMCPhotonELambda0NOverlap(0),
100 fhEmbeddedSignalFractionEnergy(0),
101 fhEmbedPhotonELambda0FullSignal(0), fhEmbedPhotonELambda0MostlySignal(0),
102 fhEmbedPhotonELambda0MostlyBkg(0), fhEmbedPhotonELambda0FullBkg(0),
103 fhEmbedPi0ELambda0FullSignal(0), fhEmbedPi0ELambda0MostlySignal(0),
104 fhEmbedPi0ELambda0MostlyBkg(0), fhEmbedPi0ELambda0FullBkg(0),
106 fhTimePtPhotonNoCut(0), fhTimePtPhotonSPD(0),
107 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
108 fhPtPhotonNPileUpSPDVtx(0), fhPtPhotonNPileUpTrkVtx(0),
109 fhPtPhotonNPileUpSPDVtxTimeCut(0), fhPtPhotonNPileUpTrkVtxTimeCut(0),
110 fhPtPhotonNPileUpSPDVtxTimeCut2(0), fhPtPhotonNPileUpTrkVtxTimeCut2(0),
112 fhEClusterSM(0), fhEPhotonSM(0),
113 fhPtClusterSM(0), fhPtPhotonSM(0),
114 fhMCConversionVertex(0), fhMCConversionVertexTRD(0)
143 for(
Int_t i = 0; i < 7; i++)
185 for(
Int_t i = 0; i < 5; i++)
192 for(
Int_t i = 0; i < 2; i++)
206 for(
Int_t i = 0; i < 6; i++)
214 for(
Int_t ieta = 0; ieta < 4; ieta++)
216 for(
Int_t iphi = 0; iphi < 3; iphi++)
226 for(
Int_t ism =0; ism < 20; ism++)
234 for(
Int_t il0 = 0; il0 < 2; il0++)
236 for(
Int_t i = 0; i < 7; i++)
249 for(
Int_t ism =0; ism < 20; ism++)
285 for(
Int_t ism = 0; ism < 20; ism++)
295 for(
Int_t ilarge = 0; ilarge < 5; ilarge++)
301 for(
Int_t i = 0; i < 14; i++)
337 if(phicluster < 0) phicluster+=TMath::TwoPi();
341 AliDebug(2,Form(
"Current Event %d; Before selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
343 ecluster,ptcluster, phicluster*TMath::RadToDeg(),etacluster));
351 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
361 AliDebug(2,Form(
"\t Cluster %d Pass E Cut",calo->GetID()));
371 if(tof < fTimeCutMin || tof >
fTimeCutMax)
return kFALSE;
373 AliDebug(2,Form(
"\t Cluster %d Pass Time Cut",calo->GetID()));
381 AliDebug(2,Form(
"\t Cluster %d Pass NCell Cut",calo->GetID()));
386 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
return kFALSE ;
387 AliDebug(2,Form(
"\t Cluster %d pass NLM %d of out of range",calo->GetID(), nMaxima));
397 if(! in )
return kFALSE ;
400 AliDebug(2,Form(
"\t Fiducial cut passed"));
415 AliDebug(2,
"\t Reject track-matched clusters");
419 AliDebug(2,
"\t Track-matching cut passed");
427 Double_t distBad=calo->GetDistanceToBadChannel() ;
428 if(distBad < 0.) distBad=9999. ;
433 else AliDebug(2,Form(
"\t Bad channel cut passed %4.2f > %2.2f",distBad,
fMinDist));
438 AliDebug(1,Form(
"Current Event %d; After selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
466 Bool_t inacceptance = kFALSE ;
468 TParticle * primStack = 0;
469 AliAODMCParticle * primAOD = 0;
472 AliStack * stack = 0;
478 AliFatal(
"Stack not available, is the MC handler called? STOP");
481 nprim = stack->GetNtrack();
485 TClonesArray * mcparticles = 0;
491 AliFatal(
"Standard MCParticles not available!");
494 nprim = mcparticles->GetEntriesFast();
497 for(
Int_t i=0 ; i < nprim; i++)
499 if ( !
GetReader()->AcceptParticleMCLabel( i ) ) continue ;
503 primStack = stack->Particle(i) ;
506 AliWarning(
"ESD primaries pointer not available!!");
510 pdg = primStack->GetPdgCode();
511 status = primStack->GetStatusCode();
514 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
515 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
516 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
524 photonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
528 primAOD = (AliAODMCParticle *) mcparticles->At(i);
531 AliWarning(
"AOD primaries pointer not available!!");
535 pdg = primAOD->GetPdgCode();
536 status = primAOD->GetStatus();
539 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
540 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
541 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
544 fMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
546 photonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
550 if(pdg != 22 ) continue ;
561 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
564 inacceptance = kTRUE;
594 if(status > 1) continue ;
634 if(!takeIt) continue ;
638 if(TMath::Abs(photonY) < 1.0)
659 if(TMath::Abs(photonY) < 1.0)
686 Float_t time = cluster->GetTOF()*1.e9;
707 if(cells->GetCellAmplitude(absIdMax) > 0.1 && TMath::Abs(time) < 30)
709 for (
Int_t ipos = 0; ipos < cluster->GetNCells(); ipos++)
711 Int_t absId = cluster->GetCellsAbsId()[ipos];
713 if( absId == absIdMax ) continue ;
715 Double_t tcell = cells->GetCellTime(absId);
716 Float_t amp = cells->GetCellAmplitude(absId);
725 if( cells->GetCellAmplitude(absIdMax) < 0.1 )
continue ;
750 nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD();
751 nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks();
756 nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD();
757 nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks();
769 if(TMath::Abs(time) < 25)
775 if(time < 75 && time > -25)
791 Int_t ncells = cluster->GetNCells();
792 Float_t lambda0 = cluster->GetM02();
793 Float_t lambda1 = cluster->GetM20();
794 Float_t disp = cluster->GetDispersion()*cluster->GetDispersion();
799 if(phi < 0) phi+=TMath::TwoPi();
849 Int_t etaRegion = -1, phiRegion = -1;
851 if(etaRegion >= 0 && etaRegion < 4 && phiRegion >=0 && phiRegion < 3)
873 if ( lambda0 >=0.30 && lambda0 <= 0.40 ) l0bin = 1;
874 else if( lambda0 >=0.23 && lambda0 <= 0.26 ) l0bin = 0;
876 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
878 for(
Int_t ipt = 0; ipt < 7; ipt++)
880 if( pt >= ptLimit[ipt] && pt < ptLimit[ipt+1] )
909 Int_t ncell = cluster->GetNCells();
914 for(
Int_t icell = 0; icell < ncell; icell++)
916 Int_t absId = cluster->GetCellAbsId(icell);
917 Float_t cellE = cells->GetCellAmplitude(absId);
918 Double_t cellTime = cells->GetCellTime(absId);
924 enerList[icell] = cellE;
925 timeList[icell] = cellTime;
928 TMath::Sort(ncell,enerList,sortList);
934 Int_t absIdMax = cluster->GetCellAbsId(sortList[0]);
936 Double_t cellTimeMax = timeList[sortList[0]];
944 for(
Int_t icell = 1; icell < ncell; icell++)
946 Int_t absId = cluster->GetCellAbsId(sortList[icell]);
947 Float_t cellE = enerList[sortList[icell]];
948 Double_t cellTime = timeList[sortList[icell]];
952 if ( absId == absIdMax )
continue;
957 if(weight < 0.01)
continue;
959 if ( TMath::Abs(cellTime) > 50 )
965 if ( l0bin == -1 )
continue;
986 if ( TMath::Abs(cellTime) > 50 )
997 Int_t icol = -1, icolAbs = -1;
998 Int_t irow = -1, irowAbs = -1;
1005 if ( TMath::Abs(cellTime) > 50 )
1015 if ( largeTime > 0 )
1036 delete [] sortList ;
1037 delete [] enerList ;
1038 delete [] timeList ;
1043 Float_t dispp= 0., dEta = 0., dPhi = 0.;
1044 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1048 l0, l1, dispp, dEta, dPhi, sEta, sPhi, sEtaPhi);
1065 if (energy < 2 ) ebin = 0;
1066 else if (energy < 4 ) ebin = 1;
1067 else if (energy < 6 ) ebin = 2;
1068 else if (energy < 10) ebin = 3;
1069 else if (energy < 15) ebin = 4;
1070 else if (energy < 20) ebin = 5;
1082 Float_t dZ = cluster->GetTrackDz();
1083 Float_t dR = cluster->GetTrackDx();
1090 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1138 AliVCaloCells* cells = 0;
1146 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1153 for(
Int_t icell = 0; icell < cluster->GetNCells(); icell++)
1155 cellE = cells->GetCellAmplitude(cluster->GetCellAbsId(icell));
1157 fraction+=cellE*cluster->GetCellAmplitudeFraction(icell);
1163 AliDebug(1,Form(
"Energy fraction of embedded signal %2.3f, Energy %2.3f",fraction, clusterE));
1179 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
1185 const UInt_t nlabels = cluster->GetNLabels();
1186 Int_t overpdg[nlabels];
1187 Int_t overlab[nlabels];
1196 else if(noverlaps == 1)
1200 else if(noverlaps > 1)
1206 AliWarning(Form(
"n overlaps = %d!!", noverlaps));
1211 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1217 else if(fraction > 0.5)
1221 else if(fraction > 0.1)
1248 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1254 else if(fraction > 0.5)
1258 else if(fraction > 0.1)
1292 else if(energy < 6.)
1313 if (energy < 2 ) ebin = 0;
1314 else if (energy < 4 ) ebin = 1;
1315 else if (energy < 6 ) ebin = 2;
1316 else if (energy < 10) ebin = 3;
1317 else if (energy < 15) ebin = 4;
1318 else if (energy < 20) ebin = 5;
1339 Float_t dZ = cluster->GetTrackDz();
1340 Float_t dR = cluster->GetTrackDx();
1350 Bool_t positive = kFALSE;
1351 if(track) positive = (track->Charge()>0);
1386 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1390 Float_t dEdx = track->GetTPCsignal();
1391 Float_t eOverp = cluster->E()/track->P();
1403 AliWarning(Form(
"Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT?", dR,dZ));
1426 if(cluster->GetNLabels()==1)
1476 const Int_t buffersize = 255;
1477 char onePar[buffersize] ;
1479 snprintf(onePar,buffersize,
"--- AliAnaPhoton ---:") ;
1483 snprintf(onePar,buffersize,
"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster);",
fMinDist) ;
1485 snprintf(onePar,buffersize,
"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation);",
fMinDist2) ;
1487 snprintf(onePar,buffersize,
"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study);",
fMinDist3) ;
1501 return new TObjString(parList) ;
1511 outputContainer->SetName(
"PhotonHistos") ;
1534 Int_t bin[] = {0,2,4,6,10,15,20,100};
1536 TString cut[] = {
"Open",
"Reader",
"E",
"Time",
"NCells",
"NLM",
"Fidutial",
"Matching",
"Bad",
"PID"};
1537 for (
Int_t i = 0; i < 10 ; i++)
1540 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1541 nptbins,ptmin,ptmax);
1547 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1548 nptbins,ptmin,ptmax);
1554 fhEClusterSM =
new TH2F(
"hEClusterSM",
"Raw clusters E and super-module number",
1555 nptbins,ptmin,ptmax,
1561 fhPtClusterSM =
new TH2F(
"hPtClusterSM",
"Raw clusters #it{p}_{T} and super-module number",
1562 nptbins,ptmin,ptmax,
1568 fhEPhotonSM =
new TH2F(
"hEPhotonSM",
"Selected clusters E and super-module number",
1569 nptbins,ptmin,ptmax,
1575 fhPtPhotonSM =
new TH2F(
"hPtPhotonSM",
"Selected clusters #it{p}_{T} and super-module number",
1576 nptbins,ptmin,ptmax,
1582 fhNCellsE =
new TH2F (
"hNCellsE",
"# of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nbins,nmin,nmax);
1584 fhNCellsE->SetYTitle(
"# of cells in cluster");
1587 fhCellsE =
new TH2F (
"hCellsE",
"energy of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nptbins*2,ptmin,ptmax);
1588 fhCellsE->SetXTitle(
"#it{E}_{cluster} (GeV)");
1589 fhCellsE->SetYTitle(
"#it{E}_{cell} (GeV)");
1592 fhTimePt =
new TH2F (
"hTimePt",
"time of cluster vs pT of clusters", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1593 fhTimePt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1594 fhTimePt->SetYTitle(
"#it{time} (ns)");
1597 fhMaxCellDiffClusterE =
new TH2F (
"hMaxCellDiffClusterE",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
1598 nptbins,ptmin,ptmax, 500,0,1.);
1603 fhEPhoton =
new TH1F(
"hEPhoton",
"Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax);
1605 fhEPhoton->SetXTitle(
"#it{E}_{#gamma}(GeV)");
1608 fhPtPhoton =
new TH1F(
"hPtPhoton",
"Number of #gamma over calorimeter vs #it{p}_{T}",nptbins,ptmin,ptmax);
1610 fhPtPhoton->SetXTitle(
"p_{T #gamma}(GeV/#it{c})");
1620 fhPtEventPlanePhoton =
new TH2F(
"hPtEventPlanePhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1627 (
"hEtaPhi",
"cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1633 (
"hPhiPhoton",
"#phi_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1635 fhPhiPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1639 (
"hEtaPhoton",
"#eta_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1641 fhEtaPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1645 (
"hEtaPhiPhoton",
"#eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1652 (
"hEtaPhi05Photon",
"#eta vs #phi, E < 0.5",netabins,etamin,etamax,nphibins,phimin,phimax);
1658 fhNLocMax =
new TH2F(
"hNLocMax",
"Number of local maxima in cluster",
1659 nptbins,ptmin,ptmax,10,0,10);
1667 fhLam0E =
new TH2F (
"hLam0E",
"#lambda_{0}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1668 fhLam0E->SetYTitle(
"#lambda_{0}^{2}");
1669 fhLam0E->SetXTitle(
"#it{E} (GeV)");
1670 outputContainer->Add(
fhLam0E);
1672 fhLam0Pt =
new TH2F (
"hLam0Pt",
"#lambda_{0}^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1673 fhLam0Pt->SetYTitle(
"#lambda_{0}^{2}");
1674 fhLam0Pt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1677 fhLam1E =
new TH2F (
"hLam1E",
"#lambda_{1}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1678 fhLam1E->SetYTitle(
"#lambda_{1}^{2}");
1679 fhLam1E->SetXTitle(
"#it{E} (GeV)");
1680 outputContainer->Add(
fhLam1E);
1682 fhLam1Pt =
new TH2F (
"hLam1Pt",
"#lambda_{1}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1683 fhLam1Pt->SetYTitle(
"#lambda_{1}^{2}");
1684 fhLam1Pt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1687 fhDispE =
new TH2F (
"hDispE",
" dispersion^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1689 fhDispE->SetXTitle(
"#it{E} (GeV) ");
1690 outputContainer->Add(
fhDispE);
1692 fhDispPt =
new TH2F (
"hDispPt",
" dispersion^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1694 fhDispPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c}) ");
1699 fhLam0PtNLM1 =
new TH2F (
"hLam0PtNLM1",
"#lambda_{0}^{2} vs #it{p}_{T}, #it{n}_{LM}=1", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1704 fhLam0PtNLM2 =
new TH2F (
"hLam0PtNLM2",
"#lambda_{0}^{2} vs #it{p}_{T}, #it{n}_{LM}=2", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1709 fhLam1PtNLM1 =
new TH2F (
"hLam1PtNLM1",
"#lambda_{1}^{2} vs #it{p}_{T}, #it{n}_{LM}=1", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1714 fhLam1PtNLM2 =
new TH2F (
"hLam1PtNLM2",
"#lambda_{1}^{2} vs #it{p}_{T}, #it{n}_{LM}=2", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1722 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);
1723 fhLam0ETM->SetYTitle(
"#lambda_{0}^{2}");
1727 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);
1729 fhLam0PtTM->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1732 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);
1733 fhLam1ETM->SetYTitle(
"#lambda_{1}^{2}");
1737 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);
1745 fhLam0ETRD =
new TH2F (
"hLam0ETRD",
"#lambda_{0}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1750 fhLam0PtTRD =
new TH2F (
"hLam0PtTRD",
"#lambda_{0}^{2} vs #it{p}_{T}, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1752 fhLam0PtTRD->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1755 fhLam1ETRD =
new TH2F (
"hLam1ETRD",
"#lambda_{1}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1760 fhDispETRD =
new TH2F (
"hDispETRD",
" dispersion^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1767 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);
1772 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);
1777 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);
1782 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);
1791 fhNCellsLam0LowE =
new TH2F (
"hNCellsLam0LowE",
"N_{cells} in cluster vs #lambda_{0}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1796 fhNCellsLam0HighE =
new TH2F (
"hNCellsLam0HighE",
"N_{cells} in cluster vs #lambda_{0}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1801 fhNCellsLam1LowE =
new TH2F (
"hNCellsLam1LowE",
"N_{cells} in cluster vs #lambda_{1}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1806 fhNCellsLam1HighE =
new TH2F (
"hNCellsLam1HighE",
"N_{cells} in cluster vs #lambda_{1}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1811 fhNCellsDispLowE =
new TH2F (
"hNCellsDispLowE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1816 fhNCellsDispHighE =
new TH2F (
"hNCellsDispHighE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1821 fhEtaLam0LowE =
new TH2F (
"hEtaLam0LowE",
"#eta vs #lambda_{0}^{2}, E < 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1826 fhPhiLam0LowE =
new TH2F (
"hPhiLam0LowE",
"#phi vs #lambda_{0}^{2}, E < 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1831 fhEtaLam0HighE =
new TH2F (
"hEtaLam0HighE",
"#eta vs #lambda_{0}^{2}, #it{E} > 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1836 fhPhiLam0HighE =
new TH2F (
"hPhiLam0HighE",
"#phi vs #lambda_{0}^{2}, #it{E} > 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1841 fhLam1Lam0LowE =
new TH2F (
"hLam1Lam0LowE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1846 fhLam1Lam0HighE =
new TH2F (
"hLam1Lam0HighE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1851 fhLam0DispLowE =
new TH2F (
"hLam0DispLowE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1856 fhLam0DispHighE =
new TH2F (
"hLam0DispHighE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1861 fhDispLam1LowE =
new TH2F (
"hDispLam1LowE",
"Dispersion^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1866 fhDispLam1HighE =
new TH2F (
"hDispLam1HighE",
"Dispersion^{2} vs #lambda_{1^{2}} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1873 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);
1875 fhDispEtaE->SetYTitle(
"#sigma^{2}_{#eta #eta}");
1878 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);
1880 fhDispPhiE->SetYTitle(
"#sigma^{2}_{#phi #phi}");
1883 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);
1885 fhSumEtaE->SetYTitle(
"#delta^{2}_{#eta #eta}");
1888 fhSumPhiE =
new TH2F (
"hSumPhiE",
"#delta^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs E",
1889 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1891 fhSumPhiE->SetYTitle(
"#delta^{2}_{#phi #phi}");
1894 fhSumEtaPhiE =
new TH2F (
"hSumEtaPhiE",
"#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",
1895 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
1900 fhDispEtaPhiDiffE =
new TH2F (
"hDispEtaPhiDiffE",
"#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",
1901 nptbins,ptmin,ptmax,200, -10,10);
1906 fhSphericityE =
new TH2F (
"hSphericityE",
"(#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",
1907 nptbins,ptmin,ptmax, 200, -1,1);
1909 fhSphericityE->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
1912 fhDispSumEtaDiffE =
new TH2F (
"hDispSumEtaDiffE",
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1914 fhDispSumEtaDiffE->SetYTitle(
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average");
1917 fhDispSumPhiDiffE =
new TH2F (
"hDispSumPhiDiffE",
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1919 fhDispSumPhiDiffE->SetYTitle(
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average");
1922 for(
Int_t i = 0; i < 7; i++)
1924 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]),
1925 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1930 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]),
1931 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1936 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]),
1937 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1950 TString cutTM [] = {
"NoCut",
""};
1952 for(
Int_t i = 0; i < 2; i++)
1955 (Form(
"hTrackMatchedDEta%s",cutTM[i].
Data()),
1956 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1957 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1962 (Form(
"hTrackMatchedDPhi%s",cutTM[i].
Data()),
1963 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1964 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1969 (Form(
"hTrackMatchedDEtaDPhi%s",cutTM[i].
Data()),
1970 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1971 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1976 (Form(
"hTrackMatchedDEtaPos%s",cutTM[i].
Data()),
1977 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1978 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1983 (Form(
"hTrackMatchedDPhiPos%s",cutTM[i].
Data()),
1984 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1985 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1990 (Form(
"hTrackMatchedDEtaDPhiPos%s",cutTM[i].
Data()),
1991 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1992 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1997 (Form(
"hTrackMatchedDEtaNeg%s",cutTM[i].
Data()),
1998 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1999 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2004 (Form(
"hTrackMatchedDPhiNeg%s",cutTM[i].
Data()),
2005 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
2006 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2011 (Form(
"hTrackMatchedDEtaDPhiNeg%s",cutTM[i].
Data()),
2012 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
2013 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2017 fhdEdx[i] =
new TH2F (Form(
"hdEdx%s",cutTM[i].
Data()),Form(
"matched track <dE/dx> vs cluster E, %s",cutTM[i].
Data()),
2018 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
2019 fhdEdx[i]->SetXTitle(
"#it{E} (GeV)");
2020 fhdEdx[i]->SetYTitle(
"<dE/dx>");
2022 fhEOverP[i] =
new TH2F (Form(
"hEOverP%s",cutTM[i].
Data()),Form(
"matched track E/p vs cluster E, %s",cutTM[i].
Data()),
2023 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2024 fhEOverP[i]->SetXTitle(
"#it{E} (GeV)");
2036 outputContainer->Add(
fhdEdx[i]);
2042 (Form(
"hTrackMatchedDEtaTRD%s",cutTM[i].
Data()),
2043 Form(
"d#eta of cluster-track vs cluster energy, SM behind TRD, %s",cutTM[i].
Data()),
2044 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2049 (Form(
"hTrackMatchedDPhiTRD%s",cutTM[i].
Data()),
2050 Form(
"d#phi of cluster-track vs cluster energy, SM behing TRD, %s",cutTM[i].
Data()),
2051 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2056 (Form(
"hEOverPTRD%s",cutTM[i].
Data()),
2057 Form(
"matched track E/p vs cluster E, behind TRD, %s",cutTM[i].
Data()),
2058 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2070 (Form(
"hTrackMatchedDEtaMCNoOverlap%s",cutTM[i].
Data()),
2071 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2072 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2077 (Form(
"hTrackMatchedDPhiMCNoOverlap%s",cutTM[i].
Data()),
2078 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2079 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2086 (Form(
"hTrackMatchedDEtaMCOverlap%s",cutTM[i].
Data()),
2087 Form(
"d#eta of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2088 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2093 (Form(
"hTrackMatchedDPhiMCOverlap%s",cutTM[i].
Data()),
2094 Form(
"d#phi of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2095 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2103 (Form(
"hTrackMatchedDEtaMCConversion%s",cutTM[i].
Data()),
2104 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2105 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2110 (Form(
"hTrackMatchedDPhiMCConversion%s",cutTM[i].
Data()),
2111 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2112 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2120 (Form(
"hTrackMatchedMCParticle%s",cutTM[i].
Data()),
2121 Form(
"Origin of particle vs energy %s",cutTM[i].
Data()),
2122 nptbins,ptmin,ptmax,8,0,8);
2142 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
2144 for(
Int_t i = 0 ; i < 7 ; i++)
2147 Form(
"Selected photon #it{p}_{T} distribution, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2152 Form(
"Photon cluster E vs #it{t}_{max}-#it{t}_{cell} in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2153 nptbins,ptmin,ptmax,400,-200,200);
2159 fhTimePtPhotonNoCut =
new TH2F (
"hTimePtPhoton_NoCut",
"time of photon cluster vs pT of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2164 fhTimePtPhotonSPD =
new TH2F (
"hTimePtPhoton_SPD",
"time of photon cluster vs pT of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2169 fhTimeNPileUpVertSPD =
new TH2F (
"hTime_NPileUpVertSPD",
"time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,20,0,20);
2174 fhTimeNPileUpVertTrack =
new TH2F (
"hTime_NPileUpVertTracks",
"time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 20,0,20 );
2180 nptbins,ptmin,ptmax,20,0,20);
2186 nptbins,ptmin,ptmax, 20,0,20 );
2192 nptbins,ptmin,ptmax,20,0,20);
2198 nptbins,ptmin,ptmax, 20,0,20 );
2204 nptbins,ptmin,ptmax,20,0,20);
2210 nptbins,ptmin,ptmax, 20,0,20 );
2219 for(
Int_t ieta = 0; ieta < 4; ieta++)
2221 for(
Int_t iphi = 0; iphi < 3; iphi++)
2245 new TH2F(Form(
"hLam0_eta%d_phi%d_sm%d",ieta,iphi,ism),
2246 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2247 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2253 new TH2F(Form(
"hLam1_eta%d_phi%d_sm%d",ieta,iphi,ism),
2254 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2255 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2263 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
2264 TString l0bin [] = {
"0.23<#lambda^{2}_{0}<0.26",
"0.3<#lambda^{2}_{0}<0.4"};
2266 for(
Int_t il0 = 0; il0 < 2; il0++)
2268 for(
Int_t ipt = 0; ipt < 7; ipt++)
2271 (Form(
"hEtaPhiLam0Bin%d_PtBin%d",il0,ipt),
2272 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2273 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2274 netabins,etamin,etamax,nphibins,phimin,phimax);
2280 (Form(
"hColRowLam0Bin%d_PtBin%d",il0,ipt),
2281 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, w > 0",
2282 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2283 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2289 (Form(
"hColRowLam0Bin%d_PtBin%dWeighted",il0,ipt),
2290 Form(
"cluster cell row vs column weighted in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2291 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2292 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2298 (Form(
"hColRowLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2299 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, |t| > 50 ns, w > 0",
2300 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2301 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2325 (Form(
"hEtaPhiLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2326 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, t > 50 ns, %s",
2327 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2328 netabins,etamin,etamax,nphibins,phimin,phimax);
2334 (Form(
"hCellClusterIndexEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2335 Form(
"#it{t}_{cell} vs cell index (E sorted) in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2336 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2337 ntimebins,timemin,timemax,30,0,30);
2343 (Form(
"hCellClusterEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2344 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2345 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2346 ntimebins,timemin,timemax,100,0,5);
2352 (Form(
"hCellClusterEFracAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2353 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2354 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2355 ntimebins,timemin,timemax,100,0,1);
2364 (Form(
"hLam1Lam0Bin%d_sm%d",il0,ism),
2365 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, %s",ism,l0bin[il0].
Data()),
2366 nptbins,ptmin,ptmax,40,0,0.4);
2372 (Form(
"hTimeLam0Bin%d_sm%d",il0,ism),
2373 Form(
"#it{p}_{T} vs cluster cell time in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2374 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2380 (Form(
"hTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2381 Form(
"#it{p}_{T} vs cluster cell time weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2382 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2388 (Form(
"hDTimeLam0Bin%d_sm%d",il0,ism),
2389 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2390 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2396 (Form(
"hDTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2397 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2398 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2404 (Form(
"hCellClusterEFracLam0Bin%d_sm%d",il0,ism),
2405 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2406 nptbins,ptmin,ptmax,100,0,1);
2420 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2421 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2422 nptbins,ptmin,ptmax,100,0,1);
2428 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell_Total",il0,ism),
2429 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, all |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2430 nptbins,ptmin,ptmax,100,0,1);
2436 (Form(
"hCellClusterELam0Bin%d_sm%d",il0,ism),
2437 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2438 nptbins,ptmin,ptmax,500,0,10);
2444 (Form(
"hCellClusterELam0Bin%d_sm%d_Weighted",il0,ism),
2445 Form(
"#it{p}_{T} vs cell E weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2446 nptbins,ptmin,ptmax,500,0,10);
2452 (Form(
"hCellClusterELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2453 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2454 nptbins,ptmin,ptmax,500,0,10);
2460 (Form(
"hCellClusterIndexELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2461 Form(
"#it{p}_{T} vs cell index (E sorted) in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2462 nptbins,ptmin,ptmax,30,0,30);
2468 (Form(
"hNCellsWithLargeTimeInClusterLam0Bin%d_sm%d",il0,ism),
2469 Form(
"#it{p}_{T} vs number of cells in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2470 nptbins,ptmin,ptmax,30,0,30);
2491 (Form(
"hLam0_sm%d",ism),
2492 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d",ism),
2493 nptbins,ptmin,ptmax,40,0,0.4);
2495 fhLam0PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2499 (Form(
"hLam1_sm%d",ism),
2500 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d",ism),
2501 nptbins,ptmin,ptmax,40,0,0.4);
2503 fhLam1PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2507 (Form(
"hLam0_sm%d_LargeTimeInClusterCell",ism),
2508 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ism),
2509 nptbins,ptmin,ptmax,40,0,0.4);
2515 (Form(
"hLam1_sm%d_LargeTimeInClusterCell",ism),
2516 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ism),
2517 nptbins,ptmin,ptmax,40,0,0.4);
2558 for(
Int_t ilarge = 0; ilarge < 5; ilarge++)
2561 (Form(
"hLam0_NLargeTimeInClusterCell%d",ilarge),
2562 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ilarge),
2563 nptbins,ptmin,ptmax,40,0,0.4);
2569 (Form(
"hLam1_NLargeTimeInClusterCell%d",ilarge),
2570 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ilarge),
2571 nptbins,ptmin,ptmax,40,0,0.4);
2582 TString ptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}",
2583 "#pi^{0}" ,
"#eta" ,
"e^{#pm}" ,
"#gamma->e^{#pm}" ,
2584 "hadron?" ,
"Anti-N" ,
"Anti-P" ,
2585 "Neutron" ,
"Proton" ,
"#pi^{#pm}" ,
2586 "#gamma_{prompt}",
"#gamma_{fragmentation}",
"#gamma_{ISR}" ,
"String" } ;
2588 TString pname[] = {
"Photon" ,
"PhotonPi0Decay" ,
"PhotonEtaDecay",
"PhotonOtherDecay",
2589 "Pi0" ,
"Eta" ,
"Electron" ,
"Conversion" ,
2590 "Hadron" ,
"AntiNeutron" ,
"AntiProton" ,
2591 "Neutron" ,
"Proton" ,
"ChPion" ,
2592 "PhotonPrompt",
"PhotonFragmentation",
"PhotonISR" ,
"String" } ;
2596 fhMCE[i] =
new TH1F(Form(
"hE_MC%s",pname[i].
Data()),
2597 Form(
"cluster from %s : E ",ptype[i].
Data()),
2598 nptbins,ptmin,ptmax);
2599 fhMCE[i]->SetXTitle(
"#it{E} (GeV)");
2600 outputContainer->Add(
fhMCE[i]) ;
2602 fhMCPt[i] =
new TH1F(Form(
"hPt_MC%s",pname[i].
Data()),
2603 Form(
"cluster from %s : #it{p}_{T} ",ptype[i].
Data()),
2604 nptbins,ptmin,ptmax);
2605 fhMCPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2606 outputContainer->Add(
fhMCPt[i]) ;
2609 Form(
"cluster from %s : #eta ",ptype[i].
Data()),
2610 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2611 fhMCEta[i]->SetYTitle(
"#eta");
2612 fhMCEta[i]->SetXTitle(
"#it{E} (GeV)");
2613 outputContainer->Add(
fhMCEta[i]) ;
2616 Form(
"cluster from %s : #phi ",ptype[i].
Data()),
2617 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2618 fhMCPhi[i]->SetYTitle(
"#phi (rad)");
2619 fhMCPhi[i]->SetXTitle(
"#it{E} (GeV)");
2620 outputContainer->Add(
fhMCPhi[i]) ;
2624 Form(
"MC - Reco E from %s",pname[i].
Data()),
2625 nptbins,ptmin,ptmax, 200,-50,50);
2626 fhMCDeltaE[i]->SetYTitle(
"#Delta #it{E} (GeV)");
2631 Form(
"MC - Reco #it{p}_{T} from %s",pname[i].
Data()),
2632 nptbins,ptmin,ptmax, 200,-50,50);
2633 fhMCDeltaPt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2634 fhMCDeltaPt[i]->SetYTitle(
"#Delta #it{p}_{T} (GeV/#it{c})");
2638 Form(
"E distribution, reconstructed vs generated from %s",pname[i].
Data()),
2639 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2640 fhMC2E[i]->SetXTitle(
"#it{E}_{rec} (GeV)");
2641 fhMC2E[i]->SetYTitle(
"#it{E}_{gen} (GeV)");
2642 outputContainer->Add(
fhMC2E[i]);
2645 Form(
"p_T distribution, reconstructed vs generated from %s",pname[i].
Data()),
2646 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2647 fhMC2Pt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2648 fhMC2Pt[i]->SetYTitle(
"p_{T,gen} (GeV/#it{c})");
2649 outputContainer->Add(
fhMC2Pt[i]);
2652 TString pptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
2653 "#gamma_{#eta decay}",
"#gamma_{other decay}" ,
2654 "#gamma_{prompt}" ,
"#gamma_{fragmentation}",
"#gamma_{ISR}" } ;
2656 TString ppname[] = {
"Photon" ,
"PhotonPi0Decay" ,
2657 "PhotonEtaDecay",
"PhotonOtherDecay" ,
2658 "PhotonPrompt" ,
"PhotonFragmentation",
"PhotonISR" } ;
2662 fhEPrimMC[i] =
new TH1F(Form(
"hEPrim_MC%s",ppname[i].
Data()),
2663 Form(
"primary photon %s : E ",pptype[i].
Data()),
2664 nptbins,ptmin,ptmax);
2665 fhEPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2669 Form(
"primary photon %s : #it{p}_{T} ",pptype[i].
Data()),
2670 nptbins,ptmin,ptmax);
2671 fhPtPrimMC[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2675 Form(
"primary photon %s : Rapidity ",pptype[i].
Data()),
2676 nptbins,ptmin,ptmax,200,-2,2);
2678 fhYPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2682 Form(
"primary photon %s : #eta",pptype[i].
Data()),
2683 nptbins,ptmin,ptmax,200,-2,2);
2689 Form(
"primary photon %s : #phi ",pptype[i].
Data()),
2690 nptbins,ptmin,ptmax,nphibins,0,TMath::TwoPi());
2697 Form(
"primary photon %s in acceptance: E ",pptype[i].
Data()),
2698 nptbins,ptmin,ptmax);
2703 Form(
"primary photon %s in acceptance: #it{p}_{T} ",pptype[i].
Data()),
2704 nptbins,ptmin,ptmax);
2709 Form(
"primary photon %s in acceptance: Rapidity ",pptype[i].
Data()),
2710 nptbins,ptmin,ptmax,100,-1,1);
2716 Form(
"primary photon %s in acceptance: #eta ",pptype[i].
Data()),
2717 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2723 Form(
"primary photon %s in acceptance: #phi ",pptype[i].
Data()),
2724 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2732 TString ptypess[] = {
"#gamma",
"hadron?",
"#pi^{0}",
"#eta",
"#gamma->e^{#pm}",
"e^{#pm}"} ;
2734 TString pnamess[] = {
"Photon",
"Hadron",
"Pi0",
"Eta",
"Conversion",
"Electron"} ;
2736 for(
Int_t i = 0; i < 6; i++)
2739 Form(
"cluster from %s : E vs #lambda_{0}^{2}",ptypess[i].
Data()),
2740 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2746 Form(
"cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}",ptypess[i].
Data()),
2747 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2753 Form(
"cluster from %s : E vs #lambda_{1}^{2}",ptypess[i].
Data()),
2754 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2760 Form(
"cluster from %s : E vs dispersion^{2}",ptypess[i].
Data()),
2761 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2767 Form(
"# of cells in cluster from %s vs E of clusters",ptypess[i].
Data()),
2768 nptbins,ptmin,ptmax, nbins,nmin,nmax);
2770 fhMCNCellsE[i]->SetYTitle(
"# of cells in cluster");
2774 Form(
"energy vs difference of cluster energy from %s - max cell energy / cluster energy, good clusters",ptypess[i].
Data()),
2775 nptbins,ptmin,ptmax, 500,0,1.);
2783 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2784 ssbins,ssmin,ssmax,500,0,1.);
2790 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2791 ssbins,ssmin,ssmax,500,0,1.);
2797 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2798 ssbins,ssmin,ssmax,500,0,1.);
2804 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2805 nbins/5,nmin,nmax/5,500,0,1.);
2811 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2812 nbins/5,nmin,nmax/5,500,0,1.);
2818 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2819 nbins/5,nmin,nmax/5,500,0,1.);
2827 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptypess[i].
Data()),
2828 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2834 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptypess[i].
Data()),
2835 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2841 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()),
2842 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
2848 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptypess[i].
Data()),
2849 nptbins,ptmin,ptmax,200,-10,10);
2855 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()),
2856 nptbins,ptmin,ptmax, 200,-1,1);
2858 fhMCESphericity[i]->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
2861 for(
Int_t ie = 0; ie < 7; ie++)
2864 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]),
2865 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2871 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]),
2872 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2878 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]),
2879 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2888 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
2891 "cluster from Photon : E vs #lambda_{0}^{2}",
2892 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2898 "cluster from Photon : E vs #lambda_{0}^{2}",
2899 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2905 "cluster from Photon : E vs #lambda_{0}^{2}",
2906 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2912 if(
GetReader()->IsEmbeddedClusterSelectionOn())
2915 "Energy Fraction of embedded signal versus cluster energy",
2916 nptbins,ptmin,ptmax,100,0.,1.);
2922 "cluster from Photon embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2923 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2929 "cluster from Photon embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2930 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2936 "cluster from Photon embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2937 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2943 "cluster from Photonm embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2944 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2950 "cluster from Pi0 embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2951 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2957 "cluster from Pi0 embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2958 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2964 "cluster from Pi0 embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2965 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2971 "cluster from Pi0 embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2972 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2982 fhMCConversionVertex =
new TH2F(
"hMCPhotonConversionVertex",
"cluster from converted photon, #it{p}_{T} vs vertex distance",
2983 nptbins,ptmin,ptmax,500,0,500);
2990 fhMCConversionVertexTRD =
new TH2F(
"hMCPhotonConversionVertexTRD",
"cluster from converted photon, #it{p}_{T} vs vertex distance, SM covered by TRD",
2991 nptbins,ptmin,ptmax,500,0,500);
2999 TString region[] = {
"ITS",
"TPC",
"TRD",
"TOF",
"Top EMCal",
"In EMCal"};
3000 for(
Int_t iR = 0; iR < 6; iR++)
3003 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s",region[iR].
Data()),
3004 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3010 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s",region[iR].
Data()),
3011 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3020 for(
Int_t iR = 0; iR < 6; iR++)
3023 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
3024 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3030 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
3031 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3078 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
3079 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3080 netabins,etamin,etamax,nphibins,phimin,phimax);
3086 (Form(
"hEBin%d_Cluster_ColRow",ie),
3087 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3088 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3094 (Form(
"hEBin%d_Cluster_EtaPhi_PID",ie),
3095 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}, PID cut",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3096 netabins,etamin,etamax,nphibins,phimin,phimax);
3102 (Form(
"hEBin%d_Cluster_ColRow_PID",ie),
3103 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}, PID cut",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3104 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3112 return outputContainer ;
3121 AliFatal(
"!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
3123 AliFatal(
"!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
3168 AliVCaloCells* cells = 0;
3211 TClonesArray * clusterList = 0;
3220 Int_t nclusters = clusterList->GetEntriesFast();
3221 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
3223 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
3237 Int_t nCaloClusters = pl->GetEntriesFast();
3245 for(
Int_t icalo = 0; icalo < nCaloClusters; icalo++)
3247 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
3251 Int_t evtIndex = 0 ;
3254 evtIndex=
GetMixedEvent()->EventIndexForCaloCluster(calo->GetID()) ;
3279 AliAODPWG4Particle aodph = AliAODPWG4Particle(
fMomentum);
3283 Int_t label = calo->GetLabel();
3284 aodph.SetLabel(label);
3285 aodph.SetCaloLabel(calo->GetID(),-1);
3291 Double_t distBad=calo->GetDistanceToBadChannel() ;
3292 if (distBad >
fMinDist3) aodph.SetDistToBad(2) ;
3293 else if(distBad >
fMinDist2) aodph.SetDistToBad(1) ;
3294 else aodph.SetDistToBad(0) ;
3309 AliDebug(1,Form(
"Origin of candidate, bit map %d",aodph.GetTag()));
3318 if( absIdMax < 0 ) AliFatal(
"Wrong absID");
3320 Int_t largeTimeInCellCluster = kFALSE;
3322 aodph.SetFiducialArea(largeTimeInCellCluster);
3325 aodph.SetM02(calo->GetM02());
3326 aodph.SetM20(calo->GetM20());
3327 aodph.SetNLM(nMaxima);
3329 Float_t time = calo->GetTOF()*1e9;
3331 aodph.SetTime(time);
3333 aodph.SetNCells(calo->GetNCells());
3335 aodph.SetSModNumber(nSM);
3347 Int_t icolAbs = -1, irowAbs = -1;
3353 Int_t icol = -1, irow = -1, iRCU = -1;
3356 if(ebin>=0 && ebin < fNEBinCuts)
3375 aodph.SetIdentifiedParticleType(
GetCaloPID()->GetIdentifiedParticleType(calo));
3377 AliDebug(1,Form(
"PDG of identified particle %d",aodph.GetIdentifiedParticleType()));
3392 AliDebug(1,
"PID Bits set");
3395 AliDebug(1,Form(
"Photon selection cuts passed: pT %3.2f, pdg %d",aodph.Pt(),aodph.GetIdentifiedParticleType()));
3402 if(ebin>=0 && ebin < fNEBinCuts)
3410 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
3425 for(
Int_t icell = 0; icell < calo->GetNCells(); icell++)
3440 AliDebug(1,Form(
"End fill AODs, with %d entries",
GetOutputAODBranch()->GetEntriesFast()));
3460 AliDebug(1,Form(
"AOD branch entries %d", naod));
3467 for(
Int_t iaod = 0; iaod < naod ; iaod++)
3470 Int_t pdg = ph->GetIdentifiedParticleType();
3472 AliDebug(2,Form(
"PDG %d, MC TAG %d, Calorimeter <%d>",ph->GetIdentifiedParticleType(),ph->GetTag(), ph->GetDetectorTag())) ;
3479 AliDebug(2,Form(
"ID Photon: pt %f, phi %f, eta %f", ph->Pt(),ph->Phi(),ph->Eta())) ;
3484 Float_t phicluster = ph->Phi();
3485 Float_t etacluster = ph->Eta();
3528 Int_t label = ph->GetLabel();
3532 AliDebug(1,Form(
"*** bad label ***: label %d", label));
3539 Int_t pdg = 0, status = 0, momLabel = -1;
3550 Int_t tag =ph->GetTag();
3551 Int_t mcParticleTag = -1;
3581 Int_t pdgD = 0, statusD = 0, daugLabel = -1;
3612 if ( prodR < 75. ) convR = 0;
3613 else if ( prodR < 275. ) convR = 1;
3614 else if ( prodR < 375. ) convR = 2;
3615 else if ( prodR < 400. ) convR = 3;
3616 else if ( prodR < 430. ) convR = 4;
3728 if(mcParticleTag >= 0 &&
fhMCE[mcParticleTag])
3754 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3758 printf(
"Min Distance to Bad Channel = %2.1f\n",
fMinDist);
3759 printf(
"Min Distance to Bad Channel 2 = %2.1f\n",
fMinDist2);
3760 printf(
"Min Distance to Bad Channel 3 = %2.1f\n",
fMinDist3);
3763 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 * fhEBinClusterColRowPID[14]
! Column and row location of cluster max E cell in different energy bins, after PID cut ...
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
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
Bool_t fFillEBinAcceptanceHisto
Fill histograms with cluster eta-phi distribution and column-row cell, for different energy bins...
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
TH2F * fhEBinClusterEtaPhiPID[14]
! Eta-Phi location of cluster in different energy bins, after PID cut
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()
Float_t GetPhi(Float_t phi) const
Shift phi angle in case of negative value 360 degrees. Example TLorenzVector::Phi defined in -pi to p...
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
TH2F * fhLam0PtNLM1
! Cluster lambda0 vs pT, for clusters with NLM=1
TH2F * fhLam1PtNLM1
! Cluster lambda0 vs pT, for clusters with NLM=1
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
Float_t fEBinCuts[15]
Energy bins cut.
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 * fhDispPt
! Cluster dispersion vs pT
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
TH2F * fhEBinClusterColRow[14]
! Column and row location of cluster max E cell in different energy bins.
TH2F * fhLam0PtNLM2
! Cluster lambda0 vs pT, for clusters with NLM=2
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
Int_t GetNOverlaps(const Int_t *label, UInt_t nlabels, Int_t mctag, Int_t mesonLabel, AliCaloTrackReader *reader, Int_t *overpdg, Int_t *overlabel)
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
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
Bool_t fFillSSNLocMaxHisto
Fill shower shape histograms for different NLM.
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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.
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...
TH2F * fhEBinClusterEtaPhi[14]
! Eta-Phi location of cluster in different energy bins.
virtual AliCaloTrackReader * GetReader() const
TH2F * fhLam1Pt
! Cluster lambda1 vs pT
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 * fhLam1PtNLM2
! Cluster lambda0 vs pT, for clusters with NLM=2
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.
void FillShowerShapeHistograms(AliVCluster *cluster, Int_t mcTag, Int_t nlm, Float_t maxCellEFraction, Int_t &largeTimeInside)
Fill cluster Shower Shape 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
Bool_t fFillConversionVertexHisto
Fill histograms depending on the conversion vertex.
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
Int_t fNEBinCuts
Number of energy bin cuts.
TH2F * fhTimeLam0BinPerSM[2][20]
! Cell time, not maximum cluster cell, in a l0 bin per SM