Repository navigation
Cascade vertex fitter - #1186
Open
bloodyyugo wants to merge 4 commits into
Open
bloodyyugo wants to merge 4 commits into
bloodyyugo wants to merge 4 commits into
Conversation
… with comparison tuples Introduces standalone Kalman gain-matrix vertexers (KalmanV0Vertexer, CascadeVertexer, ThreeTrackVertexer, KalmanNTrackVertexer) alongside the legacy Billoir fitter for displaced 3-prong vertex studies, plus tuple drivers to compare the two on truth-matched V0/cascade/trident MC. Fixes several bugs found along the way in KalmanVertexFitterGainMatrix (arc-length sign, |B| in pT, Joseph-form covariance update, per-iteration prior reset) and BilliorVertex (negative chi2 guard), and adds purity-weighted track-to-MCParticle relations so downstream tuple drivers can pick the best-match track. Also adds a two-track Kalman V0 fit option to HpsReconParticleDriver for production-side comparison, and new steering files for the three-electron skim and N-track vertex studies.
…e hard mode The beam-momentum-constrained vertex fit's covariance modeled only beam divergence, missing the transverse momentum carried by the target nuclear recoil in trident production (true spread ~18.6 MeV vs modeled 0.37 MeV). Add a toggleable sigmaTNuclearRecoil term (soft mode only) that closes most of the real-MC chi2/ndf gap, and adopt it as the default for kalSoft*. Hard/exact mode (fitLagrangeMultiplier) hardcodes a null momentum covariance and can never benefit from this fix, so it is marked @deprecated (kept for regression reference) and its kalHard* tuple columns are no longer computed. Renamed sigmaTRecoil -> sigmaTNuclearRecoil to avoid confusion with a recoil electron from radiative/A' events (unrelated concept).
Renames the gain-matrix vertex fitter class to TrackConstraintVertexFitter to reflect that it shares one per-track constraint linearization across several solve strategies (sequential gain update, Schur-complement, joint Newton-Raphson/KKT) rather than being a single gain-matrix algorithm. Removes the standalone V0 Billoir-vs-Kalman cross-check driver (TwoTrackVertexComparisonTupleDriver) and dead test-only overloads, and adds the new Vertexer/NTrackVertexer abstractions and V0VertexComparisonTupleDriver used by the cascade/N-track all-constraint comparison studies.
mgignac
approved these changes
Oct 7, 2026
mgignac
left a comment
Collaborator
There was a problem hiding this comment.
Looks fine to me and won't change other collections -- so fine to move in and include in our test. Do we really need all those steering files? What the minimum change you'd want to include into a 1% pass?
This branch has not been deployed
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.
closes #1185