25 IFTDistribution2D::IFTDistribution2D(
const NodeMeta& meta, 
const std::vector<double>& PValues)
 
   26     : 
INode(nodeMetaUnion({{
"OmegaX", 
"nm", 
"Half-width along x axis", 0, INF, 1.},
 
   27                            {
"OmegaY", 
"nm", 
"Half-width along y axis", 0, INF, 1.},
 
   29                             "direct-space orientation with respect to the first lattice vector",
 
   30                             -M_PI_2, +M_PI_2, 0}},
 
   33       m_omega_x(m_P[0]), m_omega_y(m_P[1]), m_gamma(m_P[2])
 
   37 double IFTDistribution2D::sumsq(
double qx, 
double qy)
 const 
   39     return qx * qx * m_omega_x * m_omega_x + qy * qy * m_omega_y * m_omega_y;
 
   46 FTDistribution2DCauchy::FTDistribution2DCauchy(
const std::vector<double> P)
 
   51 FTDistribution2DCauchy::FTDistribution2DCauchy(
double omega_x, 
double omega_y, 
double gamma)
 
   63     return std::pow(1.0 + sumsq(qx, qy), -1.5);
 
   66 std::unique_ptr<IDistribution2DSampler> FTDistribution2DCauchy::createSampler()
 const 
   68     return std::make_unique<Distribution2DCauchySampler>(m_omega_x, m_omega_y);
 
   75 FTDistribution2DGauss::FTDistribution2DGauss(
const std::vector<double> P)
 
   80 FTDistribution2DGauss::FTDistribution2DGauss(
double omega_x, 
double omega_y, 
double gamma)
 
   92     return std::exp(-sumsq(qx, qy) / 2);
 
   95 std::unique_ptr<IDistribution2DSampler> FTDistribution2DGauss::createSampler()
 const 
   97     return std::make_unique<Distribution2DGaussSampler>(m_omega_x, m_omega_y);
 
  104 FTDistribution2DGate::FTDistribution2DGate(
const std::vector<double> P)
 
  109 FTDistribution2DGate::FTDistribution2DGate(
double omega_x, 
double omega_y, 
double gamma)
 
  121     double scaled_q = std::sqrt(sumsq(qx, qy));
 
  125 std::unique_ptr<IDistribution2DSampler> FTDistribution2DGate::createSampler()
 const 
  127     return std::make_unique<Distribution2DGateSampler>(m_omega_x, m_omega_y);
 
  134 FTDistribution2DCone::FTDistribution2DCone(
const std::vector<double> P)
 
  139 FTDistribution2DCone::FTDistribution2DCone(
double omega_x, 
double omega_y, 
double gamma)
 
  151     double scaled_q = std::sqrt(sumsq(qx, qy));
 
  152     if (scaled_q < std::numeric_limits<double>::epsilon())
 
  153         return 1.0 - 3.0 * scaled_q * scaled_q / 40.0;
 
  160 std::unique_ptr<IDistribution2DSampler> FTDistribution2DCone::createSampler()
 const 
  162     return std::make_unique<Distribution2DConeSampler>(m_omega_x, m_omega_y);
 
  169 FTDistribution2DVoigt::FTDistribution2DVoigt(
const std::vector<double> P)
 
  171         {
"FTDistribution2DVoigt",
 
  173          {{
"Eta", 
"", 
"balances between Gauss (eta=0) and Cauchy (eta=1) limiting cases", -INF,
 
  180 FTDistribution2DVoigt::FTDistribution2DVoigt(
double omega_x, 
double omega_y, 
double gamma,
 
  193     double sum_sq = sumsq(qx, qy);
 
  194     return m_eta * std::exp(-sum_sq / 2) + (1.0 - m_eta) * std::pow(1.0 + sum_sq, -1.5);
 
  197 std::unique_ptr<IDistribution2DSampler> FTDistribution2DVoigt::createSampler()
 const 
  201     std::ostringstream ostr;
 
  202     ostr << 
"FTDistribution2DVoigt::createSampler() -> Error in class initialization";
 
  203     ostr << 
"\n\n Has not been implemented yet...stay tuned!";
 
Defines many exception classes in namespace Exceptionss.
 
Defines interface class IFTDistribution2D, and children thereof.
 
Defines classes RealIntegrator, ComplexIntegrator.
 
Defines namespace MathFunctions.
 
Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real spa...
 
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
 
Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in re...
 
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
 
Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 ...
 
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
 
Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real sp...
 
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
 
Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy.
 
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
 
Interface for two-dimensional distributions in Fourier space.
 
Base class for tree-like structures containing parameterized objects.
 
To integrate a real function of a real variable.
 
double Bessel_J0(double x)
Bessel function of the first kind and order 0.
 
double Bessel_J1c(double x)
Bessel function Bessel_J1(x)/x.