ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::Propagator< stepper_t, navigator_t > Class Template Referencefinal

Propagator for particles (optionally in a magnetic field). More...

#include <Acts/Propagator/Propagator.hpp>

Inheritance diagram for Acts::Propagator< stepper_t, navigator_t >:
[legend]
Collaboration diagram for Acts::Propagator< stepper_t, navigator_t >:
[legend]

Public Types

using Navigator = navigator_t
 Type of the navigator in use.
using NavigatorOptions = typename Navigator::Options
 Type of the navigator options.
using NavigatorState = typename Navigator::State
 Type of the navigator state.
template<typename actor_list_t = ActorList<>>
using Options
 Type of the propagator options with actor list.
template<typename propagator_options_t>
using ResultType = typename result_type_helper<propagator_options_t>::type
 Type of the propagation result derived from the propagator options.
template<typename propagator_options_t>
using State = typename state_type_helper<propagator_options_t>::type
 Type of the propagation state derived from the propagator options.
using Stepper = stepper_t
 Type of the stepper in use.
using StepperOptions = typename Stepper::Options
 Type of the stepper options.
using StepperState = typename Stepper::State
 Type of the stepper state.

Public Member Functions

 Propagator (Stepper stepper, Navigator navigator=Navigator(), std::shared_ptr< const Logger > _logger=getDefaultLogger("Propagator", Acts::Logging::INFO))
 Constructor from implementation object.
template<typename propagator_state_t, typename parameters_t, typename path_aborter_t = PathLimitReached>
Result< void > initialize (propagator_state_t &state, const parameters_t &start) const
 Initialize the propagator state.
template<typename propagator_state_t, typename propagator_options_t>
Result< ResultType< propagator_options_t > > makeResult (propagator_state_t state, Result< void > result, const propagator_options_t &options, bool createFinalParameters) const
 Builds the propagator result object.
template<typename propagator_state_t, typename propagator_options_t>
Result< ResultType< propagator_options_t > > makeResult (propagator_state_t state, Result< void > result, const Surface &target, const propagator_options_t &options) const
 Builds the propagator result object.
template<typename propagator_options_t, typename path_aborter_t = PathLimitReached>
auto makeState (const propagator_options_t &options) const
 Builds the propagator state object.
template<typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
auto makeState (const Surface &target, const propagator_options_t &options) const
 Builds the propagator state object.
const Navigatornavigator () const
 Access to the navigator instance.
template<typename parameters_t, typename propagator_options_t, typename path_aborter_t = PathLimitReached>
Result< ResultType< propagator_options_t > > propagate (const parameters_t &start, const propagator_options_t &options, bool createFinalParameters=true) const
 Propagate track parameters.
template<typename parameters_t, typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
Result< ResultType< propagator_options_t > > propagate (const parameters_t &start, const Surface &target, const propagator_options_t &options) const
 Propagate track parameters - User method.
template<typename propagator_state_t>
Result< void > propagate (propagator_state_t &state) const
 Propagate track parameters.
const Stepperstepper () const
 Access to the stepper instance.

Detailed Description

template<typename stepper_t, typename navigator_t = VoidNavigator>
class Acts::Propagator< stepper_t, navigator_t >

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)
Template Parameters
stepper_tType of stepper implementation of the propagation
naviagor_tType of the navigator (optional)

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

Member Typedef Documentation

◆ Navigator

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::Navigator = navigator_t

Type of the navigator in use.

◆ NavigatorOptions

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::NavigatorOptions = typename Navigator::Options

Type of the navigator options.

◆ NavigatorState

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::NavigatorState = typename Navigator::State

Type of the navigator state.

◆ Options

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename actor_list_t = ActorList<>>
using Acts::Propagator< stepper_t, navigator_t >::Options
Initial value:
Options for propagate() call.
Definition PropagatorOptions.hpp:97

Type of the propagator options with actor list.

◆ ResultType

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_options_t>
using Acts::Propagator< stepper_t, navigator_t >::ResultType = typename result_type_helper<propagator_options_t>::type

Type of the propagation result derived from the propagator options.

Template Parameters
propagator_options_tType of the propagator options

◆ State

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_options_t>
using Acts::Propagator< stepper_t, navigator_t >::State = typename state_type_helper<propagator_options_t>::type

Type of the propagation state derived from the propagator options.

Template Parameters
propagator_options_tType of the propagator options

◆ Stepper

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::Stepper = stepper_t

Type of the stepper in use.

◆ StepperOptions

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::StepperOptions = typename Stepper::Options

Type of the stepper options.

◆ StepperState

template<typename stepper_t, typename navigator_t = VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::StepperState = typename Stepper::State

Type of the stepper state.

Constructor & Destructor Documentation

◆ Propagator()

template<typename stepper_t, typename navigator_t = VoidNavigator>
Acts::Propagator< stepper_t, navigator_t >::Propagator ( Stepper stepper,
Navigator navigator = Navigator(),
std::shared_ptr< const Logger > _logger = getDefaultLogger("Propagator< stepper_t, navigator_t >", Acts::Logging::INFO) )
explicit

Constructor from implementation object.

Parameters
stepperThe stepper implementation is moved to a private member
navigatorThe navigator implementation, moved to a private member
_loggera logger instance

