[PWGHF] First draft of Omegac0 to OmegaPi QA workflow - #18126
mtorresc15 wants to merge 15 commits into
Conversation
|
O2 linter results: ❌ 0 errors, |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The new executables lack build registration, and selector issues can alter cuts or fatally terminate ML workflows.
Review effort: Balanced
Findings: 4
Open (7)
Register QA analysis task source in CMake · New Guard ML inference for out-of-range candidate pT · New Register QA selector source in CMake · New Register QA tree creator source in CMake · New Use normalized V0 chi-square for threshold cuts · New Apply configurable pT-dependent bachelor-pion cuts · New Correct documentation to describe neutral Omegac decay · New
What changed in this PR
Adds QA workflows for comparing DCAFitter and KFParticle Ωc⁰→Ωπ reconstruction.
Changes:
- Adds QA candidate selection and output trees.
- Adds reconstruction-specific ML features.
- Adds data/MC analysis modes with optional ML and centrality.
| File | Description |
|---|---|
PWGHF/TableProducer/treeCreatorOmegac0ToOmegaPiQa.cxx |
Defines detailed QA output tables. |
PWGHF/TableProducer/candidateSelectorOmegac0ToOmegaPiQa.cxx |
Implements selection, PID, ML, and QA monitoring. |
PWGHF/D2H/Tasks/taskOmegac0ToOmegaPiQa.cxx |
Adds data and MC analysis modes. |
PWGHF/Core/HfMlResponseOmegacToOmegaPiQa.h |
Defines DCAFitter and KFParticle ML features. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| if constexpr (svReco == doKfParticle) { | ||
| inputFeaturesOmegaC = hfMlResponseKf.getInputFeatures(candidate, trackPiFromLam, trackKaFromCasc, trackPiFromCharm); | ||
| isSelectedMlOmegac = hfMlResponseKf.isSelectedMl(inputFeaturesOmegaC, ptCandOmegac, outputMlOmegac); |
There was a problem hiding this comment.
@mtorresc15 This is a real issue, please have a look. I do not like the solution proposed here, but the task should crash at the moment.
|
|
||
| // pT: Charm Bachelor | ||
| double ptPiFromCharmBaryon = RecoDecay::sqrtSumOfSquares(candidate.pxBachFromCharmBaryon(), candidate.pyBachFromCharmBaryon()); | ||
| if (ptPiFromCharmBaryon < ptPiFromCharmBaryonMin) { |
There was a problem hiding this comment.
Also this should be addressed, the same inconsistency was present in the older version of the code where both selections using the configurable cuts and ptPiFromCharmBaryonMin were applied, which are redundant. The pT-dependent option using cuts is the best one to use.



First draft of the QA workflow for the Omegac0 to OmegaPi analysis.
This PR introduces dedicated QA versions of the candidate selector, tree creator, analysis task, and ML response to allow a more detailed validation of the Omegac0 to OmegaPi analysis workflow.
The main additions are:
The implementation is based on the existing Omegac0 to OmegaPi analysis workflow and is intended to facilitate validation and comparison of the DCAFitter and KFParticle reconstruction and selection strategies.
This PR is opened as a draft for preliminary review and feedback.