17 template <
typename path_arborter_t>
26 template <
typename propagator_state_t,
typename stepper_t>
28 const auto& logger = state.options.logger;
30 if (state.options.loopProtection) {
33 stepper.getField(state.stepping, stepper.position(state.stepping));
34 const double B = field.norm();
37 const double p = stepper.momentum(state.stepping);
39 const double helixPath = state.stepping.navDir * 2 *
M_PI * p / B;
42 state.options.abortList.template get<path_arborter_t>();
43 double loopLimit = state.options.loopFraction * helixPath;
44 double pathLimit = pathAborter.internalLimit;
45 if (loopLimit * loopLimit < pathLimit * pathLimit) {
46 pathAborter.internalLimit = loopLimit;
49 << loopLimit <<
" (full helix = " << helixPath <<
")");