File PhotonConversion.hpp

namespace ActsFatras
class PhotonConversion
#include <ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp>

This class handles the photon conversion.

It evaluates the distance after which the interaction will occur and the final state due the interaction itself.

Public Types

using Scalar = ActsFatras::Particle::Scalar

Public Functions

template<typename generator_t>
Particle::Scalar generateFirstChildEnergyFraction(generator_t &generator, Scalar gammaMom) const
template<typename generator_t>
std::pair<Scalar, Scalar> generatePathLimits(generator_t &generator, const Particle &particle) const

Method for evaluating the distance after which the photon conversion will occur.

Template Parameters

generator_t – Type of the random number generator

Parameters
  • generator[inout] The random number generator

  • particle[in] The particle

Returns

valid X0 limit and no limit on L0

template<typename generator_t>
std::pair<Particle::Scalar, Particle::Scalar> generatePathLimits(generator_t &generator, const Particle &particle) const
template<typename generator_t>
bool run(generator_t &generator, Particle &particle, std::vector<Particle> &generated) const

This method evaluates the final state due to the photon conversion.

Template Parameters

generator_t – Type of the random number generator

Parameters
  • generator[inout] The random number generator

  • particle[inout] The interacting photon

  • generated[out] List of generated particles

Returns

True if the conversion occured, else false

Public Members

Scalar childEnergyScaleFactor = 2.

Scaling factor of children energy.

Scalar conversionProbScaleFactor = 0.98

Scaling factor for photon conversion probability.

Private Functions

template<typename generator_t>
Particle::Vector3 generateChildDirection(generator_t &generator, const Particle &particle) const

Generate the direction of the child particles.

Template Parameters

generator_t – Type of the random number generator

Parameters
  • generator[inout] The random number generator

  • particle[in] The photon

Returns

The direction vector of the child particle

std::array<Particle, 2> generateChildren(const Particle &photon, Scalar childEnergy, const Particle::Vector3 &childDirection) const

This method constructs and returns the child particles.

Parameters
  • photon[in] The interacting photon

  • childEnergy[in] The energy of one child particle

  • childDirection[in] The direction of the child particle

Returns

Array containing the produced leptons

template<typename generator_t>
Scalar generateFirstChildEnergyFraction(generator_t &generator, Scalar gammaMom) const

Generate the energy fraction of the first child particle.

Template Parameters

generator_t – Type of the random number generator

Parameters
  • generator[inout] The random number generator

  • gammaMom[in] The momentum of the photon

Returns

The energy of the child particle

inline Scalar screenFunction1(Scalar delta) const

Helper methods for momentum evaluation.

Note

These methods are taken from the Geant4 class G4PairProductionRelModel

inline Scalar screenFunction2(Scalar delta) const

Private Static Attributes

static const Scalar kElectronMass

Electron mass.

This is an static constant and not a member variable so the struct has no internal state. Otherwise, the interaction list breaks.