Celeritas 0.7.0-dev.79+develop.b3dc2e108
Loading...
Searching...
No Matches
Public Member Functions | List of all members
celeritas::optical::GaussianRoughnessSampler Class Reference

Sample a facet normal from a Gaussian roughness model. More...

#include <GaussianRoughnessSampler.hh>

Public Member Functions

CELER_FUNCTION GaussianRoughnessSampler (Real3 const &normal, real_type sigma_alpha)
 Construct from sigma_alpha and global normal.
 
template<class Engine >
CELER_FUNCTION Real3 operator() (Engine &rng)
 Sample a facet normal via the Gaussian roughness model.
 

Detailed Description

Sample a facet normal from a Gaussian roughness model.

The Gaussian roughness model was introduced in levin-morephysical-1996 . The "facet slope", an angle \( \alpha \) along a linear slice of a crystal surface, is approximated as a normal distribution standard deviation \( \sigma_\alpha \) . (The paper justifies this distribution based on surface roughness measurements with a bismuth germanate [BGO] crystal.) Assuming an azimuthally isotropic surface, the polar distribution must be expressed in terms of the tilt \( \theta \). The Jacobian factor for spherical coordinates contributes a \( \sin \theta \) term, leading to the spherical PDF

\[ p(\sigma_\alpha; \theta,\phi) = \frac{1}{2\pi}\,\frac{1}{\mathcal N}\, \exp\!\left(-\frac{\theta^{2}}{2\sigma_\alpha^{2}}\right)\sin\theta \,. \]

The polar angle \( \theta \) is sampled using rejection:

The extra limitation of the angle being less than 4 sigma reduces the rejection fraction by a factor of ~25 for smooth crystals (sigma = 0.01).


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