Celeritas  0.5.0-86+4a8eea4
Classes | Public Member Functions | List of all members
celeritas::MuPPEnergyDistribution Class Reference

Sample the electron and positron energies for muon pair production. More...

#include <MuPPEnergyDistribution.hh>

Classes

struct  PairEnergy
 Sampled secondary energies. More...
 

Public Types

Type aliases
using Mass = units::MevMass
 
using Energy = units::MevEnergy
 

Public Member Functions

CELER_FUNCTION MuPPEnergyDistribution (NativeCRef< MuPairProductionData > const &shared, ParticleTrackView const &particle, CutoffView const &cutoffs, ElementView const &element)
 Construct from shared and incident particle data. More...
 
template<class Engine >
CELER_FUNCTION PairEnergy operator() (Engine &rng)
 
CELER_FUNCTION Energy min_pair_energy () const
 Minimum energy of the electron-positron pair [MeV].
 
CELER_FUNCTION Energy max_pair_energy () const
 Maximum energy of the electron-positron pair [MeV].
 
template<class Engine >
CELER_FUNCTION auto operator() (Engine &rng) -> PairEnergy
 Sample the exiting pair energy.
 

Detailed Description

Sample the electron and positron energies for muon pair production.

The energy transfer to the electron-positron pair is sampled using inverse transform sampling on a tabulated CDF. The CDF is calculated on a 2D grid, where the x-axis is the log of the incident muon energy and the y-axis is the log of the ratio of the energy transfer to the incident particle energy. Because the shape of the distribution depends only weakly on the atomic number, the CDF is calculated for a hardcoded set of points equally spaced in \( \log Z \) and linearly interpolated.

The formula used for the differential cross section is valid when the maximum energy transfer to the electron-positron pair lies between \( \epsilon_{\text{min}} = 4 m \), where \( m \) is the electron mass, and

\[ \epsilon_{\text{max}} = E + \frac{3 \sqrt{e}}{4} \mu Z^{1/3}), \]

where \( E = T + \mu \) is the total muon energy, \( \mu \) is the muon mass, \( e \) is Euler's number, and \( Z \) is the atomic number.

The maximum energy partition between the electron and positron is calculated as

\[ r_{\text{max}} = \left[1 - 6 \frac{\mu^2}{E (E - \epsilon)} \right] \sqrt{1 - \epsilon_{\text{min}} / \epsilon}. \]

The partition \( r \) is then sampled uniformly in \( [-r_{\text{max}}, r_{\text{max}}) \).

Constructor & Destructor Documentation

◆ MuPPEnergyDistribution()

CELER_FUNCTION celeritas::MuPPEnergyDistribution::MuPPEnergyDistribution ( NativeCRef< MuPairProductionData > const &  shared,
ParticleTrackView const &  particle,
CutoffView const &  cutoffs,
ElementView const &  element 
)
inline

Construct from shared and incident particle data.

The incident energy must be within the bounds of the sampling table data.


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