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

Evaluater of the k_i's and elements of the transport matrix D of the RKN4 stepping. This implementation involves energy loss due to ioninisation, bremsstrahlung, pair production and photonuclear interaction in the propagation and the jacobian. These effects will only occur if the propagation is in a TrackingVolume with attached material. More...

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

+ Collaboration diagram for Acts::detail::GenericDenseEnvironmentExtension< scalar_t >:

Public Types

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

Public Member Functions

 GenericDenseEnvironmentExtension ()=default
 Default constructor.
 
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
int bid (const propagator_state_t &state, const stepper_t &stepper, const navigator_t &navigator) 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 &navigator, 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 member parameters, 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 &, const double h) const
 After a RKN4 step was accepted by the stepper this method has an additional veto on the quality of the step. The veto lies in evaluation of the energy loss and the therewith constrained to keep the momentum after the step in reasonable values.
 
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
 After a RKN4 step was accepted by the stepper this method has an additional veto on the quality of the step. The veto lies in the evaluation of the energy loss, the therewith constrained to keep the momentum after the step in reasonable values and the evaluation of the transport matrix.
 

Public Attributes

Scalar currentMomentum = 0.
 Momentum at a certain point.
 
Scalar initialMomentum = 0.
 Particles momentum at k1.
 
Material material
 
std::array< Scalar, 4 > dLdl {}
 Derivatives dLambda''dlambda at each sub-step point.
 
std::array< Scalar, 4 > qop {}
 q/p at each sub-step
 
std::array< Scalar, 4 > dPds {}
 Derivatives dPds at each sub-step.
 
Scalar dgdqopValue = 0.
 Derivative d(dEds)d(q/p) evaluated at the initial point.
 
Scalar g = 0.
 Derivative dEds at the initial point.
 
std::array< Scalar, 4 > tKi {}
 k_i equivalent for the time propagation
 
std::array< Scalar, 4 > Lambdappi {}
 Lambda''_i.
 
std::array< Scalar, 4 > energy {}
 Energy at each sub-step.
 

Private Member Functions

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
 Evaluates the transport matrix D for the jacobian.
 
template<typename propagator_state_t , typename stepper_t >
void initializeEnergyLoss (const propagator_state_t &state, const stepper_t &stepper)
 Initializer of all parameters related to a RKN4 step with energy loss of a particle in material.
 
template<typename propagator_state_t , typename stepper_t >
void updateEnergyLoss (const double mass, const double h, const propagator_state_t &state, const stepper_t &stepper, const int i)
 Update of the kinematic parameters of the RKN4 sub-steps after initialization with energy loss of a particle in material.
 

Detailed Description

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

Evaluater of the k_i's and elements of the transport matrix D of the RKN4 stepping. This implementation involves energy loss due to ioninisation, bremsstrahlung, pair production and photonuclear interaction in the propagation and the jacobian. These effects will only occur if the propagation is in a TrackingVolume with attached material.

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

Definition at line 34 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 34 of file GenericDenseEnvironmentExtension.hpp

Member Typedef Documentation

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

Definition at line 35 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 35 of file GenericDenseEnvironmentExtension.hpp

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

Vector3 replacement for the custom scalar type.

Definition at line 37 of file GenericDenseEnvironmentExtension.hpp.

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

Constructor & Destructor Documentation

template<typename scalar_t >
Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::GenericDenseEnvironmentExtension ( )
default

Default constructor.

Member Function Documentation

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t , typename navigator_t >
int Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::bid ( const propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  navigator 
) 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
Parameters
[in]stateState of the propagator
[in]stepperStepper of the propagator
[in]navigatorNavigator of the propagator
Returns
Boolean flag if the step would be valid

Definition at line 79 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 79 of file GenericDenseEnvironmentExtension.hpp

References mass, and particleHypothesis.

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

After a RKN4 step was accepted by the stepper this method has an additional veto on the quality of the step. The veto lies in evaluation of the energy loss and the therewith constrained to keep the momentum after the step in reasonable values.

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 propagator
[in]hStep size
Returns
Boolean flag if the calculation is valid

Definition at line 182 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 182 of file GenericDenseEnvironmentExtension.hpp

References Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dPds, Acts::eFreeQOverP, Acts::eFreeTime, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::g, mass, particleHypothesis, and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::tKi.

Referenced by Acts::detail::GenericDenseEnvironmentExtension< 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::GenericDenseEnvironmentExtension< scalar_t >::finalize ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  navigator,
const double  h,
FreeMatrix D 
) const
inline

