ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::Propagator< stepper_t, navigator_t > Exception Template Referencefinal

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

#include <acts/blob/master/Core/include/Acts/Propagator/Propagator.hpp>

Classes

struct  result_type_helper
 Helper struct determining the result's type. More...
 
struct  State
 private Propagator state for navigation and debugging More...
 

Public Types

using Stepper = stepper_t
 Type of the stepper in use for public scope.
 
using Navigator = navigator_t
 Type of the navigator in use for public scope.
 
using StepperState = typename Stepper::State
 Type of state object used by the propagation implementation.
 
using NavigatorState = typename navigator_t::State
 Typedef the navigator state.
 

Public Member Functions

 Propagator (stepper_t stepper, navigator_t navigator=navigator_t())
 
template<typename parameters_t , typename propagator_options_t , typename path_aborter_t = PathLimitReached>
Result< action_list_t_result_t
< CurvilinearParameters,
typename
propagator_options_t::action_list_type > > 
propagate (const parameters_t &start, const propagator_options_t &options) const
 Propagate track parameters.
 
template<typename parameters_t , typename propagator_options_t , typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
Result< action_list_t_result_t
< BoundParameters, 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.
 

Private Types

using Jacobian = BoundMatrix
 
using BoundState = std::tuple< BoundParameters, Jacobian, double >
 
using CurvilinearState = std::tuple< CurvilinearParameters, Jacobian, double >
 
template<typename parameters_t , typename action_list_t >
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.
 

Private Member Functions

template<typename result_t , typename propagator_state_t >
Result< result_t > propagate_impl (propagator_state_t &state) const
 Propagate track parameters Private method with propagator and stepper state.
 
template<typename propagator_state_t >
void debugLog (propagator_state_t &state, const std::function< std::string()> &logAction) const
 

Private Attributes

stepper_t m_stepper
 Implementation of propagation algorithm.
 
navigator_t m_navigator
 Implementation of navigator.
 

Detailed Description

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

Definition at line 204 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 204 of file Propagator.hpp

Member Typedef Documentation

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
template<typename parameters_t , typename action_list_t >
using Acts::Propagator< stepper_t, navigator_t >::action_list_t_result_t = typename result_type_helper<parameters_t, action_list_t>::type
private

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

Template Parameters
parameters_tType of the final track parameters
action_list_tList of propagation action types

Definition at line 305 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 305 of file Propagator.hpp

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::BoundState = std::tuple<BoundParameters, Jacobian, double>
private

Definition at line 206 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 206 of file Propagator.hpp

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::CurvilinearState = std::tuple<CurvilinearParameters, Jacobian, double>
private

Definition at line 207 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 207 of file Propagator.hpp

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::Jacobian = BoundMatrix
private

Definition at line 205 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 205 of file Propagator.hpp

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

Type of the navigator in use for public scope.

Definition at line 219 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 219 of file Propagator.hpp

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

Typedef the navigator state.

Definition at line 225 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 225 of file Propagator.hpp

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

Type of the stepper in use for public scope.

Definition at line 216 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 216 of file Propagator.hpp

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

Type of state object used by the propagation implementation.

Definition at line 222 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 222 of file Propagator.hpp

Constructor & Destructor Documentation

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
Acts::Propagator< stepper_t, navigator_t >::Propagator ( stepper_t  stepper,
navigator_t  navigator = navigator_t() 
)
inlineexplicit

Constructor from implementation object

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

Definition at line 231 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 231 of file Propagator.hpp

Member Function Documentation

template<typename S , typename N >
template<typename propagator_state_t >
void Acts::Propagator< S, N >::debugLog ( propagator_state_t &  state,
const std::function< std::string()> &  logAction 
) const
private

The private propagation debug logging

It needs to be fed by a lambda function that returns a string, that guarantees that the lambda is only called in the options.debug == true case in order not to spend time when not needed.

Template Parameters
propagator_state_tType of the nested propagator state object
Parameters
statethe propagator state for the debug flag, prefix/length
logActionis a callable function that returns a streamable object

Definition at line 223 of file Propagator.ipp.

View newest version in sPHENIX GitHub at line 223 of file Propagator.ipp

References split().

+ Here is the call graph for this function:

template<typename S , typename N >
template<typename parameters_t , typename propagator_options_t , typename path_aborter_t >
auto Acts::Propagator< S, N >::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_tType of initial track parameters to propagate
action_list_tType list of actions, type ActionList<>
aborter_list_tType list of abort conditions, type AbortList<>
propagator_options_tType of the propagator options
Parameters
[in]startinitial track parameters to propagate
[in]optionsPropagation options, type Options<,>
Returns
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

Convert into return type and fill the result object

Definition at line 89 of file Propagator.ipp.

View newest version in sPHENIX GitHub at line 89 of file Propagator.ipp

References Acts::concept::has_method, S(), and start().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_DATA_TEST_CASE(), and FW::TruthVerticesToTracksAlgorithm::execute().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename S , typename N >
template<typename parameters_t , typename propagator_options_t , typename target_aborter_t , typename path_aborter_t >
auto Acts::Propagator< S, N >::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
surface_tType of target surface
action_list_tType list of actions
aborter_list_tType list of abort conditions
propagator_options_tType of the propagator options
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)

Definition at line 157 of file Propagator.ipp.

View newest version in sPHENIX GitHub at line 157 of file Propagator.ipp

References Acts::concept::has_method, S(), and start().

+ Here is the call graph for this function:

template<typename S , typename N >
template<typename result_t , typename propagator_state_t >
auto Acts::Propagator< S, N >::propagate_impl ( propagator_state_t &  state) const
private

Propagate track parameters Private method with propagator and stepper state.

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
result_tType of the result object for this propagation
propagator_state_tType of of propagator state with options
Parameters
[in,out]resultof the propagation
[in,out]statethe propagator state object
Returns
Propagation PropagatorStatus

Definition at line 13 of file Propagator.ipp.

View newest version in sPHENIX GitHub at line 13 of file Propagator.ipp

Member Data Documentation

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
navigator_t Acts::Propagator< stepper_t, navigator_t >::m_navigator
private

Implementation of navigator.

Definition at line 385 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 385 of file Propagator.hpp

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
stepper_t Acts::Propagator< stepper_t, navigator_t >::m_stepper
private

Implementation of propagation algorithm.

Definition at line 382 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 382 of file Propagator.hpp


The documentation for this exception was generated from the following files: