23 #include "THnSparse.h" 26 #include "AliAnalysisTask.h" 27 #include "AliAnalysisManager.h" 29 #include "AliESDEvent.h" 30 #include "AliAODEvent.h" 31 #include "AliAODTrack.h" 32 #include <TDatabasePDG.h> 34 #include "AliPIDResponse.h" 35 #include "AliInputEventHandler.h" 36 #include "AliAODMCHeader.h" 37 #include "AliAODMCParticle.h" 38 #include "TClonesArray.h" 86 fdCutDCAToPrimVtxMin(0.1),
87 fdCutDCADaughtersMax(1.),
88 fdCutNSigmadEdxMax(3),
115 fh1EventCounterCut(0),
118 fh1EventCent2Jets(0),
119 fh1EventCent2NoJets(0),
120 fh2EventCentTracks(0),
121 fh1V0CandPerEvent(0),
128 fh3CCMassCorrelBoth(0),
129 fh3CCMassCorrelKNotL(0),
130 fh3CCMassCorrelLNotK(0)
587 DefineInput(0, TChain::Class());
590 DefineOutput(1, TList::Class());
591 DefineOutput(2, TList::Class());
592 DefineOutput(3, TList::Class());
593 DefineOutput(4, TList::Class());
594 DefineOutput(5, TTree::Class());
672 const Int_t iNCategEvent = 6;
673 TString categEvent[iNCategEvent] = {
"coll. candid.",
"AOD OK",
"vtx & cent",
"with V0",
"with jets",
"jet selection"};
675 TString categV0[
fgkiNCategV0] = {
"all",
"mass range",
"rec. method",
"tracks TPC",
"track pt",
"DCA prim v",
"DCA daughters",
"CPA",
"volume",
"track #it{#eta}",
"V0 #it{y} & #it{#eta}",
"lifetime",
"PID",
"Arm.-Pod.",
"inclusive",
"in jet event",
"in jet"};
677 fh1EventCounterCut =
new TH1D(
"fh1EventCounterCut",
"Number of events after filtering;selection filter;counts", iNCategEvent, 0, iNCategEvent);
678 for(
Int_t i = 0; i < iNCategEvent; i++)
680 fh1EventCent2 =
new TH1D(
"fh1EventCent2",
"Number of events vs centrality;centrality;counts", 100, 0, 100);
681 fh1EventCent2Jets =
new TH1D(
"fh1EventCent2Jets",
"Number of sel.-jet events vs centrality;centrality;counts", 100, 0, 100);
682 fh1EventCent2NoJets =
new TH1D(
"fh1EventCent2NoJets",
"Number of no-jet events vs centrality;centrality;counts", 100, 0, 100);
683 fh2EventCentTracks =
new TH2D(
"fh2EventCentTracks",
"Number of tracks vs centrality;centrality;tracks;counts", 100, 0, 100, 150, 0, 15e3);
687 fh1NRndConeCent =
new TH1D(
"fh1NRndConeCent",
"Number of rnd. cones in centrality bins;centrality;counts", fgkiNBinsCent, 0, fgkiNBinsCent);
690 fh1NMedConeCent =
new TH1D(
"fh1NMedConeCent",
"Number of med.-cl. cones in centrality bins;centrality;counts", fgkiNBinsCent, 0, fgkiNBinsCent);
693 fh1AreaExcluded =
new TH1D(
"fh1AreaExcluded",
"Area of excluded cones in centrality bins;centrality;area", fgkiNBinsCent, 0, fgkiNBinsCent);
706 fh1V0CandPerEvent =
new TH1D(
"fh1V0CandPerEvent",
"Number of all V0 candidates per event;candidates;events", 1000, 0, 1000);
712 for(
Int_t j = 0; j < iNCategEvent; j++)
750 fh3CCMassCorrelBoth =
new THnSparseD(
"fh3CCMassCorrelBoth",
"Mass correlation: K0S && Lambda;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
751 fh3CCMassCorrelKNotL =
new THnSparseD(
"fh3CCMassCorrelKNotL",
"Mass correlation: K0S, not Lambda;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
752 fh3CCMassCorrelLNotK =
new THnSparseD(
"fh3CCMassCorrelLNotK",
"Mass correlation: Lambda, not K0S;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
761 const Int_t iNBinsEtaV0 = 2 *
Int_t(dRangeEtaV0Max / dStepEtaV0);
763 const Int_t iNDimIncl = 3;
771 const Int_t iNDimInJC = 4;
782 const Int_t iNBinsDeltaEta = 2 *
Int_t(dRangeDeltaEtaMax / dStepDeltaEta);
798 Int_t binsEtaInGen[4] = {iNBinsPtV0, iNBinsEtaV0, iNJetPtBins, iNBinsDeltaEta};
799 Double_t xminEtaInGen[4] = {dPtV0Min, -dRangeEtaV0Max, dJetPtMin, -dRangeDeltaEtaMax};
800 Double_t xmaxEtaInGen[4] = {dPtV0Max, dRangeEtaV0Max, dJetPtMax, dRangeDeltaEtaMax};
802 const Int_t iNDimEtaD = 6;
803 Int_t binsEtaDaughter[iNDimEtaD] = {2, 20, iNBinsPtV0, iNBinsEtaV0, iNBinsPtV0, iNJetPtBins};
804 Double_t xminEtaDaughter[iNDimEtaD] = {0, -1, dPtV0Min, -dRangeEtaV0Max, dPtV0Min, dJetPtMin};
805 Double_t xmaxEtaDaughter[iNDimEtaD] = {2, 1, dPtV0Max, dRangeEtaV0Max, dPtV0Max, dJetPtMax};
816 fhnV0InclusiveK0s[i] =
new THnSparseD(Form(
"fhnV0InclusiveK0s_C%d", i),
"K0s: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});pt (GeV/#it{c});counts", iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
817 fhnV0InclusiveLambda[i] =
new THnSparseD(Form(
"fhnV0InclusiveLambda_C%d", i),
"Lambda: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});pt (GeV/#it{c});counts", iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
818 fhnV0InclusiveALambda[i] =
new THnSparseD(Form(
"fhnV0InclusiveALambda_C%d", i),
"ALambda: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});pt (GeV/#it{c});counts", iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
823 fhnV0InJetK0s[i] =
new THnSparseD(Form(
"fhnV0InJetK0s_%d", i), Form(
"K0s: Mass vs Pt in jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsKInJC, xminKInJC, xmaxKInJC);
825 fhnV0InPerpK0s[i] =
new THnSparseD(Form(
"fhnV0InPerpK0s_%d", i), Form(
"K0s: Mass vs Pt in perp. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsKInJC, xminKInJC, xmaxKInJC);
827 fhnV0InRndK0s[i] =
new THnSparseD(Form(
"fhnV0InRndK0s_%d", i), Form(
"K0s: Mass vs Pt in rnd. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
829 fhnV0InMedK0s[i] =
new THnSparseD(Form(
"fhnV0InMedK0s_%d", i), Form(
"K0s: Mass vs Pt in med.-cl. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
831 fhnV0OutJetK0s[i] =
new THnSparseD(Form(
"fhnV0OutJetK0s_%d", i), Form(
"K0s: Pt outside jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
833 fhnV0NoJetK0s[i] =
new THnSparseD(Form(
"fhnV0NoJetK0s_%d", i), Form(
"K0s: Pt in jet-less events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
835 fhnV0InJetLambda[i] =
new THnSparseD(Form(
"fhnV0InJetLambda_%d", i), Form(
"Lambda: Mass vs Pt in jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
837 fhnV0InPerpLambda[i] =
new THnSparseD(Form(
"fhnV0InPerpLambda_%d", i), Form(
"Lambda: Mass vs Pt in perp. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
839 fhnV0InRndLambda[i] =
new THnSparseD(Form(
"fhnV0InRndLambda_%d", i), Form(
"Lambda: Mass vs Pt in rnd. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
841 fhnV0InMedLambda[i] =
new THnSparseD(Form(
"fhnV0InMedLambda_%d", i), Form(
"Lambda: Mass vs Pt in med.-cl. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
843 fhnV0OutJetLambda[i] =
new THnSparseD(Form(
"fhnV0OutJetLambda_%d", i), Form(
"Lambda: Pt outside jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
845 fhnV0NoJetLambda[i] =
new THnSparseD(Form(
"fhnV0NoJetLambda_%d", i), Form(
"Lambda: Pt in jet-less events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
847 fhnV0InJetALambda[i] =
new THnSparseD(Form(
"fhnV0InJetALambda_%d", i), Form(
"ALambda: Mass vs Pt in jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
849 fhnV0InPerpALambda[i] =
new THnSparseD(Form(
"fhnV0InPerpALambda_%d", i), Form(
"ALambda: Mass vs Pt in perp. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
851 fhnV0InRndALambda[i] =
new THnSparseD(Form(
"fhnV0InRndALambda_%d", i), Form(
"ALambda: Mass vs Pt in rnd. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
853 fhnV0InMedALambda[i] =
new THnSparseD(Form(
"fhnV0InMedALambda_%d", i), Form(
"ALambda: Mass vs Pt in med.-cl. cones, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
855 fhnV0OutJetALambda[i] =
new THnSparseD(Form(
"fhnV0OutJetALambda_%d", i), Form(
"ALambda: Pt outside jets, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
857 fhnV0NoJetALambda[i] =
new THnSparseD(Form(
"fhnV0NoJetALambda_%d", i), Form(
"ALambda: Pt in jet-less events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
860 fh2V0PtJetAngleK0s[i] =
new TH2D(Form(
"fh2V0PtJetAngleK0s_%d", i), Form(
"K0s: #it{p}_{T}^{jet} vs angle V0-jet, cent: %s;#it{p}_{T}^{jet};#it{#alpha}",
GetCentBinLabel(i).
Data()), iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdRadiusJet + 0.1);
862 fh2V0PtJetAngleLambda[i] =
new TH2D(Form(
"fh2V0PtJetAngleLambda_%d", i), Form(
"Lambda: #it{p}_{T}^{jet} vs angle V0-jet, cent: %s;#it{p}_{T}^{jet};#it{#alpha}",
GetCentBinLabel(i).
Data()), iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdRadiusJet + 0.1);
864 fh2V0PtJetAngleALambda[i] =
new TH2D(Form(
"fh2V0PtJetAngleALambda_%d", i), Form(
"ALambda: #it{p}_{T}^{jet} vs angle V0-jet, cent: %s;#it{p}_{T}^{jet};#it{#alpha}",
GetCentBinLabel(i).
Data()), iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdRadiusJet + 0.1);
891 fh1PtJet[i] =
new TH1D(Form(
"fh1PtJet_%d", i), Form(
"Jet pt spectrum, cent: %s;#it{p}_{T} jet (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNJetPtBins, dJetPtMin, dJetPtMax);
895 fh2EtaPtJet[i] =
new TH2D(Form(
"fh2EtaPtJet_%d", i), Form(
"Jet eta vs pT spectrum, cent: %s;#it{#eta} jet;#it{p}_{T} jet (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 80, -1., 1., iNJetPtBins, dJetPtMin, dJetPtMax);
897 fh2EtaPhiRndCone[i] =
new TH2D(Form(
"fh2EtaPhiRndCone_%d", i), Form(
"Rnd. cones: eta vs phi, cent: %s;#it{#eta} cone;#it{#phi} cone",
GetCentBinLabel(i).
Data()), 80, -1., 1., 100, 0., TMath::TwoPi());
899 fh2EtaPhiMedCone[i] =
new TH2D(Form(
"fh2EtaPhiMedCone_%d", i), Form(
"Med.-cl. cones: eta vs phi, cent: %s;#it{#eta} cone;#it{#phi} cone",
GetCentBinLabel(i).
Data()), 80, -1., 1., 100, 0., TMath::TwoPi());
908 fh2VtxXY[i] =
new TH2D(Form(
"fh2VtxXY_%d", i), Form(
"#it{xy} coordinate of the primary vertex, cent: %s;#it{x} (cm);#it{y} (cm)",
GetCentBinLabel(i).
Data()), 200, -0.2, 0.2, 500, -0.5, 0.5);
914 fh1V0K0sPtMCGen[i] =
new TH1D(Form(
"fh1V0K0sPtMCGen_%d", i), Form(
"MC K0s generated: pt spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max);
916 fh2V0K0sPtMassMCRec[i] =
new TH2D(Form(
"fh2V0K0sPtMassMCRec_%d", i), Form(
"MC K0s associated: pt-m spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{m}_{inv} (GeV/#it{c}^{2})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max,
fgkiNBinsMassK0s,
fgkdMassK0sMin,
fgkdMassK0sMax);
921 fh2V0K0sEtaPtMCGen[i] =
new TH2D(Form(
"fh2V0K0sEtaPtMCGen_%d", i), Form(
"MC K0s generated: pt-eta spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsEtaV0, -dRangeEtaV0Max, dRangeEtaV0Max);
923 fh3V0K0sEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0K0sEtaPtMassMCRec_%d", i), Form(
"MC K0s associated: m-pt-eta spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), 3, binsEtaK, xminEtaK, xmaxEtaK);
926 fh2V0K0sInJetPtMCGen[i] =
new TH2D(Form(
"fh2V0K0sInJetPtMCGen_%d", i), Form(
"MC K0s in jet generated: pt-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
928 fh3V0K0sInJetPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0K0sInJetPtMassMCRec_%d", i), Form(
"MC K0s in jet associated: m-pt-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsKInJC, xminKInJC, xmaxKInJC);
931 fh3V0K0sInJetEtaPtMCGen[i] =
new THnSparseD(Form(
"fh3V0K0sInJetEtaPtMCGen_%d", i), Form(
"MC K0s generated: pt-eta-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 4, binsEtaInGen, xminEtaInGen, xmaxEtaInGen);
933 fh4V0K0sInJetEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh4V0K0sInJetEtaPtMassMCRec_%d", i), Form(
"MC K0s associated: m-pt-eta-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 5, binsEtaKInRec, xminEtaKInRec, xmaxEtaKInRec);
936 fh2V0K0sMCResolMPt[i] =
new TH2D(Form(
"fh2V0K0sMCResolMPt_%d", i), Form(
"MC K0s associated: #Delta#it{m} vs pt, cent %s;#Delta#it{m} = #it{m}_{inv} - #it{m}_{true} (GeV/#it{c}^{2});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 100, -0.02, 0.02, iNBinsPtV0, dPtV0Min, dPtV0Max);
938 fh2V0K0sMCPtGenPtRec[i] =
new TH2D(Form(
"fh2V0K0sMCPtGenPtRec_%d", i), Form(
"MC K0s associated: pt gen vs pt rec, cent %s;#it{p}_{T}^{gen} (GeV/#it{c});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsPtV0, dPtV0Min, dPtV0Max);
942 fh1V0LambdaPtMCGen[i] =
new TH1D(Form(
"fh1V0LambdaPtMCGen_%d", i), Form(
"MC Lambda generated: pt spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max);
944 fh2V0LambdaPtMassMCRec[i] =
new TH2D(Form(
"fh2V0LambdaPtMassMCRec_%d", i), Form(
"MC Lambda associated: pt-m spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{m}_{inv} (GeV/#it{c}^{2})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max,
fgkiNBinsMassLambda,
fgkdMassLambdaMin,
fgkdMassLambdaMax);
949 fh2V0LambdaEtaPtMCGen[i] =
new TH2D(Form(
"fh2V0LambdaEtaPtMCGen_%d", i), Form(
"MC Lambda generated: pt-eta spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsEtaV0, -dRangeEtaV0Max, dRangeEtaV0Max);
951 fh3V0LambdaEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0LambdaEtaPtMassMCRec_%d", i), Form(
"MC Lambda associated: m-pt-eta spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), 3, binsEtaL, xminEtaL, xmaxEtaL);
954 fh2V0LambdaInJetPtMCGen[i] =
new TH2D(Form(
"fh2V0LambdaInJetPtMCGen_%d", i), Form(
"MC Lambda in jet generated: pt-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
956 fh3V0LambdaInJetPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0LambdaInJetPtMassMCRec_%d", i), Form(
"MC Lambda in jet associated: m-pt-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
959 fh3V0LambdaInJetEtaPtMCGen[i] =
new THnSparseD(Form(
"fh3V0LambdaInJetEtaPtMCGen_%d", i), Form(
"MC Lambda generated: pt-eta-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 4, binsEtaInGen, xminEtaInGen, xmaxEtaInGen);
961 fh4V0LambdaInJetEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh4V0LambdaInJetEtaPtMassMCRec_%d", i), Form(
"MC Lambda associated: m-pt-eta-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 5, binsEtaLInRec, xminEtaLInRec, xmaxEtaLInRec);
964 fh2V0LambdaMCResolMPt[i] =
new TH2D(Form(
"fh2V0LambdaMCResolMPt_%d", i), Form(
"MC Lambda associated: #Delta#it{m} vs pt, cent %s;#Delta#it{m} = #it{m}_{inv} - #it{m}_{true} (GeV/#it{c}^{2});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 100, -0.02, 0.02, iNBinsPtV0, dPtV0Min, dPtV0Max);
966 fh2V0LambdaMCPtGenPtRec[i] =
new TH2D(Form(
"fh2V0LambdaMCPtGenPtRec_%d", i), Form(
"MC Lambda associated: pt gen vs pt rec, cent %s;#it{p}_{T}^{gen} (GeV/#it{c});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsPtV0, dPtV0Min, dPtV0Max);
970 fh1V0ALambdaPtMCGen[i] =
new TH1D(Form(
"fh1V0ALambdaPtMCGen_%d", i), Form(
"MC ALambda generated: pt spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max);
972 fh2V0ALambdaPtMassMCRec[i] =
new TH2D(Form(
"fh2V0ALambdaPtMassMCRec_%d", i), Form(
"MC ALambda associated: pt-m spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{m}_{inv} (GeV/#it{c}^{2})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max,
fgkiNBinsMassLambda,
fgkdMassLambdaMin,
fgkdMassLambdaMax);
977 fh2V0ALambdaEtaPtMCGen[i] =
new TH2D(Form(
"fh2V0ALambdaEtaPtMCGen_%d", i), Form(
"MC ALambda generated: pt-eta spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsEtaV0, -dRangeEtaV0Max, dRangeEtaV0Max);
979 fh3V0ALambdaEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0ALambdaEtaPtMassMCRec_%d", i), Form(
"MC ALambda associated: m-pt-eta spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta",
GetCentBinLabel(i).
Data()), 3, binsEtaL, xminEtaL, xmaxEtaL);
982 fh2V0ALambdaInJetPtMCGen[i] =
new TH2D(Form(
"fh2V0ALambdaInJetPtMCGen_%d", i), Form(
"MC ALambda in jet generated: pt-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
984 fh3V0ALambdaInJetPtMassMCRec[i] =
new THnSparseD(Form(
"fh3V0ALambdaInJetPtMassMCRec_%d", i), Form(
"MC ALambda in jet associated: m-pt-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
987 fh3V0ALambdaInJetEtaPtMCGen[i] =
new THnSparseD(Form(
"fh3V0ALambdaInJetEtaPtMCGen_%d", i), Form(
"MC ALambda generated: pt-eta-ptJet spectrum, cent: %s;MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 4, binsEtaInGen, xminEtaInGen, xmaxEtaInGen);
989 fh4V0ALambdaInJetEtaPtMassMCRec[i] =
new THnSparseD(Form(
"fh4V0ALambdaInJetEtaPtMassMCRec_%d", i), Form(
"MC ALambda associated: m-pt-eta-ptJet spectrum, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});MC #it{p}_{T} (GeV/#it{c});#eta;#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 5, binsEtaLInRec, xminEtaLInRec, xmaxEtaLInRec);
992 fh2V0ALambdaMCResolMPt[i] =
new TH2D(Form(
"fh2V0ALambdaMCResolMPt_%d", i), Form(
"MC ALambda associated: #Delta#it{m} vs pt, cent %s;#Delta#it{m} = #it{m}_{inv} - #it{m}_{true} (GeV/#it{c}^{2});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 100, -0.02, 0.02, iNBinsPtV0, dPtV0Min, dPtV0Max);
994 fh2V0ALambdaMCPtGenPtRec[i] =
new TH2D(Form(
"fh2V0ALambdaMCPtGenPtRec_%d", i), Form(
"MC ALambda associated: pt gen vs pt rec, cent %s;#it{p}_{T}^{gen} (GeV/#it{c});#it{p}_{T}^{rec} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtV0, dPtV0Min, dPtV0Max, iNBinsPtV0, dPtV0Min, dPtV0Max);
997 Int_t iNBinsPtXi = 80;
1000 const Int_t iNDimFD = 3;
1001 Int_t binsFD[iNDimFD] = {iNBinsPtV0, iNBinsPtXi, iNJetPtBins};
1002 Double_t xminFD[iNDimFD] = {dPtV0Min, dPtXiMin, dJetPtMin};
1003 Double_t xmaxFD[iNDimFD] = {dPtV0Max, dPtXiMax, dJetPtMax};
1004 fhnV0LambdaInclMCFD[i] =
new THnSparseD(Form(
"fhnV0LambdaInclMCFD_%d", i), Form(
"MC Lambda associated, inclusive, from Xi: pt-pt, cent %s;#it{p}_{T}^{#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1006 fhnV0LambdaInJetsMCFD[i] =
new THnSparseD(Form(
"fhnV0LambdaInJetsMCFD_%d", i), Form(
"MC Lambda associated, in JC, from Xi: pt-pt-ptJet, cent %s;#it{p}_{T}^{#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1008 fhnV0LambdaBulkMCFD[i] =
new THnSparseD(Form(
"fhnV0LambdaBulkMCFD_%d", i), Form(
"MC Lambda associated, in no jet events, from Xi: pt-pt, cent %s;#it{p}_{T}^{#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1010 fh1V0XiPtMCGen[i] =
new TH1D(Form(
"fh1V0XiPtMCGen_%d", i), Form(
"MC Xi^{-} generated: Pt spectrum, cent %s;#it{p}_{T}^{#Xi^{-},gen.} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtXi, dPtXiMin, dPtXiMax);
1012 fhnV0ALambdaInclMCFD[i] =
new THnSparseD(Form(
"fhnV0ALambdaInclMCFD_%d", i), Form(
"MC ALambda associated, from AXi: pt-pt, cent %s;#it{p}_{T}^{A#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{A#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1014 fhnV0ALambdaInJetsMCFD[i] =
new THnSparseD(Form(
"fhnV0ALambdaInJetsMCFD_%d", i), Form(
"MC ALambda associated, in JC, from AXi: pt-pt-ptJet, cent %s;#it{p}_{T}^{A#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{A#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1016 fhnV0ALambdaBulkMCFD[i] =
new THnSparseD(Form(
"fhnV0ALambdaBulkMCFD_%d", i), Form(
"MC ALambda associated, in no jet events, from AXi: pt-pt-ptJet, cent %s;#it{p}_{T}^{A#Lambda,gen.} (GeV/#it{c});#it{p}_{T}^{A#Xi,gen.} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimFD, binsFD, xminFD, xmaxFD);
1018 fh1V0AXiPtMCGen[i] =
new TH1D(Form(
"fh1V0AXiPtMCGen_%d", i), Form(
"MC AXi^{-} generated: Pt spectrum, cent %s;#it{p}_{T}^{A#Xi^{-},gen.} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNBinsPtXi, dPtXiMin, dPtXiMax);
1023 fhnV0K0sInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0K0sInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC K0S, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1025 fhnV0K0sInJetsDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0K0sInJetsDaughterEtaPtPtMCRec_%d", i), Form(
"MC K0S, in JC, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1027 fhnV0LambdaInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0LambdaInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC Lambda, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1029 fhnV0LambdaInJetsDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0LambdaInJetsDaughterEtaPtPtMCRec_%d", i), Form(
"MC Lambda, in JC, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1031 fhnV0ALambdaInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0ALambdaInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC ALambda, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1033 fhnV0ALambdaInJetsDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0ALambdaInJetsDaughterEtaPtPtMCRec_%d", i), Form(
"MC ALambda, in JC, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta daughter;pT daughter;eta V0;pT V0;pT jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1054 fh1QAV0Status[i] =
new TH1D(Form(
"fh1QAV0Status_%d", i),
"QA: V0 status", 2, 0, 2);
1056 fh1QAV0TPCRows[i] =
new TH1D(Form(
"fh1QAV0TPCRows_%d", i),
"QA: TPC Rows", 160, 0, 160);
1059 fh1QAV0Eta[i] =
new TH1D(Form(
"fh1QAV0Eta_%d", i),
"QA: Daughter Eta", 200, -2, 2);
1060 fh2QAV0EtaRows[i] =
new TH2D(Form(
"fh2QAV0EtaRows_%d", i),
"QA: Daughter Eta vs TPC rows;#eta;TPC rows", 200, -2, 2, 160, 0, 160);
1061 fh2QAV0PtRows[i] =
new TH2D(Form(
"fh2QAV0PtRows_%d", i),
"QA: Daughter Pt vs TPC rows;pt;TPC rows", 100, 0, 10, 160, 0, 160);
1062 fh2QAV0PhiRows[i] =
new TH2D(Form(
"fh2QAV0PhiRows_%d", i),
"QA: Daughter Phi vs TPC rows;#phi;TPC rows", 100, 0, TMath::TwoPi(), 160, 0, 160);
1063 fh2QAV0NClRows[i] =
new TH2D(Form(
"fh2QAV0NClRows_%d", i),
"QA: Daughter NCl vs TPC rows;findable clusters;TPC rows", 100, 0, 160, 160, 0, 160);
1064 fh2QAV0EtaNCl[i] =
new TH2D(Form(
"fh2QAV0EtaNCl_%d", i),
"QA: Daughter Eta vs NCl;#eta;findable clusters", 200, -2, 2, 160, 0, 160);
1066 fh2QAV0EtaPtK0sPeak[i] =
new TH2D(Form(
"fh2QAV0EtaPtK0sPeak_%d", i),
"QA: K0s: Daughter Eta vs V0 pt, peak;track eta;V0 pt", 200, -2, 2, iNBinsPtV0, dPtV0Min, dPtV0Max);
1067 fh2QAV0EtaEtaK0s[i] =
new TH2D(Form(
"fh2QAV0EtaEtaK0s_%d", i),
"QA: K0s: Eta vs Eta Daughter", 200, -2, 2, 200, -2, 2);
1068 fh2QAV0PhiPhiK0s[i] =
new TH2D(Form(
"fh2QAV0PhiPhiK0s_%d", i),
"QA: K0s: Phi vs Phi Daughter", 200, 0, TMath::TwoPi(), 200, 0, TMath::TwoPi());
1069 fh1QAV0RapK0s[i] =
new TH1D(Form(
"fh1QAV0RapK0s_%d", i),
"QA: K0s: V0 Rapidity", 200, -2, 2);
1070 fh2QAV0PtPtK0sPeak[i] =
new TH2D(Form(
"fh2QAV0PtPtK0sPeak_%d", i),
"QA: K0s: Daughter Pt vs Pt;neg pt;pos pt", 100, 0, 5, 100, 0, 5);
1072 fh2QAV0EtaPtLambdaPeak[i] =
new TH2D(Form(
"fh2QAV0EtaPtLambdaPeak_%d", i),
"QA: Lambda: Daughter Eta vs V0 pt, peak;track eta;V0 pt", 200, -2, 2, iNBinsPtV0, dPtV0Min, dPtV0Max);
1073 fh2QAV0EtaEtaLambda[i] =
new TH2D(Form(
"fh2QAV0EtaEtaLambda_%d", i),
"QA: Lambda: Eta vs Eta Daughter", 200, -2, 2, 200, -2, 2);
1074 fh2QAV0PhiPhiLambda[i] =
new TH2D(Form(
"fh2QAV0PhiPhiLambda_%d", i),
"QA: Lambda: Phi vs Phi Daughter", 200, 0, TMath::TwoPi(), 200, 0, TMath::TwoPi());
1075 fh1QAV0RapLambda[i] =
new TH1D(Form(
"fh1QAV0RapLambda_%d", i),
"QA: Lambda: V0 Rapidity", 200, -2, 2);
1076 fh2QAV0PtPtLambdaPeak[i] =
new TH2D(Form(
"fh2QAV0PtPtLambdaPeak_%d", i),
"QA: Lambda: Daughter Pt vs Pt;neg pt;pos pt", 100, 0, 5, 100, 0, 5);
1078 fh1QAV0Pt[i] =
new TH1D(Form(
"fh1QAV0Pt_%d", i),
"QA: Daughter Pt", 100, 0, 5);
1079 fh1QAV0Charge[i] =
new TH1D(Form(
"fh1QAV0Charge_%d", i),
"QA: V0 Charge", 3, -1, 2);
1080 fh1QAV0DCAVtx[i] =
new TH1D(Form(
"fh1QAV0DCAVtx_%d", i),
"QA: DCA daughters to primary vertex", 100, 0, 10);
1081 fh1QAV0DCAV0[i] =
new TH1D(Form(
"fh1QAV0DCAV0_%d", i),
"QA: DCA daughters", 100, 0, 2);
1082 fh1QAV0Cos[i] =
new TH1D(Form(
"fh1QAV0Cos_%d", i),
"QA: CPA", 10000, 0.9, 1);
1083 fh1QAV0R[i] =
new TH1D(Form(
"fh1QAV0R_%d", i),
"QA: R", 1500, 0, 150);
1084 fh1QACTau2D[i] =
new TH1D(Form(
"fh1QACTau2D_%d", i),
"QA: K0s: c#tau 2D;mR/pt#tau", 100, 0, 10);
1085 fh1QACTau3D[i] =
new TH1D(Form(
"fh1QACTau3D_%d", i),
"QA: K0s: c#tau 3D;mL/p#tau", 100, 0, 10);
1087 fh2ArmPod[i] =
new TH2D(Form(
"fh2ArmPod_%d", i),
"Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1088 fh2ArmPodK0s[i] =
new TH2D(Form(
"fh2ArmPodK0s_%d", i),
"K0s: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1089 fh2ArmPodLambda[i] =
new TH2D(Form(
"fh2ArmPodLambda_%d", i),
"Lambda: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1090 fh2ArmPodALambda[i] =
new TH2D(Form(
"fh2ArmPodALambda_%d", i),
"ALambda: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1206 THnSparse* hn =
dynamic_cast<THnSparse*
>(
fOutputListQA->At(i));
1228 THnSparse* hn =
dynamic_cast<THnSparse*
>(
fOutputListMC->At(i));
1243 if(fDebug > 5) printf(
"TaskV0sInJets: UserExec: Start\n");
1258 if(fDebug > 2) printf(
"TaskV0sInJets: AOD analysis\n");
1261 if(fDebug > 5) printf(
"TaskV0sInJets: UserExec: Loading AOD\n");
1266 if(fDebug > 0) printf(
"TaskV0sInJets: No output AOD found\n");
1271 if(fDebug > 0) printf(
"TaskV0sInJets: No input AOD found\n");
1274 if(fDebug > 5) printf(
"TaskV0sInJets: UserExec: Loading AOD OK\n");
1276 TClonesArray* arrayMC = 0;
1277 AliAODMCHeader* headerMC = 0;
1278 Int_t iNTracksMC = 0;
1279 Double_t dPrimVtxMCX = 0., dPrimVtxMCY = 0., dPrimVtxMCZ = 0.;
1284 arrayMC = (TClonesArray*)
fAODIn->FindListObject(AliAODMCParticle::StdBranchName());
1287 if(fDebug > 0) printf(
"TaskV0sInJets: No MC array found\n");
1290 if(fDebug > 5) printf(
"TaskV0sInJets: MC array found\n");
1291 iNTracksMC = arrayMC->GetEntriesFast();
1292 if(fDebug > 5) printf(
"TaskV0sInJets: There are %d MC tracks in this event\n", iNTracksMC);
1295 headerMC = (AliAODMCHeader*)
fAODIn->FindListObject(AliAODMCHeader::StdBranchName());
1298 if(fDebug > 0) printf(
"TaskV0sInJets: No MC header found\n");
1302 dPrimVtxMCX = headerMC->GetVtxX();
1303 dPrimVtxMCY = headerMC->GetVtxY();
1304 dPrimVtxMCZ = headerMC->GetVtxZ();
1309 AliInputEventHandler* inputHandler = (AliInputEventHandler*)mgr->GetInputEventHandler();
1310 AliPIDResponse* fPIDResponse = inputHandler->GetPIDResponse();
1313 if(fDebug > 0) printf(
"TaskV0sInJets: No PID response object found\n");
1324 if(fDebug > 5) printf(
"TaskV0sInJets: Event rejected\n");
1329 fdCentrality = ((AliVAODHeader*)
fAODIn->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
1335 if(fDebug > 5) printf(
"TaskV0sInJets: Event is out of histogram range\n");
1342 if(fDebug > 5) printf(
"TaskV0sInJets: There are %d tracks in this event\n", iNTracks);
1349 if(fDebug > 2) printf(
"TaskV0sInJets: No V0s found in event\n");
1373 TVector3 vecV0Momentum;
1377 Int_t iNV0CandTot = 0;
1378 Int_t iNV0CandK0s = 0;
1379 Int_t iNV0CandLambda = 0;
1380 Int_t iNV0CandALambda = 0;
1383 Bool_t bUseAliceCuts = 0;
1384 Bool_t bUseIouriCuts = 0;
1386 Bool_t bPrintJetSelection = 0;
1390 Int_t iRefit = AliAODTrack::kTPCrefit;
1405 Double_t dNCrossedRowsTPCMin = 70.;
1417 Bool_t bCutEtaDaughter = 1;
1431 else if(bUseAliceCuts)
1437 else if(bUseIouriCuts)
1449 Double_t dMassPDGK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
1450 Double_t dMassPDGLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
1453 Int_t iPdgCodePion = 211;
1454 Int_t iPdgCodeProton = 2212;
1455 Int_t iPdgCodeK0s = 310;
1456 Int_t iPdgCodeLambda = 3122;
1462 Bool_t bLeadingJetOnly = 0;
1469 bLeadingJetOnly = 0;
1474 TClonesArray* jetArray = 0;
1475 TClonesArray* jetArrayBg = 0;
1477 TClonesArray* jetArraySel =
new TClonesArray(
"AliAODJet", 0);
1480 TClonesArray* jetArrayPerp =
new TClonesArray(
"AliAODJet", 0);
1481 Int_t iNJetPerp = 0;
1485 AliAODJet* jetPerp = 0;
1486 AliAODJet* jetRnd = 0;
1487 AliAODJet* jetMed = 0;
1488 TVector3 vecJetMomentum;
1491 Bool_t bJetEventGood = kTRUE;
1500 if(fDebug > 0) printf(
"TaskV0sInJets: No array of name: %s\n",
fsJetBranchName.Data());
1501 bJetEventGood = kFALSE;
1504 iNJet = jetArray->GetEntriesFast();
1505 if(bJetEventGood && !iNJet)
1507 if(fDebug > 2) printf(
"TaskV0sInJets: No jets in array\n");
1508 bJetEventGood = kFALSE;
1516 if(fDebug > 0) printf(
"TaskV0sInJets: No bg array of name: %s\n",
fsJetBgBranchName.Data());
1522 bJetEventGood = kFALSE;
1529 if(fDebug > 5) printf(
"TaskV0sInJets: Jet selection for %d jets\n", iNJet);
1530 for(
Int_t iJet = 0; iJet < iNJet; iJet++)
1532 AliAODJet* jetSel = (AliAODJet*)jetArray->At(iJet);
1535 if(fDebug > 0) printf(
"TaskV0sInJets: Cannot load jet %d\n", iJet);
1538 if(bPrintJetSelection)
1539 if(fDebug > 7) printf(
"jet: i = %d, pT = %f, eta = %f, phi = %f, pt lead tr = %f ", iJet, jetSel->Pt(), jetSel->Eta(), jetSel->Phi(), jetSel->GetPtLeading());
1543 if(bPrintJetSelection)
1544 if(fDebug > 7) printf(
"rejected (pt)\n");
1548 if(TMath::Abs(jetSel->Eta()) > dJetEtaWindow)
1550 if(bPrintJetSelection)
1551 if(fDebug > 7) printf(
"rejected (eta)\n");
1556 if(jetSel->EffectiveAreaCharged() < dCutJetAreaMin)
1559 Int_t iNTracksInJet = 0;
1562 iNTracksInJet = jetSel->GetRefTracks()->GetEntriesFast();
1566 for(
Int_t j = 0; j < iNTracksInJet; j++)
1568 AliAODTrack* track = (AliAODTrack*)jetSel->GetTrack(j);
1572 if(track->Pt() > dPtLeadTrack)
1574 dPtLeadTrack = track->Pt();
1582 if(bPrintJetSelection)
1583 if(fDebug > 7) printf(
"rejected (track pt)\n");
1587 if(bPrintJetSelection)
1588 if(fDebug > 7) printf(
"accepted\n");
1589 if(fDebug > 5) printf(
"TaskV0sInJets: Jet %d with pt %.2f passed selection\n", iJet, jetSel->Pt());
1600 TLorentzVector vecPerpPlus(*(jetSel->MomentumVector()));
1601 vecPerpPlus.RotateZ(TMath::Pi() / 2.);
1602 TLorentzVector vecPerpMinus(*(jetSel->MomentumVector()));
1603 vecPerpMinus.RotateZ(-TMath::Pi() / 2.);
1605 if(fDebug > 5) printf(
"TaskV0sInJets: Adding perp. cones number %d, %d\n", iNJetPerp, iNJetPerp + 1);
1607 new((*jetArrayPerp)[iNJetPerp++]) AliAODJet(vecPerpPlus);
1608 new((*jetArrayPerp)[iNJetPerp++]) AliAODJet(vecPerpMinus);
1609 if(fDebug > 5) printf(
"TaskV0sInJets: Adding jet number %d\n", iNJetSel);
1611 new((*jetArraySel)[iNJetSel++]) AliAODJet(*((AliAODJet*)jetSel));
1613 if(fDebug > 5) printf(
"TaskV0sInJets: Added jets: %d\n", iNJetSel);
1614 iNJetSel = jetArraySel->GetEntriesFast();
1615 if(fDebug > 2) printf(
"TaskV0sInJets: Selected jets in array: %d\n", iNJetSel);
1618 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
1620 jet = (AliAODJet*)jetArraySel->At(iJet);
1621 fh1PtJet[iCentIndex]->Fill(jet->Pt());
1622 fh1EtaJet[iCentIndex]->Fill(jet->Eta());
1623 fh2EtaPtJet[iCentIndex]->Fill(jet->Eta(), jet->Pt());
1624 fh1PhiJet[iCentIndex]->Fill(jet->Phi());
1625 Double_t dAreaExcluded = TMath::Pi() * dRadiusExcludeCone * dRadiusExcludeCone;
1626 dAreaExcluded -=
AreaCircSegment(dRadiusExcludeCone, dEtaMax - jet->Eta());
1627 dAreaExcluded -=
AreaCircSegment(dRadiusExcludeCone, dEtaMax + jet->Eta());
1650 jetRnd =
GetRandomCone(jetArraySel, dJetEtaWindow, 2 * fdRadiusJet);
1665 AliAODVertex* primVtx =
fAODIn->GetPrimaryVertex();
1667 primVtx->GetXYZ(dPrimVtxPos);
1668 fh1VtxZ[iCentIndex]->Fill(dPrimVtxPos[2]);
1669 fh2VtxXY[iCentIndex]->Fill(dPrimVtxPos[0], dPrimVtxPos[1]);
1672 if(fDebug > 2) printf(
"TaskV0sInJets: Start of V0 loop\n");
1673 for(
Int_t iV0 = 0; iV0 < iNV0s; iV0++)
1682 Bool_t bIsCandidateK0s = kTRUE;
1683 Bool_t bIsCandidateLambda = kTRUE;
1684 Bool_t bIsCandidateALambda = kTRUE;
1685 Bool_t bIsInPeakK0s = kFALSE;
1686 Bool_t bIsInPeakLambda = kFALSE;
1687 Bool_t bIsInConeJet = kFALSE;
1688 Bool_t bIsInConePerp = kFALSE;
1689 Bool_t bIsInConeRnd = kFALSE;
1690 Bool_t bIsInConeMed = kFALSE;
1691 Bool_t bIsOutsideCones = kFALSE;
1694 dMassV0K0s = v0->MassK0Short();
1695 dMassV0Lambda = v0->MassLambda();
1696 dMassV0ALambda = v0->MassAntiLambda();
1698 Int_t iCutIndex = 0;
1701 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1706 bIsCandidateK0s = kFALSE;
1708 bIsCandidateLambda = kFALSE;
1710 bIsCandidateALambda = kFALSE;
1711 if(!bIsCandidateK0s && !bIsCandidateLambda && !bIsCandidateALambda)
1714 Double_t dPtV0 = TMath::Sqrt(v0->Pt2V0());
1715 vecV0Momentum = TVector3(v0->Px(), v0->Py(), v0->Pz());
1724 if(TMath::Abs(dMassV0K0s - dMassPDGK0s) < dMassPeakWindowK0s)
1725 bIsInPeakK0s = kTRUE;
1726 if(TMath::Abs(dMassV0Lambda - dMassPDGLambda) < dMassPeakWindowLambda)
1727 bIsInPeakLambda = kTRUE;
1730 Bool_t bOnFlyStatus = v0->GetOnFlyStatus();
1731 const AliAODTrack* trackPos = (AliAODTrack*)v0->GetDaughter(0);
1732 const AliAODTrack* trackNeg = (AliAODTrack*)v0->GetDaughter(1);
1733 Double_t dPtDaughterPos = trackPos->Pt();
1734 Double_t dPtDaughterNeg = trackNeg->Pt();
1735 Double_t dNRowsPos = trackPos->GetTPCClusterInfo(2, 1);
1736 Double_t dNRowsNeg = trackNeg->GetTPCClusterInfo(2, 1);
1737 Double_t dDCAToPrimVtxPos = TMath::Abs(v0->DcaPosToPrimVertex());
1738 Double_t dDCAToPrimVtxNeg = TMath::Abs(v0->DcaNegToPrimVertex());
1739 Double_t dDCADaughters = v0->DcaV0Daughters();
1740 Double_t dCPA = v0->CosPointingAngle(primVtx);
1743 v0->GetSecondaryVtx(dSecVtxPos);
1744 Double_t dRadiusDecay = TMath::Sqrt(dSecVtxPos[0] * dSecVtxPos[0] + dSecVtxPos[1] * dSecVtxPos[1]);
1745 Double_t dEtaDaughterNeg = trackNeg->Eta();
1746 Double_t dEtaDaughterPos = trackPos->Eta();
1747 Double_t dRapK0s = v0->RapK0Short();
1748 Double_t dRapLambda = v0->RapLambda();
1752 for(
Int_t iPos = 0; iPos < 3; iPos++)
1753 dDecayPath[iPos] = dSecVtxPos[iPos] - dPrimVtxPos[iPos];
1754 Double_t dDecLen = TMath::Sqrt(dDecayPath[0] * dDecayPath[0] + dDecayPath[1] * dDecayPath[1] + dDecayPath[2] * dDecayPath[2]);
1755 Double_t dDecLen2D = TMath::Sqrt(dDecayPath[0] * dDecayPath[0] + dDecayPath[1] * dDecayPath[1]);
1756 Double_t dLOverP = dDecLen / v0->P();
1757 Double_t dROverPt = dDecLen2D / dPtV0;
1758 Double_t dMLOverPK0s = dMassPDGK0s * dLOverP;
1760 Double_t dMROverPtK0s = dMassPDGK0s * dROverPt;
1761 Double_t dMROverPtLambda = dMassPDGLambda * dROverPt;
1768 AliAODVertex* prodVtxDaughterPos = (AliAODVertex*)(trackPos->GetProdVertex());
1769 Char_t cTypeVtxProdPos = prodVtxDaughterPos->GetType();
1770 AliAODVertex* prodVtxDaughterNeg = (AliAODVertex*)(trackNeg->GetProdVertex());
1771 Char_t cTypeVtxProdNeg = prodVtxDaughterNeg->GetType();
1776 FillQAHistogramV0(primVtx, v0, 0, bIsCandidateK0s, bIsCandidateLambda, bIsInPeakK0s, bIsInPeakLambda);
1816 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1822 if(bPrintCuts) printf(
"Rec: Applying cut: Reconstruction method: on-the-fly? %s\n", (bOnFly ?
"yes" :
"no"));
1823 if(bOnFlyStatus != bOnFly)
1825 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1830 if(bPrintCuts) printf(
"Rec: Applying cut: Correct charge of daughters\n");
1831 if(!trackNeg || !trackPos)
1833 if(trackNeg->Charge() == trackPos->Charge())
1835 if(trackNeg->Charge() != -1)
1837 if(trackPos->Charge() != 1)
1840 if(bPrintCuts) printf(
"Rec: Applying cut: TPC refit: %d\n", iRefit);
1841 if(!trackNeg->IsOn(iRefit))
1843 if(bPrintCuts) printf(
"Rec: Applying cut: Type of production vertex of daughter: Not %d\n", AliAODVertex::kKink);
1844 if(cTypeVtxProdNeg == AliAODVertex::kKink)
1849 if(bPrintCuts) printf(
"Rec: Applying cut: Number of TPC rows: > %f\n", dNCrossedRowsTPCMin);
1850 if(dNRowsNeg < dNCrossedRowsTPCMin)
1862 if(!trackPos->IsOn(iRefit))
1864 if(cTypeVtxProdPos == AliAODVertex::kKink)
1869 if(dNRowsPos < dNCrossedRowsTPCMin)
1881 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1888 if(bPrintCuts) printf(
"Rec: Applying cut: Daughter pT: > %f\n", dPtDaughterMin);
1889 if((dPtDaughterNeg < dPtDaughterMin) || (dPtDaughterPos < dPtDaughterMin))
1891 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1897 if(bPrintCuts) printf(
"Rec: Applying cut: Daughter DCA to prim vtx: > %f\n", dDCAToPrimVtxMin);
1898 if((dDCAToPrimVtxNeg < dDCAToPrimVtxMin) || (dDCAToPrimVtxPos < dDCAToPrimVtxMin))
1900 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1905 if(bPrintCuts) printf(
"Rec: Applying cut: DCA between daughters: < %f\n", dDCADaughtersMax);
1906 if(dDCADaughters > dDCADaughtersMax)
1908 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1913 if(bPrintCuts) printf(
"Rec: Applying cut: CPA: > %f\n", dCPAMin);
1916 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1921 if(bPrintCuts) printf(
"Rec: Applying cut: Decay radius: > %f, < %f\n", dRadiusDecayMin, dRadiusDecayMax);
1922 if((dRadiusDecay < dRadiusDecayMin) || (dRadiusDecay > dRadiusDecayMax))
1924 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1931 if(bPrintCuts) printf(
"Rec: Applying cut: Daughter |eta|: < %f\n", dEtaDaughterMax);
1932 if((TMath::Abs(dEtaDaughterNeg) > dEtaDaughterMax) || (TMath::Abs(dEtaDaughterPos) > dEtaDaughterMax))
1934 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1944 if(bPrintCuts) printf(
"Rec: Applying cut: V0 |y|: < %f\n", dRapMax);
1945 if(TMath::Abs(dRapK0s) > dRapMax)
1946 bIsCandidateK0s = kFALSE;
1947 if(TMath::Abs(dRapLambda) > dRapMax)
1949 bIsCandidateLambda = kFALSE;
1950 bIsCandidateALambda = kFALSE;
1955 if(bPrintCuts) printf(
"Rec: Applying cut: V0 |eta|: < %f\n", dEtaMax);
1956 if(TMath::Abs(dEtaV0) > dEtaMax)
1958 bIsCandidateK0s = kFALSE;
1959 bIsCandidateLambda = kFALSE;
1960 bIsCandidateALambda = kFALSE;
1962 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1970 if(bPrintCuts) printf(
"Rec: Applying cut: Proper lifetime: < %f\n", dNTauMax);
1971 if(dMROverPtK0s > dNTauMax * dCTauK0s)
1972 bIsCandidateK0s = kFALSE;
1973 if(dMROverPtLambda > dNTauMax * dCTauLambda)
1975 bIsCandidateLambda = kFALSE;
1976 bIsCandidateALambda = kFALSE;
1978 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1988 if(bPrintCuts) printf(
"Rec: Applying cut: Delta dE/dx (both daughters): < %f\n", dNSigmadEdxMax);
1989 if(dNSigmaPosPion > dNSigmadEdxMax || dNSigmaNegPion > dNSigmadEdxMax)
1990 bIsCandidateK0s = kFALSE;
1991 if(dNSigmaPosProton > dNSigmadEdxMax || dNSigmaNegPion > dNSigmadEdxMax)
1992 bIsCandidateLambda = kFALSE;
1993 if(dNSigmaNegProton > dNSigmadEdxMax || dNSigmaPosPion > dNSigmadEdxMax)
1994 bIsCandidateALambda = kFALSE;
1998 if(bPrintCuts) printf(
"Rec: Applying cut: Delta dE/dx (proton below %f GeV/c): < %f\n", dPtProtonPIDMax, dNSigmadEdxMax);
1999 if((dPtDaughterPos < dPtProtonPIDMax) && (dNSigmaPosProton > dNSigmadEdxMax))
2000 bIsCandidateLambda = kFALSE;
2001 if((dPtDaughterNeg < dPtProtonPIDMax) && (dNSigmaNegProton > dNSigmadEdxMax))
2002 bIsCandidateALambda = kFALSE;
2004 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2008 Double_t valueCorrel[3] = {dMassV0K0s, dMassV0Lambda, dPtV0};
2009 if(bIsCandidateK0s && bIsCandidateLambda)
2011 if(bIsCandidateK0s && !bIsCandidateLambda)
2013 if(!bIsCandidateK0s && bIsCandidateLambda)
2020 if(bPrintCuts) printf(
"Rec: Applying cut: Armenteros-Podolanski (K0S): pT > %f * |alpha|\n", 0.2);
2021 if(dPtArm < TMath::Abs(0.2 * dAlpha))
2022 bIsCandidateK0s = kFALSE;
2028 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2035 if(bIsCandidateLambda)
2057 if(!bIsCandidateK0s && !bIsCandidateLambda && !bIsCandidateALambda)
2076 if(bJetEventGood && iNJetSel && (bIsCandidateK0s || bIsCandidateLambda || bIsCandidateALambda))
2079 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for V0 %d %d in %d jet cones\n", bIsCandidateK0s, bIsCandidateLambda, iNJetSel);
2080 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2082 jet = (AliAODJet*)jetArraySel->At(iJet);
2083 vecJetMomentum = TVector3(jet->Px(), jet->Py(), jet->Pz());
2084 if(fDebug > 5) printf(
"TaskV0sInJets: Checking if V0 %d %d in jet cone %d\n", bIsCandidateK0s, bIsCandidateLambda, iJet);
2087 if(fDebug > 5) printf(
"TaskV0sInJets: V0 %d %d found in jet cone %d\n", bIsCandidateK0s, bIsCandidateLambda, iJet);
2088 bIsInConeJet = kTRUE;
2093 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for V0 %d %d in %d perp. cones\n", bIsCandidateK0s, bIsCandidateLambda, iNJetSel);
2094 for(
Int_t iJet = 0; iJet < iNJetPerp; iJet++)
2096 jetPerp = (AliAODJet*)jetArrayPerp->At(iJet);
2097 if(fDebug > 5) printf(
"TaskV0sInJets: Checking if V0 %d %d in perp. cone %d\n", bIsCandidateK0s, bIsCandidateLambda, iJet);
2100 if(fDebug > 5) printf(
"TaskV0sInJets: V0 %d %d found in perp. cone %d\n", bIsCandidateK0s, bIsCandidateLambda, iJet);
2101 bIsInConePerp = kTRUE;
2108 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for V0 %d %d in the rnd. cone\n", bIsCandidateK0s, bIsCandidateLambda);
2111 if(fDebug > 5) printf(
"TaskV0sInJets: V0 %d %d found in the rnd. cone\n", bIsCandidateK0s, bIsCandidateLambda);
2112 bIsInConeRnd = kTRUE;
2118 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for V0 %d %d in the med. cone\n", bIsCandidateK0s, bIsCandidateLambda);
2121 if(fDebug > 5) printf(
"TaskV0sInJets: V0 %d %d found in the med. cone\n", bIsCandidateK0s, bIsCandidateLambda);
2122 bIsInConeMed = kTRUE;
2126 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for V0 %d %d outside jet cones\n", bIsCandidateK0s, bIsCandidateLambda);
2129 if(fDebug > 5) printf(
"TaskV0sInJets: V0 %d %d found outside jet cones\n", bIsCandidateK0s, bIsCandidateLambda);
2130 bIsOutsideCones = kTRUE;
2135 FillQAHistogramV0(primVtx, v0, 1, bIsCandidateK0s, bIsCandidateLambda, bIsInPeakK0s, bIsInPeakLambda);
2178 dAngle = vecV0Momentum.Angle(vecJetMomentum);
2186 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex, iCentIndex);
2187 Double_t valueKIncl[3] = {dMassV0K0s, dPtV0, dEtaV0};
2198 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex + 1, iCentIndex);
2203 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex + 2, iCentIndex);
2204 Double_t valueKInJC[4] = {dMassV0K0s, dPtV0, dEtaV0, jet->Pt()};
2210 Double_t valueKOutJC[3] = {dMassV0K0s, dPtV0, dEtaV0};
2215 Double_t valueKInPC[4] = {dMassV0K0s, dPtV0, dEtaV0, jetPerp->Pt()};
2220 Double_t valueKInRnd[3] = {dMassV0K0s, dPtV0, dEtaV0};
2225 Double_t valueKInMed[3] = {dMassV0K0s, dPtV0, dEtaV0};
2230 Double_t valueKNoJet[3] = {dMassV0K0s, dPtV0, dEtaV0};
2235 if(bIsCandidateLambda)
2239 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex, iCentIndex);
2240 Double_t valueLIncl[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2246 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex + 1, iCentIndex);
2251 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex + 2, iCentIndex);
2252 Double_t valueLInJC[4] = {dMassV0Lambda, dPtV0, dEtaV0, jet->Pt()};
2258 Double_t valueLOutJet[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2263 Double_t valueLInPC[4] = {dMassV0Lambda, dPtV0, dEtaV0, jetPerp->Pt()};
2268 Double_t valueLInRnd[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2273 Double_t valueLInMed[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2278 Double_t valueLNoJet[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2283 if(bIsCandidateALambda)
2287 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex, iCentIndex);
2288 Double_t valueALIncl[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2294 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex + 1, iCentIndex);
2299 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex + 2, iCentIndex);
2300 Double_t valueLInJC[4] = {dMassV0ALambda, dPtV0, dEtaV0, jet->Pt()};
2306 Double_t valueALOutJet[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2311 Double_t valueLInPC[4] = {dMassV0ALambda, dPtV0, dEtaV0, jetPerp->Pt()};
2316 Double_t valueALInRnd[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2321 Double_t valueALInMed[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2326 Double_t valueALNoJet[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2339 if(!(bIsCandidateK0s) && !(bIsCandidateLambda) && !(bIsCandidateALambda))
2343 Int_t iLabelPos = TMath::Abs(trackPos->GetLabel());
2344 Int_t iLabelNeg = TMath::Abs(trackNeg->GetLabel());
2347 if((iLabelNeg < 0) || (iLabelNeg >= iNTracksMC) || (iLabelPos < 0) || (iLabelPos >= iNTracksMC))
2351 AliAODMCParticle* particleMCDaughterNeg = (AliAODMCParticle*)arrayMC->At(iLabelNeg);
2352 AliAODMCParticle* particleMCDaughterPos = (AliAODMCParticle*)arrayMC->At(iLabelPos);
2353 if(!particleMCDaughterNeg || !particleMCDaughterPos)
2357 if((particleMCDaughterNeg->IsPhysicalPrimary()) || (particleMCDaughterPos->IsPhysicalPrimary()))
2361 Int_t iPdgCodeDaughterPos = particleMCDaughterPos->GetPdgCode();
2362 Int_t iPdgCodeDaughterNeg = particleMCDaughterNeg->GetPdgCode();
2365 Int_t iIndexMotherPos = particleMCDaughterPos->GetMother();
2366 Int_t iIndexMotherNeg = particleMCDaughterNeg->GetMother();
2368 if((iIndexMotherNeg < 0) || (iIndexMotherNeg >= iNTracksMC) || (iIndexMotherPos < 0) || (iIndexMotherPos >= iNTracksMC))
2372 if(iIndexMotherNeg != iIndexMotherPos)
2376 AliAODMCParticle* particleMCMother = (AliAODMCParticle*)arrayMC->At(iIndexMotherPos);
2377 if(!particleMCMother)
2381 Int_t iPdgCodeMother = particleMCMother->GetPdgCode();
2384 if((iPdgCodeMother != iPdgCodeK0s) && (TMath::Abs(iPdgCodeMother) != iPdgCodeLambda))
2389 Bool_t bV0MCIsK0s = ((iPdgCodeMother == iPdgCodeK0s) && (iPdgCodeDaughterPos == +iPdgCodePion) && (iPdgCodeDaughterNeg == -iPdgCodePion));
2391 Bool_t bV0MCIsLambda = ((iPdgCodeMother == +iPdgCodeLambda) && (iPdgCodeDaughterPos == +iPdgCodeProton) && (iPdgCodeDaughterNeg == -iPdgCodePion));
2393 Bool_t bV0MCIsALambda = ((iPdgCodeMother == -iPdgCodeLambda) && (iPdgCodeDaughterPos == +iPdgCodePion) && (iPdgCodeDaughterNeg == -iPdgCodeProton));
2395 Double_t dPtV0Gen = particleMCMother->Pt();
2397 Double_t dEtaV0Gen = particleMCMother->Eta();
2403 Int_t iIndexMotherOfMother = particleMCMother->GetMother();
2404 AliAODMCParticle* particleMCMotherOfMother = 0;
2405 if(iIndexMotherOfMother >= 0)
2406 particleMCMotherOfMother = (AliAODMCParticle*)arrayMC->At(iIndexMotherOfMother);
2408 Int_t iPdgCodeMotherOfMother = 0;
2409 if(particleMCMotherOfMother)
2410 iPdgCodeMotherOfMother = particleMCMotherOfMother->GetPdgCode();
2418 Bool_t bV0MCComesFromXi = ((particleMCMotherOfMother) && ((iPdgCodeMotherOfMother == 3322) || (iPdgCodeMotherOfMother == 3312)));
2419 Bool_t bV0MCComesFromAXi = ((particleMCMotherOfMother) && ((iPdgCodeMotherOfMother == -3322) || (iPdgCodeMotherOfMother == -3312)));
2422 Double_t dx = dPrimVtxMCX - particleMCMother->Xv();
2423 Double_t dy = dPrimVtxMCY - particleMCMother->Yv();
2424 Double_t dz = dPrimVtxMCZ - particleMCMother->Zv();
2425 Double_t dDistPrimary = TMath::Sqrt(dx * dx + dy * dy + dz * dz);
2426 Bool_t bV0MCIsPrimaryDist = (dDistPrimary < dDistPrimaryMax);
2448 if(bV0MCIsK0s && bV0MCIsPrimaryDist)
2453 Double_t valueEtaK[3] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen};
2456 Double_t valueEtaDKNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2458 Double_t valueEtaDKPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2465 Double_t valueKInJCMC[4] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2467 Double_t valueEtaKIn[5] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2470 Double_t valueEtaDKJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2472 Double_t valueEtaDKJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2476 if(bV0MCIsK0s && !bV0MCIsPrimaryDist)
2485 if(bIsCandidateLambda)
2488 if(bV0MCIsLambda && bV0MCIsPrimaryDist)
2493 Double_t valueEtaL[3] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen};
2496 Double_t valueEtaDLNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2498 Double_t valueEtaDLPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2505 Double_t valueLInJCMC[4] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2507 Double_t valueEtaLIn[5] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2510 Double_t valueEtaDLJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2512 Double_t valueEtaDLJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2517 if(bV0MCIsLambda && bV0MCComesFromXi)
2521 Double_t valueFDLIncl[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), 0.};
2529 Double_t valueFDLInJets[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), jet->Pt()};
2533 if(bV0MCIsLambda && !bV0MCIsPrimaryDist && !bV0MCComesFromXi)
2542 if(bIsCandidateALambda)
2545 if(bV0MCIsALambda && bV0MCIsPrimaryDist)
2550 Double_t valueEtaAL[3] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen};
2553 Double_t valueEtaDALNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2555 Double_t valueEtaDALPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2562 Double_t valueALInJCMC[4] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2564 Double_t valueEtaALIn[5] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2567 Double_t valueEtaDALJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2569 Double_t valueEtaDALJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2574 if(bV0MCIsALambda && bV0MCComesFromAXi)
2578 Double_t valueFDALIncl[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), 0.};
2586 Double_t valueFDALInJets[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), jet->Pt()};
2590 if(bV0MCIsALambda && !bV0MCIsPrimaryDist && !bV0MCComesFromAXi)
2607 if(fDebug > 2) printf(
"TaskV0sInJets: End of V0 loop\n");
2612 for(
Int_t iPartMC = 0; iPartMC < iNTracksMC; iPartMC++)
2615 AliAODMCParticle* particleMC = (AliAODMCParticle*)arrayMC->At(iPartMC);
2620 Int_t iPdgCodeParticleMC = particleMC->GetPdgCode();
2623 if((iPdgCodeParticleMC == 3312) && (TMath::Abs(particleMC->Y()) < 0.5))
2629 if((iPdgCodeParticleMC == -3312) && (TMath::Abs(particleMC->Y()) < 0.5))
2636 if((iPdgCodeParticleMC != iPdgCodeK0s) && (TMath::Abs(iPdgCodeParticleMC) != iPdgCodeLambda))
2641 Bool_t bV0MCIsK0s = (iPdgCodeParticleMC == iPdgCodeK0s);
2643 Bool_t bV0MCIsLambda = (iPdgCodeParticleMC == +iPdgCodeLambda);
2645 Bool_t bV0MCIsALambda = (iPdgCodeParticleMC == -iPdgCodeLambda);
2647 Double_t dPtV0Gen = particleMC->Pt();
2648 Double_t dRapV0Gen = particleMC->Y();
2649 Double_t dEtaV0Gen = particleMC->Eta();
2654 if(bPrintCuts) printf(
"Gen: Applying cut: V0 |y|: < %f\n", dRapMax);
2655 if((TMath::Abs(dRapV0Gen) > dRapMax))
2661 if(bPrintCuts) printf(
"Gen: Applying cut: V0 |eta|: < %f\n", dEtaMax);
2662 if((TMath::Abs(dEtaV0Gen) > dEtaMax))
2690 Double_t dx = dPrimVtxMCX - particleMC->Xv();
2691 Double_t dy = dPrimVtxMCY - particleMC->Yv();
2692 Double_t dz = dPrimVtxMCZ - particleMC->Zv();
2693 Double_t dDistPrimary = TMath::Sqrt(dx * dx + dy * dy + dz * dz);
2694 Bool_t bV0MCIsPrimaryDist = (dDistPrimary < dDistPrimaryMax);
2697 AliAODJet* jetMC = 0;
2698 Bool_t bIsMCV0InJet = kFALSE;
2701 if(fDebug > 5) printf(
"TaskV0sInJets: Searching for gen V0 in %d MC jets\n", iNJetSel);
2702 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2704 jetMC = (AliAODJet*)jetArraySel->At(iJet);
2705 if(fDebug > 5) printf(
"TaskV0sInJets: Checking if gen V0 in MC jet %d\n", iJet);
2708 if(fDebug > 5) printf(
"TaskV0sInJets: gen V0 found in MC jet %d\n", iJet);
2709 bIsMCV0InJet = kTRUE;
2718 if(bV0MCIsK0s && bV0MCIsPrimaryDist)
2727 Double_t valueEtaKInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
2733 if(bV0MCIsLambda && bV0MCIsPrimaryDist)
2742 Double_t valueEtaLInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
2748 if(bV0MCIsALambda && bV0MCIsPrimaryDist)
2757 Double_t valueEtaALInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
2767 jetArraySel->Delete();
2769 jetArrayPerp->Delete();
2770 delete jetArrayPerp;
2786 if(!IsCandK0s && !IsCandLambda)
2794 AliAODTrack* trackNeg = (AliAODTrack*)vZero->GetDaughter(1);
2795 AliAODTrack* trackPos = (AliAODTrack*)vZero->GetDaughter(0);
2798 for(
Int_t i = 0; i < 2; i++)
2800 AliAODTrack* track = (AliAODTrack*)vZero->GetDaughter(i);
2802 fh1QAV0TPCRefit[iIndexHisto]->Fill(track->IsOn(AliAODTrack::kTPCrefit));
2803 Double_t nCrossedRowsTPC = track->GetTPCClusterInfo(2, 1);
2805 Int_t findable = track->GetTPCNclsF();
2813 if((nCrossedRowsTPC > (160. / (250. - 85.) * (255.*TMath::Abs(tan(track->Theta())) - 85.)) + 20.) && (track->Eta() < 0) && (track->Pt() > 0.15))
2816 fh2QAV0EtaRows[iIndexHisto]->Fill(track->Eta(), nCrossedRowsTPC);
2817 fh2QAV0PtRows[iIndexHisto]->Fill(track->Pt(), nCrossedRowsTPC);
2818 fh2QAV0PhiRows[iIndexHisto]->Fill(track->Phi(), nCrossedRowsTPC);
2824 fh1QAV0Pt[iIndexHisto]->Fill(track->Pt());
2825 fTotalCharge += track->Charge();
2830 fh1QAV0DCAVtx[iIndexHisto]->Fill(TMath::Abs(vZero->DcaNegToPrimVertex()));
2831 fh1QAV0DCAVtx[iIndexHisto]->Fill(TMath::Abs(vZero->DcaPosToPrimVertex()));
2835 fh1QAV0DCAV0[iIndexHisto]->Fill(vZero->DcaV0Daughters());
2839 fh1QAV0Cos[iIndexHisto]->Fill(vZero->CosPointingAngle(vtx));
2844 vZero->GetSecondaryVtx(xyz);
2845 Double_t r2 = xyz[0] * xyz[0] + xyz[1] * xyz[1];
2846 fh1QAV0R[iIndexHisto]->Fill(TMath::Sqrt(r2));
2848 Double_t dAlpha = vZero->AlphaV0();
2849 Double_t dPtArm = vZero->PtArmV0();
2881 fh2ArmPod[iIndexHisto]->Fill(dAlpha, dPtArm);
2907 if(!part1 || !part2)
2910 TVector3 vecMom2(part2->Px(), part2->Py(), part2->Pz());
2911 TVector3 vecMom1(part1->Px(), part1->Py(), part1->Pz());
2912 Double_t dR = vecMom2.DeltaR(vecMom1);
2923 if(fDebug > 0) printf(
"AliAnalysisTaskV0sInJets::OverlapWithJets: Error: No part\n");
2928 if(fDebug > 0) printf(
"AliAnalysisTaskV0sInJets::OverlapWithJets: Error: No array\n");
2931 Int_t iNJets = array->GetEntriesFast();
2934 if(fDebug > 2) printf(
"AliAnalysisTaskV0sInJets::OverlapWithJets: Warning: No jets\n");
2937 AliVParticle* jet = 0;
2938 for(
Int_t iJet = 0; iJet < iNJets; iJet++)
2940 jet = (AliVParticle*)array->At(iJet);
2943 if(fDebug > 0) printf(
"AliAnalysisTaskV0sInJets::OverlapWithJets: Error: Failed to load jet %d/%d\n", iJet, iNJets);
2956 TLorentzVector vecCone;
2957 AliAODJet* part = 0;
2959 Int_t iNTrialsMax = 10;
2961 for(
Int_t iTry = 0; iTry < iNTrialsMax; iTry++)
2964 dEta = dEtaConeMax * (2 *
fRandom->Rndm() - 1.);
2965 dPhi = TMath::TwoPi() *
fRandom->Rndm();
2966 vecCone.SetPtEtaPhiM(1., dEta, dPhi, 0.);
2967 part =
new AliAODJet(vecCone);
2987 if(fDebug > 0) printf(
"AliAnalysisTaskV0sInJets::GetMedianCluster: Error: No array\n");
2990 Int_t iNClTot = array->GetEntriesFast();
2994 std::vector<std::vector<Double_t> > vecListClusters;
2996 for(
Int_t ij = 0; ij < iNClTot; ij++)
2998 AliAODJet* clusterBg = (AliAODJet*)(array->At(ij));
3009 Double_t dAreaBg = clusterBg->EffectiveAreaCharged();
3012 dDensityBg = dPtBg / dAreaBg;
3013 std::vector<Double_t> vecCluster;
3014 vecCluster.push_back(ij);
3015 vecCluster.push_back(dDensityBg);
3016 vecListClusters.push_back(vecCluster);
3018 iNCl = vecListClusters.size();
3030 std::sort(vecListClusters.begin(), vecListClusters.end(),
CompareClusters);
3037 AliAODJet* clusterMed = 0;
3039 Int_t iIndexMed = 0;
3040 if(TMath::Odd(iNCl))
3042 iIndex = (
Int_t)(0.5 * (iNCl + 1));
3049 iIndex = ((
fRandom->Rndm() > 0.5) ? iIndex1 : iIndex2);
3052 iIndexMed =
Int_t((vecListClusters[iIndex])[0]);
3055 clusterMed = (AliAODJet*)(array->At(iIndexMed));
3057 if(TMath::Abs(clusterMed->Eta()) > dEtaConeMax)
3069 if(TMath::Abs(dR) < dEpsilon)
3071 if(fDebug > 0) printf(
"AliAnalysisTaskV0sInJets::AreaCircSegment: Error: Too small radius: %f < %f\n", dR, dEpsilon);
3077 return TMath::Pi() * dR * dR;
3078 return dR * dR * TMath::ACos(dD / dR) - dD * TMath::Sqrt(dR * dR - dD * dD);
3084 AliAODVertex* vertex = fAOD->GetPrimaryVertex();
3087 Int_t iNContribMin = 3;
3090 if(vertex->GetNContributors() < iNContribMin)
3092 TString vtxTitle(vertex->GetTitle());
3093 if(vtxTitle.Contains(
"TPCVertex"))
3096 if(TMath::Abs(zVertex) > dVtxZCut)
3100 AliAODVertex* vertexSPD = fAOD->GetPrimaryVertexSPD();
3106 Double_t zVertexSPD = vertexSPD->GetZ();
3107 if(TMath::Abs(zVertex - zVertexSPD) > dDeltaZMax)
3116 Double_t radiusSq = yVertex * yVertex + xVertex * xVertex;
3117 if(radiusSq > dVtxR2Cut)
3121 centrality = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
3126 if((dCentCutUp < 0) || (dCentCutLo < 0) || (dCentCutUp > 100) || (dCentCutLo > 100) || (dCentCutLo > dCentCutUp))
3128 if((centrality < dCentCutLo) || (centrality > dCentCutUp))
3133 if(centrality != -1)
3165 return Form(
"%s-%s %%", lowerEdge.Data(), upperEdge.Data());
3174 return 0.0044 + 0.0004 * (pt - 1.);
3177 return 0.0023 + 0.00034 * (pt - 1.);
3187 return (cluster1[1] > cluster2[1]);
static const Int_t fgkiNQAIndeces
TH1D * fh1V0ALambdaPtMCRecFalse[fgkiNBinsCent]
Bool_t IsParticleInCone(const AliVParticle *part1, const AliVParticle *part2, Double_t dRMax) const
THnSparseD * fhnV0ALambdaInJetsMCFD[fgkiNBinsCent]
TH1D * fh1V0CandPerEventCentALambda[fgkiNBinsCent]
TList * fOutputListMC
Output list for checking cuts.
THnSparse * fh3V0ALambdaEtaPtMassMCRec[fgkiNBinsCent]
TH1D * fh1V0AXiPtMCGen[fgkiNBinsCent]
TH1D * fh1QAV0R[fgkiNQAIndeces]
cosine of pointing angle (CPA)
Int_t GetCentralityBinIndex(Double_t centrality)
THnSparse * fh3V0K0sInJetPtMassMCRec[fgkiNBinsCent]
pt spectrum of generated K0s in jet
THnSparse * fhnV0OutJetK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt vs jet pt, in centrality bins.
THnSparse * fhnV0ALambdaInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH1D * fh1NMedConeCent
random cone eta-pT
TH1D * fh1DCAOutALambda[fgkiNBinsCent]
THnSparse * fhnV0InPerpK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt vs jet pt, in centrality bins.
TH2D * fh2V0LambdaPtMassMCRec[fgkiNBinsCent]
TH2D * fh2QAV0EtaPtALambdaPeak[fgkiNQAIndeces]
THnSparse * fhnV0InJetK0s[fgkiNBinsCent]
V0 inv mass vs pt before and after cuts, in centrality bins.
static const Int_t fgkiNBinsPtV0Init
THnSparse * fhnV0K0sInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
mass-eta-pt spectrum of successfully reconstructed K0s in jet
static const Int_t fgkiNBinsMassK0s
THnSparse * fhnV0InRndALambda[fgkiNBinsCent]
THnSparse * fh3CCMassCorrelKNotL
mass correlation of candidates
TH1D * fh1V0K0sPtMCGen[fgkiNBinsCent]
DCA between daughters of V0 outside jets, in centrality bins.
TH2D * fh2QAV0PtRows[fgkiNQAIndeces]
pseudorapidity vs TPC rows
AliAODEvent * fAODOut
Input AOD event.
TH1D * fh1V0CounterCentALambda[fgkiNBinsCent]
TH1D * fh1DCAInLambda[fgkiNBinsCent]
TH1D * fh1V0LambdaPtMCRecFalse[fgkiNBinsCent]
THnSparse * fhnV0InMedLambda[fgkiNBinsCent]
TH1D * fh1PhiJet[fgkiNBinsCent]
jet eta-pT
TList * fOutputListStd
Output AOD event.
static const Double_t fgkdBinsPtJet[2]
virtual void UserExec(Option_t *option)
TH2D * fh2ArmPodALambda[fgkiNQAIndeces]
TH1D * fh1V0CandPerEventCentLambda[fgkiNBinsCent]
static const Int_t fgkiNBinsPtV0
THnSparse * fh3V0LambdaEtaPtMassMCRec[fgkiNBinsCent]
TList * fOutputListQA
Output list for standard analysis results.
static bool CompareClusters(const std::vector< Double_t > cluster1, const std::vector< Double_t > cluster2)
TH1D * fh1NJetPerEvent[fgkiNBinsCent]
jet phi
THnSparse * fh3V0K0sInJetEtaPtMCGen[fgkiNBinsCent]
mass-pt spectrum of successfully reconstructed K0s in jet
static const Double_t fgkdMassK0sMax
Bool_t OverlapWithJets(const TClonesArray *array, const AliVParticle *cone, Double_t dDistance) const
TH1D * fh1QAV0Pt[fgkiNQAIndeces]
TH1D * fh1V0ALambdaPtMCRec[fgkiNBinsCent]
THnSparseD * fhnV0ALambdaBulkMCFD[fgkiNBinsCent]
THnSparse * fh4V0ALambdaInJetEtaPtMassMCRec[fgkiNBinsCent]
static const Int_t fgkiNBinsMassLambda
static const Double_t fgkdMassLambdaMax
TH1D * fh1V0InvMassLambdaCent[fgkiNBinsCent]
TH1D * fh1QAV0TPCFindable[fgkiNQAIndeces]
crossed TPC pad rows
THnSparseD * fhnV0LambdaInclMCFD[fgkiNBinsCent]
TH2D * fh2CCLambda
K0s candidates in Lambda peak.
TH1D * fh1V0InvMassK0sAll[fgkiNCategV0]
number of K0s candidates after various cuts
TH2D * fh2V0PtJetAngleLambda[fgkiNBinsCent]
AliAODJet * GetRandomCone(const TClonesArray *array, Double_t dEtaConeMax, Double_t dDistance) const
TH1D * fh1EventCent
number of events for different selection steps and different centralities
void FillCandidates(Double_t mK, Double_t mL, Double_t mAL, Bool_t isK, Bool_t isL, Bool_t isAL, Int_t iCut, Int_t iCent)
TH2D * fh2V0ALambdaInJetPtMCRec[fgkiNBinsCent]
TH1D * fh1QAV0DCAVtx[fgkiNQAIndeces]
charge
TH2D * fh2ArmPodLambda[fgkiNQAIndeces]
Double_t fdCutVertexZ
random-number generator
THnSparse * fhnV0InRndK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt vs jet pt, in centrality bins.
THnSparseD * fhnV0LambdaInJetsMCFD[fgkiNBinsCent]
THnSparse * fh3V0LambdaInJetEtaPtMCGen[fgkiNBinsCent]
TH1D * fh1QAV0Status[fgkiNQAIndeces]
TH1D * fh1DCAOutLambda[fgkiNBinsCent]
THnSparse * fh3CCMassCorrelLNotK
mass correlation of candidates
TH1D * fh1V0ALambdaPtMCGen[fgkiNBinsCent]
THnSparse * fhnV0InJetLambda[fgkiNBinsCent]
THnSparse * fhnV0NoJetALambda[fgkiNBinsCent]
TH1D * fh1VtxZ[fgkiNBinsCent]
number of tracks vs centrality
TH1D * fh1V0InvMassLambdaAll[fgkiNCategV0]
number of Lambda candidates after various cuts
static const Int_t fgkiNBinsCent
TH2D * fh2V0ALambdaInJetPtMCGen[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
TH2D * fh2QAV0PtPtK0sPeak[fgkiNQAIndeces]
V0 rapidity.
Double_t AreaCircSegment(Double_t dRadius, Double_t dDistance) const
TH1D * fh1PtJet[fgkiNBinsCent]
number of V0 cand per event
TH1D * fh1V0CandPerEventCentK0s[fgkiNBinsCent]
Armenteros-Podolanski.
TH2D * fh2QAV0NClRows[fgkiNQAIndeces]
azimuth vs TPC rows
TH2D * fh2V0K0sMCPtGenPtRec[fgkiNBinsCent]
K0s mass resolution vs pt.
TH2D * fh2V0K0sPtMassMCRec[fgkiNBinsCent]
pt spectrum of all generated K0s in event
THnSparse * fhnV0OutJetALambda[fgkiNBinsCent]
THnSparse * fh4V0LambdaInJetEtaPtMassMCRec[fgkiNBinsCent]
static const Int_t fgkiNBinsPtJet
TH1D * fh1DCAInK0s[fgkiNBinsCent]
pt jet vs angle V0-jet, in centrality bins
static const Int_t fgkiNCategV0
area of excluded cones for outside-cones V0s
TH2D * fh2V0K0sInJetPtMCGen[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
THnSparse * fhnV0InclusiveK0s[fgkiNBinsCent]
V0 invariant mass, in centrality bins.
THnSparse * fhnV0InclusiveLambda[fgkiNBinsCent]
TH2D * fh2EtaPhiRndCone[fgkiNBinsCent]
number of generated random cones in centrality bins
TH2D * fh2V0ALambdaPtMassMCRec[fgkiNBinsCent]
TH1D * fh1V0ALambdaPt[fgkiNBinsCent]
Double_t fdCutDCAToPrimVtxMin
virtual void UserCreateOutputObjects()
TH1D * fh1V0XiPtMCGen[fgkiNBinsCent]
THnSparse * fhnV0InMedALambda[fgkiNBinsCent]
TH1D * fh1QAV0RapALambda[fgkiNQAIndeces]
THnSparse * fh3CCMassCorrelBoth
Lambda candidates in K0s peak.
TH1D * fh1QACTau3D[fgkiNQAIndeces]
lifetime calculated in xy
TH1D * fh1NRndConeCent
number of jets per event
Double_t fdCutDCADaughtersMax
TH2D * fh2QAV0PtPtALambdaPeak[fgkiNQAIndeces]
THnSparse * fhnV0InPerpALambda[fgkiNBinsCent]
TH2D * fh2ArmPod[fgkiNQAIndeces]
lifetime calculated in xyz
TH2D * fh2V0K0sMCResolMPt[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
THnSparse * fhnV0LambdaInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH2D * fh2QAV0EtaEtaK0s[fgkiNQAIndeces]
daughters pseudorapidity vs V0 pt, in mass peak
THnSparse * fhnV0InclusiveALambda[fgkiNBinsCent]
THnSparse * fhnV0InPerpLambda[fgkiNBinsCent]
THnSparse * fhnV0OutJetLambda[fgkiNBinsCent]
TH1D * fh1QACTau2D[fgkiNQAIndeces]
radial distance between prim vtx and decay vertex
TH2D * fh2QAV0PtPtLambdaPeak[fgkiNQAIndeces]
TH2D * fh2EtaPtJet[fgkiNBinsCent]
jet eta
TH1D * fh1AreaExcluded
median-cluster cone eta-phi
TH2D * fh2QAV0PhiRows[fgkiNQAIndeces]
pt vs TPC rows
Int_t fiAODAnalysis
Output list for MC related results.
THnSparse * fhnV0NoJetK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt, in centrality bins.
THnSparse * fh4V0K0sInJetEtaPtMassMCRec[fgkiNBinsCent]
eta-pt spectrum of generated K0s in jet
virtual ~AliAnalysisTaskV0sInJets()
Double_t fdCutNSigmadEdxMax
TH2D * fh2V0LambdaEtaPtMCGen[fgkiNBinsCent]
THnSparse * fhnV0LambdaInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
static const Int_t fgkiCentBinRanges[fgkiNBinsCent]
TH2D * fh2QAV0EtaEtaALambda[fgkiNQAIndeces]
THnSparse * fhnV0NoJetLambda[fgkiNBinsCent]
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)
TH1D * fh1QAV0DCAV0[fgkiNQAIndeces]
DCA of daughters to prim vtx.
THnSparseD * fhnV0LambdaBulkMCFD[fgkiNBinsCent]
TH2D * fh2V0LambdaInJetPtMCGen[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
TH1D * fh1QAV0RapLambda[fgkiNQAIndeces]
TH2D * fh2QAV0PhiPhiLambda[fgkiNQAIndeces]
TH1D * fh1QAV0Cos[fgkiNQAIndeces]
DCA between daughters.
TH2D * fh2V0PtJetAngleK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt, in centrality bins.
TH2D * fh2EtaPhiMedCone[fgkiNBinsCent]
number of found median-cluster cones in centrality bins
TH2D * fh2QAV0EtaEtaLambda[fgkiNQAIndeces]
THnSparse * fhnV0InJetALambda[fgkiNBinsCent]
TH2D * fh2V0PtJetAngleALambda[fgkiNBinsCent]
TH1D * fh1V0CandPerEvent
xy coordinates of the primary vertex
TH1D * fh1DCAOutK0s[fgkiNBinsCent]
DCA between daughters of V0 inside jets, in centrality bins.
TH2D * fh2QAV0PhiPhiALambda[fgkiNQAIndeces]
static const Double_t fgkdBinsPtV0[2]
TH1D * fh1V0LambdaPtMCGen[fgkiNBinsCent]
TH1D * fh1EventCent2Jets
number of events for different centralities
AliAnalysisTaskV0sInJets()
Double_t MassPeakSigmaOld(Double_t pt, Int_t particle)
THnSparse * fhnV0InMedK0s[fgkiNBinsCent]
V0 invariant mass vs V0 pt vs jet pt, in centrality bins.
TH1D * fh1EtaJet[fgkiNBinsCent]
pt spectra of jets for normalisation of in-jet V0 spectra
TH1D * fh1QAV0TPCRowsFind[fgkiNQAIndeces]
findable clusters
TH1D * fh1EventCent2NoJets
number of events for different centralities
TH1D * fh1V0InvMassALambdaAll[fgkiNCategV0]
number of ALambda candidates after various cuts
TH1D * fh1QAV0RapK0s[fgkiNQAIndeces]
daughters azimuth vs azimuth
TH1D * fh1V0InvMassK0sCent[fgkiNBinsCent]
number of K0s candidates per event, in centrality bins
TString GetCentBinLabel(Int_t index)
THnSparse * fh3V0LambdaInJetPtMassMCRec[fgkiNBinsCent]
TH2D * fh2CCK0s
Armenteros-Podolanski.
static const Double_t fgkdMassK0sMin
TH1D * fh1V0K0sPtMCRecFalse[fgkiNBinsCent]
pt-mass spectrum of successfully reconstructed K0s in event
Int_t GetCentralityBinEdge(Int_t index)
TList * fOutputListCuts
Output list for quality assurance.
TH2D * fh2V0ALambdaMCResolMPt[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
TH2D * fh2ArmPodK0s[fgkiNQAIndeces]
daughters pt vs pt, in mass peak
void FillQAHistogramV0(AliAODVertex *vtx, const AliAODv0 *vZero, Int_t iIndexHisto, Bool_t IsCandK0s, Bool_t IsCandLambda, Bool_t IsInPeakK0s, Bool_t IsInPeakLambda)
TH2D * fh2QAV0EtaPtK0sPeak[fgkiNQAIndeces]
V0 invariant mass, selection steps.
THnSparse * fhnV0K0sInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
eta-pt-mass spectrum of successfully reconstructed K0s in event
TH1D * fh1V0CounterCentLambda[fgkiNBinsCent]
K0s generated pt vs reconstructed pt.
THnSparseD * fhnV0ALambdaInclMCFD[fgkiNBinsCent]
TH2D * fh2VtxXY[fgkiNBinsCent]
z coordinate of the primary vertex
TString fsJetBgBranchName
THnSparse * fh3V0ALambdaInJetEtaPtMCGen[fgkiNBinsCent]
TH2D * fh2V0ALambdaEtaPtMCGen[fgkiNBinsCent]
THnSparse * fhnV0ALambdaInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH1D * fh1QAV0Eta[fgkiNQAIndeces]
ratio rows/clusters
TH1D * fh1V0CounterCentK0s[fgkiNBinsCent]
pseudorapidity vs clusters
AliAODJet * GetMedianCluster(const TClonesArray *array, Double_t dEtaConeMax) const
TH2D * fh2V0LambdaMCPtGenPtRec[fgkiNBinsCent]
TH1D * fh1V0InvMassALambdaCent[fgkiNBinsCent]
THnSparse * fhnV0InRndLambda[fgkiNBinsCent]
TH1D * fh1EventCounterCut
TH2D * fh2V0ALambdaMCPtGenPtRec[fgkiNBinsCent]
TH1D * fh1QAV0Charge[fgkiNQAIndeces]
pt
TH2D * fh2QAV0EtaNCl[fgkiNQAIndeces]
clusters vs TPC rows
TH1D * fh1QAV0TPCRefit[fgkiNQAIndeces]
online vs offline reconstructed V0 candidates
TH1D * fh1EventCounterCutCent[fgkiNBinsCent]
number of events for different selection steps
TH1D * fh1QAV0TPCRows[fgkiNQAIndeces]
TPC refit on vs off.
Bool_t IsSelectedForJets(AliAODEvent *fAOD, Double_t dVtxZCut, Double_t dVtxR2Cut, Double_t dCentCutLo, Double_t dCentCutUp, Bool_t bCutDeltaZ=kFALSE, Double_t dDeltaZMax=100.)
static const Double_t fgkdMassLambdaMin
THnSparse * fh3V0K0sEtaPtMassMCRec[fgkiNBinsCent]
eta-pt spectrum of all generated K0s in event
TH2D * fh2QAV0EtaRows[fgkiNQAIndeces]
pseudorapidity
TH1D * fh1EventCent2
number of events for different centralities
TH2D * fh2QAV0PhiPhiK0s[fgkiNQAIndeces]
daughters pseudorapidity vs pseudorapidity
static const Int_t fgkiNBinsPtJetInit
TH1D * fh1DCAInALambda[fgkiNBinsCent]
TH2D * fh2V0LambdaMCResolMPt[fgkiNBinsCent]
eta_daughter-pt_daughter-pt_V0 reconstructed
TH2D * fh2QAV0EtaPtLambdaPeak[fgkiNQAIndeces]
TH2D * fh2V0K0sEtaPtMCGen[fgkiNBinsCent]
pt spectrum of false reconstructed K0s in event
TH2D * fh2EventCentTracks
number of events for different centralities
THnSparse * fh3V0ALambdaInJetPtMassMCRec[fgkiNBinsCent]