39 using BoundState = std::tuple<BoundTrackParameters, Jacobian, double>;
41 std::tuple<CurvilinearTrackParameters, Jacobian, double>;
60 template <
typename parameters_t>
61 explicit State(std::reference_wrapper<const GeometryContext>
gctx,
62 std::reference_wrapper<const MagneticFieldContext> ,
67 dir(par.unitDirection()),
68 p(par.absoluteMomentum()),
75 if (par.covariance()) {
77 const auto&
surface = par.referenceSurface();
210 return detail::updateSingleSurfaceStatus<StraightLineStepper>(
211 *
this, state,
surface, bcheck);
222 template <
typename object_
intersection_t>
225 detail::updateSingleStepSize<StraightLineStepper>(state, oIntersection,
295 const Vector3D& udirection,
double up,
double time)
const;
327 template <
typename propagator_state_t>
330 const auto h = state.stepping.stepSize;
332 const auto dtds = std::hypot(1., state.options.mass / state.stepping.p);
334 state.stepping.pos +=
h * state.stepping.dir;
335 state.stepping.t +=
h * dtds;
337 if (state.stepping.covTransport) {
343 D(3, 7) =
h * state.options.mass * state.options.mass *
344 (state.stepping.q == 0. ? 1. : state.stepping.q) /
345 (state.stepping.p * dtds);
347 state.stepping.derivative(3) = dtds;
349 state.stepping.jacTransport = D * state.stepping.jacTransport;
350 state.stepping.derivative.template head<3>() = state.stepping.dir;
353 state.stepping.pathAccumulated +=
h;