feat: displaced-track (LRT) support for GBTS seeding#5668
Draft
jburzy wants to merge 4 commits into
Draft
Conversation
Remove implicit beamspot/prompt-track assumptions from the GBTS graph builder and make the remaining ones configurable, so that the LRT mode can reconstruct tracks with transverse impact parameters up to d0Max (300 mm for ITk LRT). All changes are no-ops for prompt configurations: they are gated on lrtMode or scale with d0Max. Correctness fixes: - Fix the ptCoeff units bug (0.5*B*UnitConstants::m with minPt in GeV made maxCurv ~1000x too loose, silently disabling the LRT and old-tunings curvature cuts) - Bounds-guard the z0 histogram fill, which wrote out of bounds when doubletFilterRZ was disabled - Make the eta-bin pair connectivity z0 range configurable (GbtsGeometry constructor arguments replacing the hardcoded +-168 mm) Displaced-aware graph building (lrtMode): - Widen the phi sliding window by the position-azimuth swing asin(d0Max/r1) - asin(d0Max/r2) and scale the phi wrap-around indexing margin to cover the widest window - Widen the segment tau-ratio matching (and the matchBeforeCreate precut) by the exact ds/dr chord-factor bound; each edge now carries its dsdrD0 factor - Widen the curvature-proxy cut by the geometric term (asin(d0Max/r1) - asin(d0Max/r2))/dr, evaluated only for candidates in the marginal band Generalized layer gating: - Barrel tests now use the geometry layer type instead of the pixel-barrel layer-ID arithmetic, activating triplet validation (d0/pT cuts) and adaptive tau corrections for strip seeding - In lrtMode the entry-layer pruning gates (isolated-node skip, z0-bitmask veto, matchBeforeCreate) derive from a new per-layer inward depth computed from the connection map instead of the hardcoded 80000/81000 pixel layer IDs - Layer adjacency in the adaptive tau correction handles the strip numbering (consecutive IDs differ by 1) alongside the pixel one - z0 bitmask resolution is configurable (z0HistoResolution) Tracking filter: - Initial state covariances are configurable (initCovX/initCovY) - Optional d0-driven r-z slope process noise (Config::d0Max) accounts for the geometric dz/dr variation along a displaced trajectory Connection parsing: - GbtsConnectionFilter (PixelOnly/StripOnly/All) replaces the hardcoded lrtMode volume filtering; bool overloads kept for backward compatibility Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The isolated-node skip and the z0-bitmask veto require the outer node of a candidate doublet to have a confirmed outward continuation, i.e. two further hits beyond the doublet. This is only valid when the minimum chain level is 3 (prompt configuration). In LRT mode a bare triplet is a valid seed (minLevel 2) and its middle node is never confirmed, so the generalized entry-layer gate was rejecting all seeds built from exactly three space points, costing 20-30% absolute LRT efficiency at low d0 in single-muon validation. Restrict both vetoes to the prompt configuration; the matchBeforeCreate precut only requires an existing tau-compatible continuation edge and remains active in LRT mode. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Count every doublet/triplet rejection cause in buildTheGraph, report chain-length and level statistics in extractSeedsFromTheGraph, and count per-cut rejections in the tracking filter State. Summaries are printed at DEBUG level, per-rejection kinematic detail at VERBOSE, for diagnosing seed-level inefficiencies (e.g. single-muon samples where every real edge should survive). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both direction estimates of two linked segments anchor at their shared node, so for a displaced track they differ by (c12 - c23) * r2, where c_ab is the position-azimuth chord slope asin-difference of each segment. This exceeds cutDPhiMax for impact parameters above ~90 mm at the ITk strip radii, which was the dominant seed loss for 90 < d0 < 300 mm in single-muon validation (GridTriplet reference holds ~75% there while GBTS fell to ~25%). Widen the acceptance in LRT mode by the bound evaluated at d0Max, computed only for candidates in the marginal band. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
9fa1d8f to
be5bb5b
Compare
Contributor
|
Contributor
|
Thanks for doing this @jburzy! can you validate that the prompt tracking still looks relatively the same (although i imagine it'll be a little different with the corrected |
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.



The GBTS graph builder assumed beamline-pointing tracks in several places, making its LRT mode inefficient for large impact parameters. This PR removes or parametrizes those assumptions so that GBTS can seed tracks with |d0| up to a configured d0Max (300 mm for ITk LRT), and fixes several related bugs. All changes are should not affect prompt
configurations. The widenings scale with d0Max (negligible at prompt values) or are gated on lrtMode, and new configuration fields default to the previous behaviour.
Bug fixes:
Displaced-aware cut widenings, evaluated as upper bounds at d0Max and radius-dependent so they vanish for r >> d0Max:
Configurability and generalization:
--- END COMMIT MESSAGE ---
cc @jpreston-cern