The SKIRT project
advanced radiative transfer for astrophysics
ElectronScatteringHelper::AnomalousRayleighHelper Class Reference

#include <ElectronScatteringHelper.hpp>

Inheritance diagram for ElectronScatteringHelper::AnomalousRayleighHelper:

Public Member Functions

 AnomalousRayleighHelper (SimulationItem *item)
void peeloffScattering (double &I, double &lambda, int Z, int N, Direction bfk, Direction bfkobs) const override
Direction performScattering (double &lambda, int Z, int N, Direction bfk) const override
double sectionSca (double lambda, int Z, int N) const override
Public Member Functions inherited from ElectronScatteringHelper::Helper
void peeloffScattering (double &I, double &lambda, int Z, Direction bfk, Direction bfkobs) const
void peeloffScattering (double &I, double &Q, double &U, double &V, double &lambda, int Z, Direction bfk, Direction bfkobs, Direction bfky, const StokesVector *sv) const
virtual void peeloffScattering (double &I, double &Q, double &U, double &V, double &lambda, int Z, int N, Direction bfk, Direction bfkobs, Direction bfky, const StokesVector *sv) const
Direction performScattering (double &lambda, int Z, Direction bfk) const
Direction performScattering (double &lambda, int Z, Direction bfk, StokesVector *sv) const
virtual Direction performScattering (double &lambda, int Z, int N, Direction bfk, StokesVector *sv) const
double sectionSca (double lambda, int Z) const

Private Member Functions

double generateCosineFromPhaseFunction (double x, double Z) const
double phaseFunctionValue (double x, double costheta, int Z) const

Private Attributes

Array _cos2thetav
Array _costhetav
DipolePhaseFunction _dpf
vector< Array > _F1v
vector< Array > _F2v
vector< Array > _FFv
Random * _random
vector< Array > _RSAv
Array _sintheta2v
Array _sinthetav

Detailed Description

This class implements Rayleigh (coherent, elastic) scattering, without support for polarization, at a higher level of fidelity than SmoothRayleighHelper: in addition to tabulated cross sections and atomic form factors, it uses tabulated real and imaginary anomalous scattering functions (indexed on atomic number) that account for the energy-dependent deviation from the smooth form-factor approximation near absorption edges. Below the energy range of the tabulated data, \(Z^2\) Thomson scattering is used instead.

Member Function Documentation

◆ peeloffScattering()

void ElectronScatteringHelper::AnomalousRayleighHelper::peeloffScattering ( double & I,
double & lambda,
int Z,
int N,
Direction bfk,
Direction bfkobs ) const
overridevirtual

Reimplemented from ElectronScatteringHelper::Helper.

◆ performScattering()

Direction ElectronScatteringHelper::AnomalousRayleighHelper::performScattering ( double & lambda,
int Z,
int N,
Direction bfk ) const
overridevirtual

Reimplemented from ElectronScatteringHelper::Helper.

◆ sectionSca()

double ElectronScatteringHelper::AnomalousRayleighHelper::sectionSca ( double lambda,
int Z,
int N ) const
overridevirtual

The documentation for this class was generated from the following file: