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),
63 fhNCellsE(0), fhCellsE(0),
64 fhMaxCellDiffClusterE(0), fhTimePt(0), fhEtaPhi(0),
66 fhEPhoton(0), fhPtPhoton(0),
67 fhPhiPhoton(0), fhEtaPhoton(0),
68 fhEtaPhiPhoton(0), fhEtaPhi05Photon(0),
69 fhPtCentralityPhoton(0), fhPtEventPlanePhoton(0),
73 fhDispE(0), fhLam0E(0), fhLam0Pt(0), fhLam1E(0),
74 fhDispETRD(0), fhLam0ETRD(0), fhLam0PtTRD(0), fhLam1ETRD(0),
75 fhDispETM(0), fhLam0ETM(0), fhLam0PtTM(0), fhLam1ETM(0),
76 fhDispETMTRD(0), fhLam0ETMTRD(0), fhLam0PtTMTRD(0), fhLam1ETMTRD(0),
78 fhNCellsLam0LowE(0), fhNCellsLam1LowE(0), fhNCellsDispLowE(0),
79 fhNCellsLam0HighE(0), fhNCellsLam1HighE(0), fhNCellsDispHighE(0),
81 fhEtaLam0LowE(0), fhPhiLam0LowE(0),
82 fhEtaLam0HighE(0), fhPhiLam0HighE(0),
83 fhLam0DispLowE(0), fhLam0DispHighE(0),
84 fhLam1Lam0LowE(0), fhLam1Lam0HighE(0),
85 fhDispLam1LowE(0), fhDispLam1HighE(0),
86 fhDispEtaE(0), fhDispPhiE(0),
87 fhSumEtaE(0), fhSumPhiE(0), fhSumEtaPhiE(0),
88 fhDispEtaPhiDiffE(0), fhSphericityE(0),
89 fhDispSumEtaDiffE(0), fhDispSumPhiDiffE(0),
92 fhMCPhotonELambda0NoOverlap(0), fhMCPhotonELambda0TwoOverlap(0), fhMCPhotonELambda0NOverlap(0),
94 fhEmbeddedSignalFractionEnergy(0),
95 fhEmbedPhotonELambda0FullSignal(0), fhEmbedPhotonELambda0MostlySignal(0),
96 fhEmbedPhotonELambda0MostlyBkg(0), fhEmbedPhotonELambda0FullBkg(0),
97 fhEmbedPi0ELambda0FullSignal(0), fhEmbedPi0ELambda0MostlySignal(0),
98 fhEmbedPi0ELambda0MostlyBkg(0), fhEmbedPi0ELambda0FullBkg(0),
100 fhTimePtPhotonNoCut(0), fhTimePtPhotonSPD(0),
101 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
102 fhPtPhotonNPileUpSPDVtx(0), fhPtPhotonNPileUpTrkVtx(0),
103 fhPtPhotonNPileUpSPDVtxTimeCut(0), fhPtPhotonNPileUpTrkVtxTimeCut(0),
104 fhPtPhotonNPileUpSPDVtxTimeCut2(0), fhPtPhotonNPileUpTrkVtxTimeCut2(0),
106 fhEClusterSM(0), fhEPhotonSM(0),
107 fhPtClusterSM(0), fhPtPhotonSM(0),
108 fhMCConversionVertex(0), fhMCConversionVertexTRD(0)
137 for(Int_t i = 0; i < 7; i++)
179 for(Int_t i = 0; i < 5; i++)
186 for(Int_t i = 0; i < 2; i++)
200 for(Int_t i = 0; i < 6; i++)
208 for(Int_t ieta = 0; ieta < 4; ieta++)
210 for(Int_t iphi = 0; iphi < 3; iphi++)
220 for(Int_t ism =0; ism < 20; ism++)
228 for(Int_t il0 = 0; il0 < 2; il0++)
230 for(Int_t i = 0; i < 7; i++)
243 for(Int_t ism =0; ism < 20; ism++)
279 for(Int_t ism = 0; ism < 20; ism++)
289 for(Int_t ilarge = 0; ilarge < 5; ilarge++)
323 if(phicluster < 0) phicluster+=TMath::TwoPi();
327 AliDebug(2,Form(
"Current Event %d; Before selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
329 ecluster,ptcluster, phicluster*TMath::RadToDeg(),etacluster));
337 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
347 AliDebug(2,Form(
"\t Cluster %d Pass E Cut",calo->GetID()));
354 Double_t tof = calo->GetTOF()*1e9;
357 if(tof < fTimeCutMin || tof >
fTimeCutMax)
return kFALSE;
359 AliDebug(2,Form(
"\t Cluster %d Pass Time Cut",calo->GetID()));
367 AliDebug(2,Form(
"\t Cluster %d Pass NCell Cut",calo->GetID()));
372 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
return kFALSE ;
373 AliDebug(2,Form(
"\t Cluster %d pass NLM %d of out of range",calo->GetID(), nMaxima));
383 if(! in )
return kFALSE ;
386 AliDebug(2,Form(
"\t Fiducial cut passed"));
401 AliDebug(2,
"\t Reject track-matched clusters");
405 AliDebug(2,
"\t Track-matching cut passed");
413 Double_t distBad=calo->GetDistanceToBadChannel() ;
414 if(distBad < 0.) distBad=9999. ;
419 else AliDebug(2,Form(
"\t Bad channel cut passed %4.2f > %2.2f",distBad,
fMinDist));
424 AliDebug(1,Form(
"Current Event %d; After selection : E %2.2f, pT %2.2f, phi %2.2f, eta %2.2f",
441 Double_t photonY = -100 ;
442 Double_t photonE = -1 ;
443 Double_t photonPt = -1 ;
444 Double_t photonPhi = 100 ;
445 Double_t photonEta = -1 ;
452 Bool_t inacceptance = kFALSE ;
454 TParticle * primStack = 0;
455 AliAODMCParticle * primAOD = 0;
458 AliStack * stack = 0;
464 AliFatal(
"Stack not available, is the MC handler called? STOP");
467 nprim = stack->GetNtrack();
471 TClonesArray * mcparticles = 0;
477 AliFatal(
"Standard MCParticles not available!");
480 nprim = mcparticles->GetEntriesFast();
483 for(Int_t i=0 ; i < nprim; i++)
485 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
489 primStack = stack->Particle(i) ;
492 AliWarning(
"ESD primaries pointer not available!!");
496 pdg = primStack->GetPdgCode();
497 status = primStack->GetStatusCode();
500 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
501 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
502 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
510 photonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
514 primAOD = (AliAODMCParticle *) mcparticles->At(i);
517 AliWarning(
"AOD primaries pointer not available!!");
521 pdg = primAOD->GetPdgCode();
522 status = primAOD->GetStatus();
525 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
526 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
527 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
530 fMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
532 photonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
536 if(pdg != 22 ) continue ;
547 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
550 inacceptance = kTRUE;
580 if(status > 1) continue ;
582 Bool_t takeIt = kFALSE ;
620 if(!takeIt) continue ;
624 if(TMath::Abs(photonY) < 1.0)
645 if(TMath::Abs(photonY) < 1.0)
672 Float_t time = cluster->GetTOF()*1.e9;
693 if(cells->GetCellAmplitude(absIdMax) > 0.1 && TMath::Abs(time) < 30)
695 for (Int_t ipos = 0; ipos < cluster->GetNCells(); ipos++)
697 Int_t absId = cluster->GetCellsAbsId()[ipos];
699 if( absId == absIdMax ) continue ;
701 Double_t tcell = cells->GetCellTime(absId);
702 Float_t amp = cells->GetCellAmplitude(absId);
709 Float_t diff = (time-tcell);
711 if( cells->GetCellAmplitude(absIdMax) < 0.1 )
continue ;
724 AliESDEvent* esdEv =
dynamic_cast<AliESDEvent*
> (event);
725 AliAODEvent* aodEv =
dynamic_cast<AliAODEvent*
> (event);
736 nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD();
737 nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks();
742 nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD();
743 nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks();
755 if(TMath::Abs(time) < 25)
761 if(time < 75 && time > -25)
772 Float_t maxCellFraction, Int_t & largeTime)
776 Float_t
energy = cluster->E();
777 Int_t ncells = cluster->GetNCells();
778 Float_t lambda0 = cluster->GetM02();
779 Float_t lambda1 = cluster->GetM20();
780 Float_t disp = cluster->GetDispersion()*cluster->GetDispersion();
785 if(phi < 0) phi+=TMath::TwoPi();
819 Int_t etaRegion = -1, phiRegion = -1;
821 if(etaRegion >= 0 && etaRegion < 4 && phiRegion >=0 && phiRegion < 3)
843 if ( lambda0 >=0.30 && lambda0 <= 0.40 ) l0bin = 1;
844 else if( lambda0 >=0.23 && lambda0 <= 0.26 ) l0bin = 0;
846 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
848 for(Int_t ipt = 0; ipt < 7; ipt++)
850 if( pt >= ptLimit[ipt] && pt < ptLimit[ipt+1] )
879 Int_t ncell = cluster->GetNCells();
880 Int_t * sortList =
new Int_t [ncell];
881 Float_t * enerList =
new Float_t [ncell];
882 Double_t * timeList =
new Double_t[ncell];
884 for(Int_t icell = 0; icell < ncell; icell++)
886 Int_t absId = cluster->GetCellAbsId(icell);
887 Float_t cellE = cells->GetCellAmplitude(absId);
888 Double_t cellTime = cells->GetCellTime(absId);
894 enerList[icell] = cellE;
895 timeList[icell] = cellTime;
898 TMath::Sort(ncell,enerList,sortList);
904 Int_t absIdMax = cluster->GetCellAbsId(sortList[0]);
906 Double_t cellTimeMax = timeList[sortList[0]];
913 Float_t largeTimeE = 0;
914 for(Int_t icell = 1; icell < ncell; icell++)
916 Int_t absId = cluster->GetCellAbsId(sortList[icell]);
917 Float_t cellE = enerList[sortList[icell]];
918 Double_t cellTime = timeList[sortList[icell]];
922 if ( absId == absIdMax )
continue;
927 if(weight < 0.01)
continue;
929 if ( TMath::Abs(cellTime) > 50 )
935 if ( l0bin == -1 )
continue;
956 if ( TMath::Abs(cellTime) > 50 )
967 Int_t icol = -1, icolAbs = -1;
968 Int_t irow = -1, irowAbs = -1;
975 if ( TMath::Abs(cellTime) > 50 )
1006 delete [] sortList ;
1007 delete [] enerList ;
1008 delete [] timeList ;
1012 Float_t l0 = 0., l1 = 0.;
1013 Float_t dispp= 0., dEta = 0., dPhi = 0.;
1014 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1018 l0, l1, dispp, dEta, dPhi, sEta, sPhi, sEtaPhi);
1035 if (energy < 2 ) ebin = 0;
1036 else if (energy < 4 ) ebin = 1;
1037 else if (energy < 6 ) ebin = 2;
1038 else if (energy < 10) ebin = 3;
1039 else if (energy < 15) ebin = 4;
1040 else if (energy < 20) ebin = 5;
1052 Float_t dZ = cluster->GetTrackDz();
1053 Float_t dR = cluster->GetTrackDx();
1060 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1108 AliVCaloCells* cells = 0;
1113 Float_t fraction = 0;
1116 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1121 Float_t clusterE = 0;
1123 for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
1125 cellE = cells->GetCellAmplitude(cluster->GetCellAbsId(icell));
1127 fraction+=cellE*cluster->GetCellAmplitudeFraction(icell);
1133 AliDebug(1,Form(
"Energy fraction of embedded signal %2.3f, Energy %2.3f",fraction, clusterE));
1149 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
1155 const UInt_t nlabels = cluster->GetNLabels();
1156 Int_t overpdg[nlabels];
1165 else if(noverlaps == 1)
1169 else if(noverlaps > 1)
1175 AliWarning(Form(
"n overlaps = %d!!", noverlaps));
1180 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1186 else if(fraction > 0.5)
1190 else if(fraction > 0.1)
1217 if(
GetReader()->IsEmbeddedClusterSelectionOn())
1223 else if(fraction > 0.5)
1227 else if(fraction > 0.1)
1261 else if(energy < 6.)
1282 if (energy < 2 ) ebin = 0;
1283 else if (energy < 4 ) ebin = 1;
1284 else if (energy < 6 ) ebin = 2;
1285 else if (energy < 10) ebin = 3;
1286 else if (energy < 15) ebin = 4;
1287 else if (energy < 20) ebin = 5;
1308 Float_t dZ = cluster->GetTrackDz();
1309 Float_t dR = cluster->GetTrackDx();
1319 Bool_t positive = kFALSE;
1320 if(track) positive = (track->Charge()>0);
1355 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1359 Float_t dEdx = track->GetTPCsignal();
1360 Float_t eOverp = cluster->E()/track->P();
1372 AliWarning(Form(
"Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT?", dR,dZ));
1395 if(cluster->GetNLabels()==1)
1445 const Int_t buffersize = 255;
1446 char onePar[buffersize] ;
1448 snprintf(onePar,buffersize,
"--- AliAnaPhoton ---:") ;
1452 snprintf(onePar,buffersize,
"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster);",
fMinDist) ;
1454 snprintf(onePar,buffersize,
"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation);",
fMinDist2) ;
1456 snprintf(onePar,buffersize,
"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study);",
fMinDist3) ;
1470 return new TObjString(parList) ;
1479 TList * outputContainer =
new TList() ;
1480 outputContainer->SetName(
"PhotonHistos") ;
1503 Int_t bin[] = {0,2,4,6,10,15,20,100};
1505 TString cut[] = {
"Open",
"Reader",
"E",
"Time",
"NCells",
"NLM",
"Fidutial",
"Matching",
"Bad",
"PID"};
1506 for (Int_t i = 0; i < 10 ; i++)
1509 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1510 nptbins,ptmin,ptmax);
1516 Form(
"Number of clusters that pass cuts <= %d, %s", i, cut[i].
Data()),
1517 nptbins,ptmin,ptmax);
1523 fhEClusterSM =
new TH2F(
"hEClusterSM",
"Raw clusters E and super-module number",
1524 nptbins,ptmin,ptmax,
1530 fhPtClusterSM =
new TH2F(
"hPtClusterSM",
"Raw clusters #it{p}_{T} and super-module number",
1531 nptbins,ptmin,ptmax,
1537 fhEPhotonSM =
new TH2F(
"hEPhotonSM",
"Selected clusters E and super-module number",
1538 nptbins,ptmin,ptmax,
1544 fhPtPhotonSM =
new TH2F(
"hPtPhotonSM",
"Selected clusters #it{p}_{T} and super-module number",
1545 nptbins,ptmin,ptmax,
1551 fhNCellsE =
new TH2F (
"hNCellsE",
"# of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nbins,nmin,nmax);
1553 fhNCellsE->SetYTitle(
"# of cells in cluster");
1556 fhCellsE =
new TH2F (
"hCellsE",
"energy of cells in cluster vs E of clusters", nptbins,ptmin,ptmax, nptbins*2,ptmin,ptmax);
1557 fhCellsE->SetXTitle(
"#it{E}_{cluster} (GeV)");
1558 fhCellsE->SetYTitle(
"#it{E}_{cell} (GeV)");
1561 fhTimePt =
new TH2F (
"hTimePt",
"time of cluster vs pT of clusters", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1562 fhTimePt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1563 fhTimePt->SetYTitle(
"#it{time} (ns)");
1566 fhMaxCellDiffClusterE =
new TH2F (
"hMaxCellDiffClusterE",
"energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
1567 nptbins,ptmin,ptmax, 500,0,1.);
1572 fhEPhoton =
new TH1F(
"hEPhoton",
"Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax);
1574 fhEPhoton->SetXTitle(
"#it{E}_{#gamma}(GeV)");
1577 fhPtPhoton =
new TH1F(
"hPtPhoton",
"Number of #gamma over calorimeter vs #it{p}_{T}",nptbins,ptmin,ptmax);
1579 fhPtPhoton->SetXTitle(
"p_{T #gamma}(GeV/#it{c})");
1584 fhPtCentralityPhoton =
new TH2F(
"hPtCentralityPhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,100);
1589 fhPtEventPlanePhoton =
new TH2F(
"hPtEventPlanePhoton",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1596 (
"hEtaPhi",
"cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1602 (
"hPhiPhoton",
"#phi_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1604 fhPhiPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1608 (
"hEtaPhoton",
"#eta_{#gamma} vs #it{p}_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1610 fhEtaPhoton->SetXTitle(
"p_{T #gamma} (GeV/#it{c})");
1614 (
"hEtaPhiPhoton",
"#eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
1621 (
"hEtaPhi05Photon",
"#eta vs #phi, E < 0.5",netabins,etamin,etamax,nphibins,phimin,phimax);
1627 fhNLocMax =
new TH2F(
"hNLocMax",
"Number of local maxima in cluster",
1628 nptbins,ptmin,ptmax,10,0,10);
1636 fhLam0E =
new TH2F (
"hLam0E",
"#lambda_{0}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1637 fhLam0E->SetYTitle(
"#lambda_{0}^{2}");
1638 fhLam0E->SetXTitle(
"#it{E} (GeV)");
1639 outputContainer->Add(
fhLam0E);
1641 fhLam0Pt =
new TH2F (
"hLam0Pt",
"#lambda_{0}^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1642 fhLam0Pt->SetYTitle(
"#lambda_{0}^{2}");
1643 fhLam0Pt->SetXTitle(
"#it{p}_{T} (GeV)");
1646 fhLam1E =
new TH2F (
"hLam1E",
"#lambda_{1}^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1647 fhLam1E->SetYTitle(
"#lambda_{1}^{2}");
1648 fhLam1E->SetXTitle(
"#it{E} (GeV)");
1649 outputContainer->Add(
fhLam1E);
1651 fhDispE =
new TH2F (
"hDispE",
" dispersion^{2} vs E", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1653 fhDispE->SetXTitle(
"#it{E} (GeV) ");
1654 outputContainer->Add(
fhDispE);
1658 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);
1659 fhLam0ETM->SetYTitle(
"#lambda_{0}^{2}");
1663 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);
1665 fhLam0PtTM->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1668 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);
1669 fhLam1ETM->SetYTitle(
"#lambda_{1}^{2}");
1673 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);
1681 fhLam0ETRD =
new TH2F (
"hLam0ETRD",
"#lambda_{0}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1686 fhLam0PtTRD =
new TH2F (
"hLam0PtTRD",
"#lambda_{0}^{2} vs #it{p}_{T}, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1691 fhLam1ETRD =
new TH2F (
"hLam1ETRD",
"#lambda_{1}^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1696 fhDispETRD =
new TH2F (
"hDispETRD",
" dispersion^{2} vs E, EMCAL SM covered by TRD", nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1703 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);
1708 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);
1713 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);
1718 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);
1727 fhNCellsLam0LowE =
new TH2F (
"hNCellsLam0LowE",
"N_{cells} in cluster vs #lambda_{0}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1732 fhNCellsLam0HighE =
new TH2F (
"hNCellsLam0HighE",
"N_{cells} in cluster vs #lambda_{0}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1737 fhNCellsLam1LowE =
new TH2F (
"hNCellsLam1LowE",
"N_{cells} in cluster vs #lambda_{1}^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1742 fhNCellsLam1HighE =
new TH2F (
"hNCellsLam1HighE",
"N_{cells} in cluster vs #lambda_{1}^{2}, #it{E} > 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1747 fhNCellsDispLowE =
new TH2F (
"hNCellsDispLowE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1752 fhNCellsDispHighE =
new TH2F (
"hNCellsDispHighE",
"N_{cells} in cluster vs dispersion^{2}, E < 2 GeV", nbins,nmin, nmax, ssbins,ssmin,ssmax);
1757 fhEtaLam0LowE =
new TH2F (
"hEtaLam0LowE",
"#eta vs #lambda_{0}^{2}, E < 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1762 fhPhiLam0LowE =
new TH2F (
"hPhiLam0LowE",
"#phi vs #lambda_{0}^{2}, E < 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1767 fhEtaLam0HighE =
new TH2F (
"hEtaLam0HighE",
"#eta vs #lambda_{0}^{2}, #it{E} > 2 GeV", netabins,etamin,etamax, ssbins,ssmin,ssmax);
1772 fhPhiLam0HighE =
new TH2F (
"hPhiLam0HighE",
"#phi vs #lambda_{0}^{2}, #it{E} > 2 GeV", nphibins,phimin,phimax, ssbins,ssmin,ssmax);
1777 fhLam1Lam0LowE =
new TH2F (
"hLam1Lam0LowE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1782 fhLam1Lam0HighE =
new TH2F (
"hLam1Lam0HighE",
"#lambda_{0}^{2} vs #lambda_{1}^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1787 fhLam0DispLowE =
new TH2F (
"hLam0DispLowE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1792 fhLam0DispHighE =
new TH2F (
"hLam0DispHighE",
"#lambda_{0}^{2} vs dispersion^{2} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1797 fhDispLam1LowE =
new TH2F (
"hDispLam1LowE",
"Dispersion^{2} vs #lambda_{1}^{2} in cluster of E < 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1802 fhDispLam1HighE =
new TH2F (
"hDispLam1HighE",
"Dispersion^{2} vs #lambda_{1^{2}} in cluster of #it{E} > 2 GeV", ssbins,ssmin,ssmax, ssbins,ssmin,ssmax);
1809 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);
1811 fhDispEtaE->SetYTitle(
"#sigma^{2}_{#eta #eta}");
1814 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);
1816 fhDispPhiE->SetYTitle(
"#sigma^{2}_{#phi #phi}");
1819 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);
1821 fhSumEtaE->SetYTitle(
"#delta^{2}_{#eta #eta}");
1824 fhSumPhiE =
new TH2F (
"hSumPhiE",
"#delta^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs E",
1825 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1827 fhSumPhiE->SetYTitle(
"#delta^{2}_{#phi #phi}");
1830 fhSumEtaPhiE =
new TH2F (
"hSumEtaPhiE",
"#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",
1831 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
1836 fhDispEtaPhiDiffE =
new TH2F (
"hDispEtaPhiDiffE",
"#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",
1837 nptbins,ptmin,ptmax,200, -10,10);
1842 fhSphericityE =
new TH2F (
"hSphericityE",
"(#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",
1843 nptbins,ptmin,ptmax, 200, -1,1);
1845 fhSphericityE->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
1848 fhDispSumEtaDiffE =
new TH2F (
"hDispSumEtaDiffE",
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1850 fhDispSumEtaDiffE->SetYTitle(
"#sigma^{2}_{#eta #eta} - #delta^{2}_{#eta #eta} / average");
1853 fhDispSumPhiDiffE =
new TH2F (
"hDispSumPhiDiffE",
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average vs E", nptbins,ptmin,ptmax, 200,-0.01,0.01);
1855 fhDispSumPhiDiffE->SetYTitle(
"#sigma^{2}_{#phi #phi} - #delta^{2}_{#phi #phi} / average");
1858 for(Int_t i = 0; i < 7; i++)
1860 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]),
1861 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1866 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]),
1867 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1872 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]),
1873 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1886 TString cutTM [] = {
"NoCut",
""};
1888 for(Int_t i = 0; i < 2; i++)
1891 (Form(
"hTrackMatchedDEta%s",cutTM[i].
Data()),
1892 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1893 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1898 (Form(
"hTrackMatchedDPhi%s",cutTM[i].
Data()),
1899 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1900 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1905 (Form(
"hTrackMatchedDEtaDPhi%s",cutTM[i].
Data()),
1906 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1907 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1912 (Form(
"hTrackMatchedDEtaPos%s",cutTM[i].
Data()),
1913 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1914 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1919 (Form(
"hTrackMatchedDPhiPos%s",cutTM[i].
Data()),
1920 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1921 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1926 (Form(
"hTrackMatchedDEtaDPhiPos%s",cutTM[i].
Data()),
1927 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1928 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1933 (Form(
"hTrackMatchedDEtaNeg%s",cutTM[i].
Data()),
1934 Form(
"d#eta of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1935 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1940 (Form(
"hTrackMatchedDPhiNeg%s",cutTM[i].
Data()),
1941 Form(
"d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1942 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1947 (Form(
"hTrackMatchedDEtaDPhiNeg%s",cutTM[i].
Data()),
1948 Form(
"d#eta vs d#phi of cluster-track vs cluster energy, %s",cutTM[i].
Data()),
1949 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1953 fhdEdx[i] =
new TH2F (Form(
"hdEdx%s",cutTM[i].
Data()),Form(
"matched track <dE/dx> vs cluster E, %s",cutTM[i].
Data()),
1954 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
1955 fhdEdx[i]->SetXTitle(
"#it{E} (GeV)");
1956 fhdEdx[i]->SetYTitle(
"<dE/dx>");
1958 fhEOverP[i] =
new TH2F (Form(
"hEOverP%s",cutTM[i].
Data()),Form(
"matched track E/p vs cluster E, %s",cutTM[i].
Data()),
1959 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1960 fhEOverP[i]->SetXTitle(
"#it{E} (GeV)");
1972 outputContainer->Add(
fhdEdx[i]);
1978 (Form(
"hTrackMatchedDEtaTRD%s",cutTM[i].
Data()),
1979 Form(
"d#eta of cluster-track vs cluster energy, SM behind TRD, %s",cutTM[i].
Data()),
1980 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1985 (Form(
"hTrackMatchedDPhiTRD%s",cutTM[i].
Data()),
1986 Form(
"d#phi of cluster-track vs cluster energy, SM behing TRD, %s",cutTM[i].
Data()),
1987 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1992 (Form(
"hEOverPTRD%s",cutTM[i].
Data()),
1993 Form(
"matched track E/p vs cluster E, behind TRD, %s",cutTM[i].
Data()),
1994 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2006 (Form(
"hTrackMatchedDEtaMCNoOverlap%s",cutTM[i].
Data()),
2007 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2008 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2013 (Form(
"hTrackMatchedDPhiMCNoOverlap%s",cutTM[i].
Data()),
2014 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap %s",cutTM[i].
Data()),
2015 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2022 (Form(
"hTrackMatchedDEtaMCOverlap%s",cutTM[i].
Data()),
2023 Form(
"d#eta of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2024 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2029 (Form(
"hTrackMatchedDPhiMCOverlap%s",cutTM[i].
Data()),
2030 Form(
"d#phi of cluster-track vs cluster energy, several MC particles overlap %s",cutTM[i].
Data()),
2031 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2039 (Form(
"hTrackMatchedDEtaMCConversion%s",cutTM[i].
Data()),
2040 Form(
"d#eta of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2041 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2046 (Form(
"hTrackMatchedDPhiMCConversion%s",cutTM[i].
Data()),
2047 Form(
"d#phi of cluster-track vs cluster energy, no other MC particles overlap appart from conversions %s",cutTM[i].
Data()),
2048 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2056 (Form(
"hTrackMatchedMCParticle%s",cutTM[i].
Data()),
2057 Form(
"Origin of particle vs energy %s",cutTM[i].
Data()),
2058 nptbins,ptmin,ptmax,8,0,8);
2078 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
2080 for(Int_t i = 0 ; i < 7 ; i++)
2083 Form(
"Selected photon #it{p}_{T} distribution, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2088 Form(
"Photon cluster E vs #it{t}_{max}-#it{t}_{cell} in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2089 nptbins,ptmin,ptmax,400,-200,200);
2095 fhTimePtPhotonNoCut =
new TH2F (
"hTimePtPhoton_NoCut",
"time of photon cluster vs pT of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2100 fhTimePtPhotonSPD =
new TH2F (
"hTimePtPhoton_SPD",
"time of photon cluster vs pT of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2105 fhTimeNPileUpVertSPD =
new TH2F (
"hTime_NPileUpVertSPD",
"time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,20,0,20);
2110 fhTimeNPileUpVertTrack =
new TH2F (
"hTime_NPileUpVertTracks",
"time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 20,0,20 );
2116 nptbins,ptmin,ptmax,20,0,20);
2122 nptbins,ptmin,ptmax, 20,0,20 );
2128 nptbins,ptmin,ptmax,20,0,20);
2134 nptbins,ptmin,ptmax, 20,0,20 );
2140 nptbins,ptmin,ptmax,20,0,20);
2146 nptbins,ptmin,ptmax, 20,0,20 );
2155 for(Int_t ieta = 0; ieta < 4; ieta++)
2157 for(Int_t iphi = 0; iphi < 3; iphi++)
2181 new TH2F(Form(
"hLam0_eta%d_phi%d_sm%d",ieta,iphi,ism),
2182 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2183 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2189 new TH2F(Form(
"hLam1_eta%d_phi%d_sm%d",ieta,iphi,ism),
2190 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, sm %d, region eta %d, phi %d",ism,ieta,iphi),
2191 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2199 Float_t ptLimit[] = {2,3,4,5,6,8,10,12};
2200 TString l0bin [] = {
"0.23<#lambda^{2}_{0}<0.26",
"0.3<#lambda^{2}_{0}<0.4"};
2202 for(Int_t il0 = 0; il0 < 2; il0++)
2204 for(Int_t ipt = 0; ipt < 7; ipt++)
2207 (Form(
"hEtaPhiLam0Bin%d_PtBin%d",il0,ipt),
2208 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2209 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2210 netabins,etamin,etamax,nphibins,phimin,phimax);
2216 (Form(
"hColRowLam0Bin%d_PtBin%d",il0,ipt),
2217 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, w > 0",
2218 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2219 96,0,96,5*24,0,5*24);
2225 (Form(
"hColRowLam0Bin%d_PtBin%dWeighted",il0,ipt),
2226 Form(
"cluster cell row vs column weighted in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s",
2227 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2228 96,0,96,5*24,0,5*24);
2234 (Form(
"hColRowLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2235 Form(
"row vs column in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, %s, |t| > 50 ns, w > 0",
2236 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2237 96,0,96,5*24,0,5*24);
2261 (Form(
"hEtaPhiLam0Bin%d_PtBin%d_LargeTimeInClusterCell",il0,ipt),
2262 Form(
"#eta vs #phi in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, t > 50 ns, %s",
2263 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2264 netabins,etamin,etamax,nphibins,phimin,phimax);
2270 (Form(
"hCellClusterIndexEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2271 Form(
"#it{t}_{cell} vs cell index (E sorted) in #it{p}_{T}=[%2.1f,%2.1f] GeV/#it{c}, w > 0, %s",
2272 ptLimit[ipt],ptLimit[ipt+1],l0bin[il0].
Data()),
2273 ntimebins,timemin,timemax,30,0,30);
2279 (Form(
"hCellClusterEAndTimeLam0Bin%d_PtBin%d",il0,ipt),
2280 Form(
"#it{E}_{cell} vs #it{t}_{cell} 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,100,0,5);
2288 (Form(
"hCellClusterEFracAndTimeLam0Bin%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,1);
2300 (Form(
"hLam1Lam0Bin%d_sm%d",il0,ism),
2301 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, %s",ism,l0bin[il0].
Data()),
2302 nptbins,ptmin,ptmax,40,0,0.4);
2308 (Form(
"hTimeLam0Bin%d_sm%d",il0,ism),
2309 Form(
"#it{p}_{T} vs cluster cell time in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2310 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2316 (Form(
"hTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2317 Form(
"#it{p}_{T} vs cluster cell time weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2318 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2324 (Form(
"hDTimeLam0Bin%d_sm%d",il0,ism),
2325 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2326 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2332 (Form(
"hDTimeLam0Bin%d_sm%d_Weighted",il0,ism),
2333 Form(
"#it{p}_{T} vs t_{cluster}-t_{cell} weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2334 nptbins,ptmin,ptmax,ntimebins,timemin,timemax);
2340 (Form(
"hCellClusterEFracLam0Bin%d_sm%d",il0,ism),
2341 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2342 nptbins,ptmin,ptmax,100,0,1);
2356 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2357 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2358 nptbins,ptmin,ptmax,100,0,1);
2364 (Form(
"hCellClusterEFracLam0Bin%d_sm%d_LargeTimeInClusterCell_Total",il0,ism),
2365 Form(
"#it{p}_{T} vs cell E / cluster E in sm %d, %s, w > 0, all |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2366 nptbins,ptmin,ptmax,100,0,1);
2372 (Form(
"hCellClusterELam0Bin%d_sm%d",il0,ism),
2373 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0",ism,l0bin[il0].
Data()),
2374 nptbins,ptmin,ptmax,500,0,10);
2380 (Form(
"hCellClusterELam0Bin%d_sm%d_Weighted",il0,ism),
2381 Form(
"#it{p}_{T} vs cell E weighted in sm %d, %s",ism,l0bin[il0].
Data()),
2382 nptbins,ptmin,ptmax,500,0,10);
2388 (Form(
"hCellClusterELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2389 Form(
"#it{p}_{T} vs cell E in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2390 nptbins,ptmin,ptmax,500,0,10);
2396 (Form(
"hCellClusterIndexELam0Bin%d_sm%d_LargeTimeInClusterCell",il0,ism),
2397 Form(
"#it{p}_{T} vs cell index (E sorted) in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2398 nptbins,ptmin,ptmax,30,0,30);
2404 (Form(
"hNCellsWithLargeTimeInClusterLam0Bin%d_sm%d",il0,ism),
2405 Form(
"#it{p}_{T} vs number of cells in sm %d, %s, w > 0, |t_{cell}| > 50 ns",ism,l0bin[il0].
Data()),
2406 nptbins,ptmin,ptmax,30,0,30);
2427 (Form(
"hLam0_sm%d",ism),
2428 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d",ism),
2429 nptbins,ptmin,ptmax,40,0,0.4);
2431 fhLam0PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2435 (Form(
"hLam1_sm%d",ism),
2436 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d",ism),
2437 nptbins,ptmin,ptmax,40,0,0.4);
2439 fhLam1PerSM[ism]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2443 (Form(
"hLam0_sm%d_LargeTimeInClusterCell",ism),
2444 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ism),
2445 nptbins,ptmin,ptmax,40,0,0.4);
2451 (Form(
"hLam1_sm%d_LargeTimeInClusterCell",ism),
2452 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ism),
2453 nptbins,ptmin,ptmax,40,0,0.4);
2494 for(Int_t ilarge = 0; ilarge < 5; ilarge++)
2497 (Form(
"hLam0_NLargeTimeInClusterCell%d",ilarge),
2498 Form(
"#it{p}_{T} vs #lambda^{2}_{0} in sm %d,|t_{secondary cell}| > 50 ns",ilarge),
2499 nptbins,ptmin,ptmax,40,0,0.4);
2505 (Form(
"hLam1_NLargeTimeInClusterCell%d",ilarge),
2506 Form(
"#it{p}_{T} vs #lambda^{2}_{1} in sm %d, |t_{secondary cell}| > 50 ns",ilarge),
2507 nptbins,ptmin,ptmax,40,0,0.4);
2518 TString ptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}",
2519 "#pi^{0}" ,
"#eta" ,
"e^{#pm}" ,
"#gamma->e^{#pm}" ,
2520 "hadron?" ,
"Anti-N" ,
"Anti-P" ,
2521 "Neutron" ,
"Proton" ,
"#pi^{#pm}" ,
2522 "#gamma_{prompt}",
"#gamma_{fragmentation}",
"#gamma_{ISR}" ,
"String" } ;
2524 TString pname[] = {
"Photon" ,
"PhotonPi0Decay" ,
"PhotonEtaDecay",
"PhotonOtherDecay",
2525 "Pi0" ,
"Eta" ,
"Electron" ,
"Conversion" ,
2526 "Hadron" ,
"AntiNeutron" ,
"AntiProton" ,
2527 "Neutron" ,
"Proton" ,
"ChPion" ,
2528 "PhotonPrompt",
"PhotonFragmentation",
"PhotonISR" ,
"String" } ;
2532 fhMCE[i] =
new TH1F(Form(
"hE_MC%s",pname[i].
Data()),
2533 Form(
"cluster from %s : E ",ptype[i].
Data()),
2534 nptbins,ptmin,ptmax);
2535 fhMCE[i]->SetXTitle(
"#it{E} (GeV)");
2536 outputContainer->Add(
fhMCE[i]) ;
2538 fhMCPt[i] =
new TH1F(Form(
"hPt_MC%s",pname[i].
Data()),
2539 Form(
"cluster from %s : #it{p}_{T} ",ptype[i].
Data()),
2540 nptbins,ptmin,ptmax);
2541 fhMCPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2542 outputContainer->Add(
fhMCPt[i]) ;
2544 fhMCEta[i] =
new TH2F(Form(
"hEta_MC%s",pname[i].
Data()),
2545 Form(
"cluster from %s : #eta ",ptype[i].
Data()),
2546 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2547 fhMCEta[i]->SetYTitle(
"#eta");
2548 fhMCEta[i]->SetXTitle(
"#it{E} (GeV)");
2549 outputContainer->Add(
fhMCEta[i]) ;
2551 fhMCPhi[i] =
new TH2F(Form(
"hPhi_MC%s",pname[i].
Data()),
2552 Form(
"cluster from %s : #phi ",ptype[i].
Data()),
2553 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2554 fhMCPhi[i]->SetYTitle(
"#phi (rad)");
2555 fhMCPhi[i]->SetXTitle(
"#it{E} (GeV)");
2556 outputContainer->Add(
fhMCPhi[i]) ;
2560 Form(
"MC - Reco E from %s",pname[i].
Data()),
2561 nptbins,ptmin,ptmax, 200,-50,50);
2562 fhMCDeltaE[i]->SetYTitle(
"#Delta #it{E} (GeV)");
2567 Form(
"MC - Reco #it{p}_{T} from %s",pname[i].
Data()),
2568 nptbins,ptmin,ptmax, 200,-50,50);
2569 fhMCDeltaPt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2570 fhMCDeltaPt[i]->SetYTitle(
"#Delta #it{p}_{T} (GeV/#it{c})");
2573 fhMC2E[i] =
new TH2F (Form(
"h2E_MC%s",pname[i].
Data()),
2574 Form(
"E distribution, reconstructed vs generated from %s",pname[i].
Data()),
2575 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2576 fhMC2E[i]->SetXTitle(
"#it{E}_{rec} (GeV)");
2577 fhMC2E[i]->SetYTitle(
"#it{E}_{gen} (GeV)");
2578 outputContainer->Add(
fhMC2E[i]);
2580 fhMC2Pt[i] =
new TH2F (Form(
"h2Pt_MC%s",pname[i].
Data()),
2581 Form(
"p_T distribution, reconstructed vs generated from %s",pname[i].
Data()),
2582 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2583 fhMC2Pt[i]->SetXTitle(
"p_{T,rec} (GeV/#it{c})");
2584 fhMC2Pt[i]->SetYTitle(
"p_{T,gen} (GeV/#it{c})");
2585 outputContainer->Add(
fhMC2Pt[i]);
2588 TString pptype[] = {
"#gamma" ,
"#gamma_{#pi decay}" ,
2589 "#gamma_{#eta decay}",
"#gamma_{other decay}" ,
2590 "#gamma_{prompt}" ,
"#gamma_{fragmentation}",
"#gamma_{ISR}" } ;
2592 TString ppname[] = {
"Photon" ,
"PhotonPi0Decay" ,
2593 "PhotonEtaDecay",
"PhotonOtherDecay" ,
2594 "PhotonPrompt" ,
"PhotonFragmentation",
"PhotonISR" } ;
2598 fhEPrimMC[i] =
new TH1F(Form(
"hEPrim_MC%s",ppname[i].
Data()),
2599 Form(
"primary photon %s : E ",pptype[i].
Data()),
2600 nptbins,ptmin,ptmax);
2601 fhEPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2605 Form(
"primary photon %s : #it{p}_{T} ",pptype[i].
Data()),
2606 nptbins,ptmin,ptmax);
2607 fhPtPrimMC[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2610 fhYPrimMC[i] =
new TH2F(Form(
"hYPrim_MC%s",ppname[i].
Data()),
2611 Form(
"primary photon %s : Rapidity ",pptype[i].
Data()),
2612 nptbins,ptmin,ptmax,200,-2,2);
2614 fhYPrimMC[i]->SetXTitle(
"#it{E} (GeV)");
2618 Form(
"primary photon %s : #eta",pptype[i].
Data()),
2619 nptbins,ptmin,ptmax,200,-2,2);
2625 Form(
"primary photon %s : #phi ",pptype[i].
Data()),
2626 nptbins,ptmin,ptmax,nphibins,0,TMath::TwoPi());
2633 Form(
"primary photon %s in acceptance: E ",pptype[i].
Data()),
2634 nptbins,ptmin,ptmax);
2639 Form(
"primary photon %s in acceptance: #it{p}_{T} ",pptype[i].
Data()),
2640 nptbins,ptmin,ptmax);
2645 Form(
"primary photon %s in acceptance: Rapidity ",pptype[i].
Data()),
2646 nptbins,ptmin,ptmax,100,-1,1);
2652 Form(
"primary photon %s in acceptance: #eta ",pptype[i].
Data()),
2653 nptbins,ptmin,ptmax,netabins,etamin,etamax);
2659 Form(
"primary photon %s in acceptance: #phi ",pptype[i].
Data()),
2660 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2668 TString ptypess[] = {
"#gamma",
"hadron?",
"#pi^{0}",
"#eta",
"#gamma->e^{#pm}",
"e^{#pm}"} ;
2670 TString pnamess[] = {
"Photon",
"Hadron",
"Pi0",
"Eta",
"Conversion",
"Electron"} ;
2672 for(Int_t i = 0; i < 6; i++)
2675 Form(
"cluster from %s : E vs #lambda_{0}^{2}",ptypess[i].
Data()),
2676 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2682 Form(
"cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}",ptypess[i].
Data()),
2683 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2689 Form(
"cluster from %s : E vs #lambda_{1}^{2}",ptypess[i].
Data()),
2690 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2696 Form(
"cluster from %s : E vs dispersion^{2}",ptypess[i].
Data()),
2697 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2703 Form(
"# of cells in cluster from %s vs E of clusters",ptypess[i].
Data()),
2704 nptbins,ptmin,ptmax, nbins,nmin,nmax);
2706 fhMCNCellsE[i]->SetYTitle(
"# of cells in cluster");
2710 Form(
"energy vs difference of cluster energy from %s - max cell energy / cluster energy, good clusters",ptypess[i].
Data()),
2711 nptbins,ptmin,ptmax, 500,0,1.);
2719 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2720 ssbins,ssmin,ssmax,500,0,1.);
2726 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2727 ssbins,ssmin,ssmax,500,0,1.);
2733 Form(
"cluster from %s : #lambda^{2}_{0} vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2734 ssbins,ssmin,ssmax,500,0,1.);
2740 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, E < 2 GeV",ptypess[i].
Data()),
2741 nbins/5,nmin,nmax/5,500,0,1.);
2747 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, 2< E < 6 GeV",ptypess[i].
Data()),
2748 nbins/5,nmin,nmax/5,500,0,1.);
2754 Form(
"cluster from %s : N cells in cluster vs fraction of energy carried by max cell, #it{E} > 6 GeV",ptypess[i].
Data()),
2755 nbins/5,nmin,nmax/5,500,0,1.);
2763 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptypess[i].
Data()),
2764 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2770 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptypess[i].
Data()),
2771 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2777 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()),
2778 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
2784 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptypess[i].
Data()),
2785 nptbins,ptmin,ptmax,200,-10,10);
2791 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()),
2792 nptbins,ptmin,ptmax, 200,-1,1);
2794 fhMCESphericity[i]->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
2797 for(Int_t ie = 0; ie < 7; ie++)
2800 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]),
2801 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2807 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]),
2808 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2814 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]),
2815 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2824 if(!
GetReader()->IsEmbeddedClusterSelectionOn())
2827 "cluster from Photon : E vs #lambda_{0}^{2}",
2828 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2834 "cluster from Photon : E vs #lambda_{0}^{2}",
2835 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2841 "cluster from Photon : E vs #lambda_{0}^{2}",
2842 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2848 if(
GetReader()->IsEmbeddedClusterSelectionOn())
2851 "Energy Fraction of embedded signal versus cluster energy",
2852 nptbins,ptmin,ptmax,100,0.,1.);
2858 "cluster from Photon embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2859 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2865 "cluster from Photon embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2866 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2872 "cluster from Photon embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2873 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2879 "cluster from Photonm embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2880 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2886 "cluster from Pi0 embedded with more than 90% energy in cluster : E vs #lambda_{0}^{2}",
2887 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2893 "cluster from Pi0 embedded with 50% to 90% energy in cluster : E vs #lambda_{0}^{2}",
2894 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2900 "cluster from Pi0 embedded with 10% to 50% energy in cluster : E vs #lambda_{0}^{2}",
2901 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2907 "cluster from Pi0 embedded with 0% to 10% energy in cluster : E vs #lambda_{0}^{2}",
2908 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2918 fhMCConversionVertex =
new TH2F(
"hMCPhotonConversionVertex",
"cluster from converted photon, #it{p}_{T} vs vertex distance",
2919 nptbins,ptmin,ptmax,500,0,500);
2926 fhMCConversionVertexTRD =
new TH2F(
"hMCPhotonConversionVertexTRD",
"cluster from converted photon, #it{p}_{T} vs vertex distance, SM covered by TRD",
2927 nptbins,ptmin,ptmax,500,0,500);
2935 TString region[] = {
"ITS",
"TPC",
"TRD",
"TOF",
"Top EMCal",
"In EMCal"};
2936 for(Int_t iR = 0; iR < 6; iR++)
2939 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s",region[iR].
Data()),
2940 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2946 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s",region[iR].
Data()),
2947 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2956 for(Int_t iR = 0; iR < 6; iR++)
2959 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{0}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2960 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2966 Form(
"cluster from converted photon, #it{p}_{T} vs #lambda_{1}^{2}, conversion in %s, SM covered by TRD",region[iR].
Data()),
2967 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3009 return outputContainer ;
3018 AliFatal(
"!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
3020 AliFatal(
"!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
3052 Double_t v[3] = {0,0,0};
3056 TObjArray * pl = 0x0;
3057 AliVCaloCells* cells = 0;
3100 TClonesArray * clusterList = 0;
3109 Int_t nclusters = clusterList->GetEntriesFast();
3110 for (Int_t iclus = 0; iclus < nclusters; iclus++)
3112 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
3126 Int_t nCaloClusters = pl->GetEntriesFast();
3134 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
3136 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
3140 Int_t evtIndex = 0 ;
3143 evtIndex=
GetMixedEvent()->EventIndexForCaloCluster(calo->GetID()) ;
3155 Double_t vertex[]={0,0,0};
3168 AliAODPWG4Particle aodph = AliAODPWG4Particle(
fMomentum);
3172 Int_t label = calo->GetLabel();
3173 aodph.SetLabel(label);
3174 aodph.SetCaloLabel(calo->GetID(),-1);
3180 Double_t distBad=calo->GetDistanceToBadChannel() ;
3181 if (distBad >
fMinDist3) aodph.SetDistToBad(2) ;
3182 else if(distBad >
fMinDist2) aodph.SetDistToBad(1) ;
3183 else aodph.SetDistToBad(0) ;
3198 AliDebug(1,Form(
"Origin of candidate, bit map %d",aodph.GetTag()));
3205 Float_t maxCellFraction = 0;
3207 if( absIdMax < 0 ) AliFatal(
"Wrong absID");
3209 Int_t largeTimeInCellCluster = kFALSE;
3211 aodph.SetFiducialArea(largeTimeInCellCluster);
3214 aodph.SetM02(calo->GetM02());
3215 aodph.SetM20(calo->GetM20());
3216 aodph.SetNLM(nMaxima);
3218 Float_t time = calo->GetTOF()*1e9;
3220 aodph.SetTime(time);
3222 aodph.SetNCells(calo->GetNCells());
3224 aodph.SetSModNumber(nSM);
3237 aodph.SetIdentifiedParticleType(
GetCaloPID()->GetIdentifiedParticleType(calo));
3239 AliDebug(1,Form(
"PDG of identified particle %d",aodph.GetIdentifiedParticleType()));
3254 AliDebug(1,
"PID Bits set");
3257 AliDebug(1,Form(
"Photon selection cuts passed: pT %3.2f, pdg %d",aodph.Pt(),aodph.GetIdentifiedParticleType()));
3266 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
3281 for(Int_t icell = 0; icell < calo->GetNCells(); icell++)
3296 AliDebug(1,Form(
"End fill AODs, with %d entries",
GetOutputAODBranch()->GetEntriesFast()));
3308 Double_t v[3] = {0,0,0};
3316 AliDebug(1,Form(
"AOD branch entries %d", naod));
3323 for(Int_t iaod = 0; iaod < naod ; iaod++)
3326 Int_t
pdg = ph->GetIdentifiedParticleType();
3328 AliDebug(2,Form(
"PDG %d, MC TAG %d, Calorimeter <%d>",ph->GetIdentifiedParticleType(),ph->GetTag(), ph->GetDetectorTag())) ;
3335 AliDebug(2,Form(
"ID Photon: pt %f, phi %f, eta %f", ph->Pt(),ph->Phi(),ph->Eta())) ;
3339 Float_t ptcluster = ph->Pt();
3340 Float_t phicluster = ph->Phi();
3341 Float_t etacluster = ph->Eta();
3342 Float_t ecluster = ph->E();
3384 Int_t label = ph->GetLabel();
3388 AliDebug(1,Form(
"*** bad label ***: label %d", label));
3395 Int_t pdg = 0, status = 0, momLabel = -1;
3406 Int_t tag =ph->GetTag();
3407 Int_t mcParticleTag = -1;
3437 Int_t pdgD = 0, statusD = 0, daugLabel = -1;
3438 Bool_t okD = kFALSE;
3461 Float_t m02 = ph->GetM02();
3462 Float_t m20 = ph->GetM20();
3468 if ( prodR < 75. ) convR = 0;
3469 else if ( prodR < 275. ) convR = 1;
3470 else if ( prodR < 375. ) convR = 2;
3471 else if ( prodR < 400. ) convR = 3;
3472 else if ( prodR < 430. ) convR = 4;
3584 if(mcParticleTag >= 0 &&
fhMCE[mcParticleTag])
3610 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3614 printf(
"Min Distance to Bad Channel = %2.1f\n",
fMinDist);
3615 printf(
"Min Distance to Bad Channel 2 = %2.1f\n",
fMinDist2);
3616 printf(
"Min Distance to Bad Channel 3 = %2.1f\n",
fMinDist3);
3619 printf(
"Number of cells in cluster is > %d \n",
fNCellsCut);
Bool_t IsPileUpFromSPD() const
virtual Bool_t IsFiducialCutOn() const
Bool_t fFillOnlySimpleSSHisto
Fill selected cluster histograms, selected SS histograms.
Float_t GetHistoPtMax() const
TH2F * fhLam1ETMTRD
! Cluster lambda1 vs E, SM covered by TRD, cut on Track Matching residual
TH1F * fhClusterCutsE[10]
! control histogram on the different photon selection cuts, E
TH2F * fhPhiLam0LowE
! Cluster phi vs lambda0, E<2
TH2F * fhNCellsLam1HighE
! number of cells in cluster vs lambda1, E>2
TH2F * fhLam1Lam0HighE
! Cluster lambda1 vs lambda0, E>2
TH2F * fhTrackMatchedDEtaTRD[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
TH1F * fhMCPt[fgkNmcTypes]
! Number of identified photon vs cluster pT coming from MC particle
TH2F * fhTrackMatchedDEtaDPhiNeg[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before photon cuts ...
Int_t fNCellsCut
Accept for the analysis clusters with more than fNCellsCut cells.
TH2F * fhEmbedPi0ELambda0FullBkg
! Lambda0 vs E for embedded photons with less than 10% of the cluster energy
TH2F * fhDispE
! Cluster dispersion vs E
TH2F * fhMCEta[fgkNmcTypes]
! eta of identified photon coming from MC particle
Int_t fNLMCutMax
Remove clusters/cells with number of local maxima larger than this value.
TH2F * fhMCNCellsE[fgkNssTypes]
! NCells per cluster vs energy
TH2F * fhDTimeLam0BinPerSMWeighted[2][20]
! t_max-t_cell, not maximum cluster cell, in a l0 bin per SM, log weight Cell E / Cluster E ...
Int_t GetHistoNClusterCellMin() const
Float_t GetHistoPtMin() const
TH2F * fhDispEtaDispPhi[7]
! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
virtual Float_t GetMaxPt() const
TH2F * fhCellClusterEFracAndTime[2][7]
! Cell in Cluster E cell/ E cluster vs cell Time, in a l0 bin, different Pt bins
TH2F * fhLam1ETRD
! Cluster lambda1 vs E, SM covered by TRD
TH2F * fhEClusterSM
! Cluster E distribution per SM, before any selection, after reader
TH2F * fhMaxCellDiffClusterE
! Fraction of energy carried by cell with maximum energy
TH2F * fhPtClusterSM
! Cluster E distribution per SM, before any selection, after reader
TH2F * fhDispETRD
! Cluster dispersion vs E, SM covered by TRD
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
Float_t GetHistodEdxMax() const
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fhLam1PerNLargeTimeInClusterCell[5]
! Cluster lambda1 vs Pt, when any secondary cell has t > 50 ns, per number of large time secondary ce...
TH2F * fhTrackMatchedDEtaDPhiPos[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
TH2F * fhLam0PerNLargeTimeInClusterCell[5]
! Cluster lambda0 vs Pt, when any secondary cell has t > 50 ns, per number of large time secondary ce...
TH2F * fhMCPtLambda0[fgkNssTypes]
! pT vs Lambda0 from MC particle
TH2F * fhNCellsLam1LowE
! number of cells in cluster vs lambda1
Bool_t fFillTMHisto
Fill track matching plots.
TH2F * fhPtPhotonNPileUpSPDVtx
! photon pt vs number of spd pile-up vertices
virtual Bool_t IsDataMC() const
TH2F * fhPtPhotonNPileUpTrkVtx
! photon pt vs number of track pile-up vertices
TH2F * fhNCellsDispLowE
! number of cells in cluster vs dispersion
TH2F * fhTrackMatchedDEtaPos[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhSphericityE
! shower sphericity in eta vs phi
TH2F * fhDispEtaE
! shower dispersion in eta direction
TH2F * fhPtPhotonNPileUpTrkVtxTimeCut
! photon pt vs number of track pile-up vertices, time cut +- 25 ns
virtual Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const
TH2F * fhEtaPrimMC[fgkNmcPrimTypes]
! Eta of generated photon
AliEMCALRecoUtils * GetEMCALRecoUtils() const
TH2F * fhPtPhotonSM
! photon-like cluster E distribution per SM
virtual AliStack * GetMCStack() const
Bool_t ReadAODMCParticles() const
Bool_t fFillEMCALRegionSSHistograms
Fill shower shape histograms in EMCal slices.
virtual void GetVertex(Double_t vertex[3]) const
TH2F * fhTrackMatchedDPhiTRD[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
Float_t fMinDist2
Cuts on Minimal distance to study acceptance evaluation.
TH1F * fhPtPhotonPileUp[7]
! pT distribution of selected photons
TH1F * fhPtPhoton
! Number of identified photon vs transerse momentum
Bool_t fRejectTrackMatch
If PID on, reject clusters which have an associated TPC track.
void MakeAnalysisFillAOD()
TH2F * fhTrackMatchedDPhiMCNoOverlap[2]
! Phi distance between track and cluster vs cluster E, not other particle overlap, after and before photon cuts
TH2F * fhPtEventPlanePhoton
! event plane vs photon pT
virtual AliVEvent * GetInputEvent() const
TH2F * fhLam0PtTRD
! Cluster lambda0 vs pT, SM covered by TRD
TH2F * fhMCConversionVertex
! Conversion distance for photon clusters that have at least a contributor from the conversion...
TH2F * fhEmbedPi0ELambda0FullSignal
! Lambda0 vs E for embedded photons with more than 90% of the cluster energy
Bool_t IsPileUpFromSPDAndNotEMCal() const
Check if event is from pile-up determined by SPD and not by EMCal.
TH2F * fhEmbedPi0ELambda0MostlyBkg
! Lambda0 vs E for embedded photons with 50%<fraction<10%
TH2F * fhMCESphericity[fgkNssTypes]
! shower sphericity, eta vs phi
TH2F * fhEtaPhiLargeTimeInClusterCell[2][7]
! Cluster eta/phi, with at least one significant cell with large time
TH2F * fhMC2Pt[fgkNmcTypes]
! pT distribution, Reco vs MC coming from MC particle
TH2F * fhEtaPhiPhoton
! Pseudorapidity vs Phi of identified photon for E > 0.5
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
TH2F * fhPhiPhoton
! Azimuthal angle of identified photon vs transerse momentum
virtual Double_t GetEventPlaneAngle() const
TH2F * fhYPrimMC[fgkNmcPrimTypes]
! Rapidity of generated photon
TH2F * fhTrackMatchedDEtaDPhi[2]
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before ...
void FillAcceptanceHistograms()
TH2F * fhSumEtaE
! shower dispersion in eta direction
virtual Bool_t IsTrackMatched(AliVCluster *cluster, AliVEvent *event)
virtual Bool_t IsPileUpAnalysisOn() const
TH2F * fhMCEDispEtaPhiDiff[fgkNssTypes]
! shower dispersion in eta -phi direction
TH2F * fhColRowLam0BinPtBin[2][7]
! Cell hits, not maximum cluster cell, in a l0 bin, different Pt bins
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH2F * fhCellClusterELam0BinPerSM[2][20]
! Cell E vs cluster pT, not maximum cluster cell, in a l0 bin per SM
Int_t GetHistoPhiBins() const
TH2F * fhEtaLam0LowE
! Cluster eta vs lambda0, E<2
TH2F * fhPtPhotonNPileUpSPDVtxTimeCut
! photon pt vs number of spd pile-up vertices, time cut +-25 ns
TH2F * fhMCConversionVertexTRD
! Conversion distance for photon clusters that have at least a contributor from the conversion...
Bool_t fFillSSHistograms
Fill shower shape histograms.
TH2F * fhdEdx[2]
! Matched track dEdx vs cluster E, after and before photon cuts
TH2F * fhLam0ETRD
! Cluster lambda0 vs E, SM covered by TRD
TH2F * fhDispETM
! Cluster dispersion vs E, cut on Track Matching residual
TH2F * fhEmbedPhotonELambda0FullSignal
! Lambda0 vs E for embedded photons with more than 90% of the cluster energy
Float_t GetHistoTrackResidualPhiMin() const
TH2F * fhEtaPhoton
! Pseudorapidity of identified photon vs transerse momentum
TH2F * fhDispSumEtaDiffE
! difference of 2 eta dispersions
Bool_t IsPileUpFromNotSPDAndNotEMCal() const
Check if event not from pile-up determined neither by SPD nor by EMCal.
virtual Int_t GetEventCentrality() const
TH2F * fhTimePtPhotonSPD
! Time of photon cluster vs Pt, IsSPDPileUp
TH2F * fhMCDispEtaDispPhi[7][fgkNssTypes]
! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
Float_t GetHistoTrackResidualEtaMin() const
Int_t GetHistoNClusterCellBins() const
virtual TClonesArray * GetOutputAODBranch() const
TH2F * fhLam0EMCALRegionPerSM[4][3][20]
! Cluster lambda0 vs Pt, in different EMCal regions
virtual void GetVertex(Double_t v[3]) const
void InitParameters()
Initialize the parameters of the analysis.
Int_t GetHistoPOverEBins() const
TH2F * fhNCellsE
! number of cells in cluster vs E
TH1F * fhPtPrimMC[fgkNmcPrimTypes]
! Number of generated photon vs pT
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
Float_t GetHistoPhiMin() const
TH2F * fhTimePt
! Time of photon cluster vs pt
TH2F * fhEtaPhi
! Pseudorapidity vs Phi of clusters for E > 0.5
TH2F * fhMCLambda0DispPhi[7][fgkNssTypes]
! shower shape correlation l0 vs disp phi
virtual Bool_t IsCaloPIDOn() const
TH2F * fhLam0PerSMLargeTimeInClusterCell[20]
! Cluster lambda0 vs Pt, when any secondary cell has t > 50 ns, in different SM
TH2F * fhCellClusterEAndTime[2][7]
! Cell in Cluster E cell vs cell Time, in a l0 bin, different Pt bins
TH2F * fhNCellsWithLargeTimeInCluster[2][20]
! Number of cells in cluster with large time
TH2F * fhEPhotonSM
! photon-like cluster E distribution per SM
TH2F * fhEOverPTRD[2]
! Matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts...
TString GetPIDParametersList()
Put data member values in string to keep in output container.
TH2F * fhMCELambda0[fgkNssTypes]
! E vs Lambda0 from MC particle
TLorentzVector GetMother(Int_t label, const AliCaloTrackReader *reader, Bool_t &ok)
Bool_t IsPileUpFromSPDOrEMCal() const
Check if event is from pile-up determined by SPD or EMCal.
TH2F * fhTrackMatchedDPhiNeg[2]
! Phi distance between track and cluster vs cluster E, after and before photon cuts ...
Bool_t IsPileUpFromEMCalAndNotSPD() const
Check if event is from pile-up determined by EMCal, not by SPD.
void MakeAnalysisFillHistograms()
TH2F * fhMCELambda1[fgkNssTypes]
! E vs Lambda1 from MC particle
virtual Float_t GetMinEnergy() const
TH2F * fhLambda0DispPhi[7]
! shower shape correlation l0 vs disp phi
TH2F * fhLambda0DispEta[7]
! shower shape correlation l0 vs disp eta
virtual AliVCaloCells * GetEMCALCells() const
Base class for CaloTrackCorr analysis algorithms.
virtual TString GetBaseParametersList()
TH2F * fhCellClusterEFracLam0BinPerSMLargeTime[2][20]
! Cell in Cluster E cell / Ecluster vs cluster pT, with large time
virtual TString GetCalorimeterString() const
Int_t fNOriginHistograms
Fill only NOriginHistograms of the 14 defined types.
static const Int_t fgkNmcPrimTypes
Total number of MC primary histograms.
virtual Bool_t IsRealCaloAcceptanceOn() const
Float_t GetHistodEdxMin() const
virtual AliFiducialCut * GetFiducialCut()
TH2F * fhCellClusterEFracLam0BinPerSMLargeTimeTotal[2][20]
! Sum of all Cell in Cluster , with large time E cell / Ecluster vs cluster pT
TH2F * fhTimePtPhotonNoCut
! Time of photon cluster vs Pt, no cut
TH2F * fhPtPhotonNPileUpSPDVtxTimeCut2
! photon pt vs number of spd pile-up vertices, time cut +-75 ns
TH2F * fhEOverP[2]
! Matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts ...
TH2F * fhTrackMatchedDEta[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH1F * fhEPrimMC[fgkNmcPrimTypes]
! Number of generated photon vs energy
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhCellsE
! energy of cells in cluster vs E of cluster
TH2F * fhDispETMTRD
! Cluster dispersion vs E, SM covered by TRD, cut on Track Matching residual
TH2F * fhPhiPrimMC[fgkNmcPrimTypes]
! Phi of generted photon
TH2F * fhLam1ETM
! Cluster lambda1 vs E, cut on Track Matching residual
Float_t GetHistoTrackResidualPhiMax() const
Filter EMCal/PHOS clusters for photon analysis.
TH2F * fhLam1PerSM[20]
! Cluster lambda0 vs Pt, in different SM
TH2F * fhEtaPhi05Photon
! Pseudorapidity vs Phi of identified photon for E < 0.5
virtual AliEMCALGeometry * GetEMCALGeometry() const
TH2F * fhDispSumPhiDiffE
! difference of 2 phi dispersions
void FillShowerShapeHistograms(AliVCluster *cluster, Int_t mcTag, Float_t maxCellEFraction, Int_t &largeTimeInside)
Fill cluster Shower Shape histograms.
TH2F * fhNCellsLam0HighE
! number of cells in cluster vs lambda0, E>2
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Int_t CheckOrigin(Int_t label, const AliCaloTrackReader *reader, Int_t calorimeter)
virtual AliAODEvent * GetOutputEvent() const
virtual Bool_t NewOutputAOD() const
Float_t GetHistoShowerShapeMin() const
TList * GetCreateOutputObjects()
TH2F * fhMCLambda0DispEta[7][fgkNssTypes]
! shower shape correlation l0 vs disp eta
Int_t GetHistodEdxBins() const
TH2F * fhMCNCellsvsClusterMaxCellDiffE6[fgkNssTypes]
! NCells vs fraction of energy of max cell for E > 6
virtual AliCalorimeterUtils * GetCaloUtils() const
Int_t GetHistoNClusterCellMax() const
TH2F * fhCellClusterELam0BinPerSMLargeTime[2][20]
! Cell in Cluster E cell vs cluster pT, with large time
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fhLam1PerSMLargeTimeInClusterCell[20]
! Cluster lambda1 vs Pt, when any secondary cell has t > 50 ns, in different SM
Float_t fMinDist3
One more cut on distance used for acceptance-efficiency study.
Int_t GetHistoTrackResidualPhiBins() const
TH2F * fhMCPhotonELambda0TwoOverlap
! E vs Lambda0 from MC photons, 2 particles overlap
Int_t GetNumberOfSuperModulesUsed() const
TH2F * fhMCConversionLambda1RcutTRD[6]
! Shower shape M20 of photon conversions, depending on conversion vertex, SM covered by TRD ...
virtual Bool_t IsHighMultiplicityAnalysisOn() const
TH2F * fhMCPhotonELambda0NOverlap
! E vs Lambda0 from MC photons, N particles overlap
TH1F * fhClusterCutsPt[10]
! control histogram on the different photon selection cuts, pT
Float_t fMinDist
Minimal distance to bad channel to accept cluster.
TH2F * fhTrackMatchedMCParticle[2]
! Trace origin of matched particle
TH2F * fhMCMaxCellDiffClusterE[fgkNssTypes]
! Fraction of energy carried by cell with maximum energy
TH2F * fhMC2E[fgkNmcTypes]
! E distribution, Reco vs MC coming from MC particle
TH2F * fhCellClusterEFracLam0BinPerSM[2][20]
! Cell E / Cluster E vs cluster pT, not maximum cluster cell, in a l0 bin per SM
Float_t fConstantTimeShift
Apply a 600 ns time shift in case of simulation, shift in ns.
TH2F * fhEmbedPhotonELambda0MostlySignal
! Lambda0 vs E for embedded photons with 90%<fraction<50%
virtual Double_t GetEventWeight() const
void SetPIDBits(AliVCluster *cluster, AliAODPWG4Particle *aodph, AliCalorimeterUtils *cu, AliVEvent *event)
Set Bits for PID selection.
Int_t fNPrimaryHistograms
Fill only NPrimaryHistograms of the 7 defined types.
virtual AliCaloPID * GetCaloPID()
void FillPileUpHistograms(AliVCluster *cluster, AliVCaloCells *cells, Int_t absIdMax)
Fill some histograms to understand effect of pile-up.
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVCaloCells *cells)
Find the number of local maxima in cluster.
TH2F * fhMCNCellsvsClusterMaxCellDiffE2[fgkNssTypes]
! NCells vs fraction of energy of max cell for 2 < E < 6 GeV
TH2F * fhNCellsDispHighE
! number of cells in cluster vs dispersion, E>2
TH2F * fhEmbeddedSignalFractionEnergy
! Fraction of photon energy of embedded signal vs cluster energy
virtual TObjArray * GetPHOSClusters() const
Float_t GetHistoEtaMin() const
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1F * fhEPhoton
! Number of identified photon vs energy
TH2F * fhTrackMatchedDEtaMCConversion[2]
! Eta distance between track and cluster vs cluster E, originated in conversion, after and before pho...
TH2F * fhLam0ETMTRD
! Cluster lambda0 vs E, SM covered by TRD, cut on Track Matching residual
TH2F * fhLam0DispLowE
! Cluster lambda0 vs dispersion, E<2
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
Double_t fTimeCutMax
Remove clusters/cells with time larger than this value, in ns.
TH2F * fhTrackMatchedDPhiMCConversion[2]
! Phi distance between track and cluster vs cluster E, originated in conversion, after and before pho...
TH1F * fhMCE[fgkNmcTypes]
! Number of identified photon vs cluster energy coming from MC particle
TH2F * fhCellClusterIndexEAndTime[2][7]
! Cell in Cluster index (low index high energy, high index low energy) vs cell Time ...
TH2F * fhColRowLam0BinPtBinLargeTime[2][7]
! Cell hits, not maximum cluster cell, in a l0 bin, different Pt bins, cell with large time ...
TH2F * fhDispLam1LowE
! Cluster disp vs lambda1, E<2
TH2F * fhMCEDispEta[fgkNssTypes]
! shower dispersion in eta direction
TLorentzVector GetDaughter(Int_t daughter, Int_t label, const AliCaloTrackReader *reader, Int_t &pdg, Int_t &status, Bool_t &ok, Int_t &daugLabel, TVector3 &prodVertex)
Float_t GetHistoEtaMax() const
TH1F * fhPtPrimMCAcc[fgkNmcPrimTypes]
! Number of generated photon vs pT, in calorimeter acceptance
virtual void AddAODParticle(AliAODPWG4Particle part)
Float_t GetPHOSPtMin() const
TH2F * fhLam0E
! Cluster lambda0 vs E
TH2F * fhLam0PtTMTRD
! Cluster lambda0 vs pT, SM covered by TRD, cut on Track Matching residual
Int_t GetHistoPtBins() const
Double_t fTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
static const Int_t fgkNssTypes
Total number of MC histograms for shower shape studies.
TH2F * fhTimeLam0BinPerSMWeighted[2][20]
! Cell time, not maximum cluster cell, in a l0 bin per SM, log weight Cell E / Cluster E ...
Float_t GetEMCALPtMin() const
TH2F * fhMCDeltaE[fgkNmcTypes]
! MC-Reco E distribution coming from MC particle
TH2F * fhTrackMatchedDEtaNeg[2]
! Eta distance between track and cluster vs cluster E, after and before photon cuts ...
TH2F * fhLam1EMCALRegionPerSM[4][3][20]
! Cluster lambda1 vs Pt, in different EMCal regions
TH2F * fhSumPhiE
! shower dispersion in phi direction
TH2F * fhEmbedPhotonELambda0FullBkg
! Lambda0 vs E for embedded photons with less than 10% of the cluster energy
TH2F * fhLam0ETM
! Cluster lambda0 vs E, cut on Track Matching residual
TH2F * fhMCEDispersion[fgkNssTypes]
! E vs Dispersion from MC particle
Int_t GetNOverlaps(const Int_t *label, UInt_t nlabels, Int_t mctag, Int_t mesonLabel, AliCaloTrackReader *reader, Int_t *overpdg)
TH2F * fhEtaLam0HighE
! Cluster eta vs lambda0, E>2
AliVTrack * GetMatchedTrack(AliVCluster *cluster, AliVEvent *event, Int_t index=-1) const
TH2F * fhLam1E
! Cluster lambda1 vs E
TH2F * fhPtPhotonNPileUpTrkVtxTimeCut2
! photon pt vs number of track pile-up vertices, time cut +- 75 ns
TH2F * fhDispEtaPhiDiffE
! shower dispersion eta - phi
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...
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
TH2F * fhTimeLam0BinPerSM[2][20]
! Cell time, not maximum cluster cell, in a l0 bin per SM