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

Public Member Functions

 Distribution2DCauchySampler (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 29 of file IDistribution2DSampler.h.

Constructor & Destructor Documentation

◆ Distribution2DCauchySampler()

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

Definition at line 32 of file IDistribution2DSampler.h.

33  : m_omega_x(omega_x), m_omega_y(omega_y)
34  {
35  }

Member Function Documentation

◆ randomSample()

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

Implements IDistribution2DSampler.

Definition at line 129 of file IDistribution2DSampler.cpp.

130 {
131  // Use Ziggurat sampling instead of Inverse Transform Sampling (ITS requires numerical solver)
132 
133  double phi_max_Cauchy = 1.0;
134  // rightmost box's right-edge from phi_max_Cauchy for Ziggurat Sampling
135  double r = sigma_scale * std::sqrt(2); // standard dev of func_phi_Cauchy is sqrt(2)
136  std::pair<double, double> samples = samplingZiggurat(r, phi_max_Cauchy, func_phi_Cauchy);
137  return std::make_pair(m_omega_x * samples.first * std::cos(samples.second),
138  m_omega_y * samples.first * std::sin(samples.second));
139 }
std::pair< double, double > samplingZiggurat(double r, double x_func_max, double(*func_phi)(double))

References anonymous_namespace{IDistribution2DSampler.cpp}::func_phi_Cauchy(), m_omega_x, m_omega_y, anonymous_namespace{IDistribution2DSampler.cpp}::samplingZiggurat(), and anonymous_namespace{IDistribution2DSampler.cpp}::sigma_scale.

Here is the call graph for this function:

Member Data Documentation

◆ m_omega_x

double Distribution2DCauchySampler::m_omega_x
private

Definition at line 39 of file IDistribution2DSampler.h.

Referenced by randomSample().

◆ m_omega_y

double Distribution2DCauchySampler::m_omega_y
private

Definition at line 39 of file IDistribution2DSampler.h.

Referenced by randomSample().


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