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)
344 fdCutDCAToPrimVtxMin(0.1),
345 fdCutDCADaughtersMax(1.),
346 fdCutNSigmadEdxMax(3),
351 fsJetBgBranchName(0),
372 fh1EventCounterCut(0),
375 fh1EventCent2Jets(0),
376 fh1EventCent2NoJets(0),
377 fh2EventCentTracks(0),
378 fh1V0CandPerEvent(0),
385 fh3CCMassCorrelBoth(0),
386 fh3CCMassCorrelKNotL(0),
387 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;
1762 Double_t dNSigmaPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackPos, AliPID::kPion));
1764 Double_t dNSigmaNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackNeg, AliPID::kPion));
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]
static const Int_t fgkiCentBinRanges[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]
ClassImp(AliAnalysisTaskV0sInJets) const Int_t AliAnalysisTaskV0sInJets
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]
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]