Struct DenseEnvironmentExtension

Struct Documentation

struct Acts::DenseEnvironmentExtension

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.

Public Functions

DenseEnvironmentExtension() = default

Default constructor.

template<typename propagator_state_t, typename stepper_t>
int bid(const propagator_state_t &state, const stepper_t &stepper) const

Control function if the step evaluation would be valid.

Return

Boolean flag if the step would be valid

Template Parameters
  • propagator_state_t: Type of the state of the propagator

  • stepper_t: Type of the stepper

Parameters
  • [in] state: State of the propagator

template<typename propagator_state_t, typename stepper_t>
bool finalize(propagator_state_t &state, const stepper_t &stepper, 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.

Return

Boolean flag if the calculation is valid

Template Parameters
  • propagator_state_t: Type of the state of the propagator

  • stepper_t: Type of the stepper

Parameters
  • [in] state: State of the propagator

  • [in] h: Step size

template<typename propagator_state_t, typename stepper_t>
bool finalize(propagator_state_t &state, const stepper_t &stepper, 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.

Return

Boolean flag if the calculation is valid

Template Parameters
  • propagator_state_t: Type of the state of the propagator

  • stepper_t: Type of the stepper

Parameters
  • [in] state: State of the propagator

  • [in] h: Step size

  • [out] D: Transport matrix

template<typename propagator_state_t, typename stepper_t>
bool k(const propagator_state_t &state, const stepper_t &stepper, Vector3D &knew, const Vector3D &bField, std::array<double, 4> &kQoP, const int i = 0, const double h = 0., const Vector3D &kprev = Vector3D())

Evaluater of the k_i’s of the RKN4.

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

Return

Boolean flag if the calculation is valid

Template Parameters
  • stepper_state_t: Type of the state of the propagator

  • stepper_t: Type of the stepper

Parameters
  • [in] state: State of the propagator

  • [out] knew: Next k_i that is evaluated

  • [out] kQoP: k_i elements of the momenta

  • [in] bField: B-Field at the evaluation position

  • [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}

Public Members

double currentMomentum = 0.

Momentum at a certain point.

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 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