You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TPC TimeSeries: fix silent track loss from binning overflow (#15658)
* TPC TimeSeries: fix silent track loss from binning overflow
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.
* TPC TimeSeries: clamp fix + ITS cluster sizes + TRD tracklets + TRD matching
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.
* TPC TimeSeries: store TRD tracklets as native objects (std::vector)
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
---------
Co-authored-by: miranov25 <marian.ivanov@cern.cg>
Copy file name to clipboardExpand all lines: Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -365,6 +365,10 @@ struct TimeSeriesITSTPC {
365
365
std::vector<float> vertexY_ITSTPC_RMS; ///< vertex y RMS with ITS-TPC cut (nContributorsITS + nContributorsITSTPC)<0.95
366
366
std::vector<float> vertexZ_ITSTPC_RMS; ///< vertex z RMS with ITS-TPC cut (nContributorsITS + nContributorsITSTPC)<0.95
367
367
368
+
std::vector<float> nITSTPCBasedPVContributors; ///< number of ITS-TPC-based PV contributors (denominator for TRD matching fraction)
369
+
std::vector<float> nITSTPCWithTRDPVContributors; ///< number of ITS-TPC-TRD PV contributors (numerator for TRD matching fraction)
370
+
std::vector<float> fracTRD; ///< fraction of ITS-TPC PV contributors with TRD match (NaN if denominator=0)
371
+
368
372
int quantileValues = 23; ///<! number of values in quantiles + truncated mean (hardcoded for the moment)
369
373
std::vector<float> nVertexContributors_Quantiles; ///< number of primary vertices for quantiles 0.1, 0.2, ... 0.9 and truncated mean values 0.05->0.95, 0.1->0.9, 0.2->0.8
0 commit comments