@@ -82,6 +82,7 @@ struct HfTaskOmegac0ToOmegaPiQa {
8282 using OmegaC0CandsMcKF = soa::Filtered<soa::Join<aod::HfCandToOmegaPi, aod::HfSelToOmegaPi, aod::HfOmegacKf, aod::HfToOmegaPiMCRec>>;
8383 using Omegac0CandsMl = soa::Filtered<soa::Join<aod::HfCandToOmegaPi, aod::HfSelToOmegaPi, aod::HfMlSelOmegacToOmegaPi>>;
8484 using Omegac0CandsMlKF = soa::Filtered<soa::Join<aod::HfCandToOmegaPi, aod::HfSelToOmegaPi, aod::HfMlSelOmegacToOmegaPi, aod::HfOmegacKf>>;
85+ using Omegac0CandsMlMc = soa::Filtered<soa::Join<aod::HfCandToOmegaPi, aod::HfSelToOmegaPi, aod::HfMlSelOmegacToOmegaPi, aod::HfToOmegaPiMCRec>>;
8586 using Omegac0CandsMlMcKF = soa::Filtered<soa::Join<aod::HfCandToOmegaPi, aod::HfSelToOmegaPi, aod::HfMlSelOmegacToOmegaPi, aod::HfOmegacKf, aod::HfToOmegaPiMCRec>>;
8687
8788 using Omegac0Gen = soa::Filtered<soa::Join<aod::McParticles, aod::HfToOmegaPiMCGen>>;
@@ -99,7 +100,7 @@ struct HfTaskOmegac0ToOmegaPiQa {
99100
100101 Preslice<Omegac0Cands> candOmegacPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
101102 Preslice<Omegac0CandsKF> candOmegacKFPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
102- // Preslice<Omegac0CandsMl> candOmegacMlPerCollision = aod::hf_cand_xic0_omegac0::collisionId; // Implementation still needed for ML DCAFitter
103+ Preslice<Omegac0CandsMl> candOmegacMlPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
103104 Preslice<Omegac0CandsMlKF> candOmegacKFMlPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
104105
105106 PresliceUnsorted<CollisionsWithMcLabels> colPerMcCollision = aod::mccollisionlabel::mcCollisionId;
@@ -117,10 +118,12 @@ struct HfTaskOmegac0ToOmegaPiQa {
117118
118119 void init (InitContext&)
119120 {
120- std::array<bool , 15 > doprocess{doprocessDataDCAFitter, doprocessDataDCAFitterFT0C, doprocessDataDCAFitterFT0M,
121+ std::array<bool , 20 > doprocess{doprocessDataDCAFitter, doprocessDataDCAFitterMl, doprocessDataDCAFitterFT0C, doprocessDataDCAFitterMlFT0C,
122+ doprocessDataDCAFitterFT0M, doprocessDataDCAFitterMlFT0M,
121123 doprocessDataKFParticle, doprocessDataKFParticleMl, doprocessDataKFParticleFT0C, doprocessDataKFParticleMlFT0C,
122124 doprocessDataKFParticleFT0M, doprocessDataKFParticleMlFT0M,
123- doprocessMcDCAFitter, doprocessMcDCAFitterFT0M,
125+ doprocessMcDCAFitter, doprocessMcDCAFitterMl,
126+ doprocessMcDCAFitterFT0M, doprocessMcDCAFitterMlFT0M,
124127 doprocessMcKFParticle, doprocessMcKFParticleMl,
125128 doprocessMcKFParticleFT0M, doprocessMcKFParticleMlFT0M};
126129 if ((std::accumulate (doprocess.begin (), doprocess.end (), 0 )) != 1 ) {
@@ -141,23 +144,23 @@ struct HfTaskOmegac0ToOmegaPiQa {
141144 std::vector<AxisSpec> axes = {thnAxisMass, thnAxisPt, thnAxisY};
142145 std::vector<AxisSpec> axesMcGen = {thnAxisPt, thnAxisPtB, thnAxisY, thnAxisOrigin};
143146
144- if (doprocessDataDCAFitterFT0C || doprocessDataDCAFitterFT0M || doprocessDataKFParticleFT0C || doprocessDataKFParticleMlFT0C || doprocessDataKFParticleFT0M || doprocessDataKFParticleMlFT0M) {
147+ if (doprocessDataDCAFitterFT0C || doprocessDataDCAFitterMlFT0C|| doprocessDataDCAFitterFT0M || doprocessDataDCAFitterMlFT0M || doprocessDataKFParticleFT0C || doprocessDataKFParticleMlFT0C || doprocessDataKFParticleFT0M || doprocessDataKFParticleMlFT0M) {
145148 axes.push_back (thnAxisCent);
146149 axes.emplace_back (thnConfigAxisNumPvContr);
147150 }
148151
149- if (doprocessMcDCAFitterFT0M || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
152+ if (doprocessMcDCAFitterFT0M || doprocessMcDCAFitterMlFT0M || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
150153 axes.push_back (thnAxisCentMc);
151154 axes.emplace_back (thnConfigAxisNumPvContr);
152155 axesMcGen.push_back (thnAxisCentMc);
153156 axesMcGen.emplace_back (thnConfigAxisNumPvContr);
154157 }
155158
156- if (doprocessMcDCAFitter || doprocessMcDCAFitterFT0M || doprocessMcKFParticle || doprocessMcKFParticleMl || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
159+ if (doprocessMcDCAFitter || doprocessMcDCAFitterMl || doprocessMcDCAFitterFT0M || doprocessMcDCAFitterMlFT0M || doprocessMcKFParticle || doprocessMcKFParticleMl || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
157160 registry.add (" hMcGen" , " Gen. #Omega_{c}^{0} from charm and beauty" , HistType::kTHnSparseD , axesMcGen);
158161 registry.get <THnSparse>(HIST (" hMcGen" ))->Sumw2 ();
159162
160- if (doprocessMcDCAFitterFT0M || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
163+ if (doprocessMcDCAFitterFT0M || doprocessMcDCAFitterMlFT0M || doprocessMcKFParticleFT0M || doprocessMcKFParticleMlFT0M) {
161164 registry.add (" hMcGenWithRecoColl" , " Gen. #Omega_{c}^{0} from charm and beauty (associated to a reco collision)" , HistType::kTHnSparseD , axesMcGen);
162165 registry.add (" hNumRecoCollPerMcColl" , " Number of reco collisions associated to a mc collision;Num. reco. coll. per Mc coll.;" , {HistType::kTH1D , {{10 , -0.5 , 9.5 }}});
163166 registry.get <THnSparse>(HIST (" hMcGenWithRecoColl" ))->Sumw2 ();
@@ -168,7 +171,7 @@ struct HfTaskOmegac0ToOmegaPiQa {
168171 axes.push_back (thnAxisMatchFlag);
169172 }
170173
171- if (doprocessDataKFParticleMl || doprocessDataKFParticleMlFT0C || doprocessDataKFParticleMlFT0M || doprocessMcKFParticleMl || doprocessMcKFParticleMlFT0M) {
174+ if (doprocessDataKFParticleMl || doprocessDataKFParticleMlFT0C || doprocessDataKFParticleMlFT0M || doprocessDataDCAFitterMl || doprocessDataDCAFitterMlFT0C || doprocessDataDCAFitterMlFT0M || doprocessMcKFParticleMl || doprocessMcKFParticleMlFT0M || doprocessMcDCAFitterMl || doprocessMcDCAFitterMlFT0M ) {
172175 axes.push_back (thnAxisPromptScore);
173176 }
174177
@@ -205,34 +208,6 @@ struct HfTaskOmegac0ToOmegaPiQa {
205208 template <bool UseKfParticle, bool UseCentrality, bool ApplyMl, typename CandType, typename CollType>
206209 void processDataCent (const CandType& candidate, CollType const & collision)
207210 {
208- // for (const auto& collision : collisions) {
209- // auto thisCollId = collision.globalIndex();
210- // auto groupedOmegacCandidates = ApplyMl ? candidates.sliceBy(candOmegacKFMlPerCollision, thisCollId) : candidates.sliceBy(candOmegacKFPerCollision, thisCollId);
211- // auto numPvContributors = collision.numContrib();
212-
213- // for (const auto& candidate : groupedOmegacCandidates) {
214- // if (!(candidate.resultSelections() == true || (candidate.resultSelections() == false && !selectionFlagOmegac0))) {
215- // continue;
216- // }
217-
218- // if (yCandRecoMax >= 0. && std::abs(candidate.kfRapOmegac()) > yCandRecoMax) {
219- // continue;
220- // }
221-
222- // float const cent = o2::hf_centrality::getCentralityColl(collision);
223-
224- // if constexpr (ApplyMl) {
225- // registry.fill(HIST("hReco"), candidate.invMassCharmBaryon(), candidate.ptCharmBaryon(), candidate.kfRapOmegac(),
226- // cent, numPvContributors, candidate.mlProbOmegac()[0]);
227- // if (fillTree) {
228- // kfCandMl(candidate.invMassCharmBaryon(), candidate.ptCharmBaryon(), candidate.kfptPiFromOmegac(), candidate.mlProbOmegac()[0], cent);
229- // }
230- // } else {
231- // registry.fill(HIST("hReco"), candidate.invMassCharmBaryon(), candidate.ptCharmBaryon(), candidate.kfRapOmegac(),
232- // cent, numPvContributors);
233- // }
234- // }
235- // }
236211 if (!(candidate.resultSelections () == true || (candidate.resultSelections () == false && !selectionFlagOmegac0))) {
237212 return ;
238213 }
@@ -254,8 +229,10 @@ struct HfTaskOmegac0ToOmegaPiQa {
254229 if constexpr (ApplyMl) {
255230 registry.fill (HIST (" hReco" ), candidate.invMassCharmBaryon (), candidate.ptCharmBaryon (), yOmegac,
256231 cent, numPvContributors, candidate.mlProbOmegac ()[0 ]);
257- if (fillTree) {
258- kfCandMl (candidate.invMassCharmBaryon (), candidate.ptCharmBaryon (), candidate.kfptPiFromOmegac (), candidate.mlProbOmegac ()[0 ], cent);
232+ if constexpr (UseKfParticle) {
233+ if (fillTree) {
234+ kfCandMl (candidate.invMassCharmBaryon (), candidate.ptCharmBaryon (), candidate.kfptPiFromOmegac (), candidate.mlProbOmegac ()[0 ], cent);
235+ }
259236 }
260237 } else {
261238 registry.fill (HIST (" hReco" ), candidate.invMassCharmBaryon (), candidate.ptCharmBaryon (), yOmegac,
@@ -396,6 +373,12 @@ struct HfTaskOmegac0ToOmegaPiQa {
396373 }
397374 PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitter, " process data with DCAFitter" , false );
398375
376+ void processDataDCAFitterMl (Omegac0CandsMl const & candidates)
377+ {
378+ processData<false , true >(candidates);
379+ }
380+ PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitterMl, " process data with DCAFitter, ML selections" , false );
381+
399382 void processDataDCAFitterFT0C (Omegac0Cands const & candidates,
400383 CollisionsWithFT0C const & collisions)
401384 {
@@ -409,6 +392,19 @@ struct HfTaskOmegac0ToOmegaPiQa {
409392 }
410393 PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitterFT0C, " process data with DCAFitter, FT0C centrality" , false );
411394
395+ void processDataDCAFitterMlFT0C (Omegac0CandsMl const & candidates,
396+ CollisionsWithFT0C const & collisions)
397+ {
398+ for (const auto & collision : collisions) {
399+ auto groupedOmegacCandidates = candidates.sliceBy (candOmegacMlPerCollision, collision.globalIndex ());
400+
401+ for (const auto & candidate : groupedOmegacCandidates) {
402+ processDataCent<false , true , true >(candidate, collision);
403+ }
404+ }
405+ }
406+ PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitterMlFT0C, " process data with DCAFitter, ML selections, FT0C centrality" , false );
407+
412408 void processDataDCAFitterFT0M (Omegac0Cands const & candidates,
413409 CollisionsWithFT0M const & collisions)
414410 {
@@ -421,6 +417,19 @@ struct HfTaskOmegac0ToOmegaPiQa {
421417 }
422418 }
423419 PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitterFT0M, " process data with DCAFitter, FT0M centrality" , false );
420+
421+ void processDataDCAFitterMlFT0M (Omegac0CandsMl const & candidates,
422+ CollisionsWithFT0M const & collisions)
423+ {
424+ for (const auto & collision : collisions) {
425+ auto groupedOmegacCandidates = candidates.sliceBy (candOmegacMlPerCollision, collision.globalIndex ());
426+
427+ for (const auto & candidate : groupedOmegacCandidates) {
428+ processDataCent<false , true , true >(candidate, collision);
429+ }
430+ }
431+ }
432+ PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processDataDCAFitterMlFT0M, " process data with DCAFitter, ML selections, FT0M centrality" , false );
424433
425434 // //////////////////////////////////
426435 // / Data with KFParticle //
@@ -501,6 +510,13 @@ struct HfTaskOmegac0ToOmegaPiQa {
501510 }
502511 PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processMcDCAFitter, " Process MC with DCAFitter" , false );
503512
513+ void processMcDCAFitterMl (Omegac0CandsMlMc const & omegac0CandidatesMlMc,
514+ Omegac0Gen const & mcParticles)
515+ {
516+ processMc<false , true >(omegac0CandidatesMlMc, mcParticles);
517+ }
518+ PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processMcDCAFitterMl, " Process MC with DCAFitter, ML selections" , false );
519+
504520 void processMcDCAFitterFT0M (Omegac0CandsMc const & omegaC0CandidatesMc,
505521 Omegac0Gen const & mcParticles,
506522 CollisionsWithMcLabels const & collisions,
@@ -510,6 +526,14 @@ struct HfTaskOmegac0ToOmegaPiQa {
510526 }
511527 PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processMcDCAFitterFT0M, " Process MC with DCAFitter, FT0M centrality (from MC)" , false );
512528
529+ void processMcDCAFitterMlFT0M (Omegac0CandsMlMc const & omegac0CandidatesMlMc,
530+ Omegac0Gen const & mcParticles,
531+ CollisionsWithMcLabels const & collisions,
532+ McCollisionsWithFT0M const & mcCollisions)
533+ {
534+ processMcCent<false , true >(omegac0CandidatesMlMc, mcParticles, collisions, mcCollisions);
535+ }
536+ PROCESS_SWITCH (HfTaskOmegac0ToOmegaPiQa, processMcDCAFitterMlFT0M, " Process MC with DCAFitter, ML selections, FT0M centrality (from MC)" , false );
513537
514538 // //////////////////////////////////
515539 // / MC with KFParticle //
0 commit comments