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

#include <ElectronScatteringHelper.hpp>

Inheritance diagram for ElectronScatteringHelper::SmoothRayleighHelper:

Public Member Functions

 SmoothRayleighHelper (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_FFv
Random_random
vector< Array_RSSv
Array _sintheta2v
Array _sinthetav

Detailed Description

This class implements Rayleigh (coherent, elastic) scattering, without support for polarization, using tabulated cross sections and atomic form factors (indexed on atomic number) to calculate the cross section and phase function. Below the energy range of the tabulated data, \(Z^2\) Thomson scattering is used instead.

Member Function Documentation

◆ peeloffScattering()

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

Reimplemented from ElectronScatteringHelper::Helper.

◆ performScattering()

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

Reimplemented from ElectronScatteringHelper::Helper.

◆ sectionSca()

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

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