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

+ Collaboration diagram for Acts::RiddersPropagator< propagator_t >:

Classes

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

Public Member Functions

 RiddersPropagator (propagator_t &propagator, Config config={})
 Constructor using a propagator.
 
template<typename stepper_t , typename navigator_t = detail::VoidNavigator>
 RiddersPropagator (stepper_t stepper, navigator_t navigator=navigator_t(), Config config={})
 Constructor building a propagator.
 
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<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.
 

Private Types

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

template<typename propagator_options_t , typename parameters_t , typename result_t >
Jacobian wiggleAndCalculateJacobian (const propagator_options_t &options, const parameters_t &start, result_t &nominalResult) const
 
template<typename propagator_options_t , typename parameters_t >
std::vector< BoundVectorwiggleParameter (const propagator_options_t &options, const parameters_t &start, 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.
 

Static Private Member Functions

static bool inconsistentDerivativesOnDisc (const std::vector< BoundVector > &derivatives)
 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.
 
static Jacobian calculateJacobian (const std::vector< double > &deviations, const std::array< std::vector< BoundVector >, eBoundSize > &derivatives)
 This function fits the jacobian with the deviations and derivatives as input.
 
static BoundVector fitLinear (const std::vector< double > &deviations, const std::vector< BoundVector > &derivatives)
 This function fits a linear function through the final state parametrisations.
 

Private Attributes

propagator_t m_propagator
 
Config m_config
 

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 initial 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 74 of file RiddersPropagator.hpp.

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

template<typename propagator_t >
using Acts::RiddersPropagator< propagator_t >::Covariance = BoundSquareMatrix
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,
Config  config = {} 
)
inline

Constructor using a propagator.

Parameters
[in]propagatorUnderlying propagator that will be used
[in]configConfig for the Ridders propagation

Definition at line 88 of file RiddersPropagator.hpp.

View newest version in sPHENIX GitHub at line 88 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(),
Config  config = {} 
)
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
[in]configConfig for the Ridders propagation

Definition at line 100 of file RiddersPropagator.hpp.

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

Member Function Documentation

template<typename propagator_t >
auto Acts::RiddersPropagator< propagator_t >::calculateJacobian ( const std::vector< double > &  deviations,
const std::array< std::vector< BoundVector >, eBoundSize > &  derivatives 
)
staticprivate

This function fits the jacobian with the deviations and derivatives as input.

Parameters
[in]deviationsVector of deviations
[in]derivativesSlopes of each modification of the parameters
Returns
Propagated jacobian matrix

Definition at line 218 of file RiddersPropagator.ipp.

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

References Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, and Acts::eBoundTime.

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

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

Parameters
[in]deviationsVector of deviations
[in]derivativesVector of resulting derivatives
Returns
Vector containing the linear fit

Definition at line 233 of file RiddersPropagator.ipp.

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

References KFPMath::a, A, assert, KFPMath::b, C, i, and N.

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

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 occurred

Definition at line 146 of file RiddersPropagator.ipp.

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

References i, and j.

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 13 of file RiddersPropagator.ipp.

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

References assert, Acts::Test::cov, Acts::GenericBoundTrackParameters< particle_hypothesis_t >::covariance(), testing::internal::move(), ckf::options, and start.

+ 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]targetThe target surface
[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 55 of file RiddersPropagator.ipp.

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

References assert, Acts::Test::cov, Acts::GenericBoundTrackParameters< particle_hypothesis_t >::covariance(), testing::internal::move(), ckf::options, start, and material_mapping_optimisation::target.

+ Here is the call graph for this function:

template<typename propagator_t >
template<typename propagator_options_t , typename parameters_t , typename result_t >
auto Acts::RiddersPropagator< propagator_t >::wiggleAndCalculateJacobian ( const propagator_options_t &  options,
const parameters_t &  start,
result_t &  nominalResult 
) const
private

Does the actual ridders propagation by wiggling the parameters and propagating again. This function is called from the different propagation overloads in order to deduplicate code.

Parameters
[in]optionsOptions of the propagations
[in]startStart parameters
[in]nominalResultThe result of the nominal propagation

Definition at line 98 of file RiddersPropagator.ipp.

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

References assert, Acts::eBoundSize, i, ckf::options, parse_cmake_options::opts, start, material_mapping_optimisation::target, and Acts::Surface::type().

+ Here is the call graph for this function:

template<typename propagator_t >
template<typename propagator_options_t , typename parameters_t >
std::vector< Acts::BoundVector > Acts::RiddersPropagator< propagator_t >::wiggleParameter ( const propagator_options_t &  options,
const parameters_t &  start,
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]startStart parameters which will be modified
[in]paramIndex to get the parameter that will be modified
[in]targetTarget surface
[in]nominalNominal end parameters
[in]deviationsVector of deviations
Returns
Vector containing each slope

Definition at line 171 of file RiddersPropagator.ipp.

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

References Acts::eBoundPhi, Acts::eBoundTheta, h, nominal, physmon_track_finding_ttbar::r, physmon_simulation::tp, and Acts::Test::values.

Member Data Documentation

template<typename propagator_t >
Config Acts::RiddersPropagator< propagator_t >::m_config
private

Definition at line 207 of file RiddersPropagator.hpp.

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

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

Definition at line 206 of file RiddersPropagator.hpp.

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


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