Celeritas
0.5.0-86+4a8eea4
|
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. | |
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}}) \).
|
inline |
Construct from shared and incident particle data.
The incident energy must be within the bounds of the sampling table data.