BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Distribution2DGaussSampler Class Reference
Inheritance diagram for Distribution2DGaussSampler:
Collaboration diagram for Distribution2DGaussSampler:

Public Member Functions

 Distribution2DGaussSampler (double omega_x, double omega_y)
 
std::pair< double, double > randomSample () const final
 

Private Attributes

double m_omega_x
 
double m_omega_y
 

Detailed Description

Definition at line 42 of file IDistribution2DSampler.h.

Constructor & Destructor Documentation

◆ Distribution2DGaussSampler()

Distribution2DGaussSampler::Distribution2DGaussSampler ( double  omega_x,
double  omega_y 
)
inline

Definition at line 45 of file IDistribution2DSampler.h.

46  : m_omega_x(omega_x), m_omega_y(omega_y)
47  {
48  }

Member Function Documentation

◆ randomSample()

std::pair< double, double > Distribution2DGaussSampler::randomSample ( ) const
finalvirtual

Implements IDistribution2DSampler.

Definition at line 141 of file IDistribution2DSampler.cpp.

142 {
143  std::random_device rd; // random device class instance
144  std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
145  std::uniform_real_distribution<double> uniformDist(0.0, 1.0);
146 
147  double cdf_value_phi = uniformDist(gen);
148 
149  // Use ITS and solve for phi from the cdf of radial (phi) distribution
150  double phi = std::sqrt(-2 * std::log(1 - cdf_value_phi));
151  double alpha = 2 * M_PI * uniformDist(gen);
152  return std::make_pair(m_omega_x * phi * std::cos(alpha), m_omega_y * phi * std::sin(alpha));
153 }
#define M_PI
Definition: MathConstants.h:39

References m_omega_x, m_omega_y, and M_PI.

Member Data Documentation

◆ m_omega_x

double Distribution2DGaussSampler::m_omega_x
private

Definition at line 52 of file IDistribution2DSampler.h.

Referenced by randomSample().

◆ m_omega_y

double Distribution2DGaussSampler::m_omega_y
private

Definition at line 52 of file IDistribution2DSampler.h.

Referenced by randomSample().


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