ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::RiddersPropagator< propagator_t > Class Template Reference

This class performs the Ridders algorithm to estimate the propagation of the covariance to a certain point in space. More...

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

Classes

struct  result_type_helper
 Helper struct determining the result's type. More...
 

Public Member Functions

 RiddersPropagator (propagator_t &propagator)
 Constructor using a propagator.
 
template<typename stepper_t , typename navigator_t = detail::VoidNavigator>
 RiddersPropagator (stepper_t stepper, navigator_t navigator=navigator_t())
 Constructor building a propagator.
 
template<typename parameters_t , typename propagator_options_t >
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
 Propagation method targeting curvilinear parameters.
 
template<typename parameters_t , typename propagator_options_t >
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
 Propagation method targeting bound parameters.
 

Private Types

using Jacobian = BoundMatrix
 
using Covariance = BoundSymMatrix
 
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

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.
 
template<typename options_t , typename parameters_t >
std::vector< BoundVectorwiggleDimension (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.
 
const Covariance calculateCovariance (const std::array< std::vector< BoundVector >, eBoundParametersSize > &derivatives, const Covariance &startCov, const std::vector< double > &deviations) const
 This function propagates the 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.
 

Private Attributes

propagator_t m_propagator
 Propagator.
 

Detailed Description

template<typename propagator_t>
class Acts::RiddersPropagator< propagator_t >

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.

Definition at line 34 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 34 of file RiddersPropagator.hpp

Member Typedef Documentation

template<typename propagator_t >
template<typename parameters_t , typename action_list_t >
using Acts::RiddersPropagator< propagator_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 58 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 58 of file RiddersPropagator.hpp

template<typename propagator_t >
using Acts::RiddersPropagator< propagator_t >::Covariance = BoundSymMatrix
private

Definition at line 36 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 36 of file RiddersPropagator.hpp

template<typename propagator_t >
using Acts::RiddersPropagator< propagator_t >::Jacobian = BoundMatrix
private

Definition at line 35 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 35 of file RiddersPropagator.hpp

Constructor & Destructor Documentation

template<typename propagator_t >
Acts::RiddersPropagator< propagator_t >::RiddersPropagator ( propagator_t &  propagator)
inline

Constructor using a propagator.

Parameters
[in]propagatorUnderlying propagator that will be used

Definition at line 64 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 64 of file RiddersPropagator.hpp

template<typename propagator_t >
template<typename stepper_t , typename navigator_t = detail::VoidNavigator>
Acts::RiddersPropagator< propagator_t >::RiddersPropagator ( stepper_t  stepper,
navigator_t  navigator = navigator_t() 
)
inline

Constructor building a propagator.

Template Parameters
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in]stepperStepper that will be used
[in]navigatorNavigator that will be used

Definition at line 74 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 74 of file RiddersPropagator.hpp

Member Function Documentation

template<typename propagator_t >
auto Acts::RiddersPropagator< propagator_t >::calculateCovariance ( const std::array< std::vector< BoundVector >, eBoundParametersSize > &  derivatives,
const Covariance startCov,
const std::vector< double > &  deviations 
) const
private

This function propagates the covariance matrix.

Parameters
[in]derivativesSlopes of each modification of the parameters
[in]startCovStarting covariance
Returns
Propagated covariance matrix

Definition at line 210 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 210 of file RiddersPropagator.ipp

References Acts::eLOC_0, Acts::eLOC_1, Acts::ePHI, Acts::eQOP, Acts::eT, and Acts::eTHETA.

template<typename propagator_t >
Acts::BoundVector Acts::RiddersPropagator< propagator_t >::fitLinear ( const std::vector< BoundVector > &  values,
const std::vector< double > &  deviations 
) const
private

This function fits a linear function through the final state parametrisations.

Parameters
[in]valuesVector containing the final state parametrisations
Returns
Vector containing the linear fit

Definition at line 227 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 227 of file RiddersPropagator.ipp

References a, A(), b, B(), C(), D(), and N.

+ Here is the call graph for this function:

template<typename propagator_t >
bool Acts::RiddersPropagator< propagator_t >::inconsistentDerivativesOnDisc ( const std::vector< BoundVector > &  derivatives) const
private

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
[in]derivativesDerivatives of a single parameter
Returns
Boolean result whether a phi jump occured

Definition at line 113 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 113 of file RiddersPropagator.ipp

References kdfinder::abs(), and M_PI.

+ Here is the call graph for this function:

template<typename propagator_t >
template<typename parameters_t , typename propagator_options_t >
auto Acts::RiddersPropagator< propagator_t >::propagate ( const parameters_t &  start,
const propagator_options_t &  options 
) const

Propagation method targeting curvilinear parameters.

Template Parameters
parameters_tType of the start parameters
propagator_options_tType of the propagator options
Parameters
[in]startStart parameters
[in]optionsOptions of the propagations
Returns
Result of the propagation

Definition at line 11 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 11 of file RiddersPropagator.ipp

References e, Acts::eBoundParametersSize, start(), and surface().

+ Here is the call graph for this function:

template<typename propagator_t >
template<typename parameters_t , typename propagator_options_t >
auto Acts::RiddersPropagator< propagator_t >::propagate ( const parameters_t &  start,
const Surface target,
const propagator_options_t &  options 
) const

Propagation method targeting bound parameters.

Template Parameters
parameters_tType of the start parameters
propagator_options_tType of the propagator options
Parameters
[in]startStart parameters
[in]optionsOptions of the propagations
Returns
Result of the propagation
Note
If the target surface is a disc, the resulting covariance may be inconsistent. In this case a zero matrix is returned.

Definition at line 52 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 52 of file RiddersPropagator.ipp

References deriv(), e, Acts::eBoundParametersSize, Acts::SingleTrackParameters< ChargePolicy >::parameters(), and start().

+ Here is the call graph for this function:

template<typename propagator_t >
template<typename options_t , typename parameters_t >
std::vector< Acts::BoundVector > Acts::RiddersPropagator< propagator_t >::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
private

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_tPropagatorOptions object
parameters+tType of the parameters to start the propagation with
Parameters
[in]optionsOptions do define how to wiggle
[in]startPartStart parameters that are modified
[in]paramIndex to get the parameter that will be modified
[in]targetTarget surface
[in]nominalNominal end parameters
Returns
Vector containing each slope

Definition at line 138 of file RiddersPropagator.ipp.

View newest version in sPHENIX GitHub at line 138 of file RiddersPropagator.ipp

References kdfinder::abs(), Acts::ePHI, Acts::eTHETA, Acts::UnitConstants::h, M_PI, r, and G4InuclParticleNames::tp.

+ Here is the call graph for this function:

Member Data Documentation

template<typename propagator_t >
propagator_t Acts::RiddersPropagator< propagator_t >::m_propagator
private

Propagator.

Definition at line 163 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 163 of file RiddersPropagator.hpp


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