12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/detail/qualifiers.hpp"
14#include "detray/definitions/math.hpp"
15#include "detray/definitions/units.hpp"
16#include "detray/propagator/base_actor.hpp"
34 template <
typename propagator_state_t>
36 const state & , propagator_state_t &propagation)
const {
37 propagation.navigation().set_no_trust();
51 template <
typename propagator_state_t>
53 const state & , propagator_state_t &propagation)
const {
54 propagation.navigation().set_high_trust();
62template <concepts::scalar scalar_t>
67 scalar_t
tol{std::numeric_limits<scalar_t>::epsilon()};
74 template <
typename propagator_state_t>
76 state &pol_state, propagator_state_t &propagation)
const {
77 const auto &stepping = propagation.stepping();
78 auto &navigation = propagation.navigation();
81 if (math::fabs(stepping.step_size()) <
83 stepping.constraints().template size<>(stepping.direction())) -
86 navigation.set_high_trust();
92 navigation.set_fair_trust();
100template <concepts::scalar scalar_t>
114 template <
typename propagator_state_t>
116 const state &pol_state, propagator_state_t &propagation)
const {
117 const auto &stepping = propagation.stepping();
118 auto &navigation = propagation.navigation();
122 navigation.set_high_trust();
127 const scalar_t rel_correction{(stepping.step_size() - navigation()) /
132 navigation.set_no_trust();
136 navigation.set_fair_trust();
139 navigation.set_high_trust();
Detray include(s).
Definition array_operators.hpp:18
Stateless policy state.
Definition policies.hpp:28
Struct that represents the most conservative navigation policy: always re- initialize the current vol...
Definition policies.hpp:26
void operator()(const state &, propagator_state_t &propagation) const
Sets the navigation trust level to 'no trust'.
Definition policies.hpp:35
Base class actor implementation.
Definition base_actor.hpp:20
Stateless policy state.
Definition policies.hpp:45
During guided navigation only the next surface should be re-evaluated.
Definition policies.hpp:43
void operator()(const state &, propagator_state_t &propagation) const
Sets the navigation trust level to 'no trust'.
Definition policies.hpp:52
Tolerance for deciding whether a step reached a constraint.
Definition policies.hpp:65
scalar_t tol
Margin used when comparing the step size with the active constraint.
Definition policies.hpp:67
Default navigation update policy for the steppers: If a constraint has been hit, lower the trustlevel...
Definition policies.hpp:63
void operator()(state &pol_state, propagator_state_t &propagation) const
Sets the navigation trust level depending on the step size limit.
Definition policies.hpp:75
Relative correction thresholds used to choose navigation trust.
Definition policies.hpp:103
scalar_t m_threshold_no_trust
Correction above which navigation loses trust entirely.
Definition policies.hpp:107
scalar_t m_threshold_fair_trust
Correction above which navigation falls to fair trust.
Definition policies.hpp:105
Specific navigation policy for the Runge-Kutta stepper: Use the relative amount of step size correcti...
Definition policies.hpp:101
void operator()(const state &pol_state, propagator_state_t &propagation) const
Sets the navigation trust level depending on the step size correction.
Definition policies.hpp:115
static constexpr scalar_t um
Length, native unit mm.
Definition units.hpp:25