Skip to content

Commit 78c1280

Browse files
[PWGLF] changes in the tree creator for cluster size studies (#17237)
1 parent c5313c8 commit 78c1280

1 file changed

Lines changed: 54 additions & 20 deletions

File tree

PWGLF/TableProducer/Nuspex/LFTreeCreatorClusterStudies.cxx

Lines changed: 54 additions & 20 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
*/
@@ -585,8 +603,9 @@ struct LfTreeCreatorClusterStudies {
585603
mHistograms.fill(HIST(cNames[partID]) + HIST("/nSigmaTPC"), track.p() * track.sign(), nsigmaTpc);
586604
mHistograms.fill(HIST(cNames[partID]) + HIST("/nSigmaITS"), track.p() * track.sign(), nsigmaIts);
587605
mHistograms.fill(HIST(cNames[partID]) + HIST("/nSigmaTOF"), track.p() * track.sign(), nsigmaTof);
588-
if (partID == static_cast<int>(PartID::de) || partID == static_cast<int>(PartID::he))
606+
if (partID == static_cast<int>(PartID::de) || partID == static_cast<int>(PartID::he)) {
589607
mHistograms.fill(HIST(cNames[partID]) + HIST("/TOFmass"), track.p() * track.sign(), massTof);
608+
}
590609
mHistograms.fill(HIST(cNames[partID]) + HIST("/pmatching"), correctedTpcInnerParam * track.sign(), (correctedTpcInnerParam - track.p()) / correctedTpcInnerParam);
591610
}
592611

@@ -740,7 +759,7 @@ struct LfTreeCreatorClusterStudies {
740759
}
741760

742761
const auto& timestamp = bc.timestamp();
743-
o2::parameters::GRPMagField* grpmag = 0x0;
762+
o2::parameters::GRPMagField* grpmag = nullptr;
744763

745764
auto grpmagPath{"GLO/Config/GRPMagField"};
746765
grpmag = mccdb->getForTimeStamp<o2::parameters::GRPMagField>("GLO/Config/GRPMagField", timestamp);
@@ -805,24 +824,29 @@ struct LfTreeCreatorClusterStudies {
805824
LOG(info) << "resolution: " << mBBparamsDe[5];
806825

807826
std::vector<std::string> collisionSelectionLabels = {"All", "sel8", "z_{VTX} < 10 cm"};
808-
for (int i = 0; i < Selections::kAll; i++)
827+
for (int i = 0; i < Selections::kAll; i++) {
809828
mHistograms.get<TH1>(HIST("collision_selections"))->GetXaxis()->SetBinLabel(i + 1, collisionSelectionLabels[i].c_str());
829+
}
810830

811831
std::vector<std::string> V0selectionLabels = {"All", "daughter track quality", "V0 topology", "V0 mass selection"};
812-
for (int i = 0; i < V0Selections::kV0All; i++)
832+
for (int i = 0; i < V0Selections::kV0All; i++) {
813833
mHistograms.get<TH1>(HIST("v0_selections"))->GetXaxis()->SetBinLabel(i + 1, V0selectionLabels[i].c_str());
834+
}
814835

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

819841
std::vector<std::string> ESelectionLabels = {"All", "Track quality", "Primary", "Pid", "#pi^{0}"};
820-
for (int i = 0; i < ESelections::kEAll; i++)
842+
for (int i = 0; i < ESelections::kEAll; i++) {
821843
mHistograms.get<TH1>(HIST("e_selections"))->GetXaxis()->SetBinLabel(i + 1, ESelectionLabels[i].c_str());
844+
}
822845

823846
std::vector<std::string> V0TypeLabels = {"K0s", "#Lambda", "#bar{#Lambda}", "Photon"};
824-
for (int i = 0; i < V0Type::V0TypeAll; i++)
847+
for (int i = 0; i < V0Type::V0TypeAll; i++) {
825848
mHistograms.get<TH1>(HIST("v0_type"))->GetXaxis()->SetBinLabel(i + 1, V0TypeLabels[i].c_str());
849+
}
826850
}
827851

828852
template <bool isMC = false, typename Tracks>
@@ -879,7 +903,6 @@ struct LfTreeCreatorClusterStudies {
879903

880904
const auto& posMcParticle = posTrack.mcParticle();
881905
const auto& negMcParticle = negTrack.mcParticle();
882-
883906
candidatePos.pdgCode = posMcParticle.pdgCode();
884907
candidateNeg.pdgCode = negMcParticle.pdgCode();
885908

@@ -906,6 +929,15 @@ struct LfTreeCreatorClusterStudies {
906929
}
907930
mHistograms.fill(HIST("casc_selections"), CascSelections::kCascTopology);
908931

932+
const auto& posTrack = cascade.template posTrack_as<Track>();
933+
const auto& negTrack = cascade.template negTrack_as<Track>();
934+
uint8_t v0Bitmask = 0;
935+
SETBIT(v0Bitmask, bachelorTrack.sign() < 0 ? V0Type::Lambda : V0Type::AntiLambda);
936+
if (!selectPidV0Daughters(posTrack, negTrack, v0Bitmask)) {
937+
return;
938+
}
939+
mHistograms.fill(HIST("casc_selections"), CascSelections::kNSigmaTPCV0Daughters);
940+
909941
const float& massXi = cascade.mXi();
910942
const float& massOmega = cascade.mOmega();
911943
mHistograms.fill(HIST("Xi_vs_Omega"), massOmega, massXi);
@@ -914,17 +946,17 @@ struct LfTreeCreatorClusterStudies {
914946
return;
915947
}
916948
mHistograms.fill(HIST("casc_selections"), CascSelections::kRejectedXi);
949+
if (std::abs(bachelorTrack.tpcNSigmaKa()) > cascsettingNsigmatpc) {
950+
return;
951+
}
952+
mHistograms.fill(HIST("casc_selections"), CascSelections::kNSigmaTPC);
917953

918954
mHistograms.fill(HIST("massOmega"), cascade.pt() * bachelorTrack.sign(), massOmega);
919955
if (std::abs(massOmega - o2::constants::physics::MassOmegaMinus) > cascsettingMassWindowOmega) {
920956
return;
921957
}
922958
mHistograms.fill(HIST("casc_selections"), CascSelections::kAcceptedOmega);
923959

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

930962
mClusterStudiesTable(
@@ -973,8 +1005,9 @@ struct LfTreeCreatorClusterStudies {
9731005
}
9741006
mHistograms.fill(HIST(cNames[kPartID]) + HIST("/trackSelections"), NucleiSelections::kNucleiNoCut);
9751007

976-
if (track.itsNCls() < desettingNclsIts)
1008+
if (track.itsNCls() < desettingNclsIts) {
9771009
return;
1010+
}
9781011
mHistograms.fill(HIST(cNames[kPartID]) + HIST("/trackSelections"), NucleiSelections::kNucleiNClsIts);
9791012

9801013
const float tpcNsigma = kPartID == static_cast<int>(PartID::de) ? track.tpcNSigmaDe() : computeNSigmaTPCHe3(track);
@@ -1415,8 +1448,9 @@ struct LfTreeCreatorClusterStudies {
14151448
const auto& negTracks_thisCollision = negTracksMc.sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), mcache);
14161449

14171450
for (const auto& [posTrack, negTrack] : o2::soa::combinations(o2::soa::CombinationsFullIndexPolicy(posTracks_thisCollision, negTracks_thisCollision))) {
1418-
if (!posTrack.has_mcParticle() || !negTrack.has_mcParticle())
1451+
if (!posTrack.has_mcParticle() || !negTrack.has_mcParticle()) {
14191452
continue;
1453+
}
14201454

14211455
fillElectronTableFromPi0Dalitz</*isMC*/ true>(posTrack, negTrack);
14221456
}

0 commit comments

Comments
 (0)