20 FormFactorEllipsoidalCylinder::FormFactorEllipsoidalCylinder(
const std::vector<double> P)
22 "elliptical cylinder",
23 {{
"RadiusX",
"nm",
"radius in x direction", 0, +INF, 0},
24 {
"RadiusY",
"nm",
"radius in y direction", 0, +INF, 0},
25 {
"Height",
"nm",
"height", 0, +INF, 0}}},
27 m_radius_x(m_P[0]), m_radius_y(m_P[1]), m_height(m_P[2])
32 FormFactorEllipsoidalCylinder::FormFactorEllipsoidalCylinder(
double radius_x,
double radius_y,
40 return (m_radius_x + m_radius_y) / 2.0;
45 complex_t qxRa = q.
x() * m_radius_x;
46 complex_t qyRb = q.
y() * m_radius_y;
47 complex_t qzHdiv2 = m_height / 2 * q.
z();
50 complex_t gamma = std::sqrt((qxRa) * (qxRa) + (qyRb) * (qyRb));
53 return M_TWOPI * m_radius_x * m_radius_y * m_height * Fz * J1_gamma_div_gamma;
61 m_height - effects.dz_bottom - effects.dz_top);
62 return createTransformedFormFactor(slicedff, rot, effects.position);
68 std::make_unique<DoubleEllipse>(m_radius_x, m_radius_y, m_height, m_radius_x, m_radius_y);
complex_t exp_I(complex_t z)
Returns exp(I*z), where I is the imaginary unit.
Defines class DoubleEllipse.
Defines M_PI and some more mathematical constants.
Defines namespace MathFunctions.
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.
Pure virtual interface for rotations.
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
double sinc(double x)
sinc function:
double Bessel_J1c(double x)
Bessel function Bessel_J1(x)/x.