Skip to content

Commit c6f337d

Browse files
authored
[PWGLF] Adapt cascadeMLSelectionTreeCreator to derived MC and fix MC signal selection (#18364)
1 parent c49c25a commit c6f337d

2 files changed

Lines changed: 47 additions & 23 deletions

File tree

‎PWGLF/DataModel/LFStrangenessMLTables.h‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ DECLARE_SOA_COLUMN(DCACascDaughters, dcaCascDaughters, float);
180180
DECLARE_SOA_COLUMN(DCAv0topv, dcav0topv, float);
181181
DECLARE_SOA_COLUMN(V0PA, v0PA, float);
182182
DECLARE_SOA_COLUMN(CascPA, cascPA, float);
183+
DECLARE_SOA_COLUMN(BachBaryonCosPA, bachBaryonCosPA, float);
184+
DECLARE_SOA_COLUMN(BachBaryonDCAxyToPV, bachBaryonDCAxyToPV, float);
183185

184186
DECLARE_SOA_COLUMN(IsXiMinus, isXiMinus, bool);
185187
DECLARE_SOA_COLUMN(IsXiPlus, isXiPlus, bool);
@@ -231,6 +233,8 @@ DECLARE_SOA_TABLE(CascMLCandidates, "AOD", "CAMLCANDIDATES",
231233
cascmlcandidates::DCAv0topv,
232234
cascmlcandidates::V0PA,
233235
cascmlcandidates::CascPA,
236+
cascmlcandidates::BachBaryonCosPA,
237+
cascmlcandidates::BachBaryonDCAxyToPV,
234238
cascmlcandidates::IsXiMinus,
235239
cascmlcandidates::IsXiPlus,
236240
cascmlcandidates::IsOmegaMinus,

‎PWGLF/TableProducer/Strangeness/cascadeMLSelectionTreeCreator.cxx‎

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,15 @@ struct cascadeMLSelectionTreeCreator {
139139
float dcav0topv;
140140
float v0CosPA;
141141
float cascCosPA;
142+
float bachBaryonCosPA;
143+
float bachBaryonDCAxyToPV;
142144

143145
// reserved for MC operation
144146
bool isXiMinus;
145147
bool isXiPlus;
146148
bool isOmegaMinus;
147149
bool isOmegaPlus;
148-
} cascadeCandidate;
150+
} cascadeCandidate{};
149151

150152
// Process candidate and store properties in object
151153
template <typename TCollision, typename TCascObject>
@@ -161,10 +163,10 @@ struct cascadeMLSelectionTreeCreator {
161163
// Track quality
162164
cascadeCandidate.posITSCls = posTrackExtra.itsNCls();
163165
cascadeCandidate.negITSCls = negTrackExtra.itsNCls();
164-
cascadeCandidate.bachITSCls = negTrackExtra.itsNCls();
166+
cascadeCandidate.bachITSCls = bachTrackExtra.itsNCls();
165167
cascadeCandidate.posITSClsSizes = posTrackExtra.itsClusterSizes();
166168
cascadeCandidate.negITSClsSizes = negTrackExtra.itsClusterSizes();
167-
cascadeCandidate.bachITSClsSizes = negTrackExtra.itsClusterSizes();
169+
cascadeCandidate.bachITSClsSizes = bachTrackExtra.itsClusterSizes();
168170
cascadeCandidate.posTPCRows = posTrackExtra.tpcCrossedRows();
169171
cascadeCandidate.negTPCRows = negTrackExtra.tpcCrossedRows();
170172
cascadeCandidate.bachTPCRows = bachTrackExtra.tpcCrossedRows();
@@ -207,43 +209,59 @@ struct cascadeMLSelectionTreeCreator {
207209
cascadeCandidate.dcav0topv = cand.dcav0topv(coll.posX(), coll.posY(), coll.posZ());
208210
cascadeCandidate.v0CosPA = cand.v0cosPA(coll.posX(), coll.posY(), coll.posZ());
209211
cascadeCandidate.cascCosPA = cand.casccosPA(coll.posX(), coll.posY(), coll.posZ());
212+
cascadeCandidate.bachBaryonCosPA = cand.bachBaryonCosPA();
213+
cascadeCandidate.bachBaryonDCAxyToPV = cand.bachBaryonDCAxyToPV();
210214

211215
// MC flags
212216
cascadeCandidate.isXiMinus = false;
213217
cascadeCandidate.isXiPlus = false;
214218
cascadeCandidate.isOmegaMinus = false;
215219
cascadeCandidate.isOmegaPlus = false;
216220

217-
if constexpr (requires { cand.pdgCode(); }) {
218-
cascadeCandidate.isXiMinus = (cand.pdgCode() == 3312);
219-
cascadeCandidate.isXiPlus = (cand.pdgCode() == -3312);
220-
cascadeCandidate.isOmegaMinus = (cand.pdgCode() == 3334);
221-
cascadeCandidate.isOmegaPlus = (cand.pdgCode() == -3334);
221+
if constexpr (requires { cand.has_cascMCCore(); }) {
222+
if (cand.has_cascMCCore()) {
223+
auto cascMC = cand.template cascMCCore_as<soa::Join<aod::CascMCCores, aod::CascMCCollRefs>>();
224+
cascadeCandidate.isXiMinus = (cascMC.pdgCode() == 3312);
225+
cascadeCandidate.isXiPlus = (cascMC.pdgCode() == -3312);
226+
cascadeCandidate.isOmegaMinus = (cascMC.pdgCode() == 3334);
227+
cascadeCandidate.isOmegaPlus = (cascMC.pdgCode() == -3334);
228+
}
222229
}
223230

224231
// base topological selections
225-
if (cascadeCandidate.v0CosPA < v0setting_cospa)
232+
if (cascadeCandidate.v0CosPA < v0setting_cospa) {
226233
return;
227-
if (cascadeCandidate.dcaV0Daughters > v0setting_dcav0dau)
234+
}
235+
if (cascadeCandidate.dcaV0Daughters > v0setting_dcav0dau) {
228236
return;
229-
if (cascadeCandidate.dcapostopv < v0setting_dcapostopv)
237+
}
238+
if (std::abs(cascadeCandidate.dcapostopv) < v0setting_dcapostopv) {
230239
return;
231-
if (cascadeCandidate.dcapostopv < v0setting_dcanegtopv)
240+
}
241+
if (std::abs(cascadeCandidate.dcanegtopv) < v0setting_dcanegtopv) {
232242
return;
233-
if (cascadeCandidate.dcabachtopv < cascadesetting_dcabachtopv)
243+
}
244+
if (std::abs(cascadeCandidate.dcabachtopv) < cascadesetting_dcabachtopv) {
234245
return;
235-
if (cascadeCandidate.v0radius < v0setting_radius)
246+
}
247+
if (cascadeCandidate.v0radius < v0setting_radius) {
236248
return;
237-
if (cascadeCandidate.cascCosPA < cascadesetting_cospa)
249+
}
250+
if (cascadeCandidate.cascCosPA < cascadesetting_cospa) {
238251
return;
239-
if (cascadeCandidate.dcaCascDaughters > cascadesetting_dcacascdau)
252+
}
253+
if (cascadeCandidate.dcaCascDaughters > cascadesetting_dcacascdau) {
240254
return;
241-
if (cascadeCandidate.cascradius < cascadesetting_cascradius)
255+
}
256+
if (cascadeCandidate.cascradius < cascadesetting_cascradius) {
242257
return;
243-
if (std::abs(cascadeCandidate.mLambdaDaughter - 1.116) > cascadesetting_v0masswindow)
258+
}
259+
if (std::abs(cascadeCandidate.mLambdaDaughter - 1.116) > cascadesetting_v0masswindow) {
244260
return;
245-
if (cascadeCandidate.dcav0topv < cascadesetting_mindcav0topv)
261+
}
262+
if (cascadeCandidate.dcav0topv < cascadesetting_mindcav0topv) {
246263
return;
264+
}
247265

248266
// Mass window selections
249267
cascadeCandidate.massWindows = 0;
@@ -312,6 +330,8 @@ struct cascadeMLSelectionTreeCreator {
312330
cascadeCandidate.dcav0topv,
313331
TMath::ACos(cascadeCandidate.v0CosPA),
314332
TMath::ACos(cascadeCandidate.cascCosPA),
333+
cascadeCandidate.bachBaryonCosPA,
334+
cascadeCandidate.bachBaryonDCAxyToPV,
315335

316336
// MC identity
317337
cascadeCandidate.isXiMinus,
@@ -320,17 +340,17 @@ struct cascadeMLSelectionTreeCreator {
320340
cascadeCandidate.isOmegaPlus);
321341
}
322342

323-
void processRealData(soa::Join<aod::StraCollisions, aod::StraCents>::iterator const& coll, soa::Join<aod::CascCores, aod::CascCollRefs, aod::CascExtras, aod::CascTOFNSigmas> const& cascades, dauTracks const&)
343+
void processRealData(soa::Join<aod::StraCollisions, aod::StraCents>::iterator const& coll, soa::Join<aod::CascCores, aod::CascCollRefs, aod::CascExtras, aod::CascBBs, aod::CascTOFNSigmas> const& cascades, dauTracks const&)
324344
{
325345
histos.fill(HIST("hEventCentrality"), coll.centFT0C());
326-
for (auto& casc : cascades) { // looping over lambdas
346+
for (const auto& casc : cascades) { // looping over cascades
327347
processCandidate(coll, casc);
328348
}
329349
}
330-
void processSimData(soa::Join<aod::StraCollisions, aod::StraCents>::iterator const& coll, soa::Join<aod::CascCores, aod::CascCollRefs, aod::CascExtras, aod::CascMCDatas, aod::CascTOFNSigmas> const& cascades, dauTracks const&)
350+
void processSimData(soa::Join<aod::StraCollisions, aod::StraCents>::iterator const& coll, soa::Join<aod::CascCores, aod::CascCollRefs, aod::CascExtras, aod::CascBBs, aod::CascCoreMCLabels, aod::CascTOFNSigmas> const& cascades, dauTracks const&, soa::Join<aod::CascMCCores, aod::CascMCCollRefs> const&)
331351
{
332352
histos.fill(HIST("hEventCentrality"), coll.centFT0C());
333-
for (auto& casc : cascades) { // looping over lambdas
353+
for (const auto& casc : cascades) { // looping over cascades
334354
processCandidate(coll, casc);
335355
}
336356
}

0 commit comments

Comments
 (0)