Template Class Propagator¶
Defined in File Propagator.hpp
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
template<typename
stepper_t
, typenamenavigator_t
= detail::VoidNavigator>
classActs
::
Propagator
¶ Propagator for particles (optionally in a magnetic field)
The Propagator works with a state objects given at function call This state object contains the thread local state objects
Navigator::state_type for object navigation and screen output
Stepper::state_type state for the actual transport caching (pos,dir,field)
This Propagator class serves as high-level steering code for propagating track parameters. The actual implementation of the propagation has to be implemented in the stepper_t object, which has to provide the following:
- Template Parameters
stepper_t
: Type of stepper implementation of the propagationnaviagor_t
: Type of the navigator (optional)
a function for performing a single propagation step
a type mapping for: initial track parameter type -> type of final track parameters
a type mapping for: (initial track parameter type and destination surface type) -> type of final track parameters
a type mapping for: initial track parameter type -> type of internal state object
a type mapping for: (initial track parameter type and destination surface type) -> type of internal state object
Public Types
Type of the navigator in use for public scope.
Typedef the navigator state.
Public Functions
Constructor from implementation object.
- Parameters
stepper
: The stepper implementation is moved to a private membernavigator
: The navigator implementation, moved to a private member
-
template<typename
parameters_t
, typenamepropagator_options_t
, typenamepath_aborter_t
>
autopropagate
(const parameters_t &start, const propagator_options_t &options) const -> Result<action_list_t_result_t<CurvilinearTrackParameters, typename propagator_options_t::action_list_type>>¶
-
template<typename
parameters_t
, typenamepropagator_options_t
, typenametarget_aborter_t
, typenamepath_aborter_t
>
autopropagate
(const parameters_t &start, const Surface &target, const propagator_options_t &options) const -> Result<action_list_t_result_t<BoundTrackParameters, typename propagator_options_t::action_list_type>>¶
-
template<typename
parameters_t
, typenamepropagator_options_t
, typenamepath_aborter_t
= PathLimitReached>
Result<action_list_t_result_t<CurvilinearTrackParameters, typename propagator_options_t::action_list_type>>propagate
(const parameters_t &start, const propagator_options_t &options) const Propagate track parameters.
This function performs the propagation of the track parameters using the internal stepper implementation, until at least one abort condition is fulfilled or the maximum number of steps/path length provided in the propagation options is reached.
- Return
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)
- Template Parameters
parameters_t
: Type of initial track parameters to propagateaction_list_t
: Type list of actions, type ActionList<>aborter_list_t
: Type list of abort conditions, type AbortList<>propagator_options_t
: Type of the propagator options
- Parameters
[in] start
: initial track parameters to propagate[in] options
: Propagation options, type Options<,>
-
template<typename
parameters_t
, typenamepropagator_options_t
, typenametarget_aborter_t
= SurfaceReached, typenamepath_aborter_t
= PathLimitReached>
Result<action_list_t_result_t<BoundTrackParameters, typename propagator_options_t::action_list_type>>propagate
(const parameters_t &start, const Surface &target, const propagator_options_t &options) const Propagate track parameters - User method.
This function performs the propagation of the track parameters according to the internal implementation object until at least one abort condition is fulfilled, the destination surface is hit or the maximum number of steps/path length as given in the propagation options is reached.
- Return
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)
- Template Parameters
parameters_t
: Type of initial track parameters to propagatesurface_t
: Type of target surfaceaction_list_t
: Type list of actionsaborter_list_t
: Type list of abort conditionspropagator_options_t
: Type of the propagator options
- Parameters
[in] start
: Initial track parameters to propagate[in] target
: Target surface of to propagate to[in] options
: Propagation options
-
template<typename
result_t
, typenamepropagator_state_t
>
autopropagate_impl
(propagator_state_t &state) const -> Result<result_t>¶
-
template<typename
propagator_options_t
>
structState
¶ private Propagator state for navigation and debugging
This struct holds the common state information for propagating which is independent of the actual stepper implementation.
- Template Parameters
parameters_t
: Type of the track parameterspropagator_options_t
: Type of the Objections object
Public Functions
-
template<typename
parameters_t
>State
(const parameters_t &start, const propagator_options_t &topts, StepperState steppingIn)¶ Create the propagator state from the options.
- Template Parameters
parameters_t
: the type of the start parameterspropagator_options_t
: the type of the propagator options
- Parameters
start
: The start parameters, used to initialize stepping statetopts
: The options handed over by the propagate call
Public Members
-
std::reference_wrapper<const GeometryContext>
geoContext
¶ Context object for the geometry.
Navigation state - internal state of the Navigator.
-
propagator_options_t
options
¶ These are the options - provided for each propagation step.
-
StepperState
stepping
¶ Stepper state - internal state of the Stepper.