24 "actually a spheroid, truncated at central xy plane",
25 {{
"RadiusX",
"nm",
"radius in x direction", 0, +
INF, 0},
26 {
"RadiusY",
"nm",
"radius in y direction", 0, +
INF, 0},
27 {
"Height",
"nm",
"height = radius in z direction", 0, +
INF, 0}}},
53 double Rz = R * std::sqrt(1.0 - Z * Z / (H * H));
54 double Wz = W * std::sqrt(1.0 - Z * Z / (H * H));
59 complex_t gamma = std::sqrt(qxRz * qxRz + qyWz * qyWz);
62 return Rz * Wz * J1_gamma_div_gamma *
exp_I(
m_q.
z() * Z);
72 if (std::abs(
m_q.
mag()) <= std::numeric_limits<double>::epsilon())
73 return M_TWOPI * R * W * H / 3.;
Defines Bessel functions in namespace Math.
std::complex< double > complex_t
complex_t exp_I(complex_t z)
Returns exp(I*z), where I is the imaginary unit.
Defines M_PI and some more mathematical constants.
Defines classes RealIntegrator, ComplexIntegrator.
Defines class TruncatedEllipsoid.
double mag() const
Returns magnitude of the vector.
T z() const
Returns z-component in cartesian coordinate system.
T y() const
Returns y-component in cartesian coordinate system.
T x() const
Returns x-component in cartesian coordinate system.
To integrate a complex function of a real variable.
complex_t integrate(const std::function< complex_t(double)> &f, double lmin, double lmax)
Abstract base class for Born form factors.
std::unique_ptr< IShape3D > m_shape3D
IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes).
double J1c(double x)
Bessel function J1(x)/x.