Analysis Software
Documentation for sPHENIX simulation 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/sPHENIX/Core/include/Acts/Propagator/Propagator.hpp>

Classes

struct  result_type_helper
 Helper struct determining the result's type. 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.
 
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.
 

Public Member Functions

 Propagator (stepper_t stepper, navigator_t navigator=navigator_t(), std::shared_ptr< const Logger > _logger=getDefaultLogger("Propagator", Acts::Logging::INFO))
 
template<typename parameters_t , typename propagator_options_t , typename path_aborter_t = PathLimitReached>
Result< action_list_t_result_t
< StepperCurvilinearTrackParameters,
typename
propagator_options_t::action_list_type > > 
propagate (const parameters_t &start, const propagator_options_t &options, bool makeCurvilinear=true) const
 Propagate track parameters.
 
template<typename parameters_t , typename propagator_options_t , typename path_aborter_t = PathLimitReached>
Result< action_list_t_result_t
< StepperCurvilinearTrackParameters,
typename
propagator_options_t::action_list_type > > 
propagate (const parameters_t &start, const propagator_options_t &options, bool makeCurvilinear, action_list_t_result_t< StepperCurvilinearTrackParameters, typename propagator_options_t::action_list_type > &&inputResult) 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
< StepperBoundTrackParameters,
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.
 
template<typename parameters_t , typename propagator_options_t , typename target_aborter_t = SurfaceReached, typename path_aborter_t = PathLimitReached>
Result< action_list_t_result_t
< StepperBoundTrackParameters,
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< StepperBoundTrackParameters, typename propagator_options_t::action_list_type > inputResult) const
 Propagate track parameters - User method.
 

Private Types

using StepperBoundTrackParameters = detail::stepper_bound_parameters_type_t< stepper_t >
 Re-define bound track parameters dependent on the stepper.
 
using StepperCurvilinearTrackParameters = detail::stepper_curvilinear_parameters_type_t< stepper_t >
 Re-define curvilinear track parameters dependent on the stepper.
 
using Jacobian = BoundMatrix
 
using BoundState = std::tuple< StepperBoundTrackParameters, Jacobian, double >
 
using CurvilinearState = std::tuple< StepperCurvilinearTrackParameters, Jacobian, double >
 

Private Member Functions

template<typename result_t , typename propagator_state_t >
Result< void > propagate_impl (propagator_state_t &state, result_t &result) const
 Propagate track parameters Private method with propagator and stepper state.
 
const Loggerlogger () const
 

Private Attributes

stepper_t m_stepper
 Implementation of propagation algorithm.
 
navigator_t m_navigator
 Implementation of navigator.
 
std::shared_ptr< const Loggerm_logger
 

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 203 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 203 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

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 324 of file Propagator.hpp.

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

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

Definition at line 221 of file Propagator.hpp.

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

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

Definition at line 223 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 223 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 220 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 220 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 235 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 235 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 241 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 241 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 232 of file Propagator.hpp.

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

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
using Acts::Propagator< stepper_t, navigator_t >::StepperBoundTrackParameters = detail::stepper_bound_parameters_type_t<stepper_t>
private

Re-define bound track parameters dependent on the stepper.

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 >::StepperCurvilinearTrackParameters = detail::stepper_curvilinear_parameters_type_t<stepper_t>
private

Re-define curvilinear track parameters dependent on the stepper.

Definition at line 214 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 214 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 238 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 238 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(),
std::shared_ptr< const Logger _logger = getDefaultLogger("Propagator< stepper_t, navigator_t >", Acts::Logging::INFO) 
)
inlineexplicit

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

Definition at line 248 of file Propagator.hpp.

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

Member Function Documentation

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
const Logger& Acts::Propagator< stepper_t, navigator_t >::logger ( ) const
inlineprivate

Definition at line 466 of file Propagator.hpp.

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

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,
bool  makeCurvilinear = 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]makeCurvilinearProduce curvilinear 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)

Definition at line 93 of file Propagator.ipp.

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

References ckf::options, start, and value.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_DATA_TEST_CASE(), and xPositionsOfPassedSurfaces().

+ Here is the caller 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,
bool  makeCurvilinear,
action_list_t_result_t< StepperCurvilinearTrackParameters, 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_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]makeCurvilinearProduce curvilinear parameters at the end of the propagation
[in]inputResultan existing result object to start from
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 117 of file Propagator.ipp.

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

References Acts::Concepts::has_method, logger(), N, S(), Acts::detail::setupLoopProtection(), filter::state, and value.

+ Here is the call 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
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)

Definition at line 187 of file Propagator.ipp.

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

References ckf::options, start, and material_mapping_optimisation::target.

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,
action_list_t_result_t< StepperBoundTrackParameters, 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_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
[in]inputResultan existing result object to start from
Returns
Propagation result containing the propagation status, final track parameters, and output of actions (if they produce any)

Definition at line 211 of file Propagator.ipp.

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

References Acts::Concepts::has_method, logger(), N, S(), Acts::detail::setupLoopProtection(), filter::state, and material_mapping_optimisation::target.

+ 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,
result_t &  result 
) 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 the propagator state with options
Parameters
[in,out]statethe propagator state object
[in,out]resultan existing result object to start from
Returns
Propagation result

Definition at line 17 of file Propagator.ipp.

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

References ACTS_ERROR, ACTS_VERBOSE, logger(), physmon_simulation::s, and filter::state.

+ Here is the call graph for this function:

Member Data Documentation

template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
std::shared_ptr<const Logger> Acts::Propagator< stepper_t, navigator_t >::m_logger
private

Definition at line 474 of file Propagator.hpp.

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

Referenced by Acts::Propagator< Acts::StraightLineStepper, Acts::Navigator >::logger().

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 472 of file Propagator.hpp.

View newest version in sPHENIX GitHub at line 472 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 469 of file Propagator.hpp.

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


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