Classes | |
| class | AnomalousRayleighHelper |
| class | BoundComptonHelper |
| class | FreeBoundComptonHelper |
| class | FreeComptonHelper |
| class | FreeComptonWithPolarizationHelper |
| class | Helper |
| class | NoScatteringHelper |
| class | SmoothRayleighHelper |
This namespace offers a set of helper classes that implement the various treatments of photon scattering by electrons – bound to an atom or ion, or free – supported by the XRayAtomicGasMix and XRayIonicGasMix material mix classes. Both classes select one concrete helper for Rayleigh (elastic) scattering and one for Compton (inelastic) scattering, based on their own configured implementation options, and delegate all scattering-related calculations to these two helpers for the remainder of the simulation; see the documentation of those classes for the physics (cross section and phase function formulas, energy shift) implemented by each helper.
All helpers derive from the abstract base class Helper, which declares the common interface: a scattering cross section per atom or ion, and peel-off and perform-scattering functions with and without support for polarization. A helper that does not (or does) support polarization needs to override only the unpolarized (or only the polarized) pair of functions; Helper provides a default implementation for the other pair (a no-op for the unpolarized functions, and a fall-through to the unpolarized functions for the polarized ones) so that a derived class never needs to implement both. All functions other than the cross section take both the atomic number \(Z\) and the number of bound electrons \(N\) of the scattering species; because XRayAtomicGasMix always represents neutral atoms ( \(N=Z\)), Helper also offers a convenience overload of each function that takes only \(Z\).
The concrete helpers are:
Aside from NoScatteringHelper and FreeBoundComptonHelper, all of these helpers load their tabulated data, indexed on atomic number up to \(Z=30\), from resource files during construction.