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}}},
29 m_radius_x(m_P[0]), m_radius_y(m_P[1]), m_height(m_P[2])
51 double Rz = R * std::sqrt(1.0 - Z * Z / (H * H));
52 double Wz = W * std::sqrt(1.0 - Z * Z / (H * H));
57 complex_t gamma = std::sqrt(qxRz * qxRz + qyWz * qyWz);
60 return Rz * Wz * J1_gamma_div_gamma *
exp_I(
m_q.
z() * Z);
70 if (std::abs(
m_q.
mag()) <= std::numeric_limits<double>::epsilon())
71 return M_TWOPI * R * W * H / 3.;
std::complex< double > complex_t
complex_t exp_I(complex_t z)
Returns exp(I*z), where I is the imaginary unit.
Defines classes RealIntegrator, ComplexIntegrator.
Defines M_PI and some more mathematical constants.
Defines namespace MathFunctions.
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)
double Bessel_J1c(double x)
Bessel function Bessel_J1(x)/x.