18 #include "TClonesArray.h" 23 #include "AliVTrack.h" 24 #include "AliVCluster.h" 41 fSeveralConeAndPtCuts(0), fReMakeJet(0),
42 fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.),
43 fLeadingRatioMaxCut(0.), fLeadingRatioMinCut(0.),
44 fJetCTSRatioMaxCut(0.), fJetCTSRatioMinCut(0.),
45 fJetRatioMaxCut(0.), fJetRatioMinCut(0.),
46 fJetNCone(0),fJetNPt(0), fJetCone(0),
47 fJetPtThreshold(0),fJetPtThresPbPb(0),
48 fPtTriggerSelectionCut(0.0), fSelect(0),fSelectIsolated(0),
49 fTrackVector(),fBkgMom(),fJetMom(),fJetConstMom(),
50 fLeadingMom(),fLeadingPi0Mom(),fLeadingPhoMom1(),fLeadingPhoMom2(),fLeadingChargeMom(),
54 fhChargedLeadingPt(0),fhChargedLeadingPhi(0),fhChargedLeadingEta(0),
55 fhChargedLeadingDeltaPt(0),fhChargedLeadingDeltaPhi(0),fhChargedLeadingDeltaEta(0),
56 fhChargedLeadingRatioPt(0),
57 fhNeutralLeadingPt(0),fhNeutralLeadingPhi(0),fhNeutralLeadingEta(0),
58 fhNeutralLeadingDeltaPt(0),fhNeutralLeadingDeltaPhi(0),fhNeutralLeadingDeltaEta(0),
59 fhNeutralLeadingRatioPt(0),fhChargedLeadingXi(0), fhNeutralLeadingXi(0),
60 fhChargedLeadingDeltaPhiRatioPt30(0), fhNeutralLeadingDeltaPhiRatioPt30(0),
61 fhChargedLeadingDeltaPhiRatioPt50(0), fhNeutralLeadingDeltaPhiRatioPt50(0),
63 fhJetPt(0),fhJetRatioPt(0),fhJetDeltaPhi(0), fhJetDeltaEta(0),
64 fhJetLeadingRatioPt(0),fhJetLeadingDeltaPhi(0),fhJetLeadingDeltaEta(0),
65 fhJetFFz(0),fhJetFFxi(0),fhJetFFpt(0),fhJetNTracksInCone(0),
66 fhBkgPt(0),fhBkgRatioPt(0),fhBkgDeltaPhi(0), fhBkgDeltaEta(0),
67 fhBkgLeadingRatioPt(0),fhBkgLeadingDeltaPhi(0),fhBkgLeadingDeltaEta(0),
68 fhBkgFFz(0),fhBkgFFxi(0),fhBkgFFpt(0),fhBkgNTracksInCone(0),
70 fhJetPts(),fhJetRatioPts(),fhJetDeltaPhis(), fhJetDeltaEtas(),
71 fhJetLeadingRatioPts(),fhJetLeadingDeltaPhis(),fhJetLeadingDeltaEtas(),
72 fhJetFFzs(),fhJetFFxis(),fhJetFFpts(),fhJetNTracksInCones(),
73 fhBkgPts(),fhBkgRatioPts(),fhBkgDeltaPhis(), fhBkgDeltaEtas(),
74 fhBkgLeadingRatioPts(),fhBkgLeadingDeltaPhis(),fhBkgLeadingDeltaEtas(),
75 fhBkgFFzs(),fhBkgFFxis(),fhBkgFFpts(),fhBkgNTracksInCones()
77 for(
Int_t i = 0; i<6; i++)
94 for(
Int_t i = 0; i<5; i++)
100 for(
Int_t j = 0; j<5; j++)
138 Double_t ePP = par[0] + par[1] * ptg ;
139 Double_t sPP = par[2] + par[3] * ptg ;
142 Double_t sPbPb = TMath::Sqrt(sPP*sPP+ par[5]*par[5]) ;
143 Double_t rat = (ePbPb - sPbPb * f) / ptg ;
153 const TLorentzVector jet,
161 if(phiJet < 0) phiJet+=TMath::TwoPi();
163 if(phiLead < 0) phiLead+=TMath::TwoPi();
213 Int_t nTracksInCone = 0;
215 for(
Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
217 AliVTrack* track =
dynamic_cast<AliVTrack *
>(pl->At(ipr)) ;
218 if(track)
fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
219 else AliDebug(1,
"Track not available");
238 if(nTracksInCone > 0)
252 fOutCont->SetName(
"ParticleJetLeadingInConeCorrelationHistograms") ;
264 fhChargedLeadingPt =
new TH2F(
"ChargedLeadingPt",
"p_{T leading charge} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
268 fhChargedLeadingPhi =
new TH2F(
"ChargedLeadingPhi",
"#phi_{h^{#pm}} vs p_{T trigger}", nptbins,ptmin,ptmax,nphibins,phimin,phimax);
272 fhChargedLeadingEta =
new TH2F(
"ChargedLeadingEta",
"#eta_{h^{#pm}} vs p_{T trigger}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
276 fhChargedLeadingDeltaPt =
new TH2F(
"ChargedLeadingDeltaPt",
"p_{T trigger} - p_{T h^{#pm}} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
280 fhChargedLeadingDeltaPhi =
new TH2F(
"ChargedLeadingDeltaPhi",
"#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
284 fhChargedLeadingDeltaEta =
new TH2F(
"ChargedLeadingDeltaEta",
"#eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
288 fhChargedLeadingRatioPt =
new TH2F(
"ChargedLeadingRatioPt",
"p_{T leading charge} /p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,2);
292 fhChargedLeadingXi =
new TH2F(
"ChargedLeadingXi",
"ln(p_{T trigger} / p_{T leading charge} ) vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,10);
305 fhChargedLeadingDeltaPhiRatioPt30 =
new TH2F(
"ChargedLeadingDeltaPhiRatioPt30",
"#phi_{trigger} - #phi_{#pi^{0}} vs p_{T leading}/p_{T trigger}, charged leading, p_{T trigger} > 30 GeV/c",120,0,TMath::TwoPi(),nptbins,0,1);
309 fhChargedLeadingDeltaPhiRatioPt50 =
new TH2F(
"ChargedLeadingDeltaPhiRatioPt50",
"#phi_{trigger} - #phi_{#pi^{0}} vs p_{T leading}/p_{T trigger}, charged leading, p_{T trigger} > 50 GeV/c",120,0,TMath::TwoPi(),nptbins,0,1);
318 fhNeutralLeadingPt =
new TH2F(
"NeutralLeadingPt",
"p_{T leading #pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
322 fhNeutralLeadingPhi =
new TH2F(
"NeutralLeadingPhi",
"#phi_{#pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
326 fhNeutralLeadingEta =
new TH2F(
"NeutralLeadingEta",
"#eta_{#pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
330 fhNeutralLeadingDeltaPt =
new TH2F(
"NeutralLeadingDeltaPt",
"p_{T trigger} - p_{T #pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
334 fhNeutralLeadingDeltaPhi =
new TH2F(
"NeutralLeadingDeltaPhi",
"#phi_{trigger} - #phi_{#pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
338 fhNeutralLeadingDeltaEta =
new TH2F(
"NeutralLeadingDeltaEta",
"#eta_{trigger} - #eta_{#pi^{0}} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
342 fhNeutralLeadingRatioPt =
new TH2F(
"NeutralLeadingRatioPt",
"p_{T leading #pi^{0}} /p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,2);
346 fhNeutralLeadingXi =
new TH2F(
"NeutralLeadingXi",
"ln(p_{T trigger} / p_{T leading #pi^{0}} ) vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,10);
359 fhNeutralLeadingDeltaPhiRatioPt30 =
new TH2F(
"NeutralLeadingDeltaPhiRatioPt30",
"#phi_{trigger} - #phi_{#pi^{0}} vs p_{T leading}/p_{T trigger}, neutral leading, p_{T trigger} > 30 GeV/c",120,0,TMath::TwoPi(),nptbins,0,1);
363 fhNeutralLeadingDeltaPhiRatioPt50 =
new TH2F(
"NeutralLeadingDeltaPhiRatioPt50",
"#phi_{trigger} - #phi_{#pi^{0}} vs p_{T leading}/p_{T trigger}, neutral leading, p_{T trigger} > 50 GeV/c",120,0,TMath::TwoPi(),nptbins,0,1);
374 fhJetPt =
new TH2F(
"JetPt",
"p_{T jet} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
375 fhJetPt->SetYTitle(
"p_{T jet}");
376 fhJetPt->SetXTitle(
"p_{T trigger} (GeV/c)");
378 fhJetRatioPt =
new TH2F(
"JetRatioPt",
"p_{T jet}/p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,2);
382 fhJetDeltaPhi =
new TH2F(
"JetDeltaPhi",
"#phi_{jet} - #phi_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
386 fhJetDeltaEta =
new TH2F(
"JetDeltaEta",
"#eta_{jet} - #eta_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
394 fhJetLeadingDeltaPhi =
new TH2F(
"JetLeadingDeltaPhi",
"#phi_{jet} - #phi_{leading} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-TMath::Pi(),TMath::Pi());
398 fhJetLeadingDeltaEta =
new TH2F(
"JetLeadingDeltaEta",
"#eta_{jet} - #eta_{leading} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
402 fhJetFFz =
new TH2F(
"JetFFz",
"z = p_{T i charged}/p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,200,0.,2);
404 fhJetFFz->SetXTitle(
"p_{T trigger}");
406 fhJetFFxi =
new TH2F(
"JetFFxi",
"#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger}",nptbins,ptmin,ptmax,100,0.,10.);
410 fhJetFFpt =
new TH2F(
"JetFFpt",
"#xi = p_{T i charged}) vs p_{T trigger}",nptbins,ptmin,ptmax,200,0.,50.);
411 fhJetFFpt->SetYTitle(
"p_{T charged hadron}");
414 fhJetNTracksInCone =
new TH2F(
"JetNTracksInCone",
"N particles in cone vs p_{T trigger}",nptbins,ptmin,ptmax,5000,0, 5000);
431 fhBkgPt =
new TH2F(
"BkgPt",
"p_{T bkg} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
432 fhBkgPt->SetYTitle(
"p_{T bkg}");
433 fhBkgPt->SetXTitle(
"p_{T trigger} (GeV/c)");
435 fhBkgRatioPt =
new TH2F(
"BkgRatioPt",
"p_{T bkg}/p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,2);
439 fhBkgDeltaPhi =
new TH2F(
"BkgDeltaPhi",
"#phi_{bkg} - #phi_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
443 fhBkgDeltaEta =
new TH2F(
"BkgDeltaEta",
"#eta_{bkg} - #eta_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
451 fhBkgLeadingDeltaPhi =
new TH2F(
"BkgLeadingDeltaPhi",
"#phi_{bkg} - #phi_{leading} vs p_{T trigger}",nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
455 fhBkgLeadingDeltaEta =
new TH2F(
"BkgLeadingDeltaEta",
"#eta_{bkg} - #eta_{leading} vs p_{T trigger}",nptbins,ptmin,ptmax,120,-2,2);
459 fhBkgFFz =
new TH2F(
"BkgFFz",
"z = p_{T i charged}/p_{T trigger} vs p_{T trigger}", nptbins,ptmin,ptmax,200,0.,2);
461 fhBkgFFz->SetXTitle(
"p_{T trigger}");
463 fhBkgFFxi =
new TH2F(
"BkgFFxi",
"#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger}", nptbins,ptmin,ptmax,100,0.,10.);
467 fhBkgFFpt =
new TH2F(
"BkgFFpt",
"p_{T charged hadron } vs p_{T trigger}", nptbins,ptmin,ptmax,200,0.,50.);
468 fhBkgFFpt->SetYTitle(
"p_{T charged} hadron");
471 fhBkgNTracksInCone =
new TH2F(
"BkgNTracksInCone",
"N particles in cone vs p_{T trigger}",nptbins,ptmin,ptmax,5000,0, 5000);
493 TString lastnametitle =
", cone ="+
fJetNameCones[icone]+
", pt > " +fJetNamePtThres[ipt]+
" GeV/c";
496 fhJetPts[icone][ipt] =
new TH2F(Form(
"JetPt%s",lastnamehist.Data()),Form(
"p_{T jet} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
497 fhJetPts[icone][ipt]->SetYTitle(
"p_{T jet}");
498 fhJetPts[icone][ipt]->SetXTitle(
"p_{T trigger} (GeV/c)");
500 fhJetRatioPts[icone][ipt] =
new TH2F(Form(
"JetRatioPt%s",lastnamehist.Data()),Form(
"p_{T jet}/p_{T trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,2);
501 fhJetRatioPts[icone][ipt]->SetYTitle(
"p_{T jet}/p_{T trigger}");
502 fhJetRatioPts[icone][ipt]->SetXTitle(
"p_{T trigger} (GeV/c)");
504 fhJetDeltaPhis[icone][ipt] =
new TH2F(Form(
"JetDeltaPhi%s",lastnamehist.Data()),Form(
"#phi_{jet} - #phi_{trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
508 fhJetDeltaEtas[icone][ipt] =
new TH2F(Form(
"JetDeltaEta%s",lastnamehist.Data()),Form(
"#eta_{jet} - #eta_{trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,-2,2);
512 fhJetLeadingRatioPts[icone][ipt] =
new TH2F(Form(
"JetLeadingRatioPt%s",lastnamehist.Data()),Form(
"p_{T jet} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,2);
516 fhJetLeadingDeltaPhis[icone][ipt] =
new TH2F(Form(
"JetLeadingDeltaPhi%s",lastnamehist.Data()),Form(
"#phi_{jet} - #phi_{leading} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
520 fhJetLeadingDeltaEtas[icone][ipt] =
new TH2F(Form(
"JetLeadingDeltaEta%s",lastnamehist.Data()),Form(
"#eta_{jet} - #eta_{leading} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,-2,2);
524 fhJetFFzs[icone][ipt] =
new TH2F(Form(
"JetFFz%s",lastnamehist.Data()),
"z = p_{T i charged}/p_{T trigger} vs p_{T trigger}", 120,0.,120.,200,0.,2);
526 fhJetFFzs[icone][ipt]->SetXTitle(
"p_{T trigger}");
528 fhJetFFxis[icone][ipt] =
new TH2F(Form(
"JetFFxi%s",lastnamehist.Data()),
"#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger}", 120,0.,120.,100,0.,10.);
530 fhJetFFxis[icone][ipt]->SetXTitle(
"p_{T trigger}");
532 fhJetFFpts[icone][ipt] =
new TH2F(Form(
"JetFFpt%s",lastnamehist.Data()),
"p_{T charged hadron } in jet vs p_{T trigger}", 120,0.,120.,200,0.,50.);
533 fhJetFFpts[icone][ipt]->SetYTitle(
"p_{T charged hadron}");
534 fhJetFFpts[icone][ipt]->SetXTitle(
"p_{T trigger}");
536 fhJetNTracksInCones[icone][ipt] =
new TH2F(Form(
"JetNTracksInCone%s",lastnamehist.Data()),Form(
"N particles in cone vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,5000,0, 5000);
553 fhBkgPts[icone][ipt] =
new TH2F(Form(
"BkgPt%s",lastnamehist.Data()),Form(
"p_{T bkg} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
554 fhBkgPts[icone][ipt]->SetYTitle(
"p_{T bkg}");
555 fhBkgPts[icone][ipt]->SetXTitle(
"p_{T trigger} (GeV/c)");
557 fhBkgRatioPts[icone][ipt] =
new TH2F(Form(
"BkgRatioPt%s",lastnamehist.Data()),Form(
"p_{T bkg}/p_{T trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,2);
558 fhBkgRatioPts[icone][ipt]->SetYTitle(
"p_{T bkg}/p_{T trigger}");
559 fhBkgRatioPts[icone][ipt]->SetXTitle(
"p_{T trigger} (GeV/c)");
561 fhBkgDeltaPhis[icone][ipt] =
new TH2F(Form(
"BkgDeltaPhi%s",lastnamehist.Data()),Form(
"#phi_{bkg} - #phi_{trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
565 fhBkgDeltaEtas[icone][ipt] =
new TH2F(Form(
"BkgDeltaEta%s",lastnamehist.Data()),Form(
"#eta_{bkg} - #eta_{trigger} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,-2,2);
569 fhBkgLeadingRatioPts[icone][ipt] =
new TH2F(Form(
"BkgLeadingRatioPt%s",lastnamehist.Data()),Form(
"p_{T bkg} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,2);
573 fhBkgLeadingDeltaPhis[icone][ipt] =
new TH2F(Form(
"BkgLeadingDeltaPhi%s",lastnamehist.Data()),Form(
"#phi_{bkg} - #phi_{leading} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,0,TMath::TwoPi());
577 fhBkgLeadingDeltaEtas[icone][ipt] =
new TH2F(Form(
"BkgLeadingDeltaEta%s",lastnamehist.Data()),Form(
"#eta_{bkg} - #eta_{leading} vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,120,-2,2);
581 fhBkgFFzs[icone][ipt] =
new TH2F(Form(
"BkgFFz%s",lastnamehist.Data()),
"z = p_{T i charged}/p_{T trigger} vs p_{T trigger}", 120,0.,120.,200,0.,2);
583 fhBkgFFzs[icone][ipt]->SetXTitle(
"p_{T trigger}");
585 fhBkgFFxis[icone][ipt] =
new TH2F(Form(
"BkgFFxi%s",lastnamehist.Data()),
"#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger}", 120,0.,120.,100,0.,10.);
587 fhBkgFFxis[icone][ipt]->SetXTitle(
"p_{T trigger}");
589 fhBkgFFpts[icone][ipt] =
new TH2F(Form(
"BkgFFpt%s",lastnamehist.Data()),
"p_{T charged hadron} in jet vs p_{T trigger}", 120,0.,120.,200,0.,50.);
590 fhBkgFFpts[icone][ipt]->SetYTitle(
"p_{T charged hadron}");
591 fhBkgFFpts[icone][ipt]->SetXTitle(
"p_{T trigger}");
593 fhBkgNTracksInCones[icone][ipt] =
new TH2F(Form(
"BkgNTracksInCone%s",lastnamehist.Data()),Form(
"N particles in cone vs p_{T trigger} %s",lastnametitle.Data()),nptbins,ptmin,ptmax,5000,0, 5000);
618 for(
Int_t i = 0; i < nmsHistos->GetEntries(); i++)
fOutCont->Add(nmsHistos->At(i)) ;
644 if (ptch > 0 || ptpi > 0)
648 AliDebug(1,
"Leading found in CTS");
661 AliDebug(1,
"Leading found in EMCAL");
673 AliDebug(1,
"NO LEADING PARTICLE FOUND");
696 AliVTrack* track = (AliVTrack *)(
GetCTSTracks()->At(ipr)) ;
697 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
700 if(phi < 0) phi+=TMath::TwoPi();
706 Float_t deltaphi = TMath::Abs(phiTrig-phi);
716 if( ptl > 0 )AliDebug(1,Form(
"Leading in CTS: pt %2.3f eta %2.3f phi %2.3f pt/ptTrig %2.3f, |phiTrig-phi| %2.3f",
757 AliDebug(1,
"Neutral cluster ID as Pi0");
762 if(phi < 0) phi+=TMath::TwoPi();
765 Float_t deltaphi = TMath::Abs(phiTrig-phi);
792 if(phi < 0) phi+=TMath::TwoPi();
796 Float_t deltaphi = TMath::Abs(phiTrig-phi);
798 AliDebug(1,Form(
"Neutral Hadron Correlation: gamma pair: pt %2.2f, phi %2.2f, eta %2.2f, |phiTrig-phi| %2.3f, pt/ptTrig %2.3f, M %2.3f",
809 AliDebug(1,Form(
"Neutral Hadron Correlation: Selected gamma pair: pt %2.2f, phi %2.2f, eta %2.2f, M %2.3f",
819 AliDebug(1,Form(
"Leading EMCAL: pt %2.3f eta %2.3f phi %2.3f pt/Eg %2.3f",
916 if(ptjet == 0)
return kFALSE;
997 AliDebug(3,Form(
"Jet selection? : Limits min %2.3f, max %2.3f, pt_jet %2.3f, pt_gamma %2.3f, pt_jet / pt_gamma %2.3f",min,max,ptjet,ptTrig,rat));
999 if(( min < rat ) && ( max > ptjet/rat))
1020 AliWarning(
")Jet selection option larger than 2, DON'T SELECT JETS");
1034 if(phi < 0) phi+=TMath::TwoPi();
1035 if(phil < 0) phil+=TMath::TwoPi();
1038 if(TMath::Abs(phi-phil) <= (TMath::TwoPi() -
fJetCone))
1039 rad = TMath::Sqrt(TMath::Power(eta-etal,2)+TMath::Power(phi-phil,2));
1041 if(phi-phil > TMath::TwoPi() -
fJetCone)
1042 rad = TMath::Sqrt(TMath::Power(eta-etal,2)+TMath::Power((phi-TMath::TwoPi())-phil,2));
1043 if(phi-phil < -(TMath::TwoPi() -
fJetCone))
1044 rad = TMath::Sqrt(TMath::Power(eta-etal,2)+TMath::Power((phi+TMath::TwoPi())-phil,2));
1048 else return kFALSE ;
1058 AliFatal(Form(
"No input particles in AOD with name branch < %s >",
GetInputAODName().
Data()));
1062 if(strcmp(
GetInputAODBranch()->GetClass()->GetName(),
"AliCaloTrackParticleCorrelation"))
1063 AliFatal(Form(
"Wrong type of AOD object, change AOD class name in input AOD: It should be <AliCaloTrackParticleCorrelation> and not <%s>",
1067 AliDebug(1,
"Begin jet leading cone correlation analysis, fill AODs");
1068 AliDebug(1,Form(
"In particle branch aod entries %d",
GetInputAODBranch()->GetEntriesFast()));
1069 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks() ->GetEntriesFast()));
1070 AliDebug(1,Form(
"In EMCAL aod entries %d",
GetEMCALClusters() ->GetEntriesFast()));
1074 for(
Int_t iaod = 0; iaod < naod ; iaod++)
1090 AliDebug(1,
"End of jet leading cone analysis, fill AODs");
1100 printf(
"AliAnaParticleJetLeadingConeCorrelation::MakeAnalysisFillHistograms() - No input particles in AOD with name branch < %s >",
1105 AliDebug(1,
"Begin jet leading cone correlation analysis, fill histograms");
1106 AliDebug(1,Form(
"In particle branch aod entries %d",
GetInputAODBranch()->GetEntriesFast()));
1107 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks() ->GetEntriesFast()));
1108 AliDebug(1,Form(
"In EMCAL aod entries %d",
GetEMCALClusters() ->GetEntriesFast()));
1112 for(
Int_t iaod = 0; iaod < naod ; iaod++)
1130 if(phiL < 0 ) phiL+=TMath::TwoPi();
1133 AliDebug(1,Form(
"Trigger with pt %3.2f, phi %2.2f, eta %2.2f", pt, phi, eta));
1202 AliDebug(1,
"End of jet leading cone analysis, fill histograms");
1215 if(phil<0) phil+=TMath::TwoPi();
1225 AliFatal(
"Cannot construct jets without tracks, STOP analysis");
1235 AliVTrack* track = (AliVTrack *)((
GetCTSTracks())->At(ipr)) ;
1236 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1241 reftracks->Add(track);
1253 reftracksbkg->Add(track);
1263 if(reftracks->GetEntriesFast() > 0 )
1268 else AliDebug(2,
"No tracks in jet cone");
1270 if(reftracksbkg->GetEntriesFast() > 0 )
1275 else AliDebug(1,
"No background tracks in jet cone");
1304 refclusters->Add(calo);
1311 refclustersbkg->Add(calo);
1319 if(refclusters->GetEntriesFast() > 0 )
1324 else AliDebug(2,
"No clusters in jet cone");
1326 if(refclustersbkg->GetEntriesFast() > 0 )
1331 else AliDebug(1,
"No background clusters in jet cone");
1339 AliDebug(1,Form(
"Found jet: Trigger pt %2.3f, Jet pt %2.3f, Bkg pt %2.3f",ptTrig,
fJetMom.Pt(),
fBkgMom.Pt()));
1354 if(phil < 0) phil+=TMath::TwoPi();
1369 for(
Int_t ipr = 0;ipr < reftracks->GetEntriesFast() ; ipr ++ )
1371 AliVTrack* track = (AliVTrack *) reftracks->At(ipr) ;
1372 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1374 if(phi < 0) phi+=TMath::TwoPi();
1385 for(
Int_t ipr = 0;ipr < reftracksbkg->GetEntriesFast() ; ipr ++ )
1387 AliVTrack* track = (AliVTrack *) reftracksbkg->At(ipr) ;
1388 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1409 for(
Int_t iclus = 0;iclus < refclusters->GetEntriesFast() ; iclus ++ )
1411 AliVCluster * calo = (AliVCluster *) refclusters->At(iclus) ;
1422 for(
Int_t iclus = 0;iclus < refclustersbkg->GetEntriesFast() ; iclus ++ )
1424 AliVCluster * calo = (AliVCluster *) refclustersbkg->At(iclus) ;
1437 fJetMom.SetPxPyPzE(0.,0.,0.,0.);
1438 fBkgMom.SetPxPyPzE(0.,0.,0.,0.);
1440 else AliDebug(1,Form(
"Found jet: Trigger pt %2.3f, Jet pt %2.3f, Bkg pt %2.3f",ptTrig,
fJetMom.Pt(),
fBkgMom.Pt()));
1451 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1455 else printf(
"Jets reconstructed in CTS+EMCAL \n");
1457 if(
fPbPb) printf(
"PbPb events, pT cut in jet cone energy reconstruction %2.1f \n",
fJetPtThreshold);
1458 else printf(
"pp events, pT cut in jet cone energy reconstruction %2.1f \n",
fJetPtThresPbPb);
1474 printf(
"Accept all reconstructed jets \n") ;
1476 printf(
"Accept jets depending on trigger energy \n") ;
1478 printf(
"Wrong jet selection option: %d \n",
fSelect) ;
TH2F * fhJetLeadingDeltaEtas[5][5]
! Delta eta jet-leading
Float_t GetHistoPtMax() const
TH2F * fhBkgFFz
! Accepted reconstructed background fragmentation function, z=ptjet/pttrig
Double_t fJetXMax2[6]
X Factor to set jet max limit for PbPb.
Bool_t OnlyIsolated() const
Double_t fJetPtThres[5]
Jet pT threshold under study(fSeveralConeAndPtCuts)
virtual Double_t Eta() const
Double_t fJetSigma2[2]
Rec. sigma of jet energy parameters.
Int_t fJetNCone
Number of jet cones sizes, maximum 5.
Double_t fJetPtThreshold
Jet pT threshold under study(!fSeveralConeAndPtCuts)
virtual Double_t Pt() const
Float_t GetHistoPtMin() const
virtual TObjArray * GetCTSTracks() const
TH2F * fhJetLeadingDeltaEta
! Delta eta jet-leading
void MakeAODJet(AliCaloTrackParticleCorrelation *particle)
TH2F * fhBkgDeltaEta
! Delta eta background-trigger
TH2F * fhJetDeltaEta
! Delta eta jet-trigger
TH2F * fhChargedLeadingDeltaPhiRatioPt30
! Difference of charged hadron and trigger phi as function of pT leading / trigger pT...
virtual void AddToHistogramsName(TString add)
Double_t fJetXMin2[6]
X Factor to set jet min limit for PbPb.
Bool_t GetLeadingParticle(AliCaloTrackParticleCorrelation *particle)
Search Charged or Neutral leading particle, select the highest one and fill AOD.
TH2F * fhNeutralLeadingRatioPt
! Ratio of Pt leading neutral and trigger
TH2F * fhJetLeadingDeltaPhi
! Delta phi jet-leading
Double_t fPtTriggerSelectionCut
Jet pt to change to low pt jets analysis.
Double_t fLeadingRatioMinCut
Leading/gamma Ratio cut minimum.
virtual void GetVertex(Double_t vertex[3]) const
TH2F * fhJetLeadingRatioPts[5][5]
! Ratio of pt leading and pt jet
virtual TString GetInputAODName() const
TH2F * fhJetLeadingDeltaPhis[5][5]
! Delta phi jet-leading
TH2F * fhBkgFFzs[5][5]
! Accepted reconstructed background fragmentation function, z=ptjet/pttrig
Double_t fJetXMin1[6]
X Factor to set jet min limit for pp.
TH2F * fhBkgFFxis[5][5]
! Accepted reconstructed background fragmentation function, xsi = ln(pttrig/ptjet) ...
Double_t fLeadingRatioMaxCut
Leading /gamma Ratio cut maximum.
virtual void SetInputAODName(TString name)
TH2F * fhChargedLeadingPt
! Pt(Pt trigger) distribution of charged hadrons
virtual void AddObjArray(TObjArray *refarray)
TLorentzVector fLeadingPhoMom2
! leading particle momentum
TH2F * fhNeutralLeadingPhi
! Phi(Pt trigger) distribution of neutral hadrons
virtual Bool_t IsTrackMatched(AliVCluster *cluster, AliVEvent *event)
void MakeAnalysisFillHistograms()
Particle-Jet/Hadron Correlation Analysis, fill histograms.
TH2F * fhBkgNTracksInCones[5][5]
! Background multiplicity in cone
Double_t fJetSigma1[2]
Rec. sigma of jet energy parameters.
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
Int_t GetHistoPhiBins() const
Bool_t fReMakeJet
Re-make the jet reconstruction from AODParticleCorrelation input.
TH2F * fhBkgPt
! Leading pt bakground vs pt trigger
virtual void SetLeading(TLorentzVector lead)
virtual Bool_t IsIsolated() const
Double_t fDeltaPhiMinCut
Maximum Delta Phi Gamma-Leading.
TH2F * fhJetFFpts[5][5]
! Jet particle pt distribution in cone
Double_t fJetCTSRatioMaxCut
Jet(CTS) /gamma Ratio cut maximum.
TH2F * fhBkgLeadingRatioPts[5][5]
! Ratio of pt leading and pt background
virtual TObjArray * GetObjArray(TString refname) const
virtual void GetVertex(Double_t v[3]) const
Double_t fBkgRMS[6]
Background RMS.
TH2F * fhNeutralLeadingDeltaPhiRatioPt30
! Difference of neutral hadron and trigger phi as function of pT leading / trigger pT...
TH2F * fhNeutralLeadingDeltaPt
! Difference of neutral hadron and trigger pT as function of trigger pT
Float_t GetHistoPhiMin() const
TLorentzVector fLeadingChargeMom
! leading particle momentum
TH2F * fhNeutralLeadingXi
! Ln (pt leading neutral / pt trigger)
TH2F * fhBkgNTracksInCone
! Background multiplicity in cone
TH2F * fhChargedLeadingEta
! Eta(Pt trigger) distribution of charged hadrons
void GetLeadingCharge(AliCaloTrackParticleCorrelation *particle)
TH2F * fhNeutralLeadingDeltaEta
! Difference of charged particle and trigger eta as function of trigger pT
void InitParameters()
Initialize the parameters of the analysis.
virtual TString GetAODObjArrayName() const
TH2F * fhJetDeltaPhi
! Delta phi jet-trigger
TH2F * fhBkgLeadingRatioPt
! Ratio of pt leading and pt background
TH2F * fhJetDeltaEtas[5][5]
! Delta eta jet-trigger
Daughter of AliCaloTrackParticle that includes correlation part.
TVector3 fTrackVector
! track vector
TList * GetCreateOutputObjects()
TH2F * fhNeutralLeadingDeltaPhi
! Difference of neutral hadron and trigger phi as function of trigger pT
TH2F * fhBkgPts[5][5]
! Leading pt bakground vs pt trigger
Base class for CaloTrackCorr analysis algorithms.
TH2F * fhJetFFpt
! Jet particle pt distribution in cone
Bool_t IsJetSelected(Double_t ptTrig, Double_t ptjet) const
Double_t fBkgMean[6]
Background mean energy.
TH2F * fhJetFFz
! Accepted reconstructed jet fragmentation function, z=ptjet/pttrig
Int_t fJetNPt
Number of jet particle pT threshold, maximum 5.
TH2F * fhJetLeadingRatioPt
! Ratio of pt leading and pt jet
AliAnaParticleJetLeadingConeCorrelation()
Default constructor. Initialize parameters.
Double_t fJetCone
Jet cone sizes under study (!fSeveralConeAndPtCuts)
void MakeJetFromAOD(AliCaloTrackParticleCorrelation *particle)
TH2F * fhChargedLeadingPhi
! Phi(Pt trigger) distribution of charged hadrons
virtual TClonesArray * GetInputAODBranch() const
TH2F * fhBkgDeltaPhi
! Delta phi background-trigger
Bool_t SelectCluster(AliVCluster *calo, Double_t *vertex, TLorentzVector &mom, Int_t &pdg)
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhNeutralLeadingPt
! Pt(Pt trigger) distribution of neutral hadrons
Bool_t fSelectIsolated
Select only trigger particles isolated.
void FillJetHistos(AliCaloTrackParticleCorrelation *particle, const TLorentzVector jet, const TString &type, const TString &lastname)
Fill jet and background histograms.
Double_t fJetE2[2]
Rec. jet energy parameters.
Double_t fJetRatioMaxCut
Jet(EMCAL+CTS)/gamma Ratio cut maximum.
TH2F * fhChargedLeadingDeltaPt
! Difference of charged hadron and trigger pT as function of trigger p
TH2F * fhJetFFzs[5][5]
! Accepted reconstructed jet fragmentation function, z=ptjet/pttrig
Correlate trigger particle and reconstructed jet.
TH2F * fhChargedLeadingXi
! Ln (pt leading charge / pt trigger)
TH2F * fhBkgRatioPt
! Ratio of pt background and pt trigger
TList * fOutCont
! Container for histograms
TLorentzVector fJetConstMom
! jet constituent momentum
TH2F * fhChargedLeadingRatioPt
! Ratio of Pt leading charge and trigger
TH2F * fhChargedLeadingDeltaPhi
! Difference of charged hadron and trigger phi as function of trigger pT
TLorentzVector fLeadingPi0Mom
! leading particle momentum
virtual void SetCorrelatedBackground(TLorentzVector bkg)
TH2F * fhBkgFFxi
! Accepted reconstructed background fragmentation function, xsi = ln(pttrig/ptjet) ...
Double_t fDeltaPhiMaxCut
Minimum Delta Phi Gamma-Leading.
Bool_t fJetsOnlyInCTS
Jets measured only in TPC+ITS.
virtual Double_t GetEventWeight() const
Double_t fJetPtThresPbPb
Jet pT threshold under study(!fSeveralConeAndPtCuts)
virtual TString GetAddedHistogramsStringToName() const
TH2F * fhJetFFxi
! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/ptjet)
TLorentzVector fLeadingPhoMom1
! leading particle momentum
TH2F * fhJetFFxis[5][5]
! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/ptjet)
Float_t GetHistoEtaMin() const
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
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)
virtual Int_t GetLeadingDetector() const
virtual void SetLeadingDetector(Int_t d)
TH2F * fhJetNTracksInCone
! jet multiplicity in cone
TH2F * fhBkgLeadingDeltaEta
! Delta eta background-leading
Bool_t IsParticleInJetCone(Double_t eta, Double_t phi, Double_t etal, Double_t phil) const
void GetLeadingPi0(AliCaloTrackParticleCorrelation *particle)
TH2F * fhBkgLeadingDeltaPhis[5][5]
! Delta phi background-leading
Float_t GetHistoEtaMax() const
TH2F * fhJetRatioPts[5][5]
! Ratio of pt jet and pt trigger
Int_t GetHistoPtBins() const
TH2F * fhJetPt
! Leading pt jet vs pt trigger
TH2F * fhJetNTracksInCones[5][5]
! jet multiplicity in cone
Double_t fJetCones[5]
Jet cone sizes under study (fSeveralConeAndPtCuts)
TH2F * fhChargedLeadingDeltaPhiRatioPt50
! Difference of charged hadron and trigger phi as function of pT leading / trigger pT...
void MakeAnalysisFillAOD()
UInt_t fSelect
kTRUE: Selects all jets, no limits.
TLorentzVector fBkgMom
! bkg momentum
Double_t fJetXMax1[6]
X Factor to set jet max limit for pp.
TString fJetNameCones[5]
String name of cone to append to histos.
virtual void SetAODObjArrayName(TString name)
virtual TLorentzVector GetCorrelatedJet() const
virtual Double_t Phi() const
Double_t CalculateJetRatioLimit(Double_t ptTrig, const Double_t *param, const Double_t *x) const
virtual TLorentzVector GetLeading() const
Bool_t fSeveralConeAndPtCuts
To play with the jet cone size and pt th.
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Double_t fJetCTSRatioMinCut
Jet(CTS) /gamma Ratio cut maximum.
TH2F * fhNeutralLeadingDeltaPhiRatioPt50
! Difference of neutral hadron and trigger phi as function of pT leading / trigger pT...
TList * GetCreateOutputObjects()
TH2F * fhJetDeltaPhis[5][5]
! Delta phi jet-trigger
TList * GetOutputContainer() const
TH2F * fhBkgRatioPts[5][5]
! Ratio of pt background and pt trigger
TH2F * fhBkgLeadingDeltaEtas[5][5]
! Delta eta background-leading
TH2F * fhNeutralLeadingEta
! Eta(Pt trigger) distribution of neutral hadrons
TH2F * fhJetPts[5][5]
! Leading pt jet vs pt trigger
TString fJetNamePtThres[5]
String name of pt th to append to histos.
virtual void SetCorrelatedJet(TLorentzVector jet)
Float_t GetHistoPhiMax() const
virtual AliCaloTrackReader * GetReader() const
TLorentzVector fJetMom
! jet momentum
Double_t fJetE1[2]
Rec. jet energy parameters.
Int_t GetHistoEtaBins() const
Double_t fJetRatioMinCut
Jet(EMCAL+CTS)/gamma Ratio cut minimum.
virtual TObjArray * GetEMCALClusters() const
TH2F * fhBkgLeadingDeltaPhi
! Delta phi background-leading
TH2F * fhBkgDeltaPhis[5][5]
! Delta phi background-trigger
TH2F * fhJetRatioPt
! Ratio of pt jet and pt trigger
virtual TLorentzVector GetCorrelatedBackground() const
TLorentzVector fLeadingMom
! leading particle momentum
TH2F * fhBkgDeltaEtas[5][5]
! Delta eta background-trigger
TH2F * fhBkgFFpt
! Background particle pt distribution in cone
TH2F * fhBkgFFpts[5][5]
! Background particle pt distribution in cone
TH2F * fhChargedLeadingDeltaEta
! Difference of charged particle and trigger eta as function of trigger pT