feat: Add TrackExtrapolationAlgorithm - #5842
Draft
andiwand wants to merge 2 commits into
Draft
Conversation
`RootTrackFitterPerformanceWriter` compares the track parameters at the track reference surface to truth. Nothing in that is specific to a fitter, the same comparison applies to a seed estimate, so the name is widened: - `TrackFitterPerformanceCollector` -> `TrackParameterPerformanceCollector` - `RootTrackFitterPerformanceWriter` -> `RootTrackParameterPerformanceWriter` - `PythonTrackFitterPerformanceWriter` -> `PythonTrackParameterPerformanceWriter` The old python names stay as deprecated aliases, as done for `TrackFinderPerformanceWriter` in acts-project#5775. `ResPlotTool::Config::paramNames` becomes settable from python, since `d0`/`z0` only hold on a perigee. No histogram changes, so the physmon references stay valid. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxPc2jP43AQuQKz8c4qsaC
Moves the track parameters of a track container onto a common surface, typically a perigee, on `Acts::extrapolateTrackToReferenceSurface`. That is where a seed estimate has to be compared to truth: the estimate sits on the bottom space point's sensor, and expressing the truth particle there means intersecting it on a straight line, which ignores the bending in between. The track states are carried over, so they keep the parameters on their own surfaces and the output has the same layering a fitter produces. Tracks whose extrapolation fails are dropped, hence the truth matching has to run downstream of this. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxPc2jP43AQuQKz8c4qsaC
andiwand
force-pushed
the
track-extrapolation-algorithm
branch
from
August 7, 2026 11:41
24905ce to
b824efa
Compare
Contributor
Public API surface diffNo change to the public API surface. ✅ |
Contributor
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.
Moves the track parameters of a track container onto a common surface,
typically a perigee, on
Acts::extrapolateTrackToReferenceSurface.That is what makes a seed estimate comparable to truth. The estimate sits on
the bottom space point's sensor, where the truth reference has to be carried
from the production vertex through the bending in between, so the comparison
belongs on a perigee.
The track states are copied over unchanged, so they keep the parameters on their own
surfaces and the output has the same layering a fitter produces. Tracks whose
extrapolation fails are dropped, so any truth matching has to run downstream.
--- END COMMIT MESSAGE ---
Third of four, see #5845 for the review order. Used by #5721, nothing else in
the repository calls it yet.
Notes
Config::strategypicks the starting track state. A track that carriesparameters on only some of its states has to use
firstorlast;firstOrLastintersects both ends, andActs::findTrackStateForExtrapolationasserts on a state that has neithersmoothed nor filtered parameters. That is the case for the seed tracks of
feat: Add SeedsToTracks to Examples #5845, which is why the helper in feat: Write seed parameter performance from addSeeding #5721 passes
first.Acts::TrackExtrapolationStrategygets python bindings here.because
Acts::TrackContainerrequires the track and the track state backendto be read-only or read-write together.
Acts::TrackProxy::copyFromcannot do that copy: it copies every state witha hardcoded
TrackStatePropMask::All, which throws for a state that holds noparameters at all - every state of a seed track except the innermost. The
states are copied with their own mask instead. Passing
srcTrackState.getMask()there would fix it in Core, kept out of this PR soit stays free of Core changes.