Commit b7270bb
Fix out-of-range BC slice for ambiguous tracks past the last BC
This fixes a problem in the AOD producer's BC slice assignment for ambiguous
tracks.
- BunchCrossings::lower_bound returns {size(), 0} when no BC is at or after the
requested one, and fillBCSlice used that pair unchecked.
- A track whose time window starts after the last BC of the timeframe therefore
got fIndexSliceBCs[0] equal to the number of BCs, one past the end of the BC
table.
- The same pair sets the time reference, where 0 - mStartIR.toLong() underflows
in unsigned arithmetic, so fTrackTime was written as about -4.6e20 ns.
- The binary-search implementation that the accelerated lookup replaced clamped
this case to the last BC; fillBCSlice now does the same.
- Seen in LHC26a5a_gp_2025_v10 (Pb-Pb apass1 anchored MC), where 51 of 736770
ambiguous tracks were affected and later crashed the AnalysisQC event
selection QA task.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent af76bd1 commit b7270bb
1 file changed
Lines changed: 7 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3367 | 3367 | | |
3368 | 3368 | | |
3369 | 3369 | | |
| 3370 | + | |
| 3371 | + | |
| 3372 | + | |
| 3373 | + | |
| 3374 | + | |
| 3375 | + | |
| 3376 | + | |
3370 | 3377 | | |
3371 | 3378 | | |
3372 | 3379 | | |
| |||
0 commit comments