Coulomb scattering

Elastic scattering of charged particles off atoms can be simulated in three ways:

  • a detailed single scattering model in which each scattering interaction is sampled,

  • a multiple scattering approach which calculates global effects from many collisions, or

  • a combination of the two.

Though it is the most accurate, the single Coulomb scattering model is too computationally expensive to be used in most applications as the number of collisions can be extremely large. Instead, a “condensed” simulation algorithm [Kawrakow and Bielajew, 1998] is typically used to determine the net energy loss, displacement, and direction change from many collisions after a given path length. The Urban model described below is the default multiple scattering model in Celeritas for all energies and in Geant4 below 100 MeV. A third “mixed” simulation approach uses multiple scattering to simulate interactions with scattering angles below a given polar angle limit and single scattering for large angles. The Wentzel-VI model, used together with the single Coulomb scattering model, is an implementation of the mixed simulation algorithm. It is the default model in Geant4 above 100 MeV and currently under development in Celeritas.

Models

class CoulombScatteringInteractor

Applies the Wentzel single Coulomb scattering model.

This models incident high-energy electrons and positrons elastically scattering off of nuclei and atomic electrons. Scattering off of the nucleus versus electrons is randomly sampled based on the relative cross-sections (see celeritas::WentzelHelper). Production cuts are used to determine the maximum scattering angle off of electrons.

Todo:

When hadronic EM processes are supported, this should be extended to emit secondary ions.

Note

This performs the same sampling as in Geant4’s G4eCoulombScatteringModel, as documented in section 8.2 of the Geant4 Physics Reference Manual (release 11.1).

class UrbanMscScatter

Sample angular change and lateral displacement with the Urban multiple scattering model.

Note

This code performs the same method as in G4VMultipleScattering::AlongStepDoIt and G4UrbanMscModel::SampleScattering of the Geant4 10.7 release.

struct UrbanMscParameters

Settable parameters and default values for Urban multiple scattering.

\( \tau = t/\lambda \) where t is the true path length and \( \lambda \) is the mean free path of the multiple scattering. The range and safety factors are used in step limitation algorithms and default values are chosen to balance between simulation time and precision.

Geant4 Symbol

Celeritas Symbol

dtrl

small_range_frac

tlimitminfix

min_step

stepmin

min_step_fallback

tlimitminfix2

min_step_transform

(hardcoded)

min_endpoint_energy

tlow

min_scaling_energy

Todo:

Unify min_endpoint_energy with low energy limit

Combine with lambda_limit, safety_factor in physics params

Cross sections

class WentzelHelper

Helper class for the Wentzel OK and VI Coulomb scattering model.

This calculates the Moliere screening coefficient, the maximum scattering angle off of electrons, and the ratio of the electron to total Wentzel cross sections.

The Moliere screening parameter is largely from Fernández-Varea et al. [1993] Eq.

  1. For heavy particles, an empirical correction \( 1 + \exp(-(0.001 Z)^2) \) is used to better match the data in Attwood et al. [2006] . See also Bethe’s re-derivation of Moliere scattering [Bethe, 1953] .

See [The Geant4 Collaboration, 2023] section 8.5.

class MottRatioCalculator

Calculates the ratio of Mott cross section to the Rutherford cross section.

This ratio is an adjustment of the cross section from a purely classical treatment of a point nucleus in an electronic cloud (Rutherford scattering) to a quantum mechanical treatment. The implementation is an interpolated approximation developed in Lijian et al. [1995] and described in The Geant4 Collaboration [2023] section 8.4.

The input argument cos_theta is the cosine of the scattered angle in the z-aligned momentum frame.

Distributions

class WentzelDistribution

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 Fernández-Varea et al. [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) \).

Nuclear form factors

The nuclear form factors used by celeritas::WentzelDistribution are:

struct NuclearFormFactorTraits

Helper traits used in nuclear form factors.

Subclassed by celeritas::ExpNuclearFormFactor, celeritas::UUNuclearFormFactor

class ExpNuclearFormFactor : public celeritas::NuclearFormFactorTraits

Exponential nuclear form factor.

This nuclear form factor corresponds NuclearFormFactorType::exponential and assumes the nuclear charge decays exponentially from its center. This assumes a parameterization of the atomic nucleus valid for light and medium atomic nuclei from Eq. 7 of Butkevich et al. [2002] :

\[ R_N = 1.27A^{0.27} \,\mathrm{fm} \]
with a special case for the proton radius, \( R_p = 0.85 \) fm.

See Leroy and Rancoita [2016] Eq. 2.262.

Todo:

Instead of using this coarse parameterization, we should add nuclear radius to the isotope properties for a more accurate treatment, and construct these classes directly from the atomic radius.

Subclassed by celeritas::GaussianNuclearFormFactor

class GaussianNuclearFormFactor : public celeritas::ExpNuclearFormFactor

Gaussian nuclear form factor.

This nuclear form factor corresponds NuclearFormFactorType::gaussian and assumes a Gaussian distribution of nuclear charge: see Leroy and Rancoita [2016] Eq. 2.264. Its prefactor has the same value as the exponential.

class UUNuclearFormFactor : public celeritas::NuclearFormFactorTraits

Uniform-uniform folded nuclear form factor.

This nuclear form factor corresponds NuclearFormFactorType::flat and assumes a uniform nuclear charge at the center with a smoothly decreasing charge at the surface. From Leroy and Rancoita [2016] Eq. 2.265, this leads to a form factor:

\[ F(q) = F'(x(R_0, q)) F'(x(R_1, q)) \]
where \( x \equiv q R / \hbar \) uses the effective nuclear radius \( R_0 = 1.2 A^{1/3} \,\mathrm{fm} \) and nuclear surface skin \( R_1 = 2.0 \,\mathrm{fm} \), and
\[ F'(x) = \frac{3}{x^3} ( \sin x - x \cos x) \]
is the form factor for a uniformly charged sphere.

See also Helm [1956] , Fernández-Varea et al. [1993]

Warning

This form factor suffers from catastrophic numerical cancellation for small radii and momenta so should only be used for large nuclei or large momentum transfers.

Multiple scattering

Multiple scattering uses distributions for the exiting polar angles:

class UrbanLargeAngleDistribution

Sample the large-angle MSC scattering cosine.

Urbán [2006] proposes a convex combination of three probability distribution functions:

\[\begin{split} \begin{aligned} g_0(\mu) &\sim \exp(-a(1 - \mu)), \\ g_1(\mu) &\sim (b - \mu)^{-d}, \\ g_2(\mu) &\sim 1 \end{aligned} \end{split}\]
which have normalizing constants and sum to
\[ g(\mu) = p_1 p_2 g_0(\mu) + p_1(1-p_2) g_1(\mu) + (1-p_1) g_2(\mu). \]

In this distribution for large angles, \( p_2 = 1 \) so only the exponential and constant terms are sampled.

The Goudsmit-Saunderson moments for the expected angular deflection \( \theta \) over a physical path length \( s \) are:

\[ \langle \cos \theta \rangle \equiv \langle \mu \rangle = \ee^{-s/\lambda_1} \ , \]
and
\[ \langle \cos^2 \theta \rangle \equiv \langle \mu^2 \rangle = \frac{1}{3}\left(1 + 2 \ee^{-s / \lambda_2}\right) \ , \]
where the transport mean free paths \( \lambda_l \) are related to the \( l \)th angular moment of the elastic cross section scattering (see Eqs. 6-8, 15-16 from Fernández-Varea et al. [1993] ).

Given the number of mean free paths

\[ \tau \equiv \frac{s}{\lambda_1} \ , \]
and from Kawrakow and Bielajew [1998] that for kinetic energies between a few keV and infinity,
\[ 2 < \frac{\lambda_2}{\lambda_1} < \infty \ , \]
this class calculates the mean scattering angle and approximates the second moment of the scattering cosine using \( \lambda_2 \approx 2.5 \lambda_1 \).

Using these moments, Urban calculates:

\[ a = \frac{2\langle \mu \rangle + 9\langle \mu^2 \rangle - 3} {2\langle \mu \rangle - 3\langle \mu^2 \rangle + 1} \]
and
\[ p_1 = \frac{(a + 2)\langle \mu \rangle}{a} \,. \]