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
andG4UrbanMscModel::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.
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 (seeExpNuclearFormFactor
,GaussianNuclearFormFactor
, andUUNuclearFormFactor
) that describe an approximate spatial charge distribution of the nucleus. The class is used byCoulombScatteringInteractor
.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) \]\[ \mu = \mu_1 + \frac{(A + \mu_1) \xi (\mu_2 - \mu_1)}{A + \mu_2 - \xi (\mu_2 - \mu_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} \]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)) \]\[ F'(x) = \frac{3}{x^3} ( \sin x - x \cos x) \]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}\]\[ 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} \ , \]\[ \langle \cos^2 \theta \rangle \equiv \langle \mu^2 \rangle = \frac{1}{3}\left(1 + 2 \ee^{-s / \lambda_2}\right) \ , \]Given the number of mean free paths
\[ \tau \equiv \frac{s}{\lambda_1} \ , \]\[ 2 < \frac{\lambda_2}{\lambda_1} < \infty \ , \]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} \]\[ p_1 = \frac{(a + 2)\langle \mu \rangle}{a} \,. \]