ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::EigenStepperDenseExtension Struct Reference

Evaluator of the k_i's and elements of the transport matrix D of the RKN4 stepping. More...

#include <Acts/Propagator/EigenStepperDenseExtension.hpp>

Collaboration diagram for Acts::EigenStepperDenseExtension:
[legend]

Public Member Functions

template<typename stepper_t>
bool finalize (typename stepper_t::State &state, const stepper_t &stepper, const IVolumeMaterial *volumeMaterial, 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.
template<typename stepper_t>
bool finalize (typename stepper_t::State &state, const stepper_t &stepper, const IVolumeMaterial *volumeMaterial, 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.
template<int i, typename stepper_t>
requires (i >= 0 && i <= 3)
bool k (const typename stepper_t::State &state, const stepper_t &stepper, const IVolumeMaterial *volumeMaterial, Vector3 &knew, const Vector3 &bField, std::array< double, 4 > &kQoP, const double h=0., const Vector3 &kprev=Vector3::Zero())
 Evaluator of the k_i's of the RKN4.

Public Attributes

double currentMomentum = 0.
 Momentum at a certain point.
EigenStepperDefaultExtension defaultExtension
 Fallback extension.
double dgdqopValue = 0.
 Derivative d(dEds)d(q/p) evaluated at the initial point.
std::array< double, 4 > dLdl {}
 Derivatives dLambda''dlambda at each sub-step point.
std::array< double, 4 > dPds {}
 Derivatives dPds at each sub-step.
std::array< double, 4 > energy {}
 Energy at each sub-step.
double g = 0.
 Derivative dEds at the initial point.
double initialMomentum = 0.
 Particles momentum at k1.
std::array< double, 4 > Lambdappi {}
 Lambda''_i.
Material material = Material::Vacuum()
 Material that will be passed TODO : Might not be needed anymore.
std::array< double, 4 > qop {}
 q/p at each sub-step
std::array< double, 4 > tKi {}
 k_i equivalent for the time propagation

Detailed Description

Evaluator of the k_i's and elements of the transport matrix D of the RKN4 stepping.

This implementation involves energy loss due to ionisation, 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.

Member Function Documentation

◆ finalize() [1/2]

template<typename stepper_t>
bool Acts::EigenStepperDenseExtension::finalize ( typename stepper_t::State & state,
const stepper_t & stepper,
const IVolumeMaterial * volumeMaterial,
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 Parameters
stepper_tType of the stepper
Parameters
[in]stateState of the stepper
[in]stepperStepper of the propagator
[in]volumeMaterialMaterial of the volume
[in]hStep size
Returns
Boolean flag if the calculation is valid

◆ finalize() [2/2]

template<typename stepper_t>
bool Acts::EigenStepperDenseExtension::finalize ( typename stepper_t::State & state,
const stepper_t & stepper,
const IVolumeMaterial * volumeMaterial,
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.

Template Parameters
stepper_tType of the stepper
Parameters
[in]stateState of the stepper
[in]stepperStepper of the propagator
[in]volumeMaterialMaterial of the volume
[in]hStep size
[out]DTransport matrix
Returns
Boolean flag if the calculation is valid

◆ k()

template<int i, typename stepper_t>
requires (i >= 0 && i <= 3)
bool Acts::EigenStepperDenseExtension::k ( const typename stepper_t::State & state,
const stepper_t & stepper,
const IVolumeMaterial * volumeMaterial,
Vector3 & knew,
const Vector3 & bField,
std::array< double, 4 > & kQoP,
const double h = 0.,
const Vector3 & kprev = Vector3::Zero() )

Evaluator of the k_i's of the RKN4.

For the case of i = 0 this step sets up member parameters, too.

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

Member Data Documentation

◆ currentMomentum

double Acts::EigenStepperDenseExtension::currentMomentum = 0.

Momentum at a certain point.

◆ defaultExtension

EigenStepperDefaultExtension Acts::EigenStepperDenseExtension::defaultExtension

Fallback extension.

◆ dgdqopValue

double Acts::EigenStepperDenseExtension::dgdqopValue = 0.

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

◆ dLdl

std::array<double, 4> Acts::EigenStepperDenseExtension::dLdl {}

Derivatives dLambda''dlambda at each sub-step point.

◆ dPds

std::array<double, 4> Acts::EigenStepperDenseExtension::dPds {}

Derivatives dPds at each sub-step.

◆ energy

std::array<double, 4> Acts::EigenStepperDenseExtension::energy {}

Energy at each sub-step.

◆ g

double Acts::EigenStepperDenseExtension::g = 0.

Derivative dEds at the initial point.

◆ initialMomentum

double Acts::EigenStepperDenseExtension::initialMomentum = 0.

Particles momentum at k1.

◆ Lambdappi

std::array<double, 4> Acts::EigenStepperDenseExtension::Lambdappi {}

Lambda''_i.

◆ material

Material Acts::EigenStepperDenseExtension::material = Material::Vacuum()

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

◆ qop

std::array<double, 4> Acts::EigenStepperDenseExtension::qop {}

q/p at each sub-step

◆ tKi

std::array<double, 4> Acts::EigenStepperDenseExtension::tKi {}

k_i equivalent for the time propagation