Analysis Software
Documentation for sPHENIX simulation software
|
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. | |
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.
Definition at line 23 of file GenericDefaultExtension.hpp.
View newest version in sPHENIX GitHub at line 23 of file GenericDefaultExtension.hpp
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
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
|
inline |
Control function if the step evaluation would be valid.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
Definition at line 37 of file GenericDefaultExtension.hpp.
View newest version in sPHENIX GitHub at line 37 of file GenericDefaultExtension.hpp
|
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.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in] | state | State of the propagator |
[in] | stepper | Stepper of the propagation |
[in] | h | Step size |
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().
|
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.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in] | state | State of the propagator |
[in] | stepper | Stepper of the propagation |
[in] | h | Step size |
[out] | D | Transport matrix |
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().
|
inline |
Evaluater of the k_i's of the RKN4. For the case of i = 0 this step sets up qop, too.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in] | state | State of the propagator |
[in] | stepper | Stepper of the propagation |
[out] | knew | Next k_i that is evaluated |
[in] | bField | B-Field at the evaluation position |
[out] | kQoP | k_i elements of the momenta |
[in] | i | Index of the k_i, i = [0, 3] |
[in] | h | Step size (= 0. ^ 0.5 * StepSize ^ StepSize) |
[in] | kprev | Evaluated k_{i - 1} |
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.
|
inlineprivate |
Propagation function for the time coordinate.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in,out] | state | State of the propagator |
[in] | stepper | Stepper of the propagation |
[in] | h | Step 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().
|
inlineprivate |
Calculates the transport matrix D for the jacobian.
propagator_state_t | Type of the state of the propagator |
stepper_t | Type of the stepper |
navigator_t | Type of the navigator |
[in] | state | State of the propagator |
[in] | stepper | Stepper of the propagation |
[in] | h | Step size |
[out] | D | Transport matrix |
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.
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().