Celeritas 0.6.0-47+develop.b3cbb238
|
Sample the polar scattering angle cosine for Wentzel Coulomb scattering. More...
#include <WentzelDistribution.hh>
Public Types | |
Type aliases | |
using | MomentumSq = units::MevMomentumSq |
using | Energy = units::MevEnergy |
using | Mass = units::MevMass |
using | MottCoeffMatrix = MottElementData::MottCoeffMatrix |
Public Member Functions | |
CELER_FUNCTION | WentzelDistribution (NativeCRef< WentzelOKVIData > const &wentzel, WentzelHelper const &helper, ParticleTrackView const &particle, IsotopeView const &target, ElementId el_id, real_type cos_thetamin, real_type cos_thetamax) |
Construct with state and model data. | |
template<class Engine > | |
CELER_FUNCTION real_type | operator() (Engine &rng) const |
Sample the cosine polar scattered angle of the incident particle. | |
Sample the polar scattering angle cosine for Wentzel Coulomb scattering.
This chooses between sampling scattering off an electron or nucleus based on the relative cross sections. Electron scattering angle imposes a maximum scattering angle, and nuclear sattering rejects an angular change based on the Mott cross section (see MottRatioCalculator). Nuclear scattering depends on the electronic and nuclear cross sections (calculated by WentzelHelper
) and nuclear form factors (see ExpNuclearFormFactor
, GaussianNuclearFormFactor
, and UUNuclearFormFactor
) that describe an approximate spatial charge distribution of the nucleus. The class is used by CoulombScatteringInteractor
.
The polar angle distribution is given in fernandez-msc-1993 Eq. 88 and is normalized on the interval \( cos\theta \in [\cos\theta_\mathrm{min}, \cos\theta_\mathrm{max}] \). The sampling function for the angular deflection
\[ \mu(\theta) \equiv \frac{1}{2}(1 - \cos\theta) \]
is
\[ \mu = \mu_1 + \frac{(A + \mu_1) \xi (\mu_2 - \mu_1)}{A + \mu_2 - \xi (\mu_2 - \mu_1)}, \]
where \( \mu_1 = \frac{1}{2}(1 - \cos\theta_\mathrm{min}) \), \( \mu_2 = \frac{1}{2}(1 - \cos\theta_\mathrm{max}) \), \( A \) is the screening coefficient, and \( \xi \sim U(0,1) \).