Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::detail::GenericDefaultExtension< scalar_t > Struct Template Reference

Default evaluater of the k_i's and elements of the transport matrix D of the RKN4 stepping. This is a pure implementation by textbook. More...

#include <acts/blob/sPHENIX/Core/include/Acts/Propagator/detail/GenericDefaultExtension.hpp>

Public Types

using Scalar = scalar_t
 
using ThisVector3 = Eigen::Matrix< Scalar, 3, 1 >
 Vector3 replacement for the custom scalar type.
 

Public Member Functions

template<typename propagator_state_t , typename stepper_t , typename navigator_t >
int bid (const propagator_state_t &, const stepper_t &, const navigator_t &) const
 Control function if the step evaluation would be valid.
 
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool k (const propagator_state_t &state, const stepper_t &stepper, const navigator_t &, ThisVector3 &knew, const Vector3 &bField, std::array< Scalar, 4 > &kQoP, const int i=0, const double h=0., const ThisVector3 &kprev=ThisVector3::Zero())
 Evaluater of the k_i's of the RKN4. For the case of i = 0 this step sets up qop, too.
 
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool finalize (propagator_state_t &state, const stepper_t &stepper, const navigator_t &navigator, const double h) const
 Veto function after a RKN4 step was accepted by judging on the error of the step. Since the textbook does not deliver further vetos, this is a dummy function.
 
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool finalize (propagator_state_t &state, const stepper_t &stepper, const navigator_t &navigator, const double h, FreeMatrix &D) const
 Veto function after a RKN4 step was accepted by judging on the error of the step. Since the textbook does not deliver further vetos, this is just for the evaluation of the transport matrix.
 

Private Member Functions

template<typename propagator_state_t , typename stepper_t , typename navigator_t >
void propagateTime (propagator_state_t &state, const stepper_t &stepper, const navigator_t &, const double h) const
 Propagation function for the time coordinate.
 
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool transportMatrix (propagator_state_t &state, const stepper_t &stepper, const navigator_t &, const double h, FreeMatrix &D) const
 Calculates the transport matrix D for the jacobian.
 

Detailed Description

template<typename scalar_t>
struct Acts::detail::GenericDefaultExtension< scalar_t >

Default evaluater of the k_i's and elements of the transport matrix D of the RKN4 stepping. This is a pure implementation by textbook.

Note
This it templated on the scalar type because of the autodiff plugin.

Definition at line 23 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 23 of file GenericDefaultExtension.hpp

Member Typedef Documentation

template<typename scalar_t >
using Acts::detail::GenericDefaultExtension< scalar_t >::Scalar = scalar_t

Definition at line 24 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 24 of file GenericDefaultExtension.hpp

template<typename scalar_t >
using Acts::detail::GenericDefaultExtension< scalar_t >::ThisVector3 = Eigen::Matrix<Scalar, 3, 1>

Vector3 replacement for the custom scalar type.

Definition at line 26 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 26 of file GenericDefaultExtension.hpp

Member Function Documentation

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
int Acts::detail::GenericDefaultExtension< scalar_t >::bid ( const propagator_state_t &  ,
const stepper_t &  ,
const navigator_t &   
) const
inline

Control function if the step evaluation would be valid.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Returns
Boolean flag if the step would be valid

Definition at line 37 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 37 of file GenericDefaultExtension.hpp

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool Acts::detail::GenericDefaultExtension< scalar_t >::finalize ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  navigator,
const double  h 
) const
inline

Veto function after a RKN4 step was accepted by judging on the error of the step. Since the textbook does not deliver further vetos, this is a dummy function.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in]stateState of the propagator
[in]stepperStepper of the propagation
[in]hStep size
Returns
Boolean flag if the calculation is valid

Definition at line 92 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 92 of file GenericDefaultExtension.hpp

References Acts::detail::GenericDefaultExtension< scalar_t >::propagateTime().

+ Here is the call graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool Acts::detail::GenericDefaultExtension< scalar_t >::finalize ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  navigator,
const double  h,
FreeMatrix D 
) const
inline

