ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
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< 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. | |
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. | |
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
|
private |
Short-hand type definition for propagation result derived from an action list.
parameters_t | Type of the final track parameters |
action_list_t | List 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
|
private |
Definition at line 36 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 36 of file RiddersPropagator.hpp
|
private |
Definition at line 35 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 35 of file RiddersPropagator.hpp
|
inline |
Constructor using a propagator.
[in] | propagator | Underlying 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
|
inline |
Constructor building a propagator.
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in] | stepper | Stepper that will be used |
[in] | navigator | Navigator 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
|
private |
This function propagates the covariance matrix.
[in] | derivatives | Slopes of each modification of the parameters |
[in] | startCov | Starting covariance |
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.
|
private |
This function fits a linear function through the final state parametrisations.
[in] | values | Vector containing the final state parametrisations |
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.
|
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.
[in] | derivatives | Derivatives of a single parameter |
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.
auto Acts::RiddersPropagator< propagator_t >::propagate | ( | const parameters_t & | start, |
const propagator_options_t & | options | ||
) | const |
Propagation method targeting curvilinear parameters.
parameters_t | Type of the start parameters |
propagator_options_t | Type of the propagator options |
[in] | start | Start parameters |
[in] | options | Options of the propagations |
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().
auto Acts::RiddersPropagator< propagator_t >::propagate | ( | const parameters_t & | start, |
const Surface & | target, | ||
const propagator_options_t & | options | ||
) | const |
Propagation method targeting bound parameters.
parameters_t | Type of the start parameters |
propagator_options_t | Type of the propagator options |
[in] | start | Start parameters |
[in] | options | Options of the propagations |
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().
|
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.
options_t | PropagatorOptions object |
parameters+t | Type of the parameters to start the propagation with |
[in] | options | Options do define how to wiggle |
[in] | startPart | Start parameters that are modified |
[in] | param | Index to get the parameter that will be modified |
[in] | target | Target surface |
[in] | nominal | Nominal end parameters |
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.
|
private |
Definition at line 163 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 163 of file RiddersPropagator.hpp