Member Function Documentation

◆ initialize()

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_state_t, typename parameters_t, typename path_aborter_t = PathLimitReached>
Result< void > Acts::Propagator< stepper_t, navigator_t >::initialize ( propagator_state_t & state,
const parameters_t & start ) const
nodiscard

Initialize the propagator state.

This function initializes the propagator state for a new propagation.

Template Parameters
propagator_state_tType of the propagator state object
path_aborter_tThe path aborter type to be added
Parameters
[in,out]stateThe propagator state object
[in]startInitial track parameters to propagate
Returns
Indication if the initialization was successful

◆ makeResult() [1/2]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_state_t, typename propagator_options_t>
Result< ResultType< propagator_options_t > > Acts::Propagator< stepper_t, navigator_t >::makeResult ( propagator_state_t state,
Result< void > result,
const propagator_options_t & options,
bool createFinalParameters ) const

Builds the propagator result object.

This function creates the propagator result object from the propagator state object. The result is passed to pipe a potential error from the propagation call. The options are used to determine the type of the result object. The createFinalParameters flag is used to determine if the result should contain final track parameters.

Template Parameters
propagator_state_tType of the propagator state object
propagator_options_tType of the propagator options
Parameters
[in]statePropagator state object
[in]resultResult of the propagation
[in]optionsPropagation options
[in]createFinalParametersWhether to produce parameters at the end of the propagation
Returns
Propagation result

◆ makeResult() [2/2]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_state_t, typename propagator_options_t>
Result< ResultType< propagator_options_t > > Acts::Propagator< stepper_t, navigator_t >::makeResult ( propagator_state_t state,
Result< void > result,
const Surface & target,
const propagator_options_t & options ) const

Builds the propagator result object.

This function creates the propagator result object from the propagator state object. The result is passed to pipe a potential error from the propagation call. The options are used to determine the type of the result object.

Template Parameters
propagator_state_tType of the propagator state object
propagator_options_tType of the propagator options
Parameters
[in]statePropagator state object
[in]resultResult of the propagation
[in]targetTarget surface of to propagate to
[in]optionsPropagation options
Returns
Propagation result

◆ makeState() [1/2]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_options_t, typename path_aborter_t = PathLimitReached>
auto Acts::Propagator< stepper_t, navigator_t >::makeState ( const propagator_options_t & options) const

Builds the propagator state object.

This function creates the propagator state object from the initial track parameters and the propagation options.

Template Parameters
propagator_options_tType of the propagator options
path_aborter_tThe path aborter type to be added
Parameters
[in]optionsPropagation options
Returns
Propagator state object

◆ makeState() [2/2]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
auto Acts::Propagator< stepper_t, navigator_t >::makeState ( const Surface & target,
const propagator_options_t & options ) const

Builds the propagator state object.

This function creates the propagator state object from the initial track parameters, the target surface, and the propagation options.

Template Parameters
propagator_options_tType of the propagator options
target_aborter_tThe target aborter type to be added
path_aborter_tThe path aborter type to be added
Parameters
[in]targetTarget surface of to propagate to
[in]optionsPropagation options
Returns
Propagator state object

◆ navigator()

template<typename stepper_t, typename navigator_t = VoidNavigator>
const Navigator & Acts::Propagator< stepper_t, navigator_t >::navigator ( ) const

Access to the navigator instance.

Returns
Const reference to the navigator

◆ propagate() [1/3]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename parameters_t, typename propagator_options_t, typename path_aborter_t = PathLimitReached>
Result< ResultType< propagator_options_t > > Acts::Propagator< stepper_t, navigator_t >::propagate ( const parameters_t & start,
const propagator_options_t & options,
bool createFinalParameters = true ) 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_tType of initial track parameters to propagate
propagator_options_tType of the propagator options
path_aborter_tThe path aborter type to be added
Parameters
[in]startinitial track parameters to propagate
[in]optionsPropagation options, type Options<,>
[in]createFinalParametersWhether to produce parameters at the end of the propagation
Returns
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

◆ propagate() [2/3]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename parameters_t, typename propagator_options_t, typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
Result< ResultType< propagator_options_t > > Acts::Propagator< stepper_t, navigator_t >::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_tType of initial track parameters to propagate
propagator_options_tType of the propagator options
target_aborter_tThe target aborter type to be added
path_aborter_tThe path aborter type to be added
Parameters
[in]startInitial track parameters to propagate
[in]targetTarget surface of to propagate to
[in]optionsPropagation options
Returns
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

◆ propagate() [3/3]

template<typename stepper_t, typename navigator_t = VoidNavigator>
template<typename propagator_state_t>
Result< void > Acts::Propagator< stepper_t, navigator_t >::propagate ( propagator_state_t & state) const

Propagate track parameters.

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.

Note
Does not (yet) convert into the return_type of the propagation
Template Parameters
propagator_state_tType of the propagator state with options
Parameters
[in,out]statethe propagator state object
Returns
Propagation result

◆ stepper()

template<typename stepper_t, typename navigator_t = VoidNavigator>
const Stepper & Acts::Propagator< stepper_t, navigator_t >::stepper ( ) const

Access to the stepper instance.

Returns
Const reference to the stepper