Veto function after a RKN4 step was accepted by judging on the error of the step. Since the textbook does not deliver further vetos, this is just for the evaluation of the transport matrix.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in]stateState of the propagator
[in]stepperStepper of the propagation
[in]hStep size
[out]DTransport matrix
Returns
Boolean flag if the calculation is valid

Definition at line 114 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 114 of file GenericDefaultExtension.hpp

References Acts::detail::GenericDefaultExtension< scalar_t >::propagateTime(), and Acts::detail::GenericDefaultExtension< scalar_t >::transportMatrix().

+ Here is the call graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool Acts::detail::GenericDefaultExtension< scalar_t >::k ( const propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  ,
ThisVector3 knew,
const Vector3 bField,
std::array< Scalar, 4 > &  kQoP,
const int  i = 0,
const double  h = 0.,
const ThisVector3 kprev = ThisVector3::Zero() 
)
inline

Evaluater of the k_i's of the RKN4. For the case of i = 0 this step sets up qop, too.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in]stateState of the propagator
[in]stepperStepper of the propagation
[out]knewNext k_i that is evaluated
[in]bFieldB-Field at the evaluation position
[out]kQoPk_i elements of the momenta
[in]iIndex of the k_i, i = [0, 3]
[in]hStep size (= 0. ^ 0.5 * StepSize ^ StepSize)
[in]kprevEvaluated k_{i - 1}
Returns
Boolean flag if the calculation is valid

Definition at line 61 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 61 of file GenericDefaultExtension.hpp

References Acts::VectorHelpers::cross(), h, and i.

+ Here is the call graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
void Acts::detail::GenericDefaultExtension< scalar_t >::propagateTime ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  ,
const double  h 
) const
inlineprivate

Propagation function for the time coordinate.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in,out]stateState of the propagator
[in]stepperStepper of the propagation
[in]hStep size

This evaluation is based on dt/ds = 1/v = 1/(beta * c) with the velocity v, the speed of light c and beta = v/c. This can be re-written as dt/ds = sqrt(m^2/p^2 + c^{-2}) with the mass m and the momentum p.

Definition at line 133 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 133 of file GenericDefaultExtension.hpp

References Acts::eFreeTime, Acts::UnitConstants::m, and merge_hashes::p.

Referenced by Acts::detail::GenericDefaultExtension< scalar_t >::finalize().

+ Here is the caller graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
bool Acts::detail::GenericDefaultExtension< scalar_t >::transportMatrix ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  ,
const double  h,
FreeMatrix D 
) const
inlineprivate

Calculates the transport matrix D for the jacobian.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
navigator_tType of the navigator
Parameters
[in]stateState of the propagator
[in]stepperStepper of the propagation
[in]hStep size
[out]DTransport matrix
Returns
Boolean flag if evaluation is valid

The calculations are based on ATL-SOFT-PUB-2009-002. The update of the Jacobian matrix is requires only the calculation of eq. 17 and 18. Since the terms of eq. 18 are currently 0, this matrix is not needed in the calculation. The matrix A from eq. 17 consists out of 3 different parts. The first one is given by the upper left 3x3 matrix that are calculated by the derivatives dF/dT (called dFdT) and dG/dT (calls dGdT). The second is given by the top 3 lines of the rightmost column. This is calculated by dFdL and dGdL. The remaining non-zero term is calculated directly. The naming of the variables is explained in eq. 11 and are directly related to the initial problem in eq. 7. The evaluation is based by propagating the parameters T and lambda as given in eq. 16 and evaluating the derivations for matrix A.

Note
The translation for u_{n+1} in eq. 7 is in this case a 3-dimensional vector without a dependency of Lambda or lambda neither in u_n nor in u_n'. The second and fourth eq. in eq. 14 have the constant offset matrices h * Id and Id respectively. This involves that the constant offset does not exist for rectangular matrix dGdu' (due to the missing Lambda part) and only exists for dFdu' in dlambda/dlambda.

Definition at line 164 of file GenericDefaultExtension.hpp.

View newest version in sPHENIX GitHub at line 164 of file GenericDefaultExtension.hpp

References Acts::VectorHelpers::cross(), h, Acts::UnitConstants::m, and merge_hashes::p.

Referenced by Acts::detail::GenericDefaultExtension< scalar_t >::finalize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


The documentation for this struct was generated from the following file: