Celeritas 0.6.0-2+develop.96611fab
Loading...
Searching...
No Matches
Public Member Functions | List of all members
celeritas::UrbanLargeAngleDistribution Class Reference

Sample the large-angle MSC scattering cosine. More...

#include <UrbanLargeAngleDistribution.hh>

Public Member Functions

CELER_FUNCTION UrbanLargeAngleDistribution (real_type tau)
 Construct with mean values.
 
template<class Engine >
CELER_FUNCTION real_type operator() (Engine &rng)
 Sample from two parameters of the model function.
 

Detailed Description

Sample the large-angle MSC scattering cosine.

urban-msc-2006 proposes a convex combination of three probability distribution functions:

\[ \begin{aligned} g_0(\mu) &\sim \exp(-a(1 - \mu)), \\ g_1(\mu) &\sim (b - \mu)^{-d}, \\ g_2(\mu) &\sim 1 \end{aligned} \]

which have normalizing constants and sum to

\[ g(\mu) = p_1 p_2 g_0(\mu) + p_1(1-p_2) g_1(\mu) + (1-p_1) g_2(\mu). \]

In this distribution for large angles, \( p_2 = 1 \) so only the exponential and constant terms are sampled.

The Goudsmit-Saunderson moments for the expected angular deflection \( \theta \) over a physical path length \( s \) are:

\[ \langle \cos \theta \rangle \equiv \langle \mu \rangle = \ee^{-s/\lambda_1} \ , \]

and

\[ \langle \cos^2 \theta \rangle \equiv \langle \mu^2 \rangle = \frac{1}{3}\left(1 + 2 \ee^{-s / \lambda_2}\right) \ , \]

where the transport mean free paths \( \lambda_l \) are related to the \( l \)th angular moment of the elastic cross section scattering (see Eqs. 6-8, 15-16 from fernandez-msc-1993 ).

Given the number of mean free paths

\[ \tau \equiv \frac{s}{\lambda_1} \ , \]

and from kawrakow-condensedhistory-1998 that for kinetic energies between a few keV and infinity,

\[ 2 < \frac{\lambda_2}{\lambda_1} < \infty \ , \]

this class calculates the mean scattering angle and approximates the second moment of the scattering cosine using \( \lambda_2 \approx 2.5 \lambda_1 \).

Using these moments, Urban calculates:

\[ a = \frac{2\langle \mu \rangle + 9\langle \mu^2 \rangle - 3} {2\langle \mu \rangle - 3\langle \mu^2 \rangle + 1} \]

and

\[ p_1 = \frac{(a + 2)\langle \mu \rangle}{a} \,. \]

Member Function Documentation

◆ operator()()

template<class Engine >
CELER_FUNCTION real_type celeritas::UrbanLargeAngleDistribution::operator() ( Engine rng)
inline

Sample from two parameters of the model function.

Todo:
The cached RNG value is not necessary and is only for reproducing previous results. It should be deleted the next time a rebaselining is performed.

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