The SKIRT project
advanced radiative transfer for astrophysics
ElectronScatteringHelper Namespace Reference

Classes

class  AnomalousRayleighHelper
class  BoundComptonHelper
class  FreeBoundComptonHelper
class  FreeComptonHelper
class  FreeComptonWithPolarizationHelper
class  Helper
class  NoScatteringHelper
class  SmoothRayleighHelper

Detailed Description

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:

  • NoScatteringHelper: a stub with zero cross section, used when a scattering channel (Rayleigh or Compton) is disabled altogether.
  • FreeComptonHelper and FreeComptonWithPolarizationHelper: Compton scattering by free electrons, delegating the cross section, energy shift and phase function to the ComptonPhaseFunction class (using the Thomson limit at low energies, where the Compton formulas become numerically unstable), without or with support for polarization, respectively.
  • BoundComptonHelper: Compton scattering by electrons bound to an atom, using tabulated cross sections, incoherent scattering functions and target-electron momentum distributions.
  • FreeBoundComptonHelper: a weighted combination of free- and bound-electron Compton scattering for an ion with \(N\) out of \(Z\) electrons still bound, used only by XRayIonicGasMix.
  • SmoothRayleighHelper and AnomalousRayleighHelper: two levels of fidelity for Rayleigh (coherent, elastic) scattering, using tabulated cross sections and atomic form factors, with AnomalousRayleighHelper additionally including tabulated anomalous (energy-dependent) scattering corrections; both fall back to \(Z^2\) Thomson scattering below the energy range of the tabulated data.

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.