After a RKN4 step was accepted by the stepper this method has an additional veto on the quality of the step. The veto lies in the evaluation of the energy loss, the therewith constrained to keep the momentum after the step in reasonable values and 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 propagator
[in]navigatorNavigator of the propagator
[in]hStep size
[out]DTransport matrix
Returns
Boolean flag if the calculation is valid

Definition at line 236 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 236 of file GenericDenseEnvironmentExtension.hpp

References Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::finalize(), and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::transportMatrix().

+ Here is the call graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t >
void Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initializeEnergyLoss ( const propagator_state_t &  state,
const stepper_t &  stepper 
)
inlineprivate

Initializer of all parameters related to a RKN4 step with energy loss of a particle in material.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
Parameters
[in]stateDeliverer of configurations

Definition at line 401 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 401 of file GenericDenseEnvironmentExtension.hpp

References Acts::computeEnergyLossMean(), Acts::computeEnergyLossMode(), Acts::deriveEnergyLossMeanQOverP(), Acts::deriveEnergyLossModeQOverP(), Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dgdqopValue, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dLdl, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dPds, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::energy, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::g, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initialMomentum, mass, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::material, particleHypothesis, and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::qop.

Referenced by Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::k().

+ Here is the call graph for this function:

+ 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::GenericDenseEnvironmentExtension< scalar_t >::k ( const propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  navigator,
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 member parameters, too.

Template Parameters
stepper_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 propagator
[in]navigatorNavigator of the propagator
[out]knewNext k_i that is evaluated
[out]kQoPk_i elements of the momenta
[in]bFieldB-Field at the evaluation position
[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 120 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 120 of file GenericDenseEnvironmentExtension.hpp

References Acts::VectorHelpers::cross(), Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::currentMomentum, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::energy, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::g, h, i, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initializeEnergyLoss(), Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initialMomentum, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::Lambdappi, mass, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::material, particleHypothesis, position, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::qop, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::tKi, and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::updateEnergyLoss().

+ 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::GenericDenseEnvironmentExtension< scalar_t >::transportMatrix ( propagator_state_t &  state,
const stepper_t &  stepper,
const navigator_t &  ,
const double  h,
FreeMatrix D 
) const
inlineprivate

Evaluates 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]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 dFdT and 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 on propagating the parameters T and lambda (including g(lambda) and E(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 dFdu' (due to the missing Lambda part) and only exists for dGdu' in dlambda/dlambda.

Propagation of derivatives of dLambda''dlambda at each sub-step

Definition at line 257 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 257 of file GenericDenseEnvironmentExtension.hpp

References Acts::VectorHelpers::cross(), Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dLdl, h, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::Lambdappi, mass, particleHypothesis, and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::qop.

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename scalar_t >
template<typename propagator_state_t , typename stepper_t >
void Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::updateEnergyLoss ( const double  mass,
const double  h,
const propagator_state_t &  state,
const stepper_t &  stepper,
const int  i 
)
inlineprivate

Update of the kinematic parameters of the RKN4 sub-steps after initialization with energy loss of a particle in material.

Template Parameters
propagator_state_tType of the state of the propagator
stepper_tType of the stepper
Parameters
[in]hStepped distance of the sub-step (1-3)
[in]stateState of the stepper
[in]iIndex of the sub-step (1-3)

Definition at line 458 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 458 of file GenericDenseEnvironmentExtension.hpp

References Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::currentMomentum, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dgdqopValue, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dLdl, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dPds, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::energy, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::g, i, Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initialMomentum, and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::qop.

Referenced by Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::k().

+ Here is the caller graph for this function:

Member Data Documentation

template<typename scalar_t >
Scalar Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::currentMomentum = 0.
template<typename scalar_t >
Scalar Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::dgdqopValue = 0.

Derivative d(dEds)d(q/p) evaluated at the initial point.

Definition at line 53 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 53 of file GenericDenseEnvironmentExtension.hpp

Referenced by Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initializeEnergyLoss(), and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::updateEnergyLoss().

template<typename scalar_t >
std::array<Scalar, 4> Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::Lambdappi {}
template<typename scalar_t >
Material Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::material

Material that will be passed TODO : Might not be needed anymore

Definition at line 45 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 45 of file GenericDenseEnvironmentExtension.hpp

Referenced by Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::initializeEnergyLoss(), and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::k().

template<typename scalar_t >
std::array<Scalar, 4> Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::tKi {}

k_i equivalent for the time propagation

Definition at line 57 of file GenericDenseEnvironmentExtension.hpp.

View newest version in sPHENIX GitHub at line 57 of file GenericDenseEnvironmentExtension.hpp

Referenced by Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::finalize(), and Acts::detail::GenericDenseEnvironmentExtension< scalar_t >::k().


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