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 fNOriginHistograms(9), fNPrimaryHistograms(5),
58 fMomentum(), fPrimaryMom(), fProdVertex(),
59 fConstantTimeShift(0), fFillEBinAcceptanceHisto(0), fNEBinCuts(0),
64 fhNCellsE(0), fhCellsE(0),
65 fhMaxCellDiffClusterE(0), fhTimePt(0), fhEtaPhi(0),
67 fhEPhoton(0), fhPtPhoton(0),
68 fhPhiPhoton(0), fhEtaPhoton(0),
69 fhEtaPhiPhoton(0), fhEtaPhi05Photon(0),
70 fhPtCentralityPhoton(0), fhPtEventPlanePhoton(0),
74 fhDispE(0), fhLam0E(0), fhLam0Pt(0), fhLam1E(0),
75 fhDispETRD(0), fhLam0ETRD(0), fhLam0PtTRD(0), fhLam1ETRD(0),
76 fhDispETM(0), fhLam0ETM(0), fhLam0PtTM(0), fhLam1ETM(0),
77 fhDispETMTRD(0), fhLam0ETMTRD(0), fhLam0PtTMTRD(0), fhLam1ETMTRD(0),
79 fhNCellsLam0LowE(0), fhNCellsLam1LowE(0), fhNCellsDispLowE(0),
80 fhNCellsLam0HighE(0), fhNCellsLam1HighE(0), fhNCellsDispHighE(0),
82 fhEtaLam0LowE(0), fhPhiLam0LowE(0),
83 fhEtaLam0HighE(0), fhPhiLam0HighE(0),
84 fhLam0DispLowE(0), fhLam0DispHighE(0),
85 fhLam1Lam0LowE(0), fhLam1Lam0HighE(0),
86 fhDispLam1LowE(0), fhDispLam1HighE(0),
87 fhDispEtaE(0), fhDispPhiE(0),
88 fhSumEtaE(0), fhSumPhiE(0), fhSumEtaPhiE(0),
89 fhDispEtaPhiDiffE(0), fhSphericityE(0),
90 fhDispSumEtaDiffE(0), fhDispSumPhiDiffE(0),
93 fhMCPhotonELambda0NoOverlap(0), fhMCPhotonELambda0TwoOverlap(0), fhMCPhotonELambda0NOverlap(0),
95 fhEmbeddedSignalFractionEnergy(0),
96 fhEmbedPhotonELambda0FullSignal(0), fhEmbedPhotonELambda0MostlySignal(0),
97 fhEmbedPhotonELambda0MostlyBkg(0), fhEmbedPhotonELambda0FullBkg(0),
98 fhEmbedPi0ELambda0FullSignal(0), fhEmbedPi0ELambda0MostlySignal(0),
99 fhEmbedPi0ELambda0MostlyBkg(0), fhEmbedPi0ELambda0FullBkg(0),
101 fhTimePtPhotonNoCut(0), fhTimePtPhotonSPD(0),
102 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
103 fhPtPhotonNPileUpSPDVtx(0), fhPtPhotonNPileUpTrkVtx(0),
104 fhPtPhotonNPileUpSPDVtxTimeCut(0), fhPtPhotonNPileUpTrkVtxTimeCut(0),
105 fhPtPhotonNPileUpSPDVtxTimeCut2(0), fhPtPhotonNPileUpTrkVtxTimeCut2(0),
107 fhEClusterSM(0), fhEPhotonSM(0),
108 fhPtClusterSM(0), fhPtPhotonSM(0),
109 fhMCConversionVertex(0), fhMCConversionVertexTRD(0)
138 for(
Int_t i = 0; i < 7; i++)
180 for(
Int_t i = 0; i < 5; i++)
187 for(
Int_t i = 0; i < 2; i++)
201 for(
Int_t i = 0; i < 6; i++)
209 for(
Int_t ieta = 0; ieta < 4; ieta++)
211 for(
Int_t iphi = 0; iphi < 3; iphi++)
221 for(
Int_t ism =0; ism < 20; ism++)
229 for(
Int_t il0 = 0; il0 < 2; il0++)
231 for(
Int_t i = 0; i < 7; i++)
244 for(
Int_t ism =0; ism < 20; ism++)
280 for(
Int_t ism = 0; ism < 20; ism++)
290 for(
Int_t ilarge = 0; ilarge < 5; ilarge++)
296 for(
Int_t i = 0; i < 14; i++)
332 if(phicluster < 0) phicluster+=TMath::TwoPi();
336 AliDebug(2,Form(
"Current Event %d; Before selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
338 ecluster,ptcluster, phicluster*TMath::RadToDeg(),etacluster));
346 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
356 AliDebug(2,Form(
"\t Cluster %d Pass E Cut",calo->GetID()));
366 if(tof < fTimeCutMin || tof >
fTimeCutMax)
return kFALSE;
368 AliDebug(2,Form(
"\t Cluster %d Pass Time Cut",calo->GetID()));
376 AliDebug(2,Form(
"\t Cluster %d Pass NCell Cut",calo->GetID()));
381 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
return kFALSE ;
382 AliDebug(2,Form(
"\t Cluster %d pass NLM %d of out of range",calo->GetID(), nMaxima));
392 if(! in )
return kFALSE ;
395 AliDebug(2,Form(
"\t Fiducial cut passed"));
410 AliDebug(2,
"\t Reject track-matched clusters");
414 AliDebug(2,
"\t Track-matching cut passed");
422 Double_t distBad=calo->GetDistanceToBadChannel() ;
423 if(distBad < 0.) distBad=9999. ;
428 else AliDebug(2,Form(
"\t Bad channel cut passed %4.2f > %2.2f",distBad,
fMinDist));
433 AliDebug(1,Form(
"Current Event %d; After selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
461 Bool_t inacceptance = kFALSE ;
463 TParticle * primStack = 0;
464 AliAODMCParticle * primAOD = 0;
467 AliStack * stack = 0;
473 AliFatal(
"Stack not available, is the MC handler called? STOP");
476 nprim = stack->GetNtrack();
480 TClonesArray * mcparticles = 0;
486 AliFatal(
"Standard MCParticles not available!");
489 nprim = mcparticles->GetEntriesFast();
492 for(
Int_t i=0 ; i < nprim; i++)
494 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
498 primStack = stack->Particle(i) ;
501 AliWarning(
"ESD primaries pointer not available!!");
505 pdg = primStack->GetPdgCode();
506 status = primStack->GetStatusCode();
509 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
510 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
511 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
519 photonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
523 primAOD = (AliAODMCParticle *) mcparticles->At(i);
526 AliWarning(
"AOD primaries pointer not available!!");
530 pdg = primAOD->GetPdgCode();
531 status = primAOD->GetStatus();
534 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
535 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
536 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
539 fMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
541 photonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
545 if(pdg != 22 ) continue ;
556 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
559 inacceptance = kTRUE;
589 if(status > 1) continue ;
629 if(!takeIt) continue ;
633 if(TMath::Abs(photonY) < 1.0)
654 if(TMath::Abs(photonY) < 1.0)
681 Float_t time = cluster->GetTOF()*1.e9;
702 if(cells->GetCellAmplitude(absIdMax) > 0.1 && TMath::Abs(time) < 30)
704 for (
Int_t ipos = 0; ipos < cluster->GetNCells(); ipos++)
706 Int_t absId = cluster->GetCellsAbsId()[ipos];
708 if( absId == absIdMax ) continue ;
710 Double_t tcell = cells->GetCellTime(absId);
711 Float_t amp = cells->GetCellAmplitude(absId);
720 if( cells->GetCellAmplitude(absIdMax) < 0.1 )
continue ;
745 nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD();
746 nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks();
751 nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD();
752 nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks();
764 if(TMath::Abs(time) < 25)
770 if(time < 75 && time > -25)
786 Int_t ncells = cluster->GetNCells();
787 Float_t lambda0 = cluster->GetM02();
788 Float_t lambda1 = cluster->GetM20();
789 Float_t disp = cluster->GetDispersion()*cluster->GetDispersion();
794 if(phi < 0) phi+=TMath::TwoPi();
828 Int_t etaRegion = -1, phiRegion = -1;
830 if(etaRegion >= 0 && etaRegion < 4 && phiRegion >=0 && phiRegion < 3)
852 if ( lambda0 >=0.30 && lambda0 <= 0.40 ) l0bin = 1;
853 else if( lambda0 >=0.23 && lambda0 <= 0.26 ) l0bin = 0;
855 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
857 for(
Int_t ipt = 0; ipt < 7; ipt++)
859 if( pt >= ptLimit[ipt] && pt < ptLimit[ipt+1] )
888 Int_t ncell = cluster->GetNCells();
893 for(
Int_t icell = 0; icell < ncell; icell++)
895 Int_t absId = cluster->GetCellAbsId(icell);
896 Float_t cellE = cells->GetCellAmplitude(absId);
897 Double_t cellTime = cells->GetCellTime(absId);
903 enerList[icell] = cellE;
904 timeList[icell] = cellTime;
907 TMath::Sort(ncell,enerList,sortList);
913 Int_t absIdMax = cluster->GetCellAbsId(sortList[0]);
915 Double_t cellTimeMax = timeList[sortList[0]];
923 for(
Int_t icell = 1; icell < ncell; icell++)
925 Int_t absId = cluster->GetCellAbsId(sortList[icell]);
926 Float_t cellE = enerList[sortList[icell]];
927 Double_t cellTime = timeList[sortList[icell]];
931 if ( absId == absIdMax )
continue;
936 if(weight < 0.01)
continue;
938 if ( TMath::Abs(cellTime) > 50 )
944 if ( l0bin == -1 )
continue;
965 if ( TMath::Abs(cellTime) > 50 )
976 Int_t icol = -1, icolAbs = -1;
977 Int_t irow = -1, irowAbs = -1;
984 if ( TMath::Abs(cellTime) > 50 )
1015 delete [] sortList ;
1016 delete [] enerList ;
1017 delete [] timeList ;
1022 Float_t dispp= 0., dEta = 0., dPhi = 0.;
1023 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1027 l0, l1, dispp, dEta, dPhi, sEta, sPhi, sEtaPhi);
1044 if (energy < 2 ) ebin = 0;
1045 else if (energy < 4 ) ebin = 1;
1046 else if (energy < 6 ) ebin = 2;
1047 else if (energy < 10) ebin = 3;
1048 else if (energy < 15) ebin = 4;
1049 else if (energy < 20) ebin = 5;
1061 Float_t dZ = cluster->GetTrackDz();
1062 Float_t dR = cluster->GetTrackDx();
1069 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1117 AliVCaloCells* cells = 0;
1125 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1132 for(
Int_t icell = 0; icell < cluster->GetNCells(); icell++)
1134 cellE = cells->GetCellAmplitude(cluster->GetCellAbsId(icell));
1136 fraction+=cellE*cluster->GetCellAmplitudeFraction(icell);
1142 AliDebug(1,Form(
"Energy fraction of embedded signal %2.3f, Energy %2.3f",fraction, clusterE));
1158 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
1164 const UInt_t nlabels = cluster->GetNLabels();
1165 Int_t overpdg[nlabels];
1174 else if(noverlaps == 1)
1178 else if(noverlaps > 1)
1184 AliWarning(Form(
"n overlaps = %d!!", noverlaps));
1189 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1195 else if(fraction > 0.5)
1199 else if(fraction > 0.1)
1226 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1232 else if(fraction > 0.5)
1236 else if(fraction > 0.1)
1270 else if(energy < 6.)
1291 if (energy < 2 ) ebin = 0;
1292 else if (energy < 4 ) ebin = 1;
1293 else if (energy < 6 ) ebin = 2;
1294 else if (energy < 10) ebin = 3;
1295 else if (energy < 15) ebin = 4;
1296 else if (energy < 20) ebin = 5;
1317 Float_t dZ = cluster->GetTrackDz();
1318 Float_t dR = cluster->GetTrackDx();
1328 Bool_t positive = kFALSE;
1329 if(track) positive = (track->Charge()>0);
1364 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1368 Float_t dEdx = track->GetTPCsignal();
1369 Float_t eOverp = cluster->E()/track->P();
1381 AliWarning(Form(
"Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT?", dR,dZ));
1404 if(cluster->GetNLabels()==1)
1454 const Int_t buffersize = 255;
1455 char onePar[buffersize] ;
1457 snprintf(onePar,buffersize,
"--- AliAnaPhoton ---:") ;
1461 snprintf(onePar,buffersize,
"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster);",
fMinDist) ;
1463 snprintf(onePar,buffersize,
"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation);",
fMinDist2) ;
1465 snprintf(onePar,buffersize,
"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study);",
fMinDist3) ;
1479 return new TObjString(parList) ;
1489 outputContainer->SetName(
"PhotonHistos") ;
1512 Int_t bin[] = {0,2,4,6,10,15,20,100};
1514 TString cut[] = {
"Open",
"Reader",
"E",
"Time",
"NCells",
"NLM",
"Fidutial",
"Matching",
"Bad",
"PID"};
1515 for (
Int_t i = 0; i < 10 ; i++)
1518 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1519 nptbins,ptmin,ptmax);
1525 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1526 nptbins,ptmin,ptmax);
1532 fhEClusterSM =
new TH2F(
"hEClusterSM",
"Raw clusters E and super-module number",
1533 nptbins,ptmin,ptmax,
1539 fhPtClusterSM =
new TH2F(
"hPtClusterSM",
"Raw clusters #it{p}_{T} and super-module number",
1540 nptbins,ptmin,ptmax,
1546 fhEPhotonSM =
new TH2F(
"hEPhotonSM",
"Selected clusters E and super-module number",
1547 nptbins,ptmin,ptmax,
1553 fhPtPhotonSM =
new TH2F(
"hPtPhotonSM",
"Selected clusters #it{p}_{T} and super-module number",
1554 nptbins,ptmin,ptmax,
1560 fhNCellsE =
new TH2F (
"hNCellsE",
"# of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nbins,nmin,nmax);
1562 fhNCellsE->SetYTitle(
"# of cells in cluster");
1565 fhCellsE =
new TH2F (
"hCellsE",
"energy of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nptbins*2,ptmin,ptmax);
1566 fhCellsE->SetXTitle(
"#it{E}_{cluster} (GeV)");
1567 fhCellsE->SetYTitle(
"#it{E}_{cell} (GeV)");
1570 fhTimePt =
new TH2F (
"hTimePt",
"time of cluster vs pT of clusters", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1571 fhTimePt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1572 fhTimePt->SetYTitle(
"#it{time} (ns)");
1575 fhMaxCellDiffClusterE =
new TH2F (
"hMaxCellDiffClusterE",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
1576 nptbins,ptmin,ptmax, 500,0,1.);
1581 fhEPhoton =
new TH1F(
"hEPhoton",
"Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax);
1583 fhEPhoton->SetXTitle(
"#it{E}_{#gamma}(GeV)");
1586 fhPtPhoton =
new TH1F(
"hPtPhoton",
"Number of #gamma over calorimeter vs #it{p}_{T}",nptbins,ptmin,ptmax);
1588 fhPtPhoton->SetXTitle(
"p_{T #gamma}(GeV/#it{c})");
1598 fhPtEventPlanePhoton =
new TH2F(
"hPtEventPlanePhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1605 (
"hEtaPhi",
"cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1611 (
"hPhiPhoton",
"#phi_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1613 fhPhiPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1617 (
"hEtaPhoton",
"#eta_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1619 fhEtaPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1623 (
"hEtaPhiPhoton",
"#eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1630 (
"hEtaPhi05Photon",
"#eta vs #phi, E < 0.5",netabins,etamin,etamax,nphibins,phimin,phimax);
1636 fhNLocMax =
new TH2F(
"hNLocMax",
"Number of local maxima in cluster",
1637 nptbins,ptmin,ptmax,10,0,10);
1645 fhLam0E =
new TH2F (
"hLam0E",
"#lambda_{0}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1646 fhLam0E->SetYTitle(
"#lambda_{0}^{2}");
1647 fhLam0E->SetXTitle(
"#it{E} (GeV)");
1648 outputContainer->Add(
fhLam0E);
1650 fhLam0Pt =
new TH2F (
"hLam0Pt",
"#lambda_{0}^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1651 fhLam0Pt->SetYTitle(
"#lambda_{0}^{2}");
1652 fhLam0Pt->SetXTitle(
"#it{p}_{T} (GeV)");
1655 fhLam1E =
new TH2F (
"hLam1E",
"#lambda_{1}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1656 fhLam1E->SetYTitle(
"#lambda_{1}^{2}");
1657 fhLam1E->SetXTitle(
"#it{E} (GeV)");
1658 outputContainer->Add(
fhLam1E);
1660 fhDispE =
new TH2F (
"hDispE",
" dispersion^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1662 fhDispE->SetXTitle(
"#it{E} (GeV) ");
1663 outputContainer->Add(
fhDispE);
1667 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);
1668 fhLam0ETM->SetYTitle(
"#lambda_{0}^{2}");
1672 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);
1674 fhLam0PtTM->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1677 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);
1678 fhLam1ETM->SetYTitle(
"#lambda_{1}^{2}");
1682 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);
1690 fhLam0ETRD =
new TH2F (
"hLam0ETRD",
"#lambda_{0}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1695 fhLam0PtTRD =
new TH2F (
"hLam0PtTRD",
"#lambda_{0}^{2} vs #it{p}_{T}, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1700 fhLam1ETRD =
new TH2F (
"hLam1ETRD",
"#lambda_{1}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1705 fhDispETRD =
new TH2F (
"hDispETRD",
" dispersion^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1712 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);
1717 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);
1722 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);
1727 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);
1736 fhNCellsLam0LowE =
new TH2F (
"hNCellsLam0LowE",
"N_{cells} in cluster vs #lambda_{0}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1741 fhNCellsLam0HighE =
new TH2F (
"hNCellsLam0HighE",
"N_{cells} in cluster vs #lambda_{0}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1746 fhNCellsLam1LowE =
new TH2F (
"hNCellsLam1LowE",
"N_{cells} in cluster vs #lambda_{1}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1751 fhNCellsLam1HighE =
new TH2F (
"hNCellsLam1HighE",
"N_{cells} in cluster vs #lambda_{1}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1756 fhNCellsDispLowE =
new TH2F (
"hNCellsDispLowE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1761 fhNCellsDispHighE =
new TH2F (
"hNCellsDispHighE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1766 fhEtaLam0LowE =
new TH2F (
"hEtaLam0LowE",
"#eta vs #lambda_{0}^{2}, E < 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1771 fhPhiLam0LowE =
new TH2F (
"hPhiLam0LowE",
"#phi vs #lambda_{0}^{2}, E < 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1776 fhEtaLam0HighE =
new TH2F (
"hEtaLam0HighE",
"#eta vs #lambda_{0}^{2}, #it{E} > 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1781 fhPhiLam0HighE =
new TH2F (
"hPhiLam0HighE",
"#phi vs #lambda_{0}^{2}, #it{E} > 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1786 fhLam1Lam0LowE =
new TH2F (
"hLam1Lam0LowE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1791 fhLam1Lam0HighE =
new TH2F (
"hLam1Lam0HighE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1796 fhLam0DispLowE =
new TH2F (
"hLam0DispLowE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1801 fhLam0DispHighE =
new TH2F (
"hLam0DispHighE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1806 fhDispLam1LowE =
new TH2F (
"hDispLam1LowE",
"Dispersion^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1811 fhDispLam1HighE =
new TH2F (
"hDispLam1HighE",
"Dispersion^{2} vs #lambda_{1^{2}} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1818 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);
1820 fhDispEtaE->SetYTitle(
"#sigma^{2}_{#eta #eta}");
1823 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);
1825 fhDispPhiE->SetYTitle(
"#sigma^{2}_{#phi #phi}");
1828 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);
1830 fhSumEtaE->SetYTitle(
"#delta^{2}_{#eta #eta}");
1833 fhSumPhiE =
new TH2F (
"hSumPhiE",
"#delta^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs E",
1834 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1836 fhSumPhiE->SetYTitle(
"#delta^{2}_{#phi #phi}");
1839 fhSumEtaPhiE =
new TH2F (
"hSumEtaPhiE",
"#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",
1840 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
1845 fhDispEtaPhiDiffE =
new TH2F (
"hDispEtaPhiDiffE",
"#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",
1846 nptbins,ptmin,ptmax,200, -10,10);
1851 fhSphericityE =
new TH2F (
"hSphericityE",
"(#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",
1852 nptbins,ptmin,ptmax, 200, -1,1);
1854 fhSphericityE->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
1857 fhDispSumEtaDiffE =
new TH2F (
"hDispSumEtaDiffE",
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1859 fhDispSumEtaDiffE->SetYTitle(
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average");
1862 fhDispSumPhiDiffE =
new TH2F (
"hDispSumPhiDiffE",
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1864 fhDispSumPhiDiffE->SetYTitle(
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average");
1867 for(
Int_t i = 0; i < 7; i++)
1869 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]),
1870 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1875 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]),
1876 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1881 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]),
1882 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1895 TString cutTM [] = {
"NoCut",
""};
1897 for(
Int_t i = 0; i < 2; i++)
1900 (Form(
"hTrackMatchedDEta%s",cutTM[i].
Data()),
1901 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1902 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1907 (Form(
"hTrackMatchedDPhi%s",cutTM[i].
Data()),
1908 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1909 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1914 (Form(
"hTrackMatchedDEtaDPhi%s",cutTM[i].
Data()),
1915 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1916 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1921 (Form(
"hTrackMatchedDEtaPos%s",cutTM[i].
Data()),
1922 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1923 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1928 (Form(
"hTrackMatchedDPhiPos%s",cutTM[i].
Data()),
1929 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1930 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1935 (Form(
"hTrackMatchedDEtaDPhiPos%s",cutTM[i].
Data()),
1936 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1937 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1942 (Form(
"hTrackMatchedDEtaNeg%s",cutTM[i].
Data()),
1943 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1944 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1949 (Form(
"hTrackMatchedDPhiNeg%s",cutTM[i].
Data()),
1950 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1951 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1956 (Form(
"hTrackMatchedDEtaDPhiNeg%s",cutTM[i].
Data()),
1957 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1958 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1962 fhdEdx[i] =
new TH2F (Form(
"hdEdx%s",cutTM[i].
Data()),Form(
"matched track <dE/dx> vs cluster E, %s",cutTM[i].
Data()),
1963 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
1964 fhdEdx[i]->SetXTitle(
"#it{E} (GeV)");
1965 fhdEdx[i]->SetYTitle(
"<dE/dx>");
1967 fhEOverP[i] =
new TH2F (Form(
"hEOverP%s",cutTM[i].
Data()),Form(
"matched track E/p vs cluster E, %s",cutTM[i].
Data()),
1968 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1969 fhEOverP[i]->SetXTitle(
"#it{E} (GeV)");
1981 outputContainer->Add(
fhdEdx[i]);
1987 (Form(
"hTrackMatchedDEtaTRD%s",cutTM[i].
Data()),
1988 Form(
"d#eta of cluster-track vs cluster energy, SM behind TRD, %s",cutTM[i].
Data()),
1989 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1994 (Form(
"hTrackMatchedDPhiTRD%s",cutTM[i].
Data()),
1995 Form(
"d#phi of cluster-track vs cluster energy, SM behing TRD, %s",cutTM[i].
Data()),
1996 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2001 (Form(
"hEOverPTRD%s",cutTM[i].
Data()),
2002 Form(
"matched track E/p vs cluster E, behind TRD, %s",cutTM[i].
Data()),
2003 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2015 (Form(
"hTrackMatchedDEtaMCNoOverlap%s",cutTM[i].
Data()),
2016 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2017 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2022 (Form(
"hTrackMatchedDPhiMCNoOverlap%s",cutTM[i].
Data()),
2023 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2024 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2031 (Form(
"hTrackMatchedDEtaMCOverlap%s",cutTM[i].
Data()),
2032 Form(
"d#eta of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2033 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2038 (Form(
"hTrackMatchedDPhiMCOverlap%s",cutTM[i].
Data()),
2039 Form(
"d#phi of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2040 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2048 (Form(
"hTrackMatchedDEtaMCConversion%s",cutTM[i].
Data()),
2049 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2050 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2055 (Form(
"hTrackMatchedDPhiMCConversion%s",cutTM[i].
Data()),
2056 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2057 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2065 (Form(
"hTrackMatchedMCParticle%s",cutTM[i].
Data()),
2066 Form(
"Origin of particle vs energy %s",cutTM[i].
Data()),
2067 nptbins,ptmin,ptmax,8,0,8);
2087 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
2089 for(
Int_t i = 0 ; i < 7 ; i++)
2092 Form(
"Selected photon #it{p}_{T} distribution, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2097 Form(
"Photon cluster E vs #it{t}_{max}-#it{t}_{cell} in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2098 nptbins,ptmin,ptmax,400,-200,200);
2104 fhTimePtPhotonNoCut =
new TH2F (
"hTimePtPhoton_NoCut",
"time of photon cluster vs pT of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2109 fhTimePtPhotonSPD =
new TH2F (
"hTimePtPhoton_SPD",
"time of photon cluster vs pT of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2114 fhTimeNPileUpVertSPD =
new TH2F (
"hTime_NPileUpVertSPD",
"time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,20,0,20);
2119 fhTimeNPileUpVertTrack =
new TH2F (
"hTime_NPileUpVertTracks",
"time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 20,0,20 );
2125 nptbins,ptmin,ptmax,20,0,20);
2131 nptbins,ptmin,ptmax, 20,0,20 );
2137 nptbins,ptmin,ptmax,20,0,20);
2143 nptbins,ptmin,ptmax, 20,0,20 );
2149 nptbins,ptmin,ptmax,20,0,20);
2155 nptbins,ptmin,ptmax, 20,0,20 );
2164 for(
Int_t ieta = 0; ieta < 4; ieta++)
2166 for(
Int_t iphi = 0; iphi < 3; iphi++)
2190 new TH2F(Form(
"hLam0_eta%d_phi%d_sm%d",ieta,iphi,ism),
2191 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2192 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2198 new TH2F(Form(
"hLam1_eta%d_phi%d_sm%d",ieta,iphi,ism),
2199 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2200 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2208 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
2209 TString l0bin [] = {
"0.23<#lambda^{2}_{0}<0.26",
"0.3<#lambda^{2}_{0}<0.4"};
2211 for(
Int_t il0 = 0; il0 < 2; il0++)
2213 for(
Int_t ipt = 0; ipt < 7; ipt++)
2216 (Form(
"hEtaPhiLam0Bin%d_PtBin%d",il0,ipt),
2217 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2218 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2219 netabins,etamin,etamax,nphibins,phimin,phimax);
2225 (Form(
"hColRowLam0Bin%d_PtBin%d",il0,ipt),
2226 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, w > 0",
2227 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2228 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2234 (Form(
"hColRowLam0Bin%d_PtBin%dWeighted",il0,ipt),
2235 Form(
"cluster cell row vs column weighted in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2236 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2237 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2243 (Form(
"hColRowLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2244 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, |t| > 50 ns, w > 0",
2245 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2246 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
2270 (Form(
"hEtaPhiLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2271 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, t > 50 ns, %s",
2272 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2273 netabins,etamin,etamax,nphibins,phimin,phimax);
2279 (Form(
"hCellClusterIndexEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2280 Form(
"#it{t}_{cell} vs cell index (E sorted) in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2281 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2282 ntimebins,timemin,timemax,30,0,30);
2288 (Form(
"hCellClusterEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2289 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2290 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2291 ntimebins,timemin,timemax,100,0,5);
2297 (Form(
"hCellClusterEFracAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2298 Form(
"#it{E}_{cell} vs #it{t}_{cell} in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2299 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2300 ntimebins,timemin,timemax,100,0,1);
2309 (Form(
"hLam1Lam0Bin%d_sm%d",il0,ism),
2310 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, %s",ism,l0bin[il0].
Data()),
2311 nptbins,ptmin,ptmax,40,0,0.4);
2317 (Form(
"hTimeLam0Bin%d_sm%d",il0,ism),
2318 Form(
"#it{p}_{T} vs cluster cell time in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2319 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2325 (Form(
"hTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2326 Form(
"#it{p}_{T} vs cluster cell time weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2327 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2333 (Form(
"hDTimeLam0Bin%d_sm%d",il0,ism),
2334 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2335 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2341 (Form(
"hDTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2342 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2343 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2349 (Form(
"hCellClusterEFracLam0Bin%d_sm%d",il0,ism),
2350 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2351 nptbins,ptmin,ptmax,100,0,1);
2365 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2366 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2367 nptbins,ptmin,ptmax,100,0,1);
2373 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell_Total",il0,ism),
2374 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, all |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2375 nptbins,ptmin,ptmax,100,0,1);
2381 (Form(
"hCellClusterELam0Bin%d_sm%d",il0,ism),
2382 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2383 nptbins,ptmin,ptmax,500,0,10);
2389 (Form(
"hCellClusterELam0Bin%d_sm%d_Weighted",il0,ism),
2390 Form(
"#it{p}_{T} vs cell E weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2391 nptbins,ptmin,ptmax,500,0,10);
2397 (Form(
"hCellClusterELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2398 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2399 nptbins,ptmin,ptmax,500,0,10);
2405 (Form(
"hCellClusterIndexELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2406 Form(
"#it{p}_{T} vs cell index (E sorted) in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2407 nptbins,ptmin,ptmax,30,0,30);
2413 (Form(
"hNCellsWithLargeTimeInClusterLam0Bin%d_sm%d",il0,ism),
2414 Form(
"#it{p}_{T} vs number of cells in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2415 nptbins,ptmin,ptmax,30,0,30);
2436 (Form(
"hLam0_sm%d",ism),
2437 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d",ism),
2438 nptbins,ptmin,ptmax,40,0,0.4);
2440 fhLam0PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2444 (Form(
"hLam1_sm%d",ism),
2445 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d",ism),
2446 nptbins,ptmin,ptmax,40,0,0.4);
2448 fhLam1PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2452 (Form(
"hLam0_sm%d_LargeTimeInClusterCell",ism),
2453 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ism),
2454 nptbins,ptmin,ptmax,40,0,0.4);
2460 (Form(
"hLam1_sm%d_LargeTimeInClusterCell",ism),
2461 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ism),
2462 nptbins,ptmin,ptmax,40,0,0.4);
2503 for(
Int_t ilarge = 0; ilarge < 5; ilarge++)
2506 (Form(
"hLam0_NLargeTimeInClusterCell%d",ilarge),
2507 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ilarge),
2508 nptbins,ptmin,ptmax,40,0,0.4);
2514 (Form(
"hLam1_NLargeTimeInClusterCell%d",ilarge),
2515 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ilarge),
2516 nptbins,ptmin,ptmax,40,0,0.4);
2527 TString ptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}",
2528 "#pi^{0}" ,
"#eta" ,
"e^{#pm}" ,
"#gamma->e^{#pm}" ,
2529 "hadron?" ,
"Anti-N" ,
"Anti-P" ,
2530 "Neutron" ,
"Proton" ,
"#pi^{#pm}" ,
2531 "#gamma_{prompt}",
"#gamma_{fragmentation}",
"#gamma_{ISR}" ,
"String" } ;
2533 TString pname[] = {
"Photon" ,
"PhotonPi0Decay" ,
"PhotonEtaDecay",
"PhotonOtherDecay",
2534 "Pi0" ,
"Eta" ,
"Electron" ,
"Conversion" ,
2535 "Hadron" ,
"AntiNeutron" ,
"AntiProton" ,
2536 "Neutron" ,
"Proton" ,
"ChPion" ,
2537 "PhotonPrompt",
"PhotonFragmentation",
"PhotonISR" ,
"String" } ;
2541 fhMCE[i] =
new TH1F(Form(
"hE_MC%s",pname[i].
Data()),
2542 Form(
"cluster from %s : E ",ptype[i].
Data()),
2543 nptbins,ptmin,ptmax);
2544 fhMCE[i]->SetXTitle(
"#it{E} (GeV)");
2545 outputContainer->Add(
fhMCE[i]) ;
2547 fhMCPt[i] =
new TH1F(Form(
"hPt_MC%s",pname[i].
Data()),
2548 Form(
"cluster from %s : #it{p}_{T} ",ptype[i].
Data()),
2549 nptbins,ptmin,ptmax);
2550 fhMCPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2551 outputContainer->Add(
fhMCPt[i]) ;
2554 Form(
"cluster from %s : #eta ",ptype[i].
Data()),
2555 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2556 fhMCEta[i]->SetYTitle(
"#eta");
2557 fhMCEta[i]->SetXTitle(
"#it{E} (GeV)");
2558 outputContainer->Add(
fhMCEta[i]) ;
2561 Form(
"cluster from %s : #phi ",ptype[i].
Data()),
2562 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2563 fhMCPhi[i]->SetYTitle(
"#phi (rad)");
2564 fhMCPhi[i]->SetXTitle(
"#it{E} (GeV)");
2565 outputContainer->Add(
fhMCPhi[i]) ;
2569 Form(
"MC - Reco E from %s",pname[i].
Data()),
2570 nptbins,ptmin,ptmax, 200,-50,50);
2571 fhMCDeltaE[i]->SetYTitle(
"#Delta #it{E} (GeV)");
2576 Form(
"MC - Reco #it{p}_{T} from %s",pname[i].
Data()),
2577 nptbins,ptmin,ptmax, 200,-50,50);
2578 fhMCDeltaPt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2579 fhMCDeltaPt[i]->SetYTitle(
"#Delta #it{p}_{T} (GeV/#it{c})");
2583 Form(
"E distribution, reconstructed vs generated from %s",pname[i].
Data()),
2584 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2585 fhMC2E[i]->SetXTitle(
"#it{E}_{rec} (GeV)");
2586 fhMC2E[i]->SetYTitle(
"#it{E}_{gen} (GeV)");
2587 outputContainer->Add(
fhMC2E[i]);
2590 Form(
"p_T distribution, reconstructed vs generated from %s",pname[i].
Data()),
2591 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2592 fhMC2Pt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2593 fhMC2Pt[i]->SetYTitle(
"p_{T,gen} (GeV/#it{c})");
2594 outputContainer->Add(
fhMC2Pt[i]);
2597 TString pptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
2598 "#gamma_{#eta decay}",
"#gamma_{other decay}" ,
2599 "#gamma_{prompt}" ,
"#gamma_{fragmentation}",
"#gamma_{ISR}" } ;
2601 TString ppname[] = {
"Photon" ,
"PhotonPi0Decay" ,
2602 "PhotonEtaDecay",
"PhotonOtherDecay" ,
2603 "PhotonPrompt" ,
"PhotonFragmentation",
"PhotonISR" } ;
2607 fhEPrimMC[i] =
new TH1F(Form(
"hEPrim_MC%s",ppname[i].
Data()),
2608 Form(
"primary photon %s : E ",pptype[i].
Data()),
2609 nptbins,ptmin,ptmax);
2610 fhEPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2614 Form(
"primary photon %s : #it{p}_{T} ",pptype[i].
Data()),
2615 nptbins,ptmin,ptmax);
2616 fhPtPrimMC[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2620 Form(
"primary photon %s : Rapidity ",pptype[i].
Data()),
2621 nptbins,ptmin,ptmax,200,-2,2);
2623 fhYPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2627 Form(
"primary photon %s : #eta",pptype[i].
Data()),
2628 nptbins,ptmin,ptmax,200,-2,2);
2634 Form(
"primary photon %s : #phi ",pptype[i].
Data()),
2635 nptbins,ptmin,ptmax,nphibins,0,TMath::TwoPi());
2642 Form(
"primary photon %s in acceptance: E ",pptype[i].
Data()),
2643 nptbins,ptmin,ptmax);
2648 Form(
"primary photon %s in acceptance: #it{p}_{T} ",pptype[i].
Data()),
2649 nptbins,ptmin,ptmax);
2654 Form(
"primary photon %s in acceptance: Rapidity ",pptype[i].
Data()),
2655 nptbins,ptmin,ptmax,100,-1,1);
2661 Form(
"primary photon %s in acceptance: #eta ",pptype[i].
Data()),
2662 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2668 Form(
"primary photon %s in acceptance: #phi ",pptype[i].
Data()),
2669 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2677 TString ptypess[] = {
"#gamma",
"hadron?",
"#pi^{0}",
"#eta",
"#gamma->e^{#pm}",
"e^{#pm}"} ;
2679 TString pnamess[] = {
"Photon",
"Hadron",
"Pi0",
"Eta",
"Conversion",
"Electron"} ;
2681 for(
Int_t i = 0; i < 6; i++)
2684 Form(
"cluster from %s : E vs #lambda_{0}^{2}",ptypess[i].
Data()),
2685 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2691 Form(
"cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}",ptypess[i].
Data()),
2692 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2698 Form(
"cluster from %s : E vs #lambda_{1}^{2}",ptypess[i].
Data()),
2699 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2705 Form(
"cluster from %s : E vs dispersion^{2}",ptypess[i].
Data()),
2706 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2712 Form(
"# of cells in cluster from %s vs E of clusters",ptypess[i].
Data()),
2713 nptbins,ptmin,ptmax, nbins,nmin,nmax);
2715 fhMCNCellsE[i]->SetYTitle(
"# of cells in cluster");
2719 Form(
"energy vs difference of cluster energy from %s - max cell energy / cluster energy, good clusters",ptypess[i].
Data()),
2720 nptbins,ptmin,ptmax, 500,0,1.);
2728 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2729 ssbins,ssmin,ssmax,500,0,1.);
2735 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2736 ssbins,ssmin,ssmax,500,0,1.);
2742 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2743 ssbins,ssmin,ssmax,500,0,1.);
2749 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2750 nbins/5,nmin,nmax/5,500,0,1.);
2756 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2757 nbins/5,nmin,nmax/5,500,0,1.);
2763 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2764 nbins/5,nmin,nmax/5,500,0,1.);
2772 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptypess[i].
Data()),
2773 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2779 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptypess[i].
Data()),
2780 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2786 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()),
2787 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
2793 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptypess[i].
Data()),
2794 nptbins,ptmin,ptmax,200,-10,10);
2800 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()),
2801 nptbins,ptmin,ptmax, 200,-1,1);
2803 fhMCESphericity[i]->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
2806 for(
Int_t ie = 0; ie < 7; ie++)
2809 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]),
2810 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2816 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]),
2817 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2823 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]),
2824 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2833 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
2836 "cluster from Photon : E vs #lambda_{0}^{2}",
2837 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2843 "cluster from Photon : E vs #lambda_{0}^{2}",
2844 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2850 "cluster from Photon : E vs #lambda_{0}^{2}",
2851 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2857 if(
GetReader()->IsEmbeddedClusterSelectionOn())
2860 "Energy Fraction of embedded signal versus cluster energy",
2861 nptbins,ptmin,ptmax,100,0.,1.);
2867 "cluster from Photon embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2868 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2874 "cluster from Photon embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2875 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2881 "cluster from Photon embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2882 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2888 "cluster from Photonm embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2889 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2895 "cluster from Pi0 embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2896 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2902 "cluster from Pi0 embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2903 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2909 "cluster from Pi0 embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2910 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2916 "cluster from Pi0 embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2917 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2927 fhMCConversionVertex =
new TH2F(
"hMCPhotonConversionVertex",
"cluster from converted photon, #it{p}_{T} vs vertex distance",
2928 nptbins,ptmin,ptmax,500,0,500);
2935 fhMCConversionVertexTRD =
new TH2F(
"hMCPhotonConversionVertexTRD",
"cluster from converted photon, #it{p}_{T} vs vertex distance, SM covered by TRD",
2936 nptbins,ptmin,ptmax,500,0,500);
2944 TString region[] = {
"ITS",
"TPC",
"TRD",
"TOF",
"Top EMCal",
"In EMCal"};
2945 for(
Int_t iR = 0; iR < 6; iR++)
2948 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s",region[iR].
Data()),
2949 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2955 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s",region[iR].
Data()),
2956 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2965 for(
Int_t iR = 0; iR < 6; iR++)
2968 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2969 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2975 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2976 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3023 (Form(
"hEBin%d_Cluster_EtaPhi",ie),
3024 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3025 netabins,etamin,etamax,nphibins,phimin,phimax);
3031 (Form(
"hEBin%d_Cluster_ColRow",ie),
3032 Form(
"column vs row, cluster max E cell, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3033 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3039 (Form(
"hEBin%d_Cluster_EtaPhi_PID",ie),
3040 Form(
"#eta vs #phi, cluster, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}, PID cut",
fEBinCuts[ie],
fEBinCuts[ie+1]),
3041 netabins,etamin,etamax,nphibins,phimin,phimax);
3047 (Form(
"hEBin%d_Cluster_ColRow_PID",ie),
3048 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]),
3049 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
3057 return outputContainer ;
3066 AliFatal(
"!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
3068 AliFatal(
"!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
3113 AliVCaloCells* cells = 0;
3156 TClonesArray * clusterList = 0;
3165 Int_t nclusters = clusterList->GetEntriesFast();
3166 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
3168 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
3182 Int_t nCaloClusters = pl->GetEntriesFast();
3190 for(
Int_t icalo = 0; icalo < nCaloClusters; icalo++)
3192 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
3196 Int_t evtIndex = 0 ;
3199 evtIndex=
GetMixedEvent()->EventIndexForCaloCluster(calo->GetID()) ;
3224 AliAODPWG4Particle aodph = AliAODPWG4Particle(
fMomentum);
3228 Int_t label = calo->GetLabel();
3229 aodph.SetLabel(label);
3230 aodph.SetCaloLabel(calo->GetID(),-1);
3236 Double_t distBad=calo->GetDistanceToBadChannel() ;
3237 if (distBad >
fMinDist3) aodph.SetDistToBad(2) ;
3238 else if(distBad >
fMinDist2) aodph.SetDistToBad(1) ;
3239 else aodph.SetDistToBad(0) ;
3254 AliDebug(1,Form(
"Origin of candidate, bit map %d",aodph.GetTag()));
3263 if( absIdMax < 0 ) AliFatal(
"Wrong absID");
3265 Int_t largeTimeInCellCluster = kFALSE;
3267 aodph.SetFiducialArea(largeTimeInCellCluster);
3270 aodph.SetM02(calo->GetM02());
3271 aodph.SetM20(calo->GetM20());
3272 aodph.SetNLM(nMaxima);
3274 Float_t time = calo->GetTOF()*1e9;
3276 aodph.SetTime(time);
3278 aodph.SetNCells(calo->GetNCells());
3280 aodph.SetSModNumber(nSM);
3292 Int_t icolAbs = -1, irowAbs = -1;
3298 Int_t icol = -1, irow = -1, iRCU = -1;
3301 if(ebin>=0 && ebin < fNEBinCuts)
3320 aodph.SetIdentifiedParticleType(
GetCaloPID()->GetIdentifiedParticleType(calo));
3322 AliDebug(1,Form(
"PDG of identified particle %d",aodph.GetIdentifiedParticleType()));
3337 AliDebug(1,
"PID Bits set");
3340 AliDebug(1,Form(
"Photon selection cuts passed: pT %3.2f, pdg %d",aodph.Pt(),aodph.GetIdentifiedParticleType()));
3347 if(ebin>=0 && ebin < fNEBinCuts)
3355 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
3370 for(
Int_t icell = 0; icell < calo->GetNCells(); icell++)
3385 AliDebug(1,Form(
"End fill AODs, with %d entries",
GetOutputAODBranch()->GetEntriesFast()));
3405 AliDebug(1,Form(
"AOD branch entries %d", naod));
3412 for(
Int_t iaod = 0; iaod < naod ; iaod++)
3415 Int_t pdg = ph->GetIdentifiedParticleType();
3417 AliDebug(2,Form(
"PDG %d, MC TAG %d, Calorimeter <%d>",ph->GetIdentifiedParticleType(),ph->GetTag(), ph->GetDetectorTag())) ;
3424 AliDebug(2,Form(
"ID Photon: pt %f, phi %f, eta %f", ph->Pt(),ph->Phi(),ph->Eta())) ;
3429 Float_t phicluster = ph->Phi();
3430 Float_t etacluster = ph->Eta();
3473 Int_t label = ph->GetLabel();
3477 AliDebug(1,Form(
"*** bad label ***: label %d", label));
3484 Int_t pdg = 0, status = 0, momLabel = -1;
3495 Int_t tag =ph->GetTag();
3496 Int_t mcParticleTag = -1;
3526 Int_t pdgD = 0, statusD = 0, daugLabel = -1;
3557 if ( prodR < 75. ) convR = 0;
3558 else if ( prodR < 275. ) convR = 1;
3559 else if ( prodR < 375. ) convR = 2;
3560 else if ( prodR < 400. ) convR = 3;
3561 else if ( prodR < 430. ) convR = 4;
3673 if(mcParticleTag >= 0 &&
fhMCE[mcParticleTag])
3699 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3703 printf(
"Min Distance to Bad Channel = %2.1f\n",
fMinDist);
3704 printf(
"Min Distance to Bad Channel 2 = %2.1f\n",
fMinDist2);
3705 printf(
"Min Distance to Bad Channel 3 = %2.1f\n",
fMinDist3);
3708 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
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 * 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 * fhEBinClusterColRow[14]
! Column and row location of cluster max E cell in different energy bins.
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
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
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
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