Class Acts::Propagator

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
class 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:

  • 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

Template Parameters
  • stepper_t – Type of stepper implementation of the propagation

  • naviagor_t – Type of the navigator (optional)

Public Types

using action_list_t_result_t = typename result_type_helper<parameters_t, action_list_t>::type

Short-hand type definition for propagation result derived from an action list.

Template Parameters
  • parameters_t – Type of the final track parameters

  • action_list_t – List of propagation action types

using Navigator = navigator_t

Type of the navigator in use for public scope.

using NavigatorState = typename navigator_t::State

Typedef the navigator state.

using Stepper = stepper_t

Type of the stepper in use for public scope.

using StepperState = typename Stepper::State

Type of state object used by the propagation implementation.

Public Functions

inline explicit Propagator(stepper_t stepper, navigator_t navigator = navigator_t())

Constructor from implementation object.

Parameters
  • stepper – The stepper implementation is moved to a private member

  • navigator – The navigator implementation, moved to a private member

template<typename parameters_t, typename propagator_options_t, typename path_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.

Template Parameters
  • parameters_t – Type of initial track parameters to propagate

  • propagator_options_t – Type of the propagator options

  • path_aborter_t – The path aborter type to be added

Parameters
  • start[in] initial track parameters to propagate

  • options[in] Propagation options, type Options<,>

Returns

Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

template<typename parameters_t, typename propagator_options_t, typename path_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, action_list_t_result_t<CurvilinearTrackParameters, typename propagator_options_t::action_list_type> &&inputResult) 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.

Template Parameters
  • parameters_t – Type of initial track parameters to propagate

  • propagator_options_t – Type of the propagator options

  • path_aborter_t – The path aborter type to be added

Parameters
  • start[in] initial track parameters to propagate

  • options[in] Propagation options, type Options<,>

  • inputResult[in] an existing result object to start from

Returns

Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

template<typename parameters_t, typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_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.

Template Parameters
  • parameters_t – Type of initial track parameters to propagate

  • propagator_options_t – Type of the propagator options

  • target_aborter_t – The target aborter type to be added

  • path_aborter_t – The path aborter type to be added

Parameters
  • start[in] Initial track parameters to propagate

  • target[in] Target surface of to propagate to

  • options[in] Propagation options

Returns

Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

template<typename parameters_t, typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_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, action_list_t_result_t<BoundTrackParameters, typename propagator_options_t::action_list_type> inputResult) 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.

Template Parameters
  • parameters_t – Type of initial track parameters to propagate

  • propagator_options_t – Type of the propagator options

  • target_aborter_t – The target aborter type to be added

  • path_aborter_t – The path aborter type to be added

Parameters
  • start[in] Initial track parameters to propagate

  • target[in] Target surface of to propagate to

  • options[in] Propagation options

  • inputResult[in] an existing result object to start from

Returns

Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

template<typename propagator_options_t>
struct State

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 parameters

  • propagator_options_t – Type of the Objections object

Public Functions

template<typename parameters_t>
inline 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 parameters

  • propagator_options_t – the type of the propagator options

Parameters
  • start – The start parameters, used to initialize stepping state

  • topts – The options handed over by the propagate call

  • steppingIn – Stepper state instance to begin with

Public Members

std::reference_wrapper<const GeometryContext> geoContext

Context object for the geometry.

NavigatorState navigation

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.