@@ -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