Skip to content

Commit cc67b48

Browse files
added nsigmatpc selection for the V0 daughters in the cascade routine, moved the invariant mass histogram construction after the nsigmatpc selection on the K
1 parent f93e4e1 commit cc67b48

1 file changed

Lines changed: 40 additions & 14 deletions

File tree

PWGLF/TableProducer/Nuspex/LFTreeCreatorClusterStudies.cxx

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,10 @@ enum V0Selections {
111111
enum CascSelections {
112112
kCascNoCut = 0,
113113
kCascTopology,
114+
kNSigmaTPCV0Daughters,
114115
kRejectedXi,
115-
kAcceptedOmega,
116116
kNSigmaTPC,
117+
kAcceptedOmega,
117118
kCascAll
118119
};
119120

@@ -274,12 +275,12 @@ struct LfTreeCreatorClusterStudies {
274275
{"photon_conversion_position", "Photon conversion position; #it{x} (cm); #it{y} (cm)", {HistType::kTH2F, {{250, -5.f, 5.f}, {250, -5.f, 5.f}}}},
275276
{"photon_conversion_position_layer", "Photon conversion position (ITS layers); #it{x} (cm); #it{y} (cm)", {HistType::kTH2F, {{100, -5.f, 5.f}, {100, -5.f, 5.f}}}},
276277
{"casc_dca_daughter_pairs", "DCA (xy) for cascade daughter pairs; DCA_{#it{xy}} (cm); counts", {HistType::kTH1F, {{100, -0.1, 0.1}}}},
277-
{"Xi_vs_Omega", "Mass Xi vs Omega; mass Omega (GeV/#it{c}^{2}); #it{m}_#Xi (GeV/#it{c}^{2})", {HistType::kTH2F, {{50, 1.f, 2.f}, {50, 1.f, 2.f}}}},
278+
{"Xi_vs_Omega", "Mass Xi vs Omega; #it{m}_{#Omega} (GeV/#it{c}^{2}); #it{m}_{#Xi} (GeV/#it{c}^{2})", {HistType::kTH2F, {{60, 1.5f, 2.1f}, {50, 1.1f, 1.6f}}}},
278279
{"massOmega", "Mass #Omega; signed #it{p}_{T} (GeV/#it{c}); #it{m}_{#Omega} (GeV/#it{c}^{2})", {HistType::kTH2F, {{100, -5.f, 5.f}, {400, 1.62f, 1.72f}}}},
279280
{"massOmegaMc", "Mass #Omega (MC); signed #it{p}_{T} (GeV/#it{c}); #it{m}_{#Omega} (GeV/#it{c}^{2})", {HistType::kTH2F, {{100, -5.f, 5.f}, {400, 1.62f, 1.72f}}}},
280-
{"massPi0", "Mass #pi^{0}; #it{m}_{#pi^{0}} (GeV/#it{c}^{2})", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
281-
{"massPi0Mc", "Mass #pi^{0} (MC); #it{m}_{#pi^{0}} (GeV/#it{c}^{2})", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
282-
{"massPi0WithBkg", "Mass #pi^{0} with Background; #it{m}_{#pi^{0}} (GeV/#it{c}^{2}); counts", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
281+
{"massPi0", "Mass #pi^{0}; #it{m}_{ee} (GeV/#it{c}^{2})", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
282+
{"massPi0Mc", "Mass #pi^{0} (MC); #it{m}_{ee} (GeV/#it{c}^{2})", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
283+
{"massPi0WithBkg", "Mass #pi^{0} with Background; #it{m}_{ee} (GeV/#it{c}^{2}); counts", {HistType::kTH1F, {{100, 0.0f, 0.200f}}}},
283284
{"zVtx", "Binning for the vertex z in cm; #it{z}_{vertex} (cm)", {HistType::kTH1F, {{100, -20.f, 20.f}}}},
284285
{"isPositive", "is the candidate positive?; isPositive; counts", {HistType::kTH1F, {{2, -0.5f, 1.5f}}}},
285286

@@ -472,6 +473,23 @@ struct LfTreeCreatorClusterStudies {
472473
return true;
473474
}
474475

476+
template <typename Track>
477+
bool selectPidV0Daughters(const Track& posTrack, const Track& negTrack, uint8_t v0Bitmask)
478+
{
479+
if (TESTBIT(v0Bitmask, Lambda)) {
480+
if (std::abs(posTrack.tpcNSigmaPr()) > v0settingNsigmatpcPr || std::abs(negTrack.tpcNSigmaPi()) > v0settingNsigmatpcPi) {
481+
return false;
482+
}
483+
} else if (TESTBIT(v0Bitmask, AntiLambda)) {
484+
if (std::abs(posTrack.tpcNSigmaPi()) > v0settingNsigmatpcPi || std::abs(negTrack.tpcNSigmaPr()) > v0settingNsigmatpcPr) {
485+
return false;
486+
}
487+
} else {
488+
return false;
489+
}
490+
return true;
491+
}
492+
475493
/**
476494
* Fill the histograms for the V0 candidate and return the mass of the V0
477495
*/
@@ -812,7 +830,7 @@ struct LfTreeCreatorClusterStudies {
812830
for (int i = 0; i < V0Selections::kV0All; i++)
813831
mHistograms.get<TH1>(HIST("v0_selections"))->GetXaxis()->SetBinLabel(i + 1, V0selectionLabels[i].c_str());
814832

815-
std::vector<std::string> CascSelectionLabels = {"All", "Topology", "Veto Xi", "Accepted Omega", "n#sigma_{TPC} K"};
833+
std::vector<std::string> CascSelectionLabels = {"All", "Topology", "n#sigma_{TPC} V0 daughters", "Veto Xi", "n#sigma_{TPC} K", "Accepted Omega"};
816834
for (int i = 0; i < CascSelections::kCascAll; i++)
817835
mHistograms.get<TH1>(HIST("casc_selections"))->GetXaxis()->SetBinLabel(i + 1, CascSelectionLabels[i].c_str());
818836

@@ -879,7 +897,6 @@ struct LfTreeCreatorClusterStudies {
879897

880898
const auto& posMcParticle = posTrack.mcParticle();
881899
const auto& negMcParticle = negTrack.mcParticle();
882-
883900
candidatePos.pdgCode = posMcParticle.pdgCode();
884901
candidateNeg.pdgCode = negMcParticle.pdgCode();
885902

@@ -894,7 +911,7 @@ struct LfTreeCreatorClusterStudies {
894911
}
895912

896913
template <bool isMC = false, typename Track>
897-
void fillKCand(const std::array<float, 3>& pv, aod::CascDatas::iterator const& cascade, const Track&)
914+
void fillKCand(const std::array<float, 3>& pv, aod::CascDatas::iterator const& cascade, const aod::V0Datas& v0s, const Track&)
898915
{
899916
mHistograms.fill(HIST("casc_selections"), CascSelections::kCascNoCut);
900917
const auto& bachelorTrack = cascade.template bachelor_as<Track>();
@@ -906,6 +923,15 @@ struct LfTreeCreatorClusterStudies {
906923
}
907924
mHistograms.fill(HIST("casc_selections"), CascSelections::kCascTopology);
908925

926+
const auto& posTrack = cascade.template posTrack_as<Track>();
927+
const auto& negTrack = cascade.template negTrack_as<Track>();
928+
uint8_t v0Bitmask = 0;
929+
SETBIT(v0Bitmask, bachelorTrack.sign() < 0 ? V0Type::Lambda : V0Type::AntiLambda);
930+
if (!selectPidV0Daughters(posTrack, negTrack, v0Bitmask)) {
931+
return;
932+
}
933+
mHistograms.fill(HIST("casc_selections"), CascSelections::kNSigmaTPCV0Daughters);
934+
909935
const float& massXi = cascade.mXi();
910936
const float& massOmega = cascade.mOmega();
911937
mHistograms.fill(HIST("Xi_vs_Omega"), massOmega, massXi);
@@ -914,17 +940,17 @@ struct LfTreeCreatorClusterStudies {
914940
return;
915941
}
916942
mHistograms.fill(HIST("casc_selections"), CascSelections::kRejectedXi);
943+
if (std::abs(bachelorTrack.tpcNSigmaKa()) > cascsettingNsigmatpc) {
944+
return;
945+
}
946+
mHistograms.fill(HIST("casc_selections"), CascSelections::kNSigmaTPC);
917947

918948
mHistograms.fill(HIST("massOmega"), cascade.pt() * bachelorTrack.sign(), massOmega);
919949
if (std::abs(massOmega - o2::constants::physics::MassOmegaMinus) > cascsettingMassWindowOmega) {
920950
return;
921951
}
922952
mHistograms.fill(HIST("casc_selections"), CascSelections::kAcceptedOmega);
923953

924-
if (std::abs(bachelorTrack.tpcNSigmaKa()) > cascsettingNsigmatpc) {
925-
return;
926-
}
927-
mHistograms.fill(HIST("casc_selections"), CascSelections::kNSigmaTPC);
928954
fillHistogramsParticle<PartID::ka, isMC>(bachelorTrack);
929955

930956
mClusterStudiesTable(
@@ -1262,7 +1288,7 @@ struct LfTreeCreatorClusterStudies {
12621288
}
12631289

12641290
for (const auto& cascade : cascades) {
1265-
fillKCand</*isMC*/ false>(PV, cascade, tracks);
1291+
fillKCand</*isMC*/ false>(PV, cascade, v0s, tracks);
12661292
}
12671293
}
12681294
PROCESS_SWITCH(LfTreeCreatorClusterStudies, processDataV0Casc, "process Data V0 and cascade", false);
@@ -1370,7 +1396,7 @@ struct LfTreeCreatorClusterStudies {
13701396
}
13711397

13721398
for (const auto& cascade : cascades) {
1373-
fillKCand</*isMC*/ true>(PV, cascade, tracks);
1399+
fillKCand</*isMC*/ true>(PV, cascade, v0s, tracks);
13741400
}
13751401
}
13761402
PROCESS_SWITCH(LfTreeCreatorClusterStudies, processMcV0Casc, "process Mc V0 and cascade", false);

0 commit comments

Comments
 (0)