File StepperExtensionList.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

template<typename ...extensions>
struct StepperExtensionList : private detail::Extendable<extensions...>
#include <Acts/Propagator/StepperExtensionList.hpp>

Container of extensions used in the stepper of the propagation.

This struct allows a broadcast of function calls for each element in the list. The broadcasts occur for a certain function at each step in a specific order. The first function is an evaluater if an extension is or how many extensions are applicable for an upcoming step. The next functions called are the evaluations of the k_1 - k_4 or the RKN4 integration. The last function call in a step is the finalize() method. This method is an overloaded function (optionally propagates the covariance). Each method has the possibility to break the evaluation of a given step if an extension reports that something went wrong (e.g. a particle lost too much momentum during the step)

Template Parameters

extensions – Types of the extensions

Public Functions

template<typename propagator_state_t, typename stepper_t>
inline bool finalize(propagator_state_t &state, const stepper_t &stepper, const double h, FreeMatrix &D)

This functions broadcasts the call of the method finalize().

It collects all extensions and arguments and passes them forward for evaluation and returns a boolean.

template<typename propagator_state_t, typename stepper_t>
inline bool finalize(propagator_state_t &state, const stepper_t &stepper, const double h)

This functions broadcasts the call of the method finalize().

It collects all extensions and arguments and passes them forward for evaluation and returns a boolean.

template<typename propagator_state_t, typename stepper_t>
inline bool k(const propagator_state_t &state, const stepper_t &stepper, Vector3 &knew, const Vector3 &bField, std::array<double, 4> &kQoP, const int i, const double h = 0., const Vector3 &kprev = Vector3::Zero())

This functions broadcasts the call for evaluating a generic k.

It collects all arguments and extensions, test their validity for the evaluation and passes them forward for evaluation and returns a boolean as indicator if the evaluation is valid.

template<typename propagator_state_t, typename stepper_t>
inline bool k1(const propagator_state_t &state, const stepper_t &stepper, Vector3 &knew, const Vector3 &bField, std::array<double, 4> &kQoP)

This functions broadcasts the call for evaluating k1.

It collects all arguments and extensions, test their validity for the evaluation and passes them forward for evaluation and returns a boolean as indicator if the evaluation is valid.

template<typename propagator_state_t, typename stepper_t>
inline bool k2(const propagator_state_t &state, const stepper_t &stepper, Vector3 &knew, const Vector3 &bField, std::array<double, 4> &kQoP, const double h, const Vector3 &kprev)

This functions broadcasts the call for evaluating k2.

It collects all arguments and extensions and passes them forward for evaluation and returns a boolean as indicator if the evaluation is valid.

template<typename propagator_state_t, typename stepper_t>
inline bool k3(const propagator_state_t &state, const stepper_t &stepper, Vector3 &knew, const Vector3 &bField, std::array<double, 4> &kQoP, const double h, const Vector3 &kprev)

This functions broadcasts the call for evaluating k3.

It collects all arguments and extensions and passes them forward for evaluation and returns a boolean as indicator if the evaluation is valid.

template<typename propagator_state_t, typename stepper_t>
inline bool k4(const propagator_state_t &state, const stepper_t &stepper, Vector3 &knew, const Vector3 &bField, std::array<double, 4> &kQoP, const double h, const Vector3 &kprev)

This functions broadcasts the call for evaluating k4.

It collects all arguments and extensions and passes them forward for evaluation and returns a boolean as indicator if the evaluation is valid.

template<typename propagator_state_t, typename stepper_t>
inline bool validExtensionForStep(const propagator_state_t &state, const stepper_t &stepper)

Evaluation function to set valid extensions for an upcoming integration step.

Template Parameters
  • propagator_state_t – Type of the state of the propagator

  • stepper_t – Type of the stepper

Parameters
  • state[in] State of the propagator

  • stepper[in] Stepper of the propagation

Private Members

std::array<bool, nExtensions> validExtensions

Private Static Attributes

static constexpr unsigned int nExtensions = sizeof...(extensions)