You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e02a56e
Browse filesBrowse the repository at this point in the historyBrowse files
TrackParametrization: use double math functions for TrackParD (#15990)
Follow-up to #15986. TrackParametrization, TrackParametrizationWithError and
TrackUtils call the float-only gpu::CAMath functions (Sqrt, ASin, ATan2, ...),
so TrackParD / PropagatorD is effectively float. Compared with a std:: double
reference, propagateParamTo(x, b[3]) from x = 85 to 250 cm in 100 steps is off
by 0.4 to 74 µm, depending on pt and the field (toy fields with a transverse
component, no material), and finite-difference derivatives through it are
noisy. This affects the barrel alignment (Detectors/Align) and the ITS3
alignment; no reconstruction workflow uses the double types.
Call math_utils::detail::{sqrt, asin, ...}<value_t> instead, as Propagator.cxx
already does: for double these dispatch to the double functions, for float to
the same functions as before. Add GPUCommonMath::Expd and
math_utils::detail::exp for the remaining Exp calls. This restores the
math_utils::detail calls of cd9835a (switched back to CAMath in bf65d3c)
and extends them to TrackParametrizationWithError and TrackUtils.
Float results are bit-identical; TrackParD now agrees exactly with the double
reference.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments