Commit abc9b48
Support (staggered) per-layer cluster input in all ITS-dependent workflows (#15878)
* Support per-layer ITS clusters and ROFs in TPC-ITS matching
Extend MatchTPCITS to work with ITS clusters provided either as a single
(monolithic) input or per layer, with layer-dependent ROF length and bias
(staggered readout):
- ITS clusters, sizes, cluster ROFRecords and MC labels are stored per
layer, clusters are addressed by the composed ID (layer<<28)+index_in_layer
(all in slot 0 for the monolithic input)
- all ITS ROF timings (per-layer lengths and biases in BC and mus, the clock
layer defining the ITS tracks ROFs granularity) are derived from the
DPLAlpideParam object set via setAlpideParam; the setITSROFrameLength...
and setITSTimeBiasInBC setters are removed
- interaction candidates are related to the cluster ROFs of every AfterBurner
layer within the optional abROFMarginMUS margin (allowing up to 2 compatible
ROFs per layer) and are cut at the last clock-layer cluster ROF
- AfterBurner reworked for CPU efficiency: unused clusters are filtered and
(chip,Z)-sorted once per TF into per (layer, ROF) blocks, built only for the
ROFs referenced by candidates with seeds; ITSChipClustersRefs is replaced by
thread-local per-layer views (compact Y,Z,id,chip cluster info) refreshed
only when the processed group of candidates changes ROFs
- tpcits-match-workflow can request the per-layer ITS clusters input
(through RecoContainer::setITSPerLayer)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Use per-track ITS time stamps instead of ROF duration in TPC-ITS matching
MatchTPCITS previously assigned every ITS track the full clock-layer ROF
duration as its time bracket. TrackITS now carries a per-track TimeStamp
(BC since TF start, symmetric error, ROF bias already applied), which is
typically much narrower than the ROF, especially in staggered running.
- prepareITSData builds the per-track bracket from getTimeStamp(), widened
by the new itsTimeStampMarginBC margin (BC, both edges), falling back to
the nominal ROF bracket when the time stamp is invalid (legacy input)
- mITSROFTimes is extended to the envelope of the nominal ROF bracket and
the actual per-track brackets, keeping the TPC-side and triggered-mode
ITS ROF entry caches conservative
- mITSMaxROFOverhangMUS tracks how far track brackets extend past their
ROF end in the current TF; doMatching's continuous-mode entry lookup is
shifted by this amount so no compatible track is skipped
- sorting by bracket min time still cannot mix tracks of different ROFs
(the tracker guarantees the raw lower edge stays within the assigned
ROF, and the margin shifts all tracks alike), so the existing
mITSTimeStart assignment and the tBracket-based break/continue gates in
doMatching remain valid without a LUT rebuild; the long-dead RejectOnTgl
ROF-skip code (whose precondition never held with mixed layers) is
removed
- refitTrackTPCITS derives the fallback ITS time error from the track's
own bracket (delta()/sqrt(12)) instead of the nominal clock-layer ROF
resolution
Net effect: most TPC x ITS pairs are now rejected by the cheap bracket
overlap check in doMatching before the sqrt/kinematic comparisons, with no
new containers and a single extra float member.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* Encode the ITS layer into the per-layer ITS track cluster references
With the per-layer (staggered readout) ITS clusters input the cluster index kept
by TrackITS is local to its layer, so the layer must be encoded into the stored
reference for the consumers to be able to find the cluster. MatchTPCITS already
decoded the ITS/TRACKCLSID entries as such composed IDs, but the tracker pushed
the bare per-layer index, which was correct only for the layer 0.
- ITSTrackingInterface::run composes the stored reference as
(layer << ClusLayerShift) + index_in_layer; with the monolithic clusters input
the layer slot is 0 and the composed ID stays equal to the flat index, so the
non-staggered output is unchanged
- the ID composition/decomposition and the max number of separately provided
ITS/MFT cluster layers move from MatchTPCITS.h to the new lightweight
DataFormatsITSMFT/ClusterID.h, so that both the producer and the (many)
consumers can use them without pulling in GlobalTracking; RecoContainer.h
includes it and keeps MaxITSLayers/MaxMFTLayers as aliases
- the layer field is shifted by 27 rather than 28 bits, so that it can
accommodate the MFT layers too: the bit 31 is unusable, since the negative
values of the composed ID are reserved for the "no cluster" flags
- the unused TrackITSExt::setClusterIndex, carrying its own hardcoded copy of
the composition (and writing to the packed slot while getClusterIndex reads
the layer slot), is removed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Fix asserts checking N layers in staggered R/O helpers
* Add the ClustersPerLayer helper for the per-layer ITS/MFT clusters
Stores the clusters of all layers in a single vector with the per-layer
offsets and gives access by the composed ID of ClusterID.h, so that the
same code works for the monolithic and the per-layer input. Detector
agnostic: the filling is left to the caller, since the spacepoint
conversion needs the detector geometry and dictionary.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Fix ITSMFT cluster reader in staggered mode
* Support per-layer ITS clusters in strangeness-tracking-workflow
The parallel cluster sizes vector is indexed via ClustersPerLayer::flatIndex
so that it cannot diverge from the cluster container offsets.
* Support per-layer ITS clusters in secondary-vertexing-workflow
* Support per-layer ITS clusters in cosmics-match-workflow
* Support per-layer ITS clusters in trd-tracking-workflow
* Support per-layer ITS clusters in tpc-interpolation-workflow
* Support per-layer ITS clusters in barrel-alignment-workflow
Cluster-overlap bookkeeping in AlignableDetectorITS moves to a per-layer
ROF loop; this is the natural granularity anyway since row-side chip
overlaps are always within a single layer.
Note: this whole module will be superseded by the new MP-2 based package.
* Support per-layer ITS clusters in check-resid-workfow and trackMCStudy-workflow
TrackMCStudy's ITS occupancy counting sums over the layer slots, each
with its own ROF cursor advanced by DPLAlpideParam::getROFLengthInBC/
getROFBiasInBC(layer).
* Support per-layer ITS clusters in its3-alignment-workflow
* Support per-layer ITS clusters in its3-tracking-study-workflow
* Support per-layer ITS clusters in the event display workflow
EveWorkflowHelper only flattens the per-layer clusters; its ROF records
were already used solely as an emptiness guard, not for timing.
* Support per-layer ITS clusters in the GPU display workflow
* Support per-layer ITS clusters in its-standalone-postprocessing-workflow
All 7 study classes selectable from this single workflow. AnomalyStudy
is ported in full (its nROF is a config parameter and all histograms
are per layer, so per-layer ROF counters are the natural granularity).
EfficiencyStudy and ITSBeamBackgroundStudy request the per-layer input
but refuse to run on it (LOGP fatal): their algorithms rely on
assumptions the staggered readout breaks (cluster-ROF index == track-ROF
index; chaining consecutive ROFs across the 3 IB layers into one strobe
series), and the replacement is an analysis choice for the study to make.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent 150990b commit abc9b48
70 files changed
Lines changed: 1403 additions & 745 deletions
File tree
- DataFormats/Detectors
- GlobalTracking/include/DataFormatsGlobalTracking
- ITSMFT
- ITS/include/DataFormatsITS
- common/include/DataFormatsITSMFT
- Detectors
- Align
- Workflow
- include/AlignmentWorkflow
- src
- include/Align
- src
- GlobalTrackingWorkflow
- include/GlobalTrackingWorkflow
- src
- study
- include/GlobalTrackingStudy
- src
- tpcinterpolationworkflow
- include/TPCInterpolationWorkflow
- src
- GlobalTracking
- include/GlobalTracking
- src
- ITSMFT
- ITS
- postprocessing
- studies
- include/ITSStudies
- src
- workflow
- tracking/src
- common/workflow/src
- TPC/calibration/SpacePoints
- include/SpacePoints
- src
- TRD/workflow
- include/TRDWorkflow
- src
- Upgrades/ITS3
- alignment
- include/ITS3Align
- src
- study
- include/ITS3TrackingStudy
- src
- Vertexing/StrangenessTracking
- include/StrangenessTracking
- src
- EventVisualisation/Workflow
- include/EveWorkflow
- src
- GPU/Workflow/src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
188 | 189 | | |
189 | 190 | | |
190 | 191 | | |
191 | | - | |
192 | | - | |
| 192 | + | |
| 193 | + | |
193 | 194 | | |
194 | 195 | | |
195 | 196 | | |
| |||
Lines changed: 0 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | 224 | | |
232 | 225 | | |
233 | 226 | | |
| |||
Lines changed: 43 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
Lines changed: 109 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
Lines changed: 5 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
79 | 84 | | |
80 | 85 | | |
81 | 86 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
357 | 357 | | |
358 | 358 | | |
359 | 359 | | |
360 | | - | |
| 360 | + | |
361 | 361 | | |
362 | 362 | | |
363 | 363 | | |
| 364 | + | |
364 | 365 | | |
365 | 366 | | |
366 | 367 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
98 | 99 | | |
99 | 100 | | |
100 | 101 | | |
| |||
154 | 155 | | |
155 | 156 | | |
156 | 157 | | |
157 | | - | |
| 158 | + | |
158 | 159 | | |
159 | 160 | | |
160 | 161 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
79 | | - | |
80 | | - | |
81 | | - | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| |||
0 commit comments