TPC TimeSeries: fix silent track loss from binning overflow - #15658
Conversation
|
Hello @matthias-kleiner and @shahor02, I want to commit the code. Please do not merge it yet. I still have to make a build, and we should test it. As I described in the Mattermost chat, logically, the modified code should perform clipping instead of cutting. I am building it now. |
|
Hello @shahor02 and all Are these build errors normal? I assume it is a temporary problem.I built it yesterday on my Mac. For me, it compiles locally (Mac with a Linux container). I am now trying at GSI with another container. Now I am rebuilding with ITS and TRD information (not in this branch) , locally and at GSI |
|
Ignore CI, it is broken. |
|
Hello @shahor02, In the meantime, I have updated the time series, adding ITS (cluster shape) and TRD tracklets (native). My build with these changes has not finished yet, as I have limited space on my Mac (one full O2 build takes 375 GB). I cannot have two builds at once (I need to set up a new disk, as each rebuild is a risk of destroying my working Python setup - which already happened after the update). I am now building at GSI, where I have enough space for three installations (one working version plus two additional builds). Should I submit a new pull request and close the original one already? GSI build can be ready in 2 hours - seeing the progress. |
|
@miranov25 Why don't you add extra commits here? If you build as |
I did not know about that switch. I will try. It will solve part of my problems. === |
shahor02
left a comment
There was a problem hiding this comment.
@miranov25 please apply clang-format, otherwise, it looks ok
|
I tried to get it but I did not managed. |
|
I tried: But nothing happend |
Bin indices for tgl, phi, qPt, and multiplicity were used as implicit track selection cuts: tracks outside histogram range were silently dropped (return). Replace with std::clamp — edge bins become overflow bins (standard ROOT convention). No change for tracks within range. Bug: changing --max-qPt or --mult-max removed tracks from ALL outputs (DCA, dEdx, etc.), not just the binned histograms.
…atching Phase 0.2 — binning overflow fix: - Replace bounds-check-and-return with std::clamp on all 4 bin indices - Edge bins act as saturated overflow; no tracks silently dropped Phase 0.3 D1 — ITS cluster sizes (per-track, unbinned): - itsClusterSizes: packed 4-bit per layer (bit 28 kSharedClusters masked) - itsHasSharedClusters, itsPattern: 7-bit layer hit pattern Phase 0.3 D2 — TRD tracklet objects (per-track, unbinned): - Native Tracklet64[6] and CalibratedTracklet[6] per layer - trdPattern (6-bit validity mask), nTRDTracklets - requestTRDTracklets added to DataRequest Phase 0.3 D3 — TRD matching fraction (per-TF): - nITSTPCBasedPVContributors, nITSTPCWithTRDPVContributors, fracTRD - NaN for zero denominator. ClassDefNV 7 -> 8.
Replace flat primitive arrays with std::vector<Tracklet64> and std::vector<CalibratedTracklet>. std::array failed ROOT serialization (missing ShowMember); std::vector with ROOT dictionary works.
|
Clang was fixed |
shahor02
left a comment
There was a problem hiding this comment.
Will merge once the full-CI is passed.
|
For the record: AI team Code review request and review summary.
https://claude.ai/chat/42746134-f438-4c46-9702-7bd96d4a8b93: PHASE_0_3_TimeAI_Closure_CRR.md PHASE_0_3_timeSeriesAI_Official_Approval_Summary_GPT4_AI_20260804.md |
|
For the record - and furher crosscheck |


Bin indices for tgl, phi, qPt, and multiplicity were used as implicit track selection cuts: tracks outside histogram range were silently dropped (return). Replace with std::clamp — edge bins become overflow bins (standard ROOT convention). No change for tracks within range.
Bug: changing --max-qPt or --mult-max removed tracks from ALL outputs (DCA, dEdx, etc.), not just the binned histograms.