18 namespace ActsFatras {
63 template <
typename generator_t,
typename physics_list_t,
64 typename hit_surface_selector_t =
NoSurface>
73 template <
typename propagator_state_t,
typename stepper_t>
74 constexpr
bool operator()(propagator_state_t &,
const stepper_t &,
97 template <
typename propagator_state_t,
typename stepper_t>
100 assert(
generator and
"The generator pointer must be valid");
103 if (state.navigation.targetReached) {
107 if (not state.navigation.currentSurface) {
120 .setPosition4(stepper.position(state.stepping),
121 stepper.time(state.stepping))
122 .setDirection(stepper.direction(state.stepping))
123 .setAbsMomentum(stepper.momentum(state.stepping));
133 before.unitDirection(),
local);
143 auto cosIncidenceInv =
160 after.setMaterialPassed(before.pathInX0() + slab.
thicknessInX0(),
168 result.
hits.emplace_back(
169 surface.
geoID(), before.particleId(),
171 Hit::Scalar(0.5) * (before.position4() + after.position4()),
172 before.momentum4(), after.momentum4(), result.
hits.size());
176 stepper.update(state.stepping, after.position(), after.unitDirection(),
177 after.absMomentum(), after.time());
181 template <
typename propagator_state_t,
typename stepper_t>