Skip to content

Cascade vertex fitter - #1186

Open
bloodyyugo wants to merge 4 commits into
masterfrom
displaced3prongvertex
Open

bloodyyugo wants to merge 4 commits into
masterfrom
displaced3prongvertex

Conversation

@bloodyyugo

Copy link
Copy Markdown
Contributor

closes #1185

… 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.
@bloodyyugo
bloodyyugo requested review from EBerzin and mgignac October 7, 2026 14:16
@bloodyyugo bloodyyugo self-assigned this Oct 7, 2026

@mgignac mgignac left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Three track cascade vertexing with beam position and momentum constraint options

2 participants