Skip to content

Commit 213a1b4

Browse files
fmazzascFrancesco Mazzaschi
andauthored
[PWGLF] Fix 3body data-linking + improve MC matching (#10041)
Co-authored-by: Francesco Mazzaschi <fmazzasc@alipap1.cern.ch>
1 parent d1774aa commit 213a1b4

File tree

2 files changed

+95
-124
lines changed

2 files changed

+95
-124
lines changed

PWGLF/TableProducer/Nuspex/decay3bodybuilder.cxx

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,7 +1983,7 @@ struct kfdecay3bodyDataLinkBuilder {
19831983
{
19841984
buildDataLink(decay3bodytable, vtxdatatable); // build ReducedDecay3Body -> KFDecay3BodyData link table
19851985
}
1986-
PROCESS_SWITCH(kfdecay3bodyDataLinkBuilder, processReduced, "Build data link table for reduced data.", true);
1986+
PROCESS_SWITCH(kfdecay3bodyDataLinkBuilder, processReduced, "Build data link table for reduced data.", false);
19871987
};
19881988

19891989
struct decay3bodyLabelBuilder {
@@ -2106,60 +2106,6 @@ struct decay3bodyLabelBuilder {
21062106
}
21072107
}
21082108
PROCESS_SWITCH(decay3bodyLabelBuilder, processBuildLabels, "Produce MC label tables", false);
2109-
2110-
void processBuildKFLabels(aod::KFDecay3BodysLinked const& decay3bodys, aod::KFVtx3BodyDatas const& vtx3bodydatas, MCLabeledTracksIU const&, aod::McParticles const&)
2111-
{
2112-
std::vector<int> lIndices;
2113-
lIndices.reserve(vtx3bodydatas.size());
2114-
for (int ii = 0; ii < vtx3bodydatas.size(); ii++) {
2115-
lIndices[ii] = -1;
2116-
}
2117-
2118-
for (auto& decay3body : decay3bodys) {
2119-
2120-
int lLabel = -1;
2121-
2122-
auto lTrack0 = decay3body.track0_as<MCLabeledTracksIU>();
2123-
auto lTrack1 = decay3body.track1_as<MCLabeledTracksIU>();
2124-
auto lTrack2 = decay3body.track2_as<MCLabeledTracksIU>();
2125-
2126-
// counter total
2127-
registry.fill(HIST("hLabelCounter"), 0.5);
2128-
2129-
// Association check
2130-
if (lTrack0.has_mcParticle() && lTrack1.has_mcParticle() && lTrack2.has_mcParticle()) {
2131-
auto lMCTrack0 = lTrack0.mcParticle_as<aod::McParticles>();
2132-
auto lMCTrack1 = lTrack1.mcParticle_as<aod::McParticles>();
2133-
auto lMCTrack2 = lTrack2.mcParticle_as<aod::McParticles>();
2134-
// check if mother is the same
2135-
if (lMCTrack0.has_mothers() && lMCTrack1.has_mothers() && lMCTrack2.has_mothers()) {
2136-
for (auto& lMother0 : lMCTrack0.mothers_as<aod::McParticles>()) {
2137-
for (auto& lMother1 : lMCTrack1.mothers_as<aod::McParticles>()) {
2138-
for (auto& lMother2 : lMCTrack2.mothers_as<aod::McParticles>()) {
2139-
if (lMother0.globalIndex() == lMother1.globalIndex() && lMother0.globalIndex() == lMother2.globalIndex()) {
2140-
lLabel = lMother1.globalIndex();
2141-
// fill counter same mother
2142-
registry.fill(HIST("hLabelCounter"), 1.5);
2143-
} // end same mother conditional
2144-
}
2145-
}
2146-
} // end loop over daughters
2147-
} // end conditional of mothers existing
2148-
} // end association check
2149-
2150-
// Construct label table, only vtx which corresponds to true mother and true daughters with a specified order is labeled
2151-
// for matter: track0->p, track1->pi, track2->bachelor
2152-
// for antimatter: track0->pi, track1->p, track2->bachelor
2153-
kfvtxfulllabels(lLabel);
2154-
if (decay3body.kfvtx3BodyDataId() != -1) {
2155-
lIndices[decay3body.kfvtx3BodyDataId()] = lLabel;
2156-
}
2157-
}
2158-
for (int ii = 0; ii < vtx3bodydatas.size(); ii++) {
2159-
kfvtxlabels(lIndices[ii]);
2160-
}
2161-
}
2162-
PROCESS_SWITCH(decay3bodyLabelBuilder, processBuildKFLabels, "Produce MC KF label tables", false);
21632109
};
21642110

21652111
struct decay3bodyInitializer {
@@ -2173,7 +2119,6 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
21732119
adaptAnalysisTask<decay3bodyBuilder>(cfgc),
21742120
adaptAnalysisTask<decay3bodyDataLinkBuilder>(cfgc),
21752121
adaptAnalysisTask<kfdecay3bodyDataLinkBuilder>(cfgc),
2176-
adaptAnalysisTask<decay3bodyLabelBuilder>(cfgc),
21772122
adaptAnalysisTask<decay3bodyInitializer>(cfgc),
21782123
};
21792124
}

PWGLF/TableProducer/Nuspex/threebodyKFTask.cxx

Lines changed: 94 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct threebodyKFTask {
5555

5656
// collision filter and preslice
5757
Filter collisionFilter = (aod::evsel::sel8 == true && nabs(aod::collision::posZ) < 10.f);
58-
Preslice<soa::Join<aod::KFVtx3BodyDatas, aod::McKFVtx3BodyLabels>> perCollisionVtx3BodyDatas = o2::aod::vtx3body::collisionId;
58+
Preslice<aod::KFVtx3BodyDatas> perCollisionVtx3BodyDatas = o2::aod::vtx3body::collisionId;
5959

6060
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject};
6161

@@ -69,7 +69,6 @@ struct threebodyKFTask {
6969
// mass spectrum of reco candidates
7070
registry.add<TH1>("hMassHypertriton", "Mass hypertriton", HistType::kTH1F, {{80, 2.96f, 3.04f, "#it{m}(p,#pi^{-},d) (GeV/#it{c}^{2})"}});
7171
registry.add<TH1>("hMassAntiHypertriton", "Mass anti-hypertriton", HistType::kTH1F, {{80, 2.96f, 3.04f, "#it{m}(#bar{p},#pi^{+},#bar{d}) (GeV/#it{c}^{2})"}});
72-
7372
// Dalitz diagrams of reco candidates
7473
registry.add<TH2>("hDalitzHypertriton", "Dalitz diagram", HistType::kTH2F, {axisM2PrPi, axisM2PiDe})->GetYaxis()->SetTitle("#it{m}^{2}(#pi^{-},d) ((GeV/#it{c}^{2})^{2})");
7574
registry.add<TH2>("hDalitzAntiHypertriton", "Dalitz diagram", HistType::kTH2F, {axisM2PrPi, axisM2PiDe})->GetXaxis()->SetTitle("#it{m}^{2}(#bar{p},#pi^{+}) ((GeV/#it{c}^{2})^{2})");
@@ -84,22 +83,65 @@ struct threebodyKFTask {
8483
LabelHist->GetXaxis()->SetBinLabel(1, "Total");
8584
LabelHist->GetXaxis()->SetBinLabel(2, "Have Same MotherTrack");
8685
LabelHist->GetXaxis()->SetBinLabel(3, "True H3L/Anti-H3L");
87-
registry.add<TH1>("hTrueHypertritonMCPt", "pT gen. of reco. H3L", HistType::kTH1F, {{100, 0.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"}});
88-
registry.add<TH1>("hTrueAntiHypertritonMCPt", "pT gen. of reco. Anti-H3L", HistType::kTH1F, {{100, 0.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"}});
86+
registry.add<TH1>("hTrueHypertritonMCPt", "pT gen. of reco. H3L", HistType::kTH1F, {{100, -10.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"}});
8987
registry.add<TH1>("hTrueHypertritonMCMass", "mass gen. of reco. H3L", HistType::kTH1F, {{40, 2.96f, 3.04f, "#it{m}(p,#pi^{-},d) (GeV/#it{c}^{2})"}});
90-
registry.add<TH1>("hTrueAntiHypertritonMCMass", "mass gen. of reco. Anti-H3L", HistType::kTH1F, {{40, 2.96f, 3.04f, "#it{m}(#bar{p},#pi^{+},#bar{d}) (GeV/#it{c}^{2})"}});
88+
registry.add<TH1>("hTrueHypMassWithMuReco", "mass gen. of reco. H3L", HistType::kTH1F, {{40, 2.96f, 3.04f, "#it{m}(p,#pi^{-},d) (GeV/#it{c}^{2})"}});
9189
registry.add<TH1>("hTrueHypertritonMCCTau", "#it{c}#tau gen. of reco. H3L", HistType::kTH1F, {{50, 0.0f, 50.0f, "#it{c}#tau(cm)"}});
92-
registry.add<TH1>("hTrueAntiHypertritonMCCTau", "#it{c}#tau gen. of reco. Anti-H3L", HistType::kTH1F, {{50, 0.0f, 50.0f, "#it{c}#tau(cm)"}});
9390
registry.add<TH1>("hTrueHypertritonMCMassPrPi", "inv. mass gen. of reco. V0 pair (H3L)", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{m}(p,#pi^{-}) (GeV/#it{c}^{2})"}});
94-
registry.add<TH1>("hTrueAntiHypertritonMCMassPrPi", "inv. mass gen. of reco. V0 pair (Anti-H3L)", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{m}(#bar{p},#pi^{+}) (GeV/#it{c}^{2})"}});
9591

9692
// for gen information of non reco candidates
9793
registry.add<TH1>("hTrueHypertritonMCMassPrPi_nonReco", "inv. mass gen. of non-reco. V0 pair (H3L)", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{m}(p,#pi^{-}) (GeV/#it{c}^{2})"}});
98-
registry.add<TH1>("hTrueAntiHypertritonMCMassPrPi_nonReco", "inv. mass gen. of non-reco. V0 pair (Anti-H3L)", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{m}(#bar{p},#pi^{+}) (GeV/#it{c}^{2})"}});
99-
registry.add<TH1>("hTrueHypertritonMCPtProton_nonReco", "Proton #it{p}_{T} gen. of non-reco. H3L", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{p}_{T}(p) (GeV/#it{c})"}});
10094
registry.add<TH1>("hTrueHypertritonMCPtPion_nonReco", "Pion #it{p}_{T} gen. of non-reco. H3L", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{p}_{T}(#pi) (GeV/#it{c})"}});
101-
registry.add<TH1>("hTrueAntiHypertritonMCPtProton_nonReco", "Proton #it{p}_{T} gen. of non-reco. Anti-H3L", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{p}_{T}(p) (GeV/#it{c})"}});
102-
registry.add<TH1>("hTrueAntiHypertritonMCPtPion_nonReco", "Pion #it{p}_{T} gen. of non-reco. Anti- H3L", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{p}_{T}(#pi) (GeV/#it{c})"}});
95+
registry.add<TH1>("hTrueHypertritonMCPtProton_nonReco", "Proton #it{p}_{T} gen. of non-reco. H3L", HistType::kTH1F, {{100, 0.0f, 6.0f, "#it{p}_{T}(p) (GeV/#it{c})"}});
96+
}
97+
98+
// helper function to check if a mother track is a true H3L/Anti-H3L
99+
template <typename MCTrack3B>
100+
int checkH3LTruth(MCTrack3B const& trackPr, MCTrack3B const& trackPi, MCTrack3B const& trackDe, bool& isMuonReco)
101+
{
102+
if (!trackPi.has_mcParticle() || !trackPr.has_mcParticle() || !trackDe.has_mcParticle()) {
103+
return -1;
104+
}
105+
auto mcParticlePr = trackPr.template mcParticle_as<aod::McParticles>();
106+
auto mcParticlePi = trackPi.template mcParticle_as<aod::McParticles>();
107+
auto mcParticleDe = trackDe.template mcParticle_as<aod::McParticles>();
108+
109+
if (abs(mcParticlePr.pdgCode()) != 2212 || abs(mcParticleDe.pdgCode()) != 1000010020) {
110+
return -1;
111+
}
112+
// check proton and deuteron mother
113+
int prDeMomID = -1;
114+
for (const auto& motherPr : mcParticlePr.template mothers_as<aod::McParticles>()) {
115+
for (const auto& motherDe : mcParticleDe.template mothers_as<aod::McParticles>()) {
116+
if (motherPr.globalIndex() == motherDe.globalIndex() && std::abs(motherPr.pdgCode()) == 1010010030) {
117+
prDeMomID = motherPr.globalIndex();
118+
break;
119+
}
120+
}
121+
}
122+
if (prDeMomID == -1) {
123+
return -1;
124+
}
125+
if (std::abs(mcParticlePi.pdgCode()) != 211 && std::abs(mcParticlePi.pdgCode()) != 13) {
126+
return -1;
127+
}
128+
// check if the pion track is a muon coming from a pi -> mu + vu decay, if yes, take the mother pi
129+
if (std::abs(mcParticlePi.pdgCode()) == 13) {
130+
for (const auto& motherPi : mcParticlePi.template mothers_as<aod::McParticles>()) {
131+
if (std::abs(motherPi.pdgCode()) == 211) {
132+
mcParticlePi = motherPi;
133+
isMuonReco = true;
134+
break;
135+
}
136+
}
137+
}
138+
// now loop over the pion mother
139+
for (const auto& motherPi : mcParticlePi.template mothers_as<aod::McParticles>()) {
140+
if (motherPi.globalIndex() == prDeMomID) {
141+
return motherPi.globalIndex();
142+
}
143+
}
144+
return -1;
103145
}
104146

105147
template <typename TCand>
@@ -146,7 +188,7 @@ struct threebodyKFTask {
146188
//------------------------------------------------------------------
147189
// process mc analysis
148190
void processMC(soa::Join<aod::Collisions, o2::aod::McCollisionLabels, aod::EvSels> const& collisions,
149-
soa::Join<aod::KFVtx3BodyDatas, aod::McKFVtx3BodyLabels> const& vtx3bodydatas,
191+
aod::KFVtx3BodyDatas const& vtx3bodydatas,
150192
aod::McParticles const& particlesMC,
151193
MCLabeledTracksIU const&,
152194
aod::McCollisions const& mcCollisions)
@@ -197,59 +239,43 @@ struct threebodyKFTask {
197239
auto track0 = vtx3bodydata.track0_as<MCLabeledTracksIU>();
198240
auto track1 = vtx3bodydata.track1_as<MCLabeledTracksIU>();
199241
auto track2 = vtx3bodydata.track2_as<MCLabeledTracksIU>();
200-
201-
if (vtx3bodydata.has_mcParticle() && vtx3bodydata.mcParticleId() > -1 && vtx3bodydata.mcParticleId() <= particlesMC.size()) { // mother to daughter association already checked in decay3bodybuilder
202-
auto MCvtx3body = vtx3bodydata.mcParticle();
203-
vtx3bodyPDGcode = MCvtx3body.pdgCode();
204-
registry.fill(HIST("hLabelCounter"), 1.5);
205-
if (MCvtx3body.has_daughters()) {
206-
auto lMCTrack0 = track0.mcParticle_as<aod::McParticles>();
207-
auto lMCTrack1 = track1.mcParticle_as<aod::McParticles>();
208-
auto lMCTrack2 = track2.mcParticle_as<aod::McParticles>();
209-
daughter0PDGcode = lMCTrack0.pdgCode();
210-
daughter1PDGcode = lMCTrack1.pdgCode();
211-
daughter2PDGcode = lMCTrack2.pdgCode();
212-
// check PDG codes
213-
if ((MCvtx3body.pdgCode() == motherPdgCode && lMCTrack0.pdgCode() == 2212 && lMCTrack1.pdgCode() == -211 && lMCTrack2.pdgCode() == bachelorPdgCode) ||
214-
(MCvtx3body.pdgCode() == -motherPdgCode && lMCTrack0.pdgCode() == 211 && lMCTrack1.pdgCode() == -2212 && lMCTrack2.pdgCode() == -bachelorPdgCode)) {
215-
genDecVtx = {lMCTrack0.vx(), lMCTrack0.vy(), lMCTrack0.vz()};
216-
MClifetime = RecoDecay::sqrtSumOfSquares(lMCTrack2.vx() - MCvtx3body.vx(), lMCTrack2.vy() - MCvtx3body.vy(), lMCTrack2.vz() - MCvtx3body.vz()) * o2::constants::physics::MassHyperTriton / MCvtx3body.p();
217-
genPhi = MCvtx3body.phi();
218-
genEta = MCvtx3body.eta();
219-
genRap = MCvtx3body.y();
220-
genP = MCvtx3body.p();
221-
genPt = MCvtx3body.pt();
222-
genPosP = lMCTrack0.p();
223-
genPosPt = lMCTrack0.pt();
224-
genNegP = lMCTrack1.p();
225-
genNegPt = lMCTrack1.pt();
226-
genBachP = lMCTrack2.p();
227-
genBachPt = lMCTrack2.pt();
228-
filledMothers.push_back(MCvtx3body.globalIndex());
229-
} // end is H3L or Anti-H3L
230-
if (MCvtx3body.pdgCode() == motherPdgCode && lMCTrack0.pdgCode() == 2212 && lMCTrack1.pdgCode() == -211 && lMCTrack2.pdgCode() == bachelorPdgCode) {
231-
isTrueH3L = true;
232-
double hypertritonMCMass = RecoDecay::m(array{array{lMCTrack0.px(), lMCTrack0.py(), lMCTrack0.pz()}, array{lMCTrack1.px(), lMCTrack1.py(), lMCTrack1.pz()}, array{lMCTrack2.px(), lMCTrack2.py(), lMCTrack2.pz()}}, array{o2::constants::physics::MassProton, o2::constants::physics::MassPionCharged, o2::constants::physics::MassDeuteron});
233-
MCmassPrPi = RecoDecay::m(array{array{lMCTrack0.px(), lMCTrack0.py(), lMCTrack0.pz()}, array{lMCTrack1.px(), lMCTrack1.py(), lMCTrack1.pz()}}, array{o2::constants::physics::MassProton, o2::constants::physics::MassPionCharged});
234-
registry.fill(HIST("hLabelCounter"), 2.5);
235-
registry.fill(HIST("hTrueHypertritonMCPt"), MCvtx3body.pt());
236-
registry.fill(HIST("hTrueHypertritonMCCTau"), MClifetime);
237-
registry.fill(HIST("hTrueHypertritonMCMass"), hypertritonMCMass);
238-
registry.fill(HIST("hTrueHypertritonMCMassPrPi"), MCmassPrPi);
239-
} // end is H3L
240-
if (MCvtx3body.pdgCode() == -motherPdgCode && lMCTrack0.pdgCode() == 211 && lMCTrack1.pdgCode() == -2212 && lMCTrack2.pdgCode() == -bachelorPdgCode) {
241-
isTrueAntiH3L = true;
242-
double antiHypertritonMCMass = RecoDecay::m(array{array{lMCTrack0.px(), lMCTrack0.py(), lMCTrack0.pz()}, array{lMCTrack1.px(), lMCTrack1.py(), lMCTrack1.pz()}, array{lMCTrack2.px(), lMCTrack2.py(), lMCTrack2.pz()}}, array{o2::constants::physics::MassPionCharged, o2::constants::physics::MassProton, o2::constants::physics::MassDeuteron});
243-
MCmassPrPi = RecoDecay::m(array{array{lMCTrack0.px(), lMCTrack0.py(), lMCTrack0.pz()}, array{lMCTrack1.px(), lMCTrack1.py(), lMCTrack1.pz()}}, array{o2::constants::physics::MassPionCharged, o2::constants::physics::MassProton});
244-
registry.fill(HIST("hLabelCounter"), 2.5);
245-
registry.fill(HIST("hTrueAntiHypertritonMCPt"), MCvtx3body.pt());
246-
registry.fill(HIST("hTrueAntiHypertritonMCCTau"), MClifetime);
247-
registry.fill(HIST("hTrueAntiHypertritonMCMass"), antiHypertritonMCMass);
248-
registry.fill(HIST("hTrueAntiHypertritonMCMassPrPi"), MCmassPrPi);
249-
} // end is Anti-H3L
250-
} // end has daughters
251-
} // end has matched MC particle
252-
242+
auto& trackPr = vtx3bodydata.track2sign() > 0 ? track0 : track1;
243+
auto& trackPi = vtx3bodydata.track2sign() > 0 ? track1 : track0;
244+
auto& trackDe = track2;
245+
246+
bool isMuonReco = false;
247+
int motherID = checkH3LTruth(trackPr, trackPi, trackDe, isMuonReco);
248+
if (motherID > 0) {
249+
int chargeFactor = vtx3bodydata.track2sign() > 0 ? 1 : -1;
250+
auto mcTrackHyp = particlesMC.rawIteratorAt(motherID);
251+
auto mcTrackPr = trackPr.mcParticle_as<aod::McParticles>();
252+
auto mcTrackPi = trackPi.mcParticle_as<aod::McParticles>();
253+
auto mcTrackDe = trackDe.mcParticle_as<aod::McParticles>();
254+
genPosPt = chargeFactor > 0 ? mcTrackPr.pt() : mcTrackPi.pt();
255+
genPosP = chargeFactor > 0 ? mcTrackPr.p() : mcTrackPi.p();
256+
genNegPt = chargeFactor < 0 ? mcTrackPr.pt() : mcTrackPi.pt();
257+
genNegP = chargeFactor < 0 ? mcTrackPr.p() : mcTrackPi.p();
258+
genBachPt = mcTrackDe.pt();
259+
genBachP = mcTrackDe.p();
260+
261+
genPhi = mcTrackHyp.phi();
262+
genEta = mcTrackHyp.eta();
263+
genPt = mcTrackHyp.pt();
264+
isTrueH3L = chargeFactor > 0;
265+
isTrueAntiH3L = chargeFactor < 0;
266+
MClifetime = RecoDecay::sqrtSumOfSquares(mcTrackPr.vx() - mcTrackHyp.vx(), mcTrackPr.vy() - mcTrackHyp.vy(), mcTrackPr.vz() - mcTrackHyp.vz()) * o2::constants::physics::MassHyperTriton / mcTrackHyp.p();
267+
double MCMass = RecoDecay::m(array{array{mcTrackPr.px(), mcTrackPr.py(), mcTrackPr.pz()}, array{mcTrackPi.px(), mcTrackPi.py(), mcTrackPi.pz()}, array{mcTrackDe.px(), mcTrackDe.py(), mcTrackDe.pz()}}, array{o2::constants::physics::MassProton, o2::constants::physics::MassPionCharged, o2::constants::physics::MassDeuteron});
268+
MCmassPrPi = RecoDecay::m(array{array{mcTrackPr.px(), mcTrackPr.py(), mcTrackPr.pz()}, array{mcTrackPi.px(), mcTrackPi.py(), mcTrackPi.pz()}}, array{o2::constants::physics::MassProton, o2::constants::physics::MassPionCharged});
269+
registry.fill(HIST("hLabelCounter"), 2.5);
270+
registry.fill(HIST("hTrueHypertritonMCPt"), mcTrackHyp.pt() * chargeFactor);
271+
registry.fill(HIST("hTrueHypertritonMCCTau"), MClifetime);
272+
registry.fill(HIST("hTrueHypertritonMCMass"), MCMass);
273+
registry.fill(HIST("hTrueHypertritonMCMassPrPi"), MCmassPrPi);
274+
if (isMuonReco) {
275+
registry.fill(HIST("hTrueHypMassWithMuReco"), MCMass);
276+
}
277+
filledMothers.push_back(mcTrackHyp.globalIndex());
278+
}
253279
outputMCTable( // filled for each reconstructed candidate (in KFVtx3BodyDatas)
254280
vtx3bodydata.mass(),
255281
vtx3bodydata.x(), vtx3bodydata.y(), vtx3bodydata.z(),
@@ -390,9 +416,9 @@ struct threebodyKFTask {
390416
}
391417
}
392418
genMCmassPrPi = RecoDecay::m(array{antiProtonMom, piPlusMom}, array{o2::constants::physics::MassProton, o2::constants::physics::MassPionCharged});
393-
registry.fill(HIST("hTrueAntiHypertritonMCMassPrPi_nonReco"), genMCmassPrPi);
394-
registry.fill(HIST("hTrueAntiHypertritonMCPtProton_nonReco"), RecoDecay::sqrtSumOfSquares(antiProtonMom[0], antiProtonMom[1]));
395-
registry.fill(HIST("hTrueAntiHypertritonMCPtPion_nonReco"), RecoDecay::sqrtSumOfSquares(piPlusMom[0], piPlusMom[1]));
419+
registry.fill(HIST("hTrueHypertritonMCMassPrPi_nonReco"), genMCmassPrPi);
420+
registry.fill(HIST("hTrueHypertritonMCPtProton_nonReco"), RecoDecay::sqrtSumOfSquares(antiProtonMom[0], antiProtonMom[1]));
421+
registry.fill(HIST("hTrueHypertritonMCPtPion_nonReco"), RecoDecay::sqrtSumOfSquares(piPlusMom[0], piPlusMom[1]));
396422
} else {
397423
continue; // stop if particle is no true H3L or Anti-H3L
398424
}

0 commit comments

Comments
 (0)