25 #include <THnSparse.h>
26 #include <TClonesArray.h>
28 #include <TDatabasePDG.h>
31 #include "AliAnalysisManager.h"
32 #include "AliInputEventHandler.h"
33 #include "AliAODEvent.h"
34 #include "AliAODMCHeader.h"
36 #include "AliEventPoolManager.h"
37 #include "AliPIDResponse.h"
38 #include "AliAODTrack.h"
39 #include "AliAODMCParticle.h"
59 Double_t AliAnalysisTaskV0sInJetsEmcal::fgkiZVtxMixBinRanges[] = { -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10};
114 fbFindableClusters(0),
115 fdCutNCrossedRowsTPCMin(0),
116 fdCutCrossedRowsOverFindMin(0),
117 fdCutCrossedRowsOverFindMax(0),
118 fdCutPtDaughterMin(0),
119 fdCutDCAToPrimVtxMin(0),
120 fdCutDCADaughtersMax(0),
121 fdCutEtaDaughterMax(0),
122 fdCutNSigmadEdxMax(0),
127 fdCutRadiusDecayMin(0),
128 fdCutRadiusDecayMax(0),
138 fdCutPtTrackJetMin(0),
139 fdCutAreaPercJetMin(0),
140 fdDistanceV0JetMax(0.4),
143 fbCompareTriggers(0),
149 fh1EventCounterCut(0),
152 fh1EventCent2Jets(0),
153 fh1EventCent2NoJets(0),
154 fh2EventCentTracks(0),
155 fh1V0CandPerEvent(0),
162 fh3CCMassCorrelBoth(0),
163 fh3CCMassCorrelKNotL(0),
164 fh3CCMassCorrelLNotK(0)
396 fbFindableClusters(0),
397 fdCutNCrossedRowsTPCMin(0),
398 fdCutCrossedRowsOverFindMin(0),
399 fdCutCrossedRowsOverFindMax(0),
400 fdCutPtDaughterMin(0),
401 fdCutDCAToPrimVtxMin(0),
402 fdCutDCADaughtersMax(0),
403 fdCutEtaDaughterMax(0),
404 fdCutNSigmadEdxMax(0),
409 fdCutRadiusDecayMin(0),
410 fdCutRadiusDecayMax(0),
420 fdCutPtTrackJetMin(0),
421 fdCutAreaPercJetMin(0),
422 fdDistanceV0JetMax(0.4),
425 fbCompareTriggers(0),
431 fh1EventCounterCut(0),
434 fh1EventCent2Jets(0),
435 fh1EventCent2NoJets(0),
436 fh2EventCentTracks(0),
437 fh1V0CandPerEvent(0),
444 fh3CCMassCorrelBoth(0),
445 fh3CCMassCorrelKNotL(0),
446 fh3CCMassCorrelLNotK(0)
647 DefineInput(0, TChain::Class());
650 DefineOutput(1, TList::Class());
651 DefineOutput(2, TList::Class());
652 DefineOutput(3, TList::Class());
653 DefineOutput(4, TList::Class());
700 const Int_t iNCategEvent = 12;
701 TString categEvent[iNCategEvent] = {
728 "V0 #it{y} & #it{#eta}",
738 fh1EventCounterCut =
new TH1D(
"fh1EventCounterCut",
"Number of events after filtering;selection filter;counts", iNCategEvent, 0, iNCategEvent);
739 for(
Int_t i = 0; i < iNCategEvent; i++)
741 fh1EventCent2 =
new TH1D(
"fh1EventCent2",
"Number of events vs centrality;centrality;counts", 100, 0, 100);
742 fh1EventCent2Jets =
new TH1D(
"fh1EventCent2Jets",
"Number of sel.-jet events vs centrality;centrality;counts", 100, 0, 100);
743 fh1EventCent2NoJets =
new TH1D(
"fh1EventCent2NoJets",
"Number of no-jet events vs centrality;centrality;counts", 100, 0, 100);
744 fh2EventCentTracks =
new TH2D(
"fh2EventCentTracks",
"Number of tracks vs centrality;centrality;tracks;counts", 100, 0, 100, 150, 0, 15e3);
748 fh1NRndConeCent =
new TH1D(
"fh1NRndConeCent",
"Number of rnd. cones in centrality bins;centrality;counts", fgkiNBinsCent, 0, fgkiNBinsCent);
751 fh1NMedConeCent =
new TH1D(
"fh1NMedConeCent",
"Number of med.-cl. cones in centrality bins;centrality;counts", fgkiNBinsCent, 0, fgkiNBinsCent);
754 fh1AreaExcluded =
new TH1D(
"fh1AreaExcluded",
"Area of excluded cones in centrality bins;centrality;area", fgkiNBinsCent, 0, fgkiNBinsCent);
767 fh1V0CandPerEvent =
new TH1D(
"fh1V0CandPerEvent",
"Number of all V0 candidates per event;candidates;events", 300, 0, 30000);
773 for(
Int_t j = 0; j < iNCategEvent; j++)
810 fh3CCMassCorrelBoth =
new THnSparseD(
"fh3CCMassCorrelBoth",
"Mass correlation: K0S && Lambda;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
811 fh3CCMassCorrelKNotL =
new THnSparseD(
"fh3CCMassCorrelKNotL",
"Mass correlation: K0S, not Lambda;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
812 fh3CCMassCorrelLNotK =
new THnSparseD(
"fh3CCMassCorrelLNotK",
"Mass correlation: Lambda, not K0S;m K0S;m Lambda;pT", 3, binsCorrel, xminCorrel, xmaxCorrel);
821 const Int_t iNBinsEtaV0 = 2 *
Int_t(dRangeEtaV0Max / dStepEtaV0);
824 const Int_t iNDimIncl = 3;
832 const Int_t iNDimInJC = 4;
840 Int_t iNBinsDeltaPhi = 60;
841 const Int_t iNDimCorrel = 6;
846 Int_t iNBinsDeltaEtaCorrel = 1;
848 Int_t binsKCorrel[iNDimCorrel] = {
fgkiNBinsMassK0s / 2, iNBinsPtV0InJet, iNBinsEtaV0, iNJetPtBins, iNBinsDeltaPhi, iNBinsDeltaEtaCorrel};
851 Int_t binsLCorrel[iNDimCorrel] = {
fgkiNBinsMassLambda / 2, iNBinsPtV0InJet, iNBinsEtaV0, iNJetPtBins, iNBinsDeltaPhi, iNBinsDeltaEtaCorrel};
859 const Int_t iNBinsDeltaEta = 2 *
Int_t(dRangeDeltaEtaMax / dStepDeltaEta);
869 Int_t binsEtaKInRec[5] = {
fgkiNBinsMassK0s, iNBinsPtV0InJet, iNBinsEtaV0, iNJetPtBins, iNBinsDeltaEta};
876 Int_t binsEtaInGen[4] = {iNBinsPtV0InJet, iNBinsEtaV0, iNJetPtBins, iNBinsDeltaEta};
877 Double_t xminEtaInGen[4] = {dPtV0Min, -dRangeEtaV0Max, dJetPtMin, -dRangeDeltaEtaMax};
878 Double_t xmaxEtaInGen[4] = {dPtV0Max, dRangeEtaV0Max, dJetPtMax, dRangeDeltaEtaMax};
880 const Int_t iNDimEtaD = 6;
881 Int_t binsEtaDaughter[iNDimEtaD] = {2, 20, iNBinsPtV0, iNBinsEtaV0, iNBinsPtV0, iNJetPtBins};
882 Double_t xminEtaDaughter[iNDimEtaD] = {0, -1, dPtV0Min, -dRangeEtaV0Max, dPtV0Min, dJetPtMin};
883 Double_t xmaxEtaDaughter[iNDimEtaD] = {2, 1, dPtV0Max, dRangeEtaV0Max, dPtV0Max, dJetPtMax};
885 const Int_t iNDimDaughter = 5;
886 Int_t binsDaughter[iNDimDaughter] = {80, 80, iNBinsPtV0, iNJetPtBins, 80};
887 Double_t xminDaughter[iNDimDaughter] = {0, 0, dPtV0Min, dJetPtMin, 0};
888 Double_t xmaxDaughter[iNDimDaughter] = {20, 20, dPtV0Max, dJetPtMax, 20};
893 fhnPtDaughterK0s[i] =
new THnSparseD(Form(
"fhnPtDaughterK0s_%d", i), Form(
"K0s: Daughter Pt vs Pt, cent: %s;neg #it{p}_{T} (GeV/#it{c});pos #it{p}_{T} (GeV/#it{c});p_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c});#it{p}_{T} leading track (GeV/#it{c});counts",
GetCentBinLabel(i).
Data()), iNDimDaughter, binsDaughter, xminDaughter, xmaxDaughter);
894 fhnPtDaughterLambda[i] =
new THnSparseD(Form(
"fhnPtDaughterLambda_%d", i), Form(
"Lambda: Daughter Pt vs Pt, cent: %s;neg #it{p}_{T} (GeV/#it{c});pos #it{p}_{T} (GeV/#it{c});p_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c});#it{p}_{T} leading track (GeV/#it{c});counts",
GetCentBinLabel(i).
Data()), iNDimDaughter, binsDaughter, xminDaughter, xmaxDaughter);
895 fhnPtDaughterALambda[i] =
new THnSparseD(Form(
"fhnPtDaughterALambda_%d", i), Form(
"ALambda: Daughter Pt vs Pt, cent: %s;neg #it{p}_{T} (GeV/#it{c});pos #it{p}_{T} (GeV/#it{c});p_{T}^{V0} (GeV/#it{c});#it{p}_{T}^{jet} (GeV/#it{c});#it{p}_{T} leading track (GeV/#it{c});counts",
GetCentBinLabel(i).
Data()), iNDimDaughter, binsDaughter, xminDaughter, xmaxDaughter);
907 fhnV0InclusiveK0s[i] =
new THnSparseD(Form(
"fhnV0InclusiveK0s_C%d", i),
"K0s: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};counts", iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
908 fhnV0InclusiveLambda[i] =
new THnSparseD(Form(
"fhnV0InclusiveLambda_C%d", i),
"Lambda: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};counts", iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
909 fhnV0InclusiveALambda[i] =
new THnSparseD(Form(
"fhnV0InclusiveALambda_C%d", i),
"ALambda: V0 invariant mass vs pt;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};counts", iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
914 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsKInJC, xminKInJC, xmaxKInJC);
916 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsKInJC, xminKInJC, xmaxKInJC);
918 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
920 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
922 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
924 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsKIncl, xminKIncl, xmaxKIncl);
926 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
928 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
930 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
932 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
934 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
936 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
938 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
940 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{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c})",
GetCentBinLabel(i).
Data()), iNDimInJC, binsLInJC, xminLInJC, xmaxLInJC);
942 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
944 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
946 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
948 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});#it{#eta}_{V0}",
GetCentBinLabel(i).
Data()), iNDimIncl, binsLIncl, xminLIncl, xmaxLIncl);
951 fhnV0CorrelSEK0s[i] =
new THnSparseD(Form(
"fhnV0CorrelSEK0s_%d", i), Form(
"K0s: Correlations with jets in same events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c});#Delta#it{#phi}_{V0-jet};#Delta#it{#eta}_{V0-jet}",
GetCentBinLabel(i).
Data()), iNDimCorrel, binsKCorrel, xminKCorrel, xmaxKCorrel);
953 fhnV0CorrelMEK0s[i] =
new THnSparseD(Form(
"fhnV0CorrelMEK0s_%d", i), Form(
"K0s: Correlations with jets in mixed events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c});#Delta#it{#phi}_{V0-jet};#Delta#it{#eta}_{V0-jet}",
GetCentBinLabel(i).
Data()), iNDimCorrel, binsKCorrel, xminKCorrel, xmaxKCorrel);
955 fhnV0CorrelSELambda[i] =
new THnSparseD(Form(
"fhnV0CorrelSELambda_%d", i), Form(
"Lambda: Correlations with jets in same events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c});#Delta#it{#phi}_{V0-jet};#Delta#it{#eta}_{V0-jet}",
GetCentBinLabel(i).
Data()), iNDimCorrel, binsLCorrel, xminLCorrel, xmaxLCorrel);
957 fhnV0CorrelMELambda[i] =
new THnSparseD(Form(
"fhnV0CorrelMELambda_%d", i), Form(
"Lambda: Correlations with jets in mixed events, cent: %s;#it{m}_{inv} (GeV/#it{c}^{2});#it{p}_{T}^{V0} (GeV/#it{c});#it{#eta}_{V0};#it{p}_{T}^{jet} (GeV/#it{c});#Delta#it{#phi}_{V0-jet};#Delta#it{#eta}_{V0-jet}",
GetCentBinLabel(i).
Data()), iNDimCorrel, binsLCorrel, xminLCorrel, xmaxLCorrel);
960 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()), 2 * iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdDistanceV0JetMax + 0.1);
962 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()), 2 * iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdDistanceV0JetMax + 0.1);
964 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()), 2 * iNJetPtBins, dJetPtMin, dJetPtMax, 100, 0,
fdDistanceV0JetMax + 0.1);
968 fh1PtJet[i] =
new TH1D(Form(
"fh1PtJet_%d", i), Form(
"Jet pt spectrum, cent: %s;#it{p}_{T} jet (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 2 * iNJetPtBins, dJetPtMin, dJetPtMax);
972 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., 2 * iNJetPtBins, dJetPtMin, dJetPtMax);
976 fh2PtJetPtTrackLeading[i] =
new TH2D(Form(
"fh2PtJetPtTrackLeading_%d", i), Form(
"jet pt vs leading track pt, cent: %s;#it{p}_{T}^{jet} (GeV/#it{c});#it{p}_{T} leading track (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 4 * iNJetPtBins, dJetPtMin, dJetPtMax, 200, 0., 20);
978 fh2PtJetPtTrigger[i] =
new TH2D(Form(
"fh2PtJetPtTrigger_%d", i), Form(
"jet pt vs trigger track pt, cent: %s;#it{p}_{T}^{jet} (GeV/#it{c});#it{p}_{T} trigger track (GeV/#it{c})",
GetCentBinLabel(i).
Data()), 4 * iNJetPtBins, dJetPtMin, dJetPtMax, 200, 0., 20);
984 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., 90, 0., TMath::TwoPi());
986 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., 90, 0., TMath::TwoPi());
1001 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);
1007 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);
1009 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);
1014 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);
1016 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);
1019 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()), iNBinsPtV0InJet, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
1021 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);
1024 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);
1026 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);
1029 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);
1031 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);
1035 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);
1037 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);
1042 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);
1044 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);
1047 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()), iNBinsPtV0InJet, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
1049 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);
1052 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);
1054 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);
1057 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);
1059 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);
1063 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);
1065 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);
1070 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);
1072 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);
1075 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()), iNBinsPtV0InJet, dPtV0Min, dPtV0Max, iNJetPtBins, dJetPtMin, dJetPtMax);
1077 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);
1080 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);
1082 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);
1085 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);
1087 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);
1090 Int_t iNBinsPtXi = 80;
1093 const Int_t iNDimFD = 3;
1094 Int_t binsFD[iNDimFD] = {iNBinsPtV0, iNBinsPtXi, iNJetPtBins};
1095 Double_t xminFD[iNDimFD] = {dPtV0Min, dPtXiMin, dJetPtMin};
1096 Double_t xmaxFD[iNDimFD] = {dPtV0Max, dPtXiMax, dJetPtMax};
1097 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);
1099 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);
1101 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);
1103 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);
1105 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);
1107 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);
1109 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);
1111 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);
1115 fhnV0K0sInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0K0sInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC K0S, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1116 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 gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1117 fhnV0LambdaInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0LambdaInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC Lambda, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1118 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 gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1119 fhnV0ALambdaInclDaughterEtaPtPtMCRec[i] =
new THnSparseD(Form(
"fhnV0ALambdaInclDaughterEtaPtPtMCRec_%d", i), Form(
"MC ALambda, inclusive, assoc., daughters: charge-etaD-ptD-etaV0-ptV0-ptJet, cent: %s;charge;eta gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1120 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 gen daughter;pT gen daughter;eta gen V0;pT gen V0;pT rec jet",
GetCentBinLabel(i).
Data()), iNDimEtaD, binsEtaDaughter, xminEtaDaughter, xmaxEtaDaughter);
1135 fh1QAV0Status[i] =
new TH1D(Form(
"fh1QAV0Status_%d", i),
"QA: V0 status", 2, 0, 2);
1137 fh1QAV0TPCRows[i] =
new TH1D(Form(
"fh1QAV0TPCRows_%d", i),
"QA: TPC Rows", 160, 0, 160);
1140 fh1QAV0Eta[i] =
new TH1D(Form(
"fh1QAV0Eta_%d", i),
"QA: Daughter Eta", 200, -2, 2);
1141 fh2QAV0EtaRows[i] =
new TH2D(Form(
"fh2QAV0EtaRows_%d", i),
"QA: Daughter Eta vs TPC rows;#eta;TPC rows", 200, -2, 2, 160, 0, 160);
1142 fh2QAV0PtRows[i] =
new TH2D(Form(
"fh2QAV0PtRows_%d", i),
"QA: Daughter Pt vs TPC rows;pt;TPC rows", 100, 0, 10, 160, 0, 160);
1143 fh2QAV0PhiRows[i] =
new TH2D(Form(
"fh2QAV0PhiRows_%d", i),
"QA: Daughter Phi vs TPC rows;#phi;TPC rows", 90, 0, TMath::TwoPi(), 160, 0, 160);
1144 fh2QAV0NClRows[i] =
new TH2D(Form(
"fh2QAV0NClRows_%d", i),
"QA: Daughter NCl vs TPC rows;findable clusters;TPC rows", 100, 0, 160, 160, 0, 160);
1145 fh2QAV0EtaNCl[i] =
new TH2D(Form(
"fh2QAV0EtaNCl_%d", i),
"QA: Daughter Eta vs NCl;#eta;findable clusters", 200, -2, 2, 160, 0, 160);
1147 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);
1148 fh2QAV0EtaEtaK0s[i] =
new TH2D(Form(
"fh2QAV0EtaEtaK0s_%d", i),
"QA: K0s: Eta vs Eta Daughter", 200, -2, 2, 200, -2, 2);
1149 fh2QAV0PhiPhiK0s[i] =
new TH2D(Form(
"fh2QAV0PhiPhiK0s_%d", i),
"QA: K0s: Phi vs Phi Daughter", 90, 0, TMath::TwoPi(), 90, 0, TMath::TwoPi());
1150 fh1QAV0RapK0s[i] =
new TH1D(Form(
"fh1QAV0RapK0s_%d", i),
"QA: K0s: V0 Rapidity", 200, -2, 2);
1151 fh2QAV0PtPtK0sPeak[i] =
new TH2D(Form(
"fh2QAV0PtPtK0sPeak_%d", i),
"QA: K0s: Daughter Pt vs Pt;neg pt;pos pt", 100, 0, 5, 100, 0, 5);
1153 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);
1154 fh2QAV0EtaEtaLambda[i] =
new TH2D(Form(
"fh2QAV0EtaEtaLambda_%d", i),
"QA: Lambda: Eta vs Eta Daughter", 200, -2, 2, 200, -2, 2);
1155 fh2QAV0PhiPhiLambda[i] =
new TH2D(Form(
"fh2QAV0PhiPhiLambda_%d", i),
"QA: Lambda: Phi vs Phi Daughter", 90, 0, TMath::TwoPi(), 90, 0, TMath::TwoPi());
1156 fh1QAV0RapLambda[i] =
new TH1D(Form(
"fh1QAV0RapLambda_%d", i),
"QA: Lambda: V0 Rapidity", 200, -2, 2);
1157 fh2QAV0PtPtLambdaPeak[i] =
new TH2D(Form(
"fh2QAV0PtPtLambdaPeak_%d", i),
"QA: Lambda: Daughter Pt vs Pt;neg pt;pos pt", 100, 0, 5, 100, 0, 5);
1159 fh2QAV0EtaPtALambdaPeak[i] =
new TH2D(Form(
"fh2QAV0EtaPtALambdaPeak_%d", i),
"QA: anti-Lambda: Daughter Eta vs V0 pt, peak;track eta;V0 pt", 200, -2, 2, iNBinsPtV0, dPtV0Min, dPtV0Max);
1160 fh2QAV0EtaEtaALambda[i] =
new TH2D(Form(
"fh2QAV0EtaEtaALambda_%d", i),
"QA: anti-Lambda: Eta vs Eta Daughter", 200, -2, 2, 200, -2, 2);
1161 fh2QAV0PhiPhiALambda[i] =
new TH2D(Form(
"fh2QAV0PhiPhiALambda_%d", i),
"QA: anti-Lambda: Phi vs Phi Daughter", 90, 0, TMath::TwoPi(), 90, 0, TMath::TwoPi());
1162 fh1QAV0RapALambda[i] =
new TH1D(Form(
"fh1QAV0RapALambda_%d", i),
"QA: anti-Lambda: V0 Rapidity", 200, -2, 2);
1163 fh2QAV0PtPtALambdaPeak[i] =
new TH2D(Form(
"fh2QAV0PtPtALambdaPeak_%d", i),
"QA: anti-Lambda: Daughter Pt vs Pt;neg pt;pos pt", 100, 0, 5, 100, 0, 5);
1165 fh2QAV0PhiPtK0sPeak[i] =
new TH2D(Form(
"fh2QAV0PhiPtK0sPeak_%d", i),
"QA: K0S: #phi-pt;#phi;pt", 90, 0, TMath::TwoPi(), iNBinsPtV0, dPtV0Min, dPtV0Max);
1166 fh2QAV0PhiPtLambdaPeak[i] =
new TH2D(Form(
"fh2QAV0PhiPtLambdaPeak_%d", i),
"QA: Lambda: #phi-pt;#phi;pt", 90, 0, TMath::TwoPi(), iNBinsPtV0, dPtV0Min, dPtV0Max);
1167 fh2QAV0PhiPtALambdaPeak[i] =
new TH2D(Form(
"fh2QAV0PhiPtALambdaPeak_%d", i),
"QA: anti-Lambda: #phi-pt;#phi;pt", 90, 0, TMath::TwoPi(), iNBinsPtV0, dPtV0Min, dPtV0Max);
1168 fh1QAV0Pt[i] =
new TH1D(Form(
"fh1QAV0Pt_%d", i),
"QA: Daughter Pt", 100, 0, 5);
1169 fh1QAV0Charge[i] =
new TH1D(Form(
"fh1QAV0Charge_%d", i),
"QA: V0 Charge", 3, -1, 2);
1170 fh1QAV0DCAVtx[i] =
new TH1D(Form(
"fh1QAV0DCAVtx_%d", i),
"QA: DCA daughters to primary vertex", 1000, 0, 10);
1171 fh1QAV0DCAV0[i] =
new TH1D(Form(
"fh1QAV0DCAV0_%d", i),
"QA: DCA daughters", 100, 0, 2);
1172 fh1QAV0Cos[i] =
new TH1D(Form(
"fh1QAV0Cos_%d", i),
"QA: CPA", 10000, 0.9, 1);
1173 fh1QAV0R[i] =
new TH1D(Form(
"fh1QAV0R_%d", i),
"QA: R", 1500, 0, 150);
1174 fh1QACTau2D[i] =
new TH1D(Form(
"fh1QACTau2D_%d", i),
"QA: K0s: c#tau 2D;mR/pt#tau", 100, 0, 10);
1175 fh1QACTau3D[i] =
new TH1D(Form(
"fh1QACTau3D_%d", i),
"QA: K0s: c#tau 3D;mL/p#tau", 100, 0, 10);
1177 fh2ArmPod[i] =
new TH2D(Form(
"fh2ArmPod_%d", i),
"Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1178 fh2ArmPodK0s[i] =
new TH2D(Form(
"fh2ArmPodK0s_%d", i),
"K0s: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1179 fh2ArmPodLambda[i] =
new TH2D(Form(
"fh2ArmPodLambda_%d", i),
"Lambda: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1180 fh2ArmPodALambda[i] =
new TH2D(Form(
"fh2ArmPodALambda_%d", i),
"ALambda: Armenteros-Podolanski;#alpha;#it{p}_{T}^{Arm}", 100, -1., 1., 50, 0., 0.25);
1305 THnSparse* hn =
dynamic_cast<THnSparse*
>(
fOutputListQA->At(i));
1327 THnSparse* hn =
dynamic_cast<THnSparse*
>(
fOutputListMC->At(i));
1370 printf(
"=======================================================\n");
1371 printf(
"%s: Configuration summary:\n", ClassName());
1372 printf(
"task name: %s\n", GetName());
1373 printf(
"-------------------------------------------------------\n");
1374 printf(
"collision system: %s\n",
fbIsPbPb ?
"Pb+Pb" :
"p+p");
1375 printf(
"data type: %s\n",
fbMCAnalysis ?
"MC" :
"real");
1381 printf(
"-------------------------------------------------------\n");
1382 if(
fbTPCRefit) printf(
"TPC refit for daughter tracks\n");
1383 if(
fbRejectKinks) printf(
"reject kink-like production vertices of daughter tracks\n");
1394 printf(
"V0 reconstruction method: %s\n",
fbOnFly ?
"on-the-fly" :
"offline");
1402 if(
fbCutArmPod) printf(
"Armenteros-Podolanski cut for K0S\n");
1403 if(
fbCutCross) printf(
"cross-contamination cut\n");
1404 printf(
"-------------------------------------------------------\n");
1405 printf(
"analysis of V0s in jets: %s\n",
fbJetSelection ?
"yes" :
"no");
1408 printf(
"rho subtraction: ");
1415 if(
fdCutEtaV0Max > 0. && fdDistanceV0JetMax > 0.) printf(
"max |eta| of jet: %g\n", dCutEtaJetMax);
1416 printf(
"max distance between V0 and jet axis: %g\n", fdDistanceV0JetMax);
1417 printf(
"angular correlations of V0s with jets: %s\n",
fbCorrelations ?
"yes" :
"no");
1419 printf(
"pt correlations of jets with trigger tracks: %s\n",
fbCompareTriggers ?
"yes" :
"no");
1420 printf(
"-------------------------------------------------------\n");
1423 printf(
"Signal jet container parameters\n");
1428 printf(
"No signal jet container!\n");
1431 printf(
"Background jet container parameters\n");
1436 printf(
"No background jet container\n");
1438 printf(
"=======================================================\n");
1451 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Start");
1458 AliError(
"No input AOD found!");
1461 if(fDebug > 1) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Loading AOD OK");
1463 TClonesArray* arrayMC = 0;
1464 AliAODMCHeader* headerMC = 0;
1465 Int_t iNTracksMC = 0;
1466 Double_t dPrimVtxMCX = 0., dPrimVtxMCY = 0., dPrimVtxMCZ = 0.;
1471 arrayMC = (TClonesArray*)
fAODIn->FindListObject(AliAODMCParticle::StdBranchName());
1474 AliError(
"No MC array found!");
1477 if(fDebug > 1) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"MC array found");
1478 iNTracksMC = arrayMC->GetEntriesFast();
1479 if(fDebug > 2) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"There are %d MC tracks in this event", iNTracksMC));
1480 headerMC = (AliAODMCHeader*)
fAODIn->FindListObject(AliAODMCHeader::StdBranchName());
1483 AliError(
"No MC header found!");
1487 dPrimVtxMCX = headerMC->GetVtxX();
1488 dPrimVtxMCY = headerMC->GetVtxY();
1489 dPrimVtxMCZ = headerMC->GetVtxZ();
1493 AliPIDResponse* fPIDResponse = 0;
1497 AliInputEventHandler* inputHandler = (AliInputEventHandler*)mgr->GetInputEventHandler();
1498 fPIDResponse = inputHandler->GetPIDResponse();
1501 AliError(
"No PID response object found!");
1512 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Event rejected");
1515 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Event accepted: cent. %g",
fdCentrality));
1521 AliError(Form(
"Event is out of histogram range: cent: %g!",
fdCentrality));
1528 if(fDebug > 2) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"There are %d tracks in this event", iNTracks));
1536 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"No V0s found in event");
1544 AliEventPool* pool = 0;
1545 Bool_t bPoolReady = kFALSE;
1549 AliAODVertex* vertex =
fAODIn->GetPrimaryVertex();
1550 dZVtxME = vertex->GetZ();
1554 AliError(Form(
"No pool found for centrality = %g, z_vtx = %g!",
fdCentrality, dZVtxME));
1557 bPoolReady = pool->IsReady();
1562 printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Pool %d-%d: events in pool = %d, jets in pool = %d", pool->MultBinIndex(), pool->ZvtxBinIndex(), pool->GetCurrentNEvents(), pool->NTracksInPool()));
1573 TVector3 vecV0Momentum;
1577 Int_t iNV0CandTot = 0;
1578 Int_t iNV0CandK0s = 0;
1579 Int_t iNV0CandLambda = 0;
1580 Int_t iNV0CandALambda = 0;
1583 Bool_t bPrintJetSelection = 0;
1594 Double_t dMassPDGK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
1595 Double_t dMassPDGLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
1598 Int_t iPdgCodePion = 211;
1599 Int_t iPdgCodeProton = 2212;
1600 Int_t iPdgCodeK0s = 310;
1601 Int_t iPdgCodeLambda = 3122;
1605 Bool_t bLeadingJetOnly = 0;
1608 TClonesArray* arrayJetSel =
new TClonesArray(
"AliAODJet", 0);
1610 TClonesArray* arrayJetPerp =
new TClonesArray(
"AliAODJet", 0);
1611 Int_t iNJetPerp = 0;
1613 arrayMixedEventAdd->SetOwner(kTRUE);
1616 AliAODJet* jetPerp = 0;
1617 AliAODJet* jetRnd = 0;
1619 TVector3 vecJetMomentum;
1620 TVector3 vecJetMomentumPair;
1621 Bool_t bJetEventGood = kTRUE;
1623 TLorentzVector vecJetSel;
1624 TLorentzVector vecPerpPlus;
1625 TLorentzVector vecPerpMinus;
1633 AliError(
"No signal jet container!");
1634 bJetEventGood = kFALSE;
1638 if(bJetEventGood && !iNJet)
1640 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"No jets in array");
1641 bJetEventGood = kFALSE;
1645 AliWarning(
"No bg jet container!");
1650 bJetEventGood = kFALSE;
1658 if(fDebug > 4) printf(
"%s::%s: %s\n", ClassName(), __func__, Form(
"Loaded rho value: %g", dRho));
1662 if(fDebug > 2) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Jet selection for %d jets", iNJet));
1663 for(
Int_t iJet = 0; iJet < iNJet; iJet++)
1670 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Jet %d not accepted in container", iJet));
1681 dPtJetCorr = jetSel->
PtSub(dRho);
1686 dPtJetCorr = vecJetSel.Pt();
1687 dEtaJetCorr = vecJetSel.Eta();
1688 dPhiJetCorr = TVector2::Phi_0_2pi(vecJetSel.Phi());
1691 if(bPrintJetSelection)
1692 if(fDebug > 4) printf(
"jet: i = %d, pT = %g, eta = %g, phi = %g, pt lead tr = %g ", iJet, dPtJetCorr, dEtaJetCorr, dPhiJetCorr, dPtTrackJet);
1695 if(bPrintJetSelection)
1696 if(fDebug > 4) printf(
"rejected (pt)\n");
1699 if(bPrintJetSelection)
1700 if(fDebug > 4) printf(
"accepted\n");
1701 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Jet %d with pt %g passed selection", iJet, dPtJetCorr));
1703 vecJetSel.SetPtEtaPhiM(dPtJetCorr, dEtaJetCorr, dPhiJetCorr, 0.);
1704 vecPerpPlus = vecJetSel;
1705 vecPerpMinus = vecJetSel;
1706 vecPerpPlus.RotateZ(TMath::Pi() / 2.);
1707 vecPerpMinus.RotateZ(-TMath::Pi() / 2.);
1708 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Adding perp. cones number %d, %d, pt %g", iNJetPerp, iNJetPerp + 1, vecPerpPlus.Pt()));
1709 new((*arrayJetPerp)[iNJetPerp++]) AliAODJet(vecPerpPlus);
1710 new((*arrayJetPerp)[iNJetPerp++]) AliAODJet(vecPerpMinus);
1711 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Adding jet number %d", iNJetSel));
1712 new((*arrayJetSel)[iNJetSel++]) AliAODJet(vecJetSel);
1713 ((AliAODJet*)arrayJetSel->At(iNJetSel - 1))->SetPtLeading(dPtTrackJet);
1716 arrayMixedEventAdd->Add(
new TLorentzVector(vecJetSel));
1718 if(fDebug > 3) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Added jets: %d", iNJetSel));
1719 iNJetSel = arrayJetSel->GetEntriesFast();
1720 if(fDebug > 2) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Selected jets in array: %d", iNJetSel));
1722 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
1724 jet = (AliAODJet*)arrayJetSel->At(iJet);
1725 fh1PtJet[iCentIndex]->Fill(jet->Pt());
1726 fh1EtaJet[iCentIndex]->Fill(jet->Eta());
1727 fh2EtaPtJet[iCentIndex]->Fill(jet->Eta(), jet->Pt());
1728 fh1PhiJet[iCentIndex]->Fill(jet->Phi());
1729 Double_t dAreaExcluded = TMath::Pi() * dRadiusExcludeCone * dRadiusExcludeCone;
1734 vecJetMomentum.SetXYZ(jet->Px(), jet->Py(), jet->Pz());
1735 for(
Int_t iJetPair = iJet + 1; iJetPair < iNJetSel; iJetPair++)
1737 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Calculating distance for jet pair: %d-%d/%d\n", iJet, iJetPair, iNJetSel));
1738 jet = (AliAODJet*)arrayJetSel->At(iJetPair);
1739 vecJetMomentumPair.SetXYZ(jet->Px(), jet->Py(), jet->Pz());
1740 fh1DistanceJets[iCentIndex]->Fill(vecJetMomentum.DeltaR(vecJetMomentumPair));
1764 jetRnd =
GetRandomCone(arrayJetSel, dCutEtaJetMax, 2 * fdDistanceV0JetMax);
1784 AliError(
"No track container!");
1787 AliAODJet* jetTrig = 0;
1797 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
1799 jetTrig = (AliAODJet*)arrayJetSel->At(iJet);
1814 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
1816 jetTrig = (AliAODJet*)arrayJetSel->At(iJet);
1827 AliAODVertex* primVtx =
fAODIn->GetPrimaryVertex();
1829 primVtx->GetXYZ(dPrimVtxPos);
1830 fh1VtxZ[iCentIndex]->Fill(dPrimVtxPos[2]);
1831 fh2VtxXY[iCentIndex]->Fill(dPrimVtxPos[0], dPrimVtxPos[1]);
1834 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Start of V0 loop");
1835 for(
Int_t iV0 = 0; iV0 < iNV0s; iV0++)
1844 Bool_t bIsCandidateK0s = kTRUE;
1845 Bool_t bIsCandidateLambda = kTRUE;
1846 Bool_t bIsCandidateALambda = kTRUE;
1847 Bool_t bIsInPeakK0s = kFALSE;
1848 Bool_t bIsInPeakLambda = kFALSE;
1849 Bool_t bIsInPeakALambda = kFALSE;
1850 Bool_t bIsInConeJet = kFALSE;
1851 Bool_t bIsInConePerp = kFALSE;
1852 Bool_t bIsInConeRnd = kFALSE;
1853 Bool_t bIsInConeMed = kFALSE;
1854 Bool_t bIsOutsideCones = kFALSE;
1857 dMassV0K0s = v0->MassK0Short();
1858 dMassV0Lambda = v0->MassLambda();
1859 dMassV0ALambda = v0->MassAntiLambda();
1861 Int_t iCutIndex = 0;
1864 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1867 Double_t dPtV0 = TMath::Sqrt(v0->Pt2V0());
1868 vecV0Momentum = TVector3(v0->Px(), v0->Py(), v0->Pz());
1875 dMassPeakWindowK0s = 0.010;
1876 dMassPeakWindowLambda = 0.005;
1880 if(TMath::Abs(dMassV0K0s - dMassPDGK0s) < dMassPeakWindowK0s)
1881 bIsInPeakK0s = kTRUE;
1882 if(TMath::Abs(dMassV0Lambda - dMassPDGLambda) < dMassPeakWindowLambda)
1883 bIsInPeakLambda = kTRUE;
1884 if(TMath::Abs(dMassV0ALambda - dMassPDGLambda) < dMassPeakWindowLambda)
1885 bIsInPeakALambda = kTRUE;
1888 FillQAHistogramV0(primVtx, v0, 0, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, bIsInPeakK0s, bIsInPeakLambda, bIsInPeakALambda);
1892 bIsCandidateK0s = kFALSE;
1894 bIsCandidateLambda = kFALSE;
1896 bIsCandidateALambda = kFALSE;
1897 if(!bIsCandidateK0s && !bIsCandidateLambda && !bIsCandidateALambda)
1901 Bool_t bOnFlyStatus = v0->GetOnFlyStatus();
1902 const AliAODTrack* trackPos = (AliAODTrack*)v0->GetDaughter(0);
1903 const AliAODTrack* trackNeg = (AliAODTrack*)v0->GetDaughter(1);
1904 Double_t dPtDaughterPos = trackPos->Pt();
1905 Double_t dPtDaughterNeg = trackNeg->Pt();
1906 Double_t dNRowsPos = trackPos->GetTPCClusterInfo(2, 1);
1907 Double_t dNRowsNeg = trackNeg->GetTPCClusterInfo(2, 1);
1910 Double_t dDCAToPrimVtxPos = TMath::Abs(v0->DcaPosToPrimVertex());
1911 Double_t dDCAToPrimVtxNeg = TMath::Abs(v0->DcaNegToPrimVertex());
1912 Double_t dDCADaughters = v0->DcaV0Daughters();
1913 Double_t dCPA = v0->CosPointingAngle(primVtx);
1916 v0->GetSecondaryVtx(dSecVtxPos);
1917 Double_t dRadiusDecay = TMath::Sqrt(dSecVtxPos[0] * dSecVtxPos[0] + dSecVtxPos[1] * dSecVtxPos[1]);
1918 Double_t dEtaDaughterPos = trackPos->Eta();
1919 Double_t dEtaDaughterNeg = trackNeg->Eta();
1920 Double_t dRapK0s = v0->RapK0Short();
1921 Double_t dRapLambda = v0->RapLambda();
1925 for(
Int_t iPos = 0; iPos < 3; iPos++)
1926 dDecayPath[iPos] = dSecVtxPos[iPos] - dPrimVtxPos[iPos];
1927 Double_t dDecLen = TMath::Sqrt(dDecayPath[0] * dDecayPath[0] + dDecayPath[1] * dDecayPath[1] + dDecayPath[2] * dDecayPath[2]);
1928 Double_t dDecLen2D = TMath::Sqrt(dDecayPath[0] * dDecayPath[0] + dDecayPath[1] * dDecayPath[1]);
1929 Double_t dLOverP = dDecLen / v0->P();
1930 Double_t dROverPt = dDecLen2D / dPtV0;
1931 Double_t dMLOverPK0s = dMassPDGK0s * dLOverP;
1933 Double_t dMROverPtK0s = dMassPDGK0s * dROverPt;
1934 Double_t dMROverPtLambda = dMassPDGLambda * dROverPt;
1935 Double_t dNSigmaPosPion = (fPIDResponse ? TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackPos, AliPID::kPion)) : 0.);
1936 Double_t dNSigmaPosProton = (fPIDResponse ? TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackPos,
AliPID::kProton)) : 0.);
1937 Double_t dNSigmaNegPion = (fPIDResponse ? TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackNeg, AliPID::kPion)) : 0.);
1938 Double_t dNSigmaNegProton = (fPIDResponse ? TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackNeg,
AliPID::kProton)) : 0.);
1941 AliAODVertex* prodVtxDaughterPos = (AliAODVertex*)(trackPos->GetProdVertex());
1942 Char_t cTypeVtxProdPos = prodVtxDaughterPos->GetType();
1943 AliAODVertex* prodVtxDaughterNeg = (AliAODVertex*)(trackNeg->GetProdVertex());
1944 Char_t cTypeVtxProdNeg = prodVtxDaughterNeg->GetType();
1987 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
1993 if(bPrintCuts) printf(
"Rec: Applying cut: Reconstruction method: %s\n", (
fbOnFly ?
"on-the-fly" :
"offline"));
1996 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2001 if(bPrintCuts) printf(
"Rec: Applying cut: Correct charge of daughters\n");
2002 if(!trackNeg || !trackPos)
2004 if(trackNeg->Charge() == trackPos->Charge())
2006 if(trackNeg->Charge() != -1)
2008 if(trackPos->Charge() != 1)
2013 if(bPrintCuts) printf(
"Rec: Applying cut: TPC refit\n");
2014 if(!trackNeg->IsOn(AliAODTrack::kTPCrefit))
2016 if(!trackPos->IsOn(AliAODTrack::kTPCrefit))
2022 if(bPrintCuts) printf(
"Rec: Applying cut: Type of production vertex of daughter: No kinks\n");
2023 if(cTypeVtxProdNeg == AliAODVertex::kKink)
2025 if(cTypeVtxProdPos == AliAODVertex::kKink)
2031 if(bPrintCuts) printf(
"Rec: Applying cut: Positive number of findable clusters\n");
2032 if(dFindableNeg <= 0.)
2034 if(dFindablePos <= 0.)
2065 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2075 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2083 if(bPrintCuts) printf(
"Rec: Applying cut: Daughter DCA to prim vtx >= %g\n",
fdCutDCAToPrimVtxMin);
2086 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2094 if(bPrintCuts) printf(
"Rec: Applying cut: DCA between daughters <= %g\n",
fdCutDCADaughtersMax);
2097 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2105 if(bPrintCuts) printf(
"Rec: Applying cut: CPA >= %g (K)\n",
fdCutCPAKMin);
2107 bIsCandidateK0s = kFALSE;
2111 if(bPrintCuts) printf(
"Rec: Applying cut: CPA >= %g (L, AL)\n",
fdCutCPALMin);
2114 bIsCandidateLambda = kFALSE;
2115 bIsCandidateALambda = kFALSE;
2119 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2129 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2140 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2150 if(bPrintCuts) printf(
"Rec: Applying cut: V0 |eta| < %g\n",
fdCutEtaV0Max);
2153 bIsCandidateK0s = kFALSE;
2154 bIsCandidateLambda = kFALSE;
2155 bIsCandidateALambda = kFALSE;
2160 if(bPrintCuts) printf(
"Rec: Applying cut: V0 |y| < %g\n",
fdCutRapV0Max);
2162 bIsCandidateK0s = kFALSE;
2165 bIsCandidateLambda = kFALSE;
2166 bIsCandidateALambda = kFALSE;
2170 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2177 if(bPrintCuts) printf(
"Rec: Applying cut: Proper lifetime < %g (K)\n",
fdCutNTauKMax);
2179 bIsCandidateK0s = kFALSE;
2183 if(bPrintCuts) printf(
"Rec: Applying cut: Proper lifetime < %g (L, AL)\n",
fdCutNTauLMax);
2186 bIsCandidateLambda = kFALSE;
2187 bIsCandidateALambda = kFALSE;
2191 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2202 bIsCandidateLambda = kFALSE;
2204 bIsCandidateALambda = kFALSE;
2208 if(bPrintCuts) printf(
"Rec: Applying cut: Delta dE/dx (both daughters): < %g\n",
fdCutNSigmadEdxMax);
2210 bIsCandidateK0s = kFALSE;
2212 bIsCandidateLambda = kFALSE;
2214 bIsCandidateALambda = kFALSE;
2216 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2220 Double_t valueCorrel[3] = {dMassV0K0s, dMassV0Lambda, dPtV0};
2221 if(bIsCandidateK0s && bIsCandidateLambda)
2223 if(bIsCandidateK0s && !bIsCandidateLambda)
2225 if(!bIsCandidateK0s && bIsCandidateLambda)
2232 if(bPrintCuts) printf(
"Rec: Applying cut: Armenteros-Podolanski (K0S) pT > %g * |alpha|\n", 0.2);
2233 if(dPtArm < TMath::Abs(0.2 * dAlpha))
2234 bIsCandidateK0s = kFALSE;
2235 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2257 bIsCandidateLambda = kFALSE;
2258 bIsCandidateALambda = kFALSE;
2262 bIsCandidateK0s = kFALSE;
2264 if(bIsInPeakALambda)
2266 bIsCandidateK0s = kFALSE;
2268 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, iCutIndex, iCentIndex);
2275 if(!bIsCandidateK0s && !bIsCandidateLambda && !bIsCandidateALambda)
2279 if(iNJetSel && (bIsCandidateK0s || bIsCandidateLambda || bIsCandidateALambda))
2283 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2286 jet = (AliAODJet*)arrayJetSel->At(iJet);
2295 if(bIsCandidateLambda)
2297 if(bIsCandidateALambda)
2301 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for V0 %d %d in %d jet cones", bIsCandidateK0s, bIsCandidateLambda, iNJetSel));
2302 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2304 jet = (AliAODJet*)arrayJetSel->At(iJet);
2307 vecJetMomentum.SetXYZ(jet->Px(), jet->Py(), jet->Pz());
2308 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Checking if V0 %d %d in jet cone %d", bIsCandidateK0s, bIsCandidateLambda, iJet));
2311 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"V0 %d %d found in jet cone %d", bIsCandidateK0s, bIsCandidateLambda, iJet));
2312 bIsInConeJet = kTRUE;
2313 dPtJetTrackLeading = jet->GetPtLeading();
2319 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for V0 %d %d in %d perp. cones", bIsCandidateK0s, bIsCandidateLambda, iNJetPerp));
2320 for(
Int_t iJet = 0; iJet < iNJetPerp; iJet++)
2322 jetPerp = (AliAODJet*)arrayJetPerp->At(iJet);
2323 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Checking if V0 %d %d in perp. cone %d", bIsCandidateK0s, bIsCandidateLambda, iJet));
2326 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"V0 %d %d found in perp. cone %d", bIsCandidateK0s, bIsCandidateLambda, iJet));
2327 bIsInConePerp = kTRUE;
2334 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for V0 %d %d in the rnd. cone", bIsCandidateK0s, bIsCandidateLambda));
2337 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"V0 %d %d found in the rnd. cone", bIsCandidateK0s, bIsCandidateLambda));
2338 bIsInConeRnd = kTRUE;
2344 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for V0 %d %d in the med. cone", bIsCandidateK0s, bIsCandidateLambda));
2347 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"V0 %d %d found in the med. cone", bIsCandidateK0s, bIsCandidateLambda));
2348 bIsInConeMed = kTRUE;
2352 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for V0 %d %d outside jet cones", bIsCandidateK0s, bIsCandidateLambda));
2355 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"V0 %d %d found outside jet cones", bIsCandidateK0s, bIsCandidateLambda));
2356 bIsOutsideCones = kTRUE;
2361 FillQAHistogramV0(primVtx, v0, 1, bIsCandidateK0s, bIsCandidateLambda, bIsCandidateALambda, bIsInPeakK0s, bIsInPeakLambda, bIsInPeakALambda);
2402 dAngle = vecV0Momentum.Angle(vecJetMomentum);
2410 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex, iCentIndex);
2411 Double_t valueKIncl[3] = {dMassV0K0s, dPtV0, dEtaV0};
2422 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex + 1, iCentIndex);
2427 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, bIsCandidateK0s, kFALSE, kFALSE, iCutIndex + 2, iCentIndex);
2428 Double_t valueKInJC[4] = {dMassV0K0s, dPtV0, dEtaV0, jet->Pt()};
2431 Double_t valuesDaughter[5] = {dPtDaughterPos, dPtDaughterNeg, dPtV0, dPtJet, dPtJetTrackLeading};
2436 Double_t valueKOutJC[3] = {dMassV0K0s, dPtV0, dEtaV0};
2441 Double_t valueKInPC[4] = {dMassV0K0s, dPtV0, dEtaV0, jetPerp->Pt()};
2446 Double_t valueKInRnd[3] = {dMassV0K0s, dPtV0, dEtaV0};
2451 Double_t valueKInMed[3] = {dMassV0K0s, dPtV0, dEtaV0};
2456 Double_t valueKNoJet[3] = {dMassV0K0s, dPtV0, dEtaV0};
2461 if(bIsCandidateLambda)
2465 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex, iCentIndex);
2466 Double_t valueLIncl[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2472 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex + 1, iCentIndex);
2477 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, bIsCandidateLambda, kFALSE, iCutIndex + 2, iCentIndex);
2478 Double_t valueLInJC[4] = {dMassV0Lambda, dPtV0, dEtaV0, jet->Pt()};
2481 Double_t valuesDaughter[5] = {dPtDaughterPos, dPtDaughterNeg, dPtV0, dPtJet, dPtJetTrackLeading};
2486 Double_t valueLOutJet[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2491 Double_t valueLInPC[4] = {dMassV0Lambda, dPtV0, dEtaV0, jetPerp->Pt()};
2496 Double_t valueLInRnd[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2501 Double_t valueLInMed[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2506 Double_t valueLNoJet[3] = {dMassV0Lambda, dPtV0, dEtaV0};
2511 if(bIsCandidateALambda)
2515 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex, iCentIndex);
2516 Double_t valueALIncl[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2522 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex + 1, iCentIndex);
2527 FillCandidates(dMassV0K0s, dMassV0Lambda, dMassV0ALambda, kFALSE, kFALSE, bIsCandidateALambda, iCutIndex + 2, iCentIndex);
2528 Double_t valueLInJC[4] = {dMassV0ALambda, dPtV0, dEtaV0, jet->Pt()};
2531 Double_t valuesDaughter[5] = {dPtDaughterPos, dPtDaughterNeg, dPtV0, dPtJet, dPtJetTrackLeading};
2536 Double_t valueALOutJet[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2541 Double_t valueLInPC[4] = {dMassV0ALambda, dPtV0, dEtaV0, jetPerp->Pt()};
2546 Double_t valueALInRnd[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2551 Double_t valueALInMed[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2556 Double_t valueALNoJet[3] = {dMassV0ALambda, dPtV0, dEtaV0};
2566 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2568 AliAODJet* jetCorrel = (AliAODJet*)arrayJetSel->At(iJet);
2570 dDEta = dEtaV0 - jetCorrel->Eta();
2575 Double_t valueKCorrel[6] = {dMassV0K0s, dPtV0, dEtaV0, jetCorrel->Pt(), dDPhi, dDEta};
2578 if(bIsCandidateLambda)
2580 Double_t valueLCorrel[6] = {dMassV0Lambda, dPtV0, dEtaV0, jetCorrel->Pt(), dDPhi, dDEta};
2587 for(
Int_t iMix = 0; iMix < pool->GetCurrentNEvents(); iMix++)
2589 TObjArray* arrayMixedEvent = pool->GetEvent(iMix);
2590 if(!arrayMixedEvent)
2592 for(
Int_t iJet = 0; iJet < arrayMixedEvent->GetEntriesFast(); iJet++)
2594 TLorentzVector* jetMixed = (TLorentzVector*)arrayMixedEvent->At(iJet);
2598 dDEta = dEtaV0 - jetMixed->Eta();
2603 Double_t valueKCorrel[6] = {dMassV0K0s, dPtV0, dEtaV0, jetMixed->Pt(), dDPhi, dDEta};
2606 if(bIsCandidateLambda)
2608 Double_t valueLCorrel[6] = {dMassV0Lambda, dPtV0, dEtaV0, jetMixed->Pt(), dDPhi, dDEta};
2623 if(!(bIsCandidateK0s) && !(bIsCandidateLambda) && !(bIsCandidateALambda))
2627 Int_t iLabelPos = TMath::Abs(trackPos->GetLabel());
2628 Int_t iLabelNeg = TMath::Abs(trackNeg->GetLabel());
2631 if((iLabelNeg < 0) || (iLabelNeg >= iNTracksMC) || (iLabelPos < 0) || (iLabelPos >= iNTracksMC))
2635 AliAODMCParticle* particleMCDaughterNeg = (AliAODMCParticle*)arrayMC->At(iLabelNeg);
2636 AliAODMCParticle* particleMCDaughterPos = (AliAODMCParticle*)arrayMC->At(iLabelPos);
2637 if(!particleMCDaughterNeg || !particleMCDaughterPos)
2641 if((particleMCDaughterNeg->IsPhysicalPrimary()) || (particleMCDaughterPos->IsPhysicalPrimary()))
2645 Int_t iPdgCodeDaughterPos = particleMCDaughterPos->GetPdgCode();
2646 Int_t iPdgCodeDaughterNeg = particleMCDaughterNeg->GetPdgCode();
2649 Int_t iIndexMotherPos = particleMCDaughterPos->GetMother();
2650 Int_t iIndexMotherNeg = particleMCDaughterNeg->GetMother();
2652 if((iIndexMotherNeg < 0) || (iIndexMotherNeg >= iNTracksMC) || (iIndexMotherPos < 0) || (iIndexMotherPos >= iNTracksMC))
2656 if(iIndexMotherNeg != iIndexMotherPos)
2660 AliAODMCParticle* particleMCMother = (AliAODMCParticle*)arrayMC->At(iIndexMotherPos);
2661 if(!particleMCMother)
2665 Int_t iPdgCodeMother = particleMCMother->GetPdgCode();
2668 if((iPdgCodeMother != iPdgCodeK0s) && (TMath::Abs(iPdgCodeMother) != iPdgCodeLambda))
2673 Bool_t bV0MCIsK0s = ((iPdgCodeMother == iPdgCodeK0s) && (iPdgCodeDaughterPos == +iPdgCodePion) && (iPdgCodeDaughterNeg == -iPdgCodePion));
2675 Bool_t bV0MCIsLambda = ((iPdgCodeMother == +iPdgCodeLambda) && (iPdgCodeDaughterPos == +iPdgCodeProton) && (iPdgCodeDaughterNeg == -iPdgCodePion));
2677 Bool_t bV0MCIsALambda = ((iPdgCodeMother == -iPdgCodeLambda) && (iPdgCodeDaughterPos == +iPdgCodePion) && (iPdgCodeDaughterNeg == -iPdgCodeProton));
2679 Double_t dPtV0Gen = particleMCMother->Pt();
2680 Double_t dRapV0Gen = particleMCMother->Y();
2681 Double_t dEtaV0Gen = particleMCMother->Eta();
2687 if(bPrintCuts) printf(
"Rec->Gen: Applying cut: V0 |eta|: < %g\n",
fdCutEtaV0Max);
2694 if(bPrintCuts) printf(
"Rec->Gen: Applying cut: V0 |y|: < %g\n",
fdCutRapV0Max);
2702 Int_t iIndexMotherOfMother = particleMCMother->GetMother();
2703 AliAODMCParticle* particleMCMotherOfMother = 0;
2704 if(iIndexMotherOfMother >= 0)
2705 particleMCMotherOfMother = (AliAODMCParticle*)arrayMC->At(iIndexMotherOfMother);
2707 Int_t iPdgCodeMotherOfMother = 0;
2708 if(particleMCMotherOfMother)
2709 iPdgCodeMotherOfMother = particleMCMotherOfMother->GetPdgCode();
2717 Bool_t bV0MCComesFromXi = ((particleMCMotherOfMother) && ((iPdgCodeMotherOfMother == 3322) || (iPdgCodeMotherOfMother == 3312)));
2718 Bool_t bV0MCComesFromAXi = ((particleMCMotherOfMother) && ((iPdgCodeMotherOfMother == -3322) || (iPdgCodeMotherOfMother == -3312)));
2721 Double_t dx = dPrimVtxMCX - particleMCMother->Xv();
2722 Double_t dy = dPrimVtxMCY - particleMCMother->Yv();
2723 Double_t dz = dPrimVtxMCZ - particleMCMother->Zv();
2724 Double_t dDistPrimary = TMath::Sqrt(dx * dx + dy * dy + dz * dz);
2725 Bool_t bV0MCIsPrimaryDist = (dDistPrimary < dDistPrimaryMax);
2736 if(bV0MCIsK0s && bV0MCIsPrimaryDist)
2739 Double_t valueEtaK[3] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen};
2742 Double_t valueEtaDKNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2744 Double_t valueEtaDKPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2751 Double_t valueKInJCMC[4] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2753 Double_t valueEtaKIn[5] = {dMassV0K0s, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2756 Double_t valueEtaDKJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2758 Double_t valueEtaDKJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2762 if(bV0MCIsK0s && !bV0MCIsPrimaryDist)
2769 if(bIsCandidateLambda)
2772 if(bV0MCIsLambda && bV0MCIsPrimaryDist)
2775 Double_t valueEtaL[3] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen};
2778 Double_t valueEtaDLNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2780 Double_t valueEtaDLPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2787 Double_t valueLInJCMC[4] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2789 Double_t valueEtaLIn[5] = {dMassV0Lambda, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2792 Double_t valueEtaDLJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2794 Double_t valueEtaDLJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2799 if(bV0MCIsLambda && bV0MCComesFromXi)
2801 Double_t valueFDLIncl[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), 0.};
2809 Double_t valueFDLInJets[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), jet->Pt()};
2813 if(bV0MCIsLambda && !bV0MCIsPrimaryDist && !bV0MCComesFromXi)
2820 if(bIsCandidateALambda)
2823 if(bV0MCIsALambda && bV0MCIsPrimaryDist)
2826 Double_t valueEtaAL[3] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen};
2829 Double_t valueEtaDALNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2831 Double_t valueEtaDALPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, 0};
2838 Double_t valueALInJCMC[4] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen, jet->Pt()};
2840 Double_t valueEtaALIn[5] = {dMassV0ALambda, dPtV0Gen, dEtaV0Gen, jet->Pt(), dEtaV0Gen - jet->Eta()};
2843 Double_t valueEtaDALJCNeg[6] = {0, particleMCDaughterNeg->Eta(), particleMCDaughterNeg->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2845 Double_t valueEtaDALJCPos[6] = {1, particleMCDaughterPos->Eta(), particleMCDaughterPos->Pt(), dEtaV0Gen, dPtV0Gen, jet->Pt()};
2850 if(bV0MCIsALambda && bV0MCComesFromAXi)
2852 Double_t valueFDALIncl[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), 0.};
2860 Double_t valueFDALInJets[3] = {dPtV0Gen, particleMCMotherOfMother->Pt(), jet->Pt()};
2864 if(bV0MCIsALambda && !bV0MCIsPrimaryDist && !bV0MCComesFromAXi)
2873 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"End of V0 loop");
2879 pool->UpdatePool(arrayMixedEventAdd);
2890 for(
Int_t iPartMC = 0; iPartMC < iNTracksMC; iPartMC++)
2893 AliAODMCParticle* particleMC = (AliAODMCParticle*)arrayMC->At(iPartMC);
2898 Int_t iPdgCodeParticleMC = particleMC->GetPdgCode();
2901 if((iPdgCodeParticleMC == 3312) && (TMath::Abs(particleMC->Y()) < 0.5))
2905 if((iPdgCodeParticleMC == -3312) && (TMath::Abs(particleMC->Y()) < 0.5))
2910 if((iPdgCodeParticleMC != iPdgCodeK0s) && (TMath::Abs(iPdgCodeParticleMC) != iPdgCodeLambda))
2915 Bool_t bV0MCIsK0s = (iPdgCodeParticleMC == iPdgCodeK0s);
2917 Bool_t bV0MCIsLambda = (iPdgCodeParticleMC == +iPdgCodeLambda);
2919 Bool_t bV0MCIsALambda = (iPdgCodeParticleMC == -iPdgCodeLambda);
2921 Double_t dPtV0Gen = particleMC->Pt();
2922 Double_t dRapV0Gen = particleMC->Y();
2923 Double_t dEtaV0Gen = particleMC->Eta();
2928 if(bPrintCuts) printf(
"Gen: Applying cut: V0 |eta|: < %g\n",
fdCutEtaV0Max);
2935 if(bPrintCuts) printf(
"Gen: Applying cut: V0 |y|: < %g\n",
fdCutRapV0Max);
2961 Double_t dx = dPrimVtxMCX - particleMC->Xv();
2962 Double_t dy = dPrimVtxMCY - particleMC->Yv();
2963 Double_t dz = dPrimVtxMCZ - particleMC->Zv();
2964 Double_t dDistPrimary = TMath::Sqrt(dx * dx + dy * dy + dz * dz);
2965 Bool_t bV0MCIsPrimaryDist = (dDistPrimary < dDistPrimaryMax);
2968 AliAODJet* jetMC = 0;
2969 Bool_t bIsMCV0InJet = kFALSE;
2972 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Searching for gen V0 in %d MC jets", iNJetSel));
2973 for(
Int_t iJet = 0; iJet < iNJetSel; iJet++)
2975 jetMC = (AliAODJet*)arrayJetSel->At(iJet);
2976 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Checking if gen V0 in MC jet %d", iJet));
2979 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"gen V0 found in MC jet %d", iJet));
2980 bIsMCV0InJet = kTRUE;
2989 if(bV0MCIsK0s && bV0MCIsPrimaryDist)
2996 Double_t valueEtaKInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
3002 if(bV0MCIsLambda && bV0MCIsPrimaryDist)
3009 Double_t valueEtaLInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
3015 if(bV0MCIsALambda && bV0MCIsPrimaryDist)
3022 Double_t valueEtaALInGen[4] = {dPtV0Gen, dEtaV0Gen, jetMC->Pt(), dEtaV0Gen - jetMC->Eta()};
3029 arrayJetSel->Delete();
3031 arrayJetPerp->Delete();
3032 delete arrayJetPerp;
3042 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"End");
3049 if(!IsCandK0s && !IsCandLambda && !IsCandALambda)
3057 AliAODTrack* trackNeg = (AliAODTrack*)vZero->GetDaughter(1);
3058 AliAODTrack* trackPos = (AliAODTrack*)vZero->GetDaughter(0);
3061 for(
Int_t i = 0; i < 2; i++)
3063 AliAODTrack* track = (AliAODTrack*)vZero->GetDaughter(i);
3065 fh1QAV0TPCRefit[iIndexHisto]->Fill(track->IsOn(AliAODTrack::kTPCrefit));
3066 Double_t nCrossedRowsTPC = track->GetTPCClusterInfo(2, 1);
3068 Int_t findable = track->GetTPCNclsF();
3079 fh2QAV0EtaRows[iIndexHisto]->Fill(track->Eta(), nCrossedRowsTPC);
3080 fh2QAV0PtRows[iIndexHisto]->Fill(track->Pt(), nCrossedRowsTPC);
3081 fh2QAV0PhiRows[iIndexHisto]->Fill(track->Phi(), nCrossedRowsTPC);
3087 fh1QAV0Pt[iIndexHisto]->Fill(track->Pt());
3088 fTotalCharge += track->Charge();
3093 fh1QAV0DCAVtx[iIndexHisto]->Fill(TMath::Abs(vZero->DcaNegToPrimVertex()));
3094 fh1QAV0DCAVtx[iIndexHisto]->Fill(TMath::Abs(vZero->DcaPosToPrimVertex()));
3098 fh1QAV0DCAV0[iIndexHisto]->Fill(vZero->DcaV0Daughters());
3102 fh1QAV0Cos[iIndexHisto]->Fill(vZero->CosPointingAngle(vtx));
3107 vZero->GetSecondaryVtx(xyz);
3108 Double_t r2 = xyz[0] * xyz[0] + xyz[1] * xyz[1];
3109 fh1QAV0R[iIndexHisto]->Fill(TMath::Sqrt(r2));
3111 Double_t dAlpha = vZero->AlphaV0();
3112 Double_t dPtArm = vZero->PtArmV0();
3162 fh2ArmPod[iIndexHisto]->Fill(dAlpha, dPtArm);
3187 if(!part1 || !part2)
3190 TVector3 vecMom2(part2->Px(), part2->Py(), part2->Pz());
3191 TVector3 vecMom1(part1->Px(), part1->Py(), part1->Pz());
3192 Double_t dR = vecMom2.DeltaR(vecMom1);
3203 AliError(
"No particle!");
3208 AliError(
"No jet array!");
3211 Int_t iNJets = array->GetEntriesFast();
3214 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Warning: No jets");
3217 AliVParticle* jet = 0;
3218 for(
Int_t iJet = 0; iJet < iNJets; iJet++)
3220 jet = (AliVParticle*)array->At(iJet);
3223 AliError(Form(
"Failed to load jet %d/%d!", iJet, iNJets));
3235 if(fDebug > 3) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Generating random cone...");
3236 TLorentzVector vecCone;
3237 AliAODJet* part = 0;
3239 Int_t iNTrialsMax = 10;
3241 for(
Int_t iTry = 0; iTry < iNTrialsMax; iTry++)
3243 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Try %d", iTry));
3244 dEta = dEtaConeMax * (2 *
fRandom->Rndm() - 1.);
3245 dPhi = TMath::TwoPi() *
fRandom->Rndm();
3246 vecCone.SetPtEtaPhiM(1., dEta, dPhi, 0.);
3247 part =
new AliAODJet(vecCone);
3251 if(fDebug > 1) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Random cone successfully generated");
3259 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Failed to find a random cone");
3270 AliError(
"No jet container!");
3277 std::vector<std::vector<Double_t> > vecListClusters;
3278 if(fDebug > 3) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Loop over %d clusters.", iNClTot));
3279 for(
Int_t ij = 0; ij < iNClTot; ij++)
3284 if(fDebug > 4) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Cluster %d/%d used as accepted cluster %d.", ij, iNClTot,
int(vecListClusters.size())));
3289 dDensityBg = dPtBg / dAreaBg;
3290 std::vector<Double_t> vecCluster;
3291 vecCluster.push_back(ij);
3292 vecCluster.push_back(dDensityBg);
3293 vecListClusters.push_back(vecCluster);
3295 iNCl = vecListClusters.size();
3298 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Warning: Too little clusters");
3307 std::sort(vecListClusters.begin(), vecListClusters.end(),
CompareClusters);
3316 Int_t iIndexMed = 0;
3317 if(TMath::Odd(iNCl))
3319 iIndex = (
Int_t)(0.5 * (iNCl + 1));
3326 iIndex = ((
fRandom->Rndm() > 0.5) ? iIndex1 : iIndex2);
3329 iIndexMed =
Int_t((vecListClusters[iIndex])[0]);
3331 if(fDebug > 1) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Getting median cluster %d/%d ok, rho = %g", iIndexMed, iNClTot, (vecListClusters[iIndex])[1]));
3334 if(TMath::Abs(clusterMed->Eta()) > dEtaConeMax)
3336 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Chosen median cluster is out of window |eta| < %g, eta = %g", dEtaConeMax, clusterMed->Eta()));
3349 if(TMath::Abs(dR) < dEpsilon)
3351 AliError(Form(
"Too small radius: %g < %g!", dR, dEpsilon));
3357 return TMath::Pi() * dR * dR;
3358 return dR * dR * TMath::ACos(dD / dR) - dD * TMath::Sqrt(dR * dR - dD * dD);
3364 if(!part1 || !part2)
3367 TVector3 vecMom2(part2->Px(), part2->Py(), part2->Pz());
3368 TVector3 vecMom1(part1->Px(), part1->Py(), part1->Pz());
3369 Double_t dR = vecMom2.DeltaR(vecMom1);
3378 if(fAOD->IsPileupFromSPD())
3380 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"SPD pile-up");
3385 AliAODVertex* vertex = fAOD->GetPrimaryVertex();
3388 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"No vertex");
3391 Int_t iNContribMin = 3;
3392 if(vertex->GetNContributors() < iNContribMin)
3394 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Not enough contributors, %d", vertex->GetNContributors()));
3398 TString vtxTitle(vertex->GetTitle());
3399 if(vtxTitle.Contains(
"TPCVertex"))
3401 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"TPC vertex");
3406 if(TMath::Abs(zVertex) > dVtxZCut)
3408 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Cut on z, %g", zVertex));
3414 AliAODVertex* vertexSPD = fAOD->GetPrimaryVertexSPD();
3417 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"No SPD vertex");
3420 Double_t zVertexSPD = vertexSPD->GetZ();
3421 if(TMath::Abs(zVertex - zVertexSPD) > dDeltaZMax)
3423 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Cut on Delta z = %g - %g = %g", zVertex, zVertexSPD, zVertex - zVertexSPD));
3430 Double_t radiusSq = yVertex * yVertex + xVertex * xVertex;
3431 if(radiusSq > dVtxR2Cut)
3433 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Cut on r, %g", radiusSq));
3439 fdCentrality = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
3442 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Negative centrality");
3445 if((dCentCutUp < 0) || (dCentCutLo < 0) || (dCentCutUp > 100) || (dCentCutLo > 100) || (dCentCutLo > dCentCutUp))
3447 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__,
"Wrong centrality limits");
3452 if(fDebug > 0) printf(
"%s %s::%s: %s\n", GetName(), ClassName(), __func__, Form(
"Centrality cut, %g",
fdCentrality));
3485 return Form(
"%s-%s %%", lowerEdge.Data(), upperEdge.Data());
3494 return 0.0044 + 0.0004 * (pt - 1.);
3497 return 0.0023 + 0.00034 * (pt - 1.);
3507 return (cluster1[1] > cluster2[1]);
THnSparse * fhnV0InJetK0s[fgkiNBinsCent]
V0 inclusive, in a centrality bin, m_V0; pt_V0; eta_V0.
THnSparse * fhnV0InRndALambda[fgkiNBinsCent]
static const Double_t fgkdMassK0sMax
AliJetContainer * fJetsCont
THnSparse * fh3V0LambdaInJetPtMassMCRec[fgkiNBinsCent]
TH2D * fh2QAV0PtPtALambdaPeak[fgkiNQAIndeces]
TH1D * fh1DistanceV0JetsALambda[fgkiNBinsCent]
distance in eta-phi between V0 and the closest jet
void SetParticlePtCut(Double_t cut)
Double_t fdCutEtaDaughterMax
AliEmcalJet * GetMedianCluster(AliJetContainer *cont, Double_t dEtaConeMax) const
TH2D * fh2QAV0PhiPtLambdaPeak[fgkiNQAIndeces]
K0S candidate in peak: azimuth; pt.
static const Int_t fgkiNBinsPtV0
Double_t fdPtProtonPIDMax
Double_t GetRhoVal() const
TH1D * fh1V0InvMassALambdaAll[fgkiNCategV0]
number of ALambda candidates after various cuts
TH2D * fh2QAV0EtaEtaLambda[fgkiNQAIndeces]
TList * fOutputListMC
Output list for checking cuts.
TH2D * fh2V0ALambdaPtMassMCRec[fgkiNBinsCent]
static const Int_t fgkiNBinsPtJet
THnSparse * fhnPtDaughterK0s[fgkiNBinsCent]
V0 in no-jet events, in a centrality bin, m_V0; pt_V0; eta_V0.
TH1D * fh1V0AXiPtMCGen[fgkiNBinsCent]
TH1D * fh1QAV0TPCRows[fgkiNQAIndeces]
TPC refit on vs off.
TH2D * fh2QAV0NClRows[fgkiNQAIndeces]
azimuth vs TPC rows
THnSparse * fh3V0K0sInJetPtMassMCRec[fgkiNBinsCent]
pt spectrum of generated K0s in jet
TH2D * fh2PtJetPtTrackLeading[fgkiNBinsCent]
jet phi
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t fdCutAreaPercJetMin
THnSparse * fhnV0ALambdaBulkMCFD[fgkiNBinsCent]
TH1D * fh1QAV0Status[fgkiNQAIndeces]
TH1D * fh1V0LambdaPtMCGen[fgkiNBinsCent]
THnSparse * fh3V0K0sInJetEtaPtMCGen[fgkiNBinsCent]
mass-pt spectrum of successfully reconstructed K0s in jet
THnSparse * fh3CCMassCorrelKNotL
mass correlation of candidates
TH1D * fh1V0K0sPtMCGen[fgkiNBinsCent]
pt jet vs angle V0-jet, in centrality bins
void SetPtBiasJetTrack(Float_t b)
Double_t fdCutDCAToPrimVtxMin
Container with name, TClonesArray and cuts for particles.
THnSparse * fhnV0InMedLambda[fgkiNBinsCent]
TH2D * fh2V0LambdaMCResolMPt[fgkiNBinsCent]
V0 in jets, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
TH1D * fh1V0ALambdaPtMCGen[fgkiNBinsCent]
TH2D * fh2QAV0EtaPtLambdaPeak[fgkiNQAIndeces]
TH2D * fh2V0LambdaEtaPtMCGen[fgkiNBinsCent]
THnSparse * fh3CCMassCorrelBoth
Lambda candidates in K0s peak.
TH1D * fh1QACTau2D[fgkiNQAIndeces]
radial distance between prim vtx and decay vertex
TH1D * fh1EventCounterCutCent[fgkiNBinsCent]
number of events for different selection steps
Double_t GetD(const AliVParticle *part1, const AliVParticle *part2) const
TH1D * fh1EventCounterCut
Tracks.
TH1D * fh1V0InvMassK0sCent[fgkiNBinsCent]
number of K0s candidates per event, in centrality bins
Double_t fdCutRadiusDecayMin
THnSparse * fhnV0OutJetLambda[fgkiNBinsCent]
THnSparse * fhnV0InPerpK0s[fgkiNBinsCent]
V0 in jet cones, in a centrality bin, m_V0; pt_V0; eta_V0; pt_jet.
TH2D * fh2VtxXY[fgkiNBinsCent]
z coordinate of the primary vertex for events used in mixed events
TH1D * fh1V0CandPerEventCentK0s[fgkiNBinsCent]
Armenteros-Podolanski.
TH2D * fh2V0K0sPtMassMCRec[fgkiNBinsCent]
pt spectrum of all generated K0s in event
TH1D * fh1EtaJet[fgkiNBinsCent]
pt spectra of jets for normalisation of in-jet V0 spectra
TH2D * fh2QAV0PtPtLambdaPeak[fgkiNQAIndeces]
Double_t fdCutCrossedRowsOverFindMax
static const Int_t fgkiNQAIndeces
TH2D * fh2V0PtJetAngleALambda[fgkiNBinsCent]
pt correlations, in a centrality bin, pt_neg-daughter;pt_pos-daughter;pt_V0;pt_jet;pt_leading-track ...
TH1D * fh1V0CounterCentK0s[fgkiNBinsCent]
pseudorapidity vs clusters
TH2D * fh2V0ALambdaEtaPtMCGen[fgkiNBinsCent]
void SetPercAreaCut(Float_t p)
THnSparse * fhnV0ALambdaInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
THnSparse * fh3CCMassCorrelLNotK
mass correlation of candidates
THnSparse * fhnV0ALambdaInJetsMCFD[fgkiNBinsCent]
TH2D * fh2V0LambdaInJetPtMCGen[fgkiNBinsCent]
V0 inclusive, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
TH1D * fh1VtxZME[fgkiNBinsCent]
z coordinate of the primary vertex
TList * fOutputListQA
Output list for standard analysis results.
THnSparse * fh3V0ALambdaEtaPtMassMCRec[fgkiNBinsCent]
Double_t fdCutCrossedRowsOverFindMin
Double_t GetNormalPhi(Double_t phi)
THnSparse * fhnV0InJetLambda[fgkiNBinsCent]
Double_t fdCutPtTrackJetMin
TH2D * fh2CCK0s
Armenteros-Podolanski.
THnSparse * fhnV0NoJetK0s[fgkiNBinsCent]
V0 outside jet cones, in a centrality bin, m_V0; pt_V0; eta_V0.
TH2D * fh2QAV0PhiRows[fgkiNQAIndeces]
pt vs TPC rows
TH1D * fh1QAV0TPCRefit[fgkiNQAIndeces]
online vs offline reconstructed V0 candidates
static const Double_t fgkdDeltaPhiMax
THnSparse * fhnV0LambdaInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH2D * fh2V0K0sEtaPtMCGen[fgkiNBinsCent]
pt spectrum of false reconstructed K0s in event
THnSparse * fhnV0InRndK0s[fgkiNBinsCent]
V0 in perpendicular cones, in a centrality bin, m_V0; pt_V0; eta_V0; pt_jet.
TH2D * fh2EtaPhiRndCone[fgkiNBinsCent]
number of generated random cones in centrality bins
TH1D * fh1V0InvMassK0sAll[fgkiNCategV0]
number of K0s candidates after various cuts
THnSparse * fhnV0K0sInJetsDaughterEtaPtPtMCRec[fgkiNBinsCent]
mass-eta-pt spectrum of successfully reconstructed K0s in jet
TH1D * fh1V0CounterCentALambda[fgkiNBinsCent]
static Double_t fgkiCentMixBinRanges[fgkiNBinsCentMix+1]
THnSparse * fhnV0InPerpLambda[fgkiNBinsCent]
AliAODJet * GetRandomCone(const TClonesArray *array, Double_t dEtaConeMax, Double_t dDistance) const
TList * fOutputListStd
event pool manager
AliParticleContainer * GetParticleContainer(Int_t i=0) const
TH1D * fh1NMedConeCent
random cone eta-pT
TH1D * fh1AreaExcluded
median-cluster cone eta-phi
TH1D * fh1QAV0RapK0s[fgkiNQAIndeces]
daughters azimuth vs azimuth
Bool_t fbFindableClusters
AliEmcalJet * GetLeadingJet(const char *opt="")
Bool_t fbIsPbPb
Output list for MC related results.
static const Int_t fgkiNCategV0
distance in eta-phi between V0 and the closest jet
TH2D * fh2V0LambdaMCPtGenPtRec[fgkiNBinsCent]
AliEventPoolManager * fPoolMgr
random-number generator
ClassImp(AliAnalysisTaskV0sInJetsEmcal) const Int_t AliAnalysisTaskV0sInJetsEmcal
static const Double_t fgkdMassLambdaMax
TH1D * fh1VtxZ[fgkiNBinsCent]
number of tracks vs centrality
THnSparse * fhnV0CorrelSELambda[fgkiNBinsCent]
pt correlations, in a centrality bin, pt_neg-daughter;pt_pos-daughter;pt_V0;pt_jet;pt_leading-track ...
TH1D * fh1V0K0sPtMCRecFalse[fgkiNBinsCent]
pt-mass spectrum of successfully reconstructed K0s in event
Double_t fdCutPtDaughterMin
TH1D * fh1DistanceV0JetsK0s[fgkiNBinsCent]
distance in eta-phi between jets within events
TH1D * fh1V0CandPerEvent
xy coordinates of the primary vertex
TH1D * fh1V0XiPtMCGen[fgkiNBinsCent]
TH2D * fh2ArmPodK0s[fgkiNQAIndeces]
daughters pt vs pt, in mass peak
TH1D * fh1EventCent
number of events for different selection steps and different centralities
THnSparse * fhnV0InclusiveLambda[fgkiNBinsCent]
Double_t fdCutRadiusDecayMax
static const Int_t fgkiNBinsCent
TH2D * fh2ArmPodLambda[fgkiNQAIndeces]
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
virtual ~AliAnalysisTaskV0sInJetsEmcal()
static const Int_t fgkiCentBinRanges[fgkiNBinsCent]
TH2D * fh2QAV0EtaEtaALambda[fgkiNQAIndeces]
THnSparse * fh3V0ALambdaInJetPtMassMCRec[fgkiNBinsCent]
static const Double_t fgkdMassLambdaMin
static const Double_t fgkdBinsPtJet[2]
THnSparse * fhnV0LambdaInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH2D * fh2ArmPod[fgkiNQAIndeces]
lifetime calculated in xyz
static const Int_t fgkiNBinsPtV0InitInJet
TH2D * fh2V0K0sMCResolMPt[fgkiNBinsCent]
V0 in jets, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
Double_t fdDistanceV0JetMax
TH1D * fh1DistanceV0JetsLambda[fgkiNBinsCent]
distance in eta-phi between V0 and the closest jet
TH1D * fh1QAV0DCAVtx[fgkiNQAIndeces]
charge
TH2D * fh2QAV0PhiPtK0sPeak[fgkiNQAIndeces]
TH1D * fh1NJetPerEvent[fgkiNBinsCent]
pt of trigger track
void SetFilterHybridTracks(Bool_t f)
THnSparse * fhnV0InRndLambda[fgkiNBinsCent]
THnSparse * fh3V0LambdaInJetEtaPtMCGen[fgkiNBinsCent]
TH2D * fh2EtaPtJet[fgkiNBinsCent]
jet eta
Int_t GetCentralityBinEdge(Int_t index)
TH2D * fh2QAV0PhiPhiLambda[fgkiNQAIndeces]
Double_t fdCutNSigmadEdxMax
TH1D * fh1QAV0Charge[fgkiNQAIndeces]
pt daughter
THnSparse * fh3V0LambdaEtaPtMassMCRec[fgkiNBinsCent]
void UserCreateOutputObjects()
TH1D * fh1PhiJet[fgkiNBinsCent]
jet eta-pT
TH1D * fh1QAV0RapALambda[fgkiNQAIndeces]
TLorentzVector SubtractRhoVect(Double_t rho, Bool_t save=kFALSE)
THnSparse * fh4V0LambdaInJetEtaPtMassMCRec[fgkiNBinsCent]
static const Int_t fgkiNBinsCentMix
static const Int_t fgkiNBinsZVtxMix
void FillQAHistogramV0(AliAODVertex *vtx, const AliAODv0 *vZero, Int_t iIndexHisto, Bool_t IsCandK0s, Bool_t IsCandLambda, Bool_t IsCandALambda, Bool_t IsInPeakK0s, Bool_t IsInPeakLambda, Bool_t IsInPeakALambda)
THnSparse * fhnV0NoJetALambda[fgkiNBinsCent]
static const Int_t fgkiNBinsMassK0s
TH1D * fh1DistanceJets[fgkiNBinsCent]
area of excluded cones for outside-cones V0s
TH1D * fh1QAV0DCAV0[fgkiNQAIndeces]
DCA of daughters to prim vtx.
THnSparse * fh4V0K0sInJetEtaPtMassMCRec[fgkiNBinsCent]
eta-pt spectrum of generated K0s in jet
AliJetContainer * fJetsBgCont
Signal Jets.
TH1D * fh1EventCent2Jets
number of events for different centralities
TH1D * fh1NRndConeCent
number of jets per event
static const Double_t fgkdMassK0sMin
TList * fOutputListCuts
Output list for quality assurance.
TH2D * fh2V0ALambdaMCResolMPt[fgkiNBinsCent]
V0 in jets, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
THnSparse * fhnV0LambdaBulkMCFD[fgkiNBinsCent]
TH2D * fh2V0K0sMCPtGenPtRec[fgkiNBinsCent]
K0s mass resolution vs pt.
THnSparse * fhnV0InPerpALambda[fgkiNBinsCent]
static const Double_t fgkdDeltaPhiMin
TH1D * fh1V0CounterCentLambda[fgkiNBinsCent]
K0s generated pt vs reconstructed pt.
TH1D * fh1EventCent2NoJets
number of events for different centralities
THnSparse * fhnV0InMedALambda[fgkiNBinsCent]
THnSparse * fhnV0OutJetALambda[fgkiNBinsCent]
THnSparse * fhnV0CorrelMEK0s[fgkiNBinsCent]
V0-jet phi,eta correlations in same events, in a centrality bin, m_V0; pt_V0; eta_V0; pt_jet; delta-p...
TRandom * fRandom
Output AOD event.
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)
TH2D * fh2V0ALambdaInJetPtMCGen[fgkiNBinsCent]
V0 inclusive, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
THnSparse * fhnV0InclusiveALambda[fgkiNBinsCent]
THnSparse * fhnV0InclusiveK0s[fgkiNBinsCent]
V0 invariant mass, in centrality bins.
TH1D * fh1V0CandPerEventCentALambda[fgkiNBinsCent]
TH2D * fh2V0ALambdaMCPtGenPtRec[fgkiNBinsCent]
TH2D * fh2QAV0EtaPtK0sPeak[fgkiNQAIndeces]
V0 invariant mass for each selection steps.
TH1D * fh1QAV0TPCRowsFind[fgkiNQAIndeces]
findable clusters
TH1D * fh1PtJet[fgkiNBinsCent]
number of V0 cand per event
TH2D * fh2PtJetPtTrigger[fgkiNBinsCent]
pt_jet; pt of leading jet track
THnSparse * fhnV0CorrelSEK0s[fgkiNBinsCent]
pt correlations, in a centrality bin, pt_neg-daughter;pt_pos-daughter;pt_V0;pt_jet;pt_leading-track ...
TH2D * fh2QAV0EtaNCl[fgkiNQAIndeces]
clusters vs TPC rows
static const Int_t fgkiNBinsPtV0Init
TH1D * fh1V0InvMassLambdaAll[fgkiNCategV0]
number of Lambda candidates after various cuts
static const Int_t fgkiNBinsPtJetInit
TH1D * fh1PtTrigger[fgkiNBinsCent]
pt_jet; pt of trigger track
static Double_t fgkiZVtxMixBinRanges[fgkiNBinsZVtxMix+1]
void SetParticleEtaLimits(Double_t min, Double_t max)
Double_t MassPeakSigmaOld(Double_t pt, Int_t particle)
Float_t GetJetRadius() const
TH1D * fh1EventCent2
number of events for different centralities
Int_t GetCentralityBinIndex(Double_t centrality)
TH2D * fh2V0PtJetAngleLambda[fgkiNBinsCent]
TH1D * fh1V0LambdaPtMCRecFalse[fgkiNBinsCent]
TH2D * fh2V0LambdaPtMassMCRec[fgkiNBinsCent]
TH1D * fh1V0InvMassLambdaCent[fgkiNBinsCent]
THnSparse * fhnV0K0sInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
eta-pt-mass spectrum of successfully reconstructed K0s in event
static const Int_t fgkiNBinsMassLambda
TH1D * fh1V0CandPerEventCentLambda[fgkiNBinsCent]
TH2D * fh2QAV0PtRows[fgkiNQAIndeces]
pseudorapidity vs TPC rows
TH1D * fh1QACTau3D[fgkiNQAIndeces]
lifetime calculated in xy
THnSparse * fh3V0ALambdaInJetEtaPtMCGen[fgkiNBinsCent]
TString GetCentBinLabel(Int_t index)
AliTrackContainer * fTracksCont
Background Jets.
Bool_t fbCorrelations
[%] centrality
AliEmcalJet * GetAcceptJet(Int_t i) const
THnSparse * fhnV0NoJetLambda[fgkiNBinsCent]
static const Double_t fgkdBinsPtV0[2]
TH2D * fh2QAV0PtPtK0sPeak[fgkiNQAIndeces]
V0 rapidity.
TH2D * fh2V0PtJetAngleK0s[fgkiNBinsCent]
V0-jet phi,eta correlations in mixed events, in a centrality bin, m_V0; pt_V0; eta_V0; pt_jet; delta-...
Base task in the EMCAL jet framework.
AliAnalysisTaskV0sInJetsEmcal()
Represent a jet reconstructed using the EMCal jet framework.
TH2D * fh2EventCentTracks
number of events for different centralities
Bool_t IsSelectedForJets(AliAODEvent *fAOD, Double_t dVtxZCut, Double_t dVtxR2Cut, Double_t dCentCutLo, Double_t dCentCutUp, Double_t dDeltaZMax=-1)
Double_t fdCutNCrossedRowsTPCMin
TH2D * fh2ArmPodALambda[fgkiNQAIndeces]
TH2D * fh2QAV0EtaRows[fgkiNQAIndeces]
pseudorapidity
TH2D * fh2EtaPhiMedCone[fgkiNBinsCent]
number of found median-cluster cones in centrality bins
THnSparse * fhnV0InMedK0s[fgkiNBinsCent]
V0 in random cones, in a centrality bin, m_V0; pt_V0; eta_V0.
THnSparse * fhnV0CorrelMELambda[fgkiNBinsCent]
Double_t fdCutDCADaughtersMax
THnSparse * fhnV0ALambdaInclDaughterEtaPtPtMCRec[fgkiNBinsCent]
TH2D * fh2CCLambda
K0s candidates in Lambda peak.
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)
void UserCreateOutputObjects()
TH2D * fh2QAV0EtaEtaK0s[fgkiNQAIndeces]
daughters pseudorapidity vs V0 pt, in mass peak
Bool_t OverlapWithJets(const TClonesArray *array, const AliVParticle *cone, Double_t dDistance) const
virtual AliVParticle * GetNextAcceptParticle()
THnSparse * fhnV0ALambdaInclMCFD[fgkiNBinsCent]
TH2D * fh2QAV0PhiPhiALambda[fgkiNQAIndeces]
void SetJetEtaLimits(Float_t min, Float_t max)
TH1D * fh1V0InvMassALambdaCent[fgkiNBinsCent]
THnSparse * fhnV0InJetALambda[fgkiNBinsCent]
THnSparse * fh4V0ALambdaInJetEtaPtMassMCRec[fgkiNBinsCent]
TH2D * fh2QAV0PhiPhiK0s[fgkiNQAIndeces]
daughters pseudorapidity vs pseudorapidity
TH1D * fh1QAV0Cos[fgkiNQAIndeces]
DCA between daughters.
THnSparse * fhnPtDaughterALambda[fgkiNBinsCent]
Double_t AreaCircSegment(Double_t dRadius, Double_t dDistance) const
Container for jet within the EMCAL jet framework.
Bool_t IsParticleInCone(const AliVParticle *part1, const AliVParticle *part2, Double_t dRMax) const
THnSparse * fhnV0LambdaInJetsMCFD[fgkiNBinsCent]
TH2D * fh2QAV0PhiPtALambdaPeak[fgkiNQAIndeces]
Lambda candidate in peak: azimuth; pt.
TH1D * fh1QAV0Pt[fgkiNQAIndeces]
anti-Lambda candidate in peak: azimuth; pt
static bool CompareClusters(const std::vector< Double_t > cluster1, const std::vector< Double_t > cluster2)
TH1D * fh1QAV0R[fgkiNQAIndeces]
cosine of pointing angle (CPA)
TH1D * fh1V0ALambdaPtMCRecFalse[fgkiNBinsCent]
THnSparse * fh3V0K0sEtaPtMassMCRec[fgkiNBinsCent]
eta-pt spectrum of all generated K0s in event
TH2D * fh2V0K0sInJetPtMCGen[fgkiNBinsCent]
V0 inclusive, reconstructed: charge_daughter; eta_daughter; pt_daughter; eta_V0; pt_V0; pt_jet...
TH2D * fh2QAV0EtaPtALambdaPeak[fgkiNQAIndeces]
THnSparse * fhnPtDaughterLambda[fgkiNBinsCent]
THnSparse * fhnV0LambdaInclMCFD[fgkiNBinsCent]
TH1D * fh1QAV0Eta[fgkiNQAIndeces]
ratio rows/clusters
TH1D * fh1QAV0RapLambda[fgkiNQAIndeces]
THnSparse * fhnV0OutJetK0s[fgkiNBinsCent]
V0 in medium cones, in a centrality bin, m_V0; pt_V0; eta_V0.
TH1D * fh1QAV0TPCFindable[fgkiNQAIndeces]
crossed TPC pad rows