[PWGJE] jetCrossSectionEfficiency: cascade variants + hybrid-MC handling#16546
Merged
nzardosh merged 4 commits intoJun 5, 2026
Merged
Conversation
- Rewrite the QC task as two ordering variants exposing the cumulative
inefficiency through the analysis selection cascade:
- processCrossSectionEfficiency (default): reco-collision-first
(cascade = sel-bits via reco-coll EvSel bitmask, then NoSplit + zReco).
- processCrossSectionEfficiencyBcBitsFirst: alternative ordering with
sel-bits read from the truth BC (Preslice on JBCs) and reco-coll
evaluated last; for systematic check.
- Cascade auto-adapts to {selTVX, selMC, selMCFull, sel8, sel8Full}; steps
not in the preset pass through so bin count/order stays constant.
- Skips min-bias gap events via getSubGeneratorId() == mbGap when
skipMBGapEvents = true (hybrid MB+JJ MC productions).
- Unified weighted/unweighted fills via mccollision.weight() (= 1 for MB).
- Outlier rejection via pTHat (stored ptHard, or weight-derived for legacy
cases) gated by pTHatMaxMCP; named broken-sentinel constant.
- Restores all upstream-side Configurables (centrality*, trackOccupancy*,
selectedJetsRadius, checkCentFT0M) for backward compatibility, even
when unused on the pp MB MC nominal path.
- applyRCT toggles the RCT step independently; preset label is a
Configurable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
O2 linter results: ❌ 0 errors, |
Please consider the following formatting changes to AliceO2Group#16546
nzardosh
approved these changes
Jun 5, 2026
jjuracka
pushed a commit
to jjuracka/O2Physics
that referenced
this pull request
Jun 6, 2026
…ing (AliceO2Group#16546) Co-authored-by: Joonsuk Bae <monkeybae@kiaf-ui.sdfarm.kr> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
vkucera
reviewed
Jun 7, 2026
Comment on lines
+91
to
+116
| static constexpr float kBrokenPtHardSentinel = 1.0f; | ||
|
|
||
| // CollRecoFirst: reco collision required first; BC bits read from the reco-coll EvSels. | ||
| static constexpr int kBinCRF_Inel = 1; | ||
| static constexpr int kBinCRF_RctPass = 2; | ||
| static constexpr int kBinCRF_HasColl = 3; | ||
| static constexpr int kBinCRF_Zreco = 4; | ||
| static constexpr int kBinCRF_NoSplit = 5; | ||
| static constexpr int kBinCRF_TVX = 6; | ||
| static constexpr int kBinCRF_TFB = 7; | ||
| static constexpr int kBinCRF_ROFB = 8; | ||
| static constexpr int kBinCRF_SBP = 9; | ||
| static constexpr int kBinCRF_N = 9; | ||
|
|
||
| // BcBitsFirst: BC bits read from the MC truth BC; SBP from a Preslice count | ||
| // (exactly one MC collision per truth BC) so it works before requiring reco. | ||
| static constexpr int kBinBBF_Inel = 1; | ||
| static constexpr int kBinBBF_RctPass = 2; | ||
| static constexpr int kBinBBF_TVX = 3; | ||
| static constexpr int kBinBBF_TFB = 4; | ||
| static constexpr int kBinBBF_ROFB = 5; | ||
| static constexpr int kBinBBF_TruthSBP = 6; | ||
| static constexpr int kBinBBF_HasColl = 7; | ||
| static constexpr int kBinBBF_Zreco = 8; | ||
| static constexpr int kBinBBF_NoSplit = 9; | ||
| static constexpr int kBinBBF_N = 9; |
Collaborator
There was a problem hiding this comment.
- Follow naming conventions.
- Why is this not an
enum?
vkucera
reviewed
Jun 7, 2026
| rctChecker.init(static_cast<std::string>(rctSelectionsLabel)); | ||
| rctMask = rctChecker.value(); | ||
|
|
||
| const std::string es = eventSelections; |
Collaborator
There was a problem hiding this comment.
Why do you create a new variable?
vkucera
reviewed
Jun 7, 2026
Comment on lines
+130
to
+137
| if (es == "selTVX") { | ||
| applyTFB = false; | ||
| applyROFB = false; | ||
| applySBP = false; | ||
| } else if (es == "selMC") { | ||
| applyTFB = true; | ||
| applyROFB = false; | ||
| applySBP = false; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rewrite the QC task as two ordering variants exposing the cumulative
inefficiency through the analysis selection cascade:
processCrossSectionEfficiency (default): reco-collision-first
(cascade = sel-bits via reco-coll EvSel bitmask, then NoSplit + zReco).
processCrossSectionEfficiencyBcBitsFirst: alternative ordering with
sel-bits read from the truth BC (Preslice on JBCs) and reco-coll
evaluated last; for systematic check.
Cascade auto-adapts to {selTVX, selMC, selMCFull, sel8, sel8Full}
Unified weighted/unweighted fills via mccollision.weight() (= 1 for MB).
Outlier rejection via pTHat (stored ptHard, or weight-derived for legacy
cases) gated by pTHatMaxMCP; named broken-sentinel constant.
applyRCT toggles the RCT step independently; preset label is a
Configurable.
Co-Authored-By: Claude Opus 4.7