36 using BoundState = std::tuple<BoundParameters, Jacobian, double>;
56 template <
typename parameters_t>
57 explicit State(std::reference_wrapper<const GeometryContext>
gctx,
58 std::reference_wrapper<const MagneticFieldContext> ,
71 if (par.covariance()) {
73 const auto&
surface = par.referenceSurface();
193 return detail::updateSingleSurfaceStatus<StraightLineStepper>(
194 *
this, state,
surface, bcheck);
205 template <
typename object_
intersection_t>
207 bool release =
true)
const {
208 detail::updateSingleStepSize<StraightLineStepper>(state, oIntersection,
277 const Vector3D& udirection,
double up,
double time)
const;
309 template <
typename propagator_state_t>
312 const auto h = state.stepping.stepSize;
314 const auto dtds = std::hypot(1., state.options.mass / state.stepping.p);
316 state.stepping.pos +=
h * state.stepping.dir;
317 state.stepping.t +=
h * dtds;
319 if (state.stepping.covTransport) {
325 D(3, 7) =
h * state.options.mass * state.options.mass *
326 (state.stepping.q == 0. ? 1. : state.stepping.q) /
327 (state.stepping.p * dtds);
329 state.stepping.derivative(3) = dtds;
331 state.stepping.jacTransport = D * state.stepping.jacTransport;
332 state.stepping.derivative.template head<3>() = state.stepping.dir;
335 state.stepping.pathAccumulated +=
h;