BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
Distribution2DGateSampler Class Reference

Description

Definition at line 59 of file IDistribution2DSampler.h.

Inheritance diagram for Distribution2DGateSampler:
[legend]
Collaboration diagram for Distribution2DGateSampler:
[legend]

Public Member Functions

 Distribution2DGateSampler (double omega_x, double omega_y)
 
std::pair< double, double > randomSample () const override
 

Private Attributes

double m_omega_x
 
double m_omega_y
 

Constructor & Destructor Documentation

◆ Distribution2DGateSampler()

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

Definition at line 61 of file IDistribution2DSampler.h.

62  : m_omega_x(omega_x)
63  , m_omega_y(omega_y)
64  {
65  }

Member Function Documentation

◆ randomSample()

std::pair< double, double > Distribution2DGateSampler::randomSample ( ) const
overridevirtual

Implements IDistribution2DSampler.

Definition at line 161 of file IDistribution2DSampler.cpp.

162 {
163  std::random_device rd; // random device class instance
164  std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
165  std::uniform_real_distribution<double> uniformDist(0.0, 1.0);
166 
167  double cdf_value_phi = uniformDist(gen);
168 
169  // Use ITS and solve for phi from the cdf of radial (phi) distribution
170  double phi = std::sqrt(cdf_value_phi);
171  double alpha = M_TWOPI * uniformDist(gen);
172  return std::make_pair(m_omega_x * phi * std::cos(alpha), m_omega_y * phi * std::sin(alpha));
173 }
#define M_TWOPI
Definition: Constants.h:54

References m_omega_x, m_omega_y, and M_TWOPI.

Member Data Documentation

◆ m_omega_x

double Distribution2DGateSampler::m_omega_x
private

Definition at line 69 of file IDistribution2DSampler.h.

Referenced by randomSample().

◆ m_omega_y

double Distribution2DGateSampler::m_omega_y
private

Definition at line 69 of file IDistribution2DSampler.h.

Referenced by randomSample().


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