Analysis Software
Documentation for sPHENIX simulation software
|
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>
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< BoundVector > | 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 |
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 |
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
|
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 74 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 74 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 |
[in] | config | Config 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
|
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 |
[in] | config | Config 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
|
staticprivate |
This function fits the jacobian with the deviations and derivatives as input.
[in] | deviations | Vector of deviations |
[in] | derivatives | Slopes of each modification of the parameters |
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.
|
staticprivate |
This function fits a linear function through the final state parametrisations.
[in] | deviations | Vector of deviations |
[in] | derivatives | Vector of resulting derivatives |
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.
|
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.
[in] | derivatives | Derivatives of a single parameter |
Definition at line 146 of file RiddersPropagator.ipp.
View newest version in sPHENIX GitHub at line 146 of file RiddersPropagator.ipp
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 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.
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] | target | The target surface |
[in] | options | Options of the propagations |
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.
|
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.
[in] | options | Options of the propagations |
[in] | start | Start parameters |
[in] | nominalResult | The 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().
|
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] | start | Start parameters which will be modified |
[in] | param | Index to get the parameter that will be modified |
[in] | target | Target surface |
[in] | nominal | Nominal end parameters |
[in] | deviations | Vector of deviations |
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.
|
private |
Definition at line 207 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 207 of file RiddersPropagator.hpp
|
private |
Definition at line 206 of file RiddersPropagator.hpp.
View newest version in sPHENIX GitHub at line 206 of file RiddersPropagator.hpp