File Propagator.hpp¶
-
namespace Acts
Note
This file is foreseen for the
Geometry
module to replaceExtent
-
template<typename stepper_t, typename navigator_t = detail::VoidNavigator>
class Propagator - #include <Acts/Propagator/Propagator.hpp>
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
Type of the navigator in use for public scope.
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
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)
Private Types
-
using BoundState = std::tuple<BoundTrackParameters, Jacobian, double>¶
-
using CurvilinearState = std::tuple<CurvilinearTrackParameters, Jacobian, double>¶
-
using Jacobian = BoundMatrix¶
Private 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.
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_t – Type of the result object for this propagation
propagator_state_t – Type of the propagator state with options
- Parameters
state – [inout] the propagator state object
result – [inout] an existing result object to start from
- Returns
Propagation result
Private Members
Implementation of navigator.
-
template<typename parameters_t, typename action_list_t>
struct result_type_helper¶ Helper struct determining the result’s type.
This helper struct provides type definitions to extract the correct propagation result type from a given TrackParameter type and an ActionList.
- Template Parameters
parameters_t – Type of final track parameters
action_list_t – List of propagation action types
Public Types
-
using this_result_type = PropagatorResult<parameters_t, args...>¶
Propagation result type for an arbitrary list of additional propagation results.
- Template Parameters
args – Parameter pack specifying additional propagation results
-
using type = typename action_list_t::template result_type<this_result_type>¶
Propagation result type derived from a given action list.
-
template<typename propagator_options_t>
struct State - #include <Acts/Propagator/Propagator.hpp>
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.
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.
-
template<typename action_list_t = ActionList<>, typename aborter_list_t = AbortList<>>
struct PropagatorOptions : public Acts::PropagatorPlainOptions¶ - #include <Acts/Propagator/Propagator.hpp>
Options for propagate() call.
- Template Parameters
action_list_t – List of action types called after each propagation step with the current propagation and stepper state
aborter_list_t – List of abort conditions tested after each propagation step using the current propagation and stepper state
Subclassed by Acts::DenseStepperPropagatorOptions< action_list_t, aborter_list_t >
Public Functions
-
PropagatorOptions() = delete¶
Delete default contructor.
-
PropagatorOptions(const PropagatorOptions<action_list_t, aborter_list_t> &po) = default¶
PropagatorOptions copy constructor.
-
inline PropagatorOptions(const GeometryContext &gctx, const MagneticFieldContext &mctx, LoggerWrapper logger_)¶
PropagatorOptions with context.
-
template<typename extended_aborter_list_t>
inline PropagatorOptions<action_list_t, extended_aborter_list_t> extend(extended_aborter_list_t aborters) const¶ Expand the Options with extended aborters.
- Template Parameters
extended_aborter_list_t – Type of the new aborter list
- Parameters
aborters – The new aborter list to be used (internally)
-
inline void setPlainOptions(const PropagatorPlainOptions &pOptions)¶
Set the plain options.
- Parameters
pOptions – The plain options
Public Members
-
aborter_list_t abortList¶
List of abort conditions.
-
action_list_t actionList¶
List of actions.
-
std::reference_wrapper<const GeometryContext> geoContext¶
The context object for the geometry.
-
LoggerWrapper logger¶
-
std::reference_wrapper<const MagneticFieldContext> magFieldContext¶
The context object for the magnetic field.
-
struct PropagatorPlainOptions¶
- #include <Acts/Propagator/Propagator.hpp>
Class holding the trivial options in propagator options.
Subclassed by Acts::PropagatorOptions< action_list_t, aborter_list_t >
Public Members
-
int absPdgCode = 211¶
The |pdg| code for (eventual) material integration - pion default.
-
NavigationDirection direction = NavigationDirection::Forward¶
Propagation direction.
-
double loopFraction = 0.5¶
Allowed loop fraction, 1 is a full loop.
-
bool loopProtection = true¶
Loop protection step, it adapts the pathLimit.
-
double mass = 139.57018 * UnitConstants::MeV¶
The mass for the particle for (eventual) material integration.
-
unsigned int maxRungeKuttaStepTrials = 10000¶
Maximum number of Runge-Kutta steps for the stepper step call.
-
unsigned int maxSteps = 1000¶
Maximum number of steps for one propagate call.
-
double maxStepSize = std::numeric_limits<double>::max()¶
Absolute maximum step size.
-
double pathLimit = std::numeric_limits<double>::max()¶
Absolute maximum path length.
-
double stepSizeCutOff = 0.¶
Cut-off value for the step size.
-
double targetTolerance = s_onSurfaceTolerance¶
Required tolerance to reach target (surface, pathlength)
-
double tolerance = 1e-4¶
Tolerance for the error of the integration.
-
int absPdgCode = 211¶
-
template<typename parameters_t, typename ...result_list>
struct PropagatorResult : private detail::Extendable<result_list...>¶ - #include <Acts/Propagator/Propagator.hpp>
Simple class holding result of propagation call.
- Template Parameters
parameters_t – Type of final track parameters
result_list – Result pack for additional propagation quantities
Public Members
-
std::unique_ptr<parameters_t> endParameters = nullptr¶
Final track parameters - initialized to null pointer.
-
double pathLength = 0.¶
Signed distance over which the parameters were propagated.
-
unsigned int steps = 0¶
Number of propagation steps that were carried out.
-
std::unique_ptr<BoundMatrix> transportJacobian = nullptr¶
Full transport jacobian.
-
template<typename stepper_t, typename navigator_t = detail::VoidNavigator>