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
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 is typically used to determine the net energy loss, displacement, and direction change from many collisions after a given path length. The Urban model 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. No secondaries are created in this process (in the future, with hadronic transport support, secondary ions may be emitted), however production cuts are used to determine the maximum scattering angle off of electrons.
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.
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] which references 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 (see WentzelHelper::cos_thetamax_electron), 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)}, \]
The nuclear form factors used by this distribution are:
-
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.