File RiddersPropagator.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
-
template<typename propagator_t>
class RiddersPropagator - #include <Acts/Propagator/RiddersPropagator.hpp>
This class performs the Ridders algorithm to estimate the propagation of the covariance to a certain point in space.
The algorithm is based on the small deviations of the start parameters based on their uncertainty at the beginning of the propgation. This deviation is represented here by a vector of relative deviations of these parameters and fix for all parameters. So, a common choice has to be found that is able to actually fit into the order of magnitude of the uncertainty of each parameter. Using these deviations, the propagation is repeated multiple times and the final covariance matrix at a given target surface is afterwards evaluated by first order derivatives of the final state parameters wrt. the inital parameters. Therefore this evaluation represents a first order approximation of the transport jacobian. Since performing multiple propagations and a numerical evaluation of the covariance requires more time than a single propagation towards a target + a common propagation of the covariance, this class just serves to verify the results of the latter classes.
Public Functions
-
inline RiddersPropagator(propagator_t &propagator)
Constructor using a propagator.
- Parameters
propagator – [in] Underlying propagator that will be used
Constructor building a propagator.
- Template Parameters
stepper_t – Type of the stepper
navigator_t – Type of the navigator
- Parameters
stepper – [in] Stepper that will be used
navigator – [in] Navigator that will be used
-
template<typename parameters_t, typename propagator_options_t>
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 Propagation method targeting curvilinear parameters.
- Template Parameters
parameters_t – Type of the start parameters
propagator_options_t – Type of the propagator options
- Parameters
start – [in] Start parameters
options – [in] Options of the propagations
- Returns
Result of the propagation
-
template<typename parameters_t, typename propagator_options_t>
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 Propagation method targeting bound parameters.
Note
If the target surface is a disc, the resulting covariance may be inconsistent. In this case a zero matrix is returned.
- Template Parameters
parameters_t – Type of the start parameters
propagator_options_t – Type of the propagator options
- Parameters
start – [in] Start parameters
target – [in] The target surface
options – [in] Options of the propagations
- Returns
Result of the propagation
Private 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
-
using Covariance = BoundSymMatrix¶
-
using Jacobian = BoundMatrix¶
Private Functions
-
Covariance calculateCovariance(const std::array<std::vector<BoundVector>, eBoundSize> &derivatives, const Covariance &startCov, const std::vector<double> &deviations) const¶
This function propagates the covariance matrix.
- Parameters
derivatives – [in] Slopes of each modification of the parameters
startCov – [in] Starting covariance
deviations – [in] Vector of deviations
- Returns
Propagated covariance matrix
-
BoundVector fitLinear(const std::vector<BoundVector> &values, const std::vector<double> &deviations) const¶
This function fits a linear function through the final state parametrisations.
- Parameters
values – [in] Vector containing the final state parametrisations
deviations – [in] Vector of deviations
- Returns
Vector containing the linear fit
-
bool inconsistentDerivativesOnDisc(const std::vector<BoundVector> &derivatives) const¶
This function tests whether the variations on a disc as target surface lead to results on different sides wrt the center of the disc.
This would lead to a flip of the phi value on the surface and therewith to a huge variance in that parameter. It can only occur in this algorithm since the ridders algorithm is unaware of the target surface.
- Parameters
derivatives – [in] Derivatives of a single parameter
- Returns
Boolean result whether a phi jump occured
-
template<typename options_t, typename parameters_t>
std::vector<BoundVector> wiggleDimension(const options_t &options, const parameters_t &startPars, const unsigned int param, const Surface &target, const BoundVector &nominal, const std::vector<double> &deviations) const¶ This function wiggles one dimension of the starting parameters, performs the propagation to a surface and collects for each change of the start parameters the slope.
- Template Parameters
options_t – PropagatorOptions object
parameters+t – Type of the parameters to start the propagation with
- Parameters
options – [in] Options do define how to wiggle
startPars – [in] Start parameters that are modified
param – [in] Index to get the parameter that will be modified
target – [in] Target surface
nominal – [in] Nominal end parameters
deviations – [in] Vector of deviations
- Returns
Vector containing each slope
Private Members
-
propagator_t m_propagator¶
Propagator.
-
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.
Note
The result_type_helper struct and the action_list_t_result_t are here to allow a look’n’feel of this class like the Propagator itself
- tparam parameters_t
Type of final track parameters
- tparam 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.
-
inline RiddersPropagator(propagator_t &propagator)
-
template<typename propagator_t>