diff --git a/Core/Basics/BornAgainNamespace.h b/Core/Basics/BornAgainNamespace.h
index 2c94354d01b76841c3a705b196e71237081bf935..6275977adae03145dd0506775d4ea6fe9843bbf1 100644
--- a/Core/Basics/BornAgainNamespace.h
+++ b/Core/Basics/BornAgainNamespace.h
@@ -100,7 +100,6 @@ const std::string FFFullSpheroidType = "FullSpheroid";
 const std::string FFGaussType = "FormFactorGauss";
 const std::string FFHemiEllipsoidType = "HemiEllipsoid";
 const std::string FFIcosahedronType = "Icosahedron";
-const std::string FFLongBoxType = "FormFactorLongBox";
 const std::string FFLongBoxGaussType = "FormFactorLongBoxGauss";
 const std::string FFLongBoxLorentzType = "FormFactorLongBoxLorentz";
 const std::string FFLorentzType = "FormFactorLorentz";
@@ -108,10 +107,10 @@ const std::string FFOrnsteinZernikeType = "FormFactorOrnsteinZernike";
 const std::string FFPrism3Type = "Prism3";
 const std::string FFPrism6Type = "Prism6";
 const std::string FFPyramidType = "Pyramid";
-const std::string FFRipple1Type = "Ripple1";
+const std::string FFRipple1BoxType = "Ripple1Box";
+const std::string FFRipple1GaussType = "Ripple1Gauss";
+const std::string FFRipple1LorentzType = "Ripple1Lorentz";
 const std::string FFRipple2Type = "Ripple2";
-const std::string FFLongRipple1GaussType = "LongRipple1Gauss";
-const std::string FFLongRipple1LorentzType = "LongRipple1Lorentz";
 const std::string FFLongRipple2GaussType = "LongRipple2Gauss";
 const std::string FFLongRipple2LorentzType = "LongRipple2Lorentz";
 const std::string FFTetrahedronType = "Tetrahedron";
diff --git a/Core/HardParticle/FormFactorLongBox.cpp b/Core/HardParticle/FormFactorLongBox.cpp
deleted file mode 100644
index d9e01211f60fddf77e5911d36e7cf72aa9c195c3..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongBox.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongBox.cpp
-//! @brief     Implements class FormFactorLongBox.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#include "FormFactorLongBox.h"
-#include "BornAgainNamespace.h"
-#include "Box.h"
-#include "MathFunctions.h"
-#include "RealParameter.h"
-
-FormFactorLongBox::FormFactorLongBox(double length, double width, double height)
-    : m_length(length), m_width(width), m_height(height)
-{
-    setName(BornAgain::FFLongBoxType);
-    registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    onChange();
-}
-
-complex_t FormFactorLongBox::evaluate_for_q(cvector_t q) const
-{
-    complex_t qxL2 = std::pow(m_length * q.x() / 2.0, 2);
-    complex_t qyWdiv2 = m_width * q.y() / 2.0;
-    complex_t qzHdiv2 = m_height * q.z() / 2.0;
-
-    return m_height * m_length * m_width * exp_I(qzHdiv2) * MathFunctions::sinc(qyWdiv2)
-           * MathFunctions::sinc(qzHdiv2) / std::sqrt(1.0 + qxL2);
-}
-
-IFormFactor* FormFactorLongBox::sliceFormFactor(ZLimits limits, const IRotation& rot,
-                                                kvector_t translation) const
-{
-    auto effects = computeSlicingEffects(limits, translation, m_height);
-    FormFactorLongBox slicedff(m_length, m_width, m_height - effects.dz_bottom - effects.dz_top);
-    return CreateTransformedFormFactor(slicedff, rot, effects.position);
-}
-
-void FormFactorLongBox::onChange()
-{
-    mP_shape.reset(new Box(m_length, m_width, m_height));
-}
diff --git a/Core/HardParticle/FormFactorLongBox.h b/Core/HardParticle/FormFactorLongBox.h
deleted file mode 100644
index 089443bf070046f5bd00c9c71e9eca2fe9020cb0..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongBox.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongBox.h
-//! @brief     Defines class FormFactorLongBox.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#ifndef FORMFACTORLONGBOX_H
-#define FORMFACTORLONGBOX_H
-
-#include "IFormFactorBorn.h"
-
-//! The form factor for a long rectangular box.
-//! Approximates the rapidly oscillating sinc function by the square root of a Lorentzian
-//! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorLongBox : public IFormFactorBorn
-{
-public:
-    //! @brief Box constructor
-    //! @param length of Box's base
-    //! @param width of Box's base
-    //! @param height of Box
-    FormFactorLongBox(double length, double width, double height);
-
-    FormFactorLongBox* clone() const override final
-    {
-        return new FormFactorLongBox(m_length, m_width, m_height);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
-
-    double getLength() const { return m_length; }
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-    double radialExtension() const override final { return m_length / 2.0; }
-
-    complex_t evaluate_for_q(cvector_t q) const override final;
-
-protected:
-    IFormFactor* sliceFormFactor(ZLimits limits, const IRotation& rot,
-                                 kvector_t translation) const override final;
-
-    void onChange() override final;
-
-private:
-    double m_length;
-    double m_width;
-    double m_height;
-};
-
-#endif // FORMFACTORLONGBOX_H
diff --git a/Core/HardParticle/FormFactorLongRipple1Lorentz.cpp b/Core/HardParticle/FormFactorLongRipple1Lorentz.cpp
deleted file mode 100644
index 75603b2962fe5e56943a861e2af0d6a6c7b23faa..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple1Lorentz.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple1Lorentz.cpp
-//! @brief     Implements class FormFactorLongRipple1Lorentz.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#include "FormFactorLongRipple1Lorentz.h"
-#include "BornAgainNamespace.h"
-#include "Box.h"
-#include "Exceptions.h"
-#include "MathConstants.h"
-#include "MathFunctions.h"
-#include "RealParameter.h"
-
-FormFactorLongRipple1Lorentz::FormFactorLongRipple1Lorentz(double length, double width,
-                                                           double height)
-    : m_length(length), m_width(width), m_height(height)
-{
-    setName(BornAgain::FFLongRipple1LorentzType);
-    check_initialization();
-    registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    mP_integrator = make_integrator_complex(this, &FormFactorLongRipple1Lorentz::Integrand);
-    onChange();
-}
-
-bool FormFactorLongRipple1Lorentz::check_initialization() const
-{
-    bool result(true);
-    if (m_height <= 0.0 || m_width <= 0.0 || m_length <= 0.0) {
-        std::ostringstream ostr;
-        ostr << "FormFactorLongRipple1Lorentz() -> Error in class initialization with parameters ";
-        ostr << " height:" << m_height;
-        ostr << " width:" << m_width;
-        ostr << " length:" << m_length << "\n\n";
-        ostr << "Check for 'height>0.0 && width>0.0 && length>0.0' failed.";
-        throw Exceptions::ClassInitializationException(ostr.str());
-    }
-    return result;
-}
-
-double FormFactorLongRipple1Lorentz::radialExtension() const
-{
-    return (m_width + m_length) / 4.0;
-}
-
-//! Integrand for complex form factor.
-complex_t FormFactorLongRipple1Lorentz::Integrand(double u) const
-{
-    return sin(u) * exp(m_az * std::cos(u)) * (m_ay == 0. ? u : sin(m_ay * u) / m_ay);
-}
-
-//! Complex form factor.
-complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const
-{
-    complex_t qxL2 = 2.5 * std::pow(m_length * q.x(), 2);
-    complex_t factor = m_length / (1.0 + qxL2) * m_width / M_PI;
-
-    // analytical expressions for some particular cases
-    if (q.z() == 0.) {
-        if (q.y() == 0.)
-            return factor * M_PI_2 * m_height;
-        complex_t aaa = q.y() * m_width / (M_TWOPI);
-        complex_t aaa2 = aaa * aaa;
-        if (aaa2 == 1.)
-            return factor * M_PI_4 * m_height;
-        return factor * M_PI_2 * m_height * MathFunctions::sinc(q.y() * m_width * 0.5)
-               / (1.0 - aaa2);
-    }
-
-    // numerical integration otherwise
-    m_ay = q.y() * m_width / M_TWOPI;
-    m_az = complex_t(0, 1) * q.z() * (m_height / 2);
-    complex_t integral = mP_integrator->integrate(0, M_PI);
-    return factor * integral * exp(m_az) * (m_height / 2);
-}
-
-void FormFactorLongRipple1Lorentz::onChange()
-{
-    mP_shape.reset(new Box(m_length, m_width, m_height));
-}
diff --git a/Core/HardParticle/FormFactorLongRipple1Lorentz.h b/Core/HardParticle/FormFactorLongRipple1Lorentz.h
deleted file mode 100644
index c46adcdccfb0fc4fc16421acb6be1fabd7156600..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple1Lorentz.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple1Lorentz.h
-//! @brief     Defines class FormFactorLongRipple1Lorentz.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#ifndef FORMFACTORLONGRIPPLE1LORENTZ_H
-#define FORMFACTORLONGRIPPLE1LORENTZ_H
-
-#include "IFormFactorBorn.h"
-#include "IntegratorComplex.h"
-
-//! The form factor for a cosine ripple.
-//! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorLongRipple1Lorentz : public IFormFactorBorn
-{
-public:
-    //! @brief FormFactorLongRipple1Lorentz constructor
-    //! @param length of Ripple1
-    //! @param width of cosine cross section
-    //! @param height of cosine cross section
-    FormFactorLongRipple1Lorentz(double length, double width, double height);
-
-    FormFactorLongRipple1Lorentz* clone() const override final
-    {
-        return new FormFactorLongRipple1Lorentz(m_length, m_width, m_height);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
-
-    double radialExtension() const override final;
-
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-    double getLength() const { return m_length; }
-
-    complex_t evaluate_for_q(cvector_t q) const override final;
-
-protected:
-    void onChange() override final;
-
-private:
-    complex_t Integrand(double u) const;
-    bool check_initialization() const;
-
-    double m_length;
-    double m_width;
-    double m_height;
-    mutable complex_t m_ay;
-    mutable complex_t m_az;
-
-#ifndef SWIG
-    std::unique_ptr<IntegratorComplex<FormFactorLongRipple1Lorentz>> mP_integrator;
-#endif
-};
-
-#endif // FORMFACTORLONGRIPPLE1LORENTZ_H
diff --git a/Core/HardParticle/FormFactorRipple1.cpp b/Core/HardParticle/FormFactorRipple1.cpp
index e71b2da22bb75d1ce044d2730d3059255122c4e4..f3ae52a2a20eda1a9b02fca25afa3cf0add50404 100644
--- a/Core/HardParticle/FormFactorRipple1.cpp
+++ b/Core/HardParticle/FormFactorRipple1.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/HardParticle/FormFactorRipple1.cpp
-//! @brief     Implements class FormFactorRipple1.
+//! @brief     Implements classes FormFactorRipple1*.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -13,81 +13,79 @@
 // ************************************************************************** //
 
 #include "FormFactorRipple1.h"
-#include "BornAgainNamespace.h"
-#include "Exceptions.h"
-#include "MathConstants.h"
-#include "MathFunctions.h"
-#include "RealLimits.h"
-#include "RealParameter.h"
-#include "RippleCosine.h"
-
-//! @brief Constructor of cosine ripple.
-//! @param length: length of the rectangular base in nanometers
-//! @param width: width of the rectangular base in nanometers
-//! @param height: height of the ripple in nanometers
-FormFactorRipple1::FormFactorRipple1(double length, double width, double height)
-    : m_length(length), m_width(width), m_height(height)
+#include "Ripples.h"
+
+// ************************************************************************** //
+// class FormFactorRipple1Box
+// ************************************************************************** //
+
+FormFactorRipple1Box::FormFactorRipple1Box(double length, double width, double height)
+    : ProfileRipple1{length, width, height}
+{
+    setName(BornAgain::FFRipple1BoxType);
+}
+
+FormFactorRipple1Box* FormFactorRipple1Box::clone() const
+{
+    return new FormFactorRipple1Box(m_length, m_width, m_height);
+}
+
+void FormFactorRipple1Box::accept(INodeVisitor* visitor) const
+{
+    visitor->visit(this);
+}
+
+complex_t FormFactorRipple1Box::factor_x(complex_t qx) const
+{
+    return ripples::factor_x_box(qx, m_length);
+}
+
+// ************************************************************************** //
+// class FormFactorRipple1Gauss
+// ************************************************************************** //
+
+FormFactorRipple1Gauss::FormFactorRipple1Gauss(double length, double width, double height)
+    : ProfileRipple1{length, width, height}
+{
+    setName(BornAgain::FFRipple1GaussType);
+}
+
+FormFactorRipple1Gauss* FormFactorRipple1Gauss::clone() const
+{
+    return new FormFactorRipple1Gauss(m_length, m_width, m_height);
+}
+
+void FormFactorRipple1Gauss::accept(INodeVisitor* visitor) const
 {
-    setName(BornAgain::FFRipple1Type);
-    check_initialization();
-    registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    mP_integrator = make_integrator_complex(this, &FormFactorRipple1::Integrand);
-    onChange();
+    visitor->visit(this);
 }
 
-bool FormFactorRipple1::check_initialization() const
+complex_t FormFactorRipple1Gauss::factor_x(complex_t qx) const
 {
-    bool result(true);
-    if (m_height <= 0.0 || m_width <= 0.0 || m_length <= 0.0) {
-        std::ostringstream ostr;
-        ostr << "FormFactorRipple1() -> Error in class initialization with parameters ";
-        ostr << " height:" << m_height;
-        ostr << " width:" << m_width;
-        ostr << " length:" << m_length << "\n\n";
-        ostr << "Check for 'height>0.0 && width>0.0 && length>0.0' failed.";
-        throw Exceptions::ClassInitializationException(ostr.str());
-    }
-    return result;
+    return ripples::factor_x_Gauss(qx, m_length);
 }
 
-double FormFactorRipple1::radialExtension() const
+// ************************************************************************** //
+// class FormFactorRipple1Lorentz
+// ************************************************************************** //
+
+FormFactorRipple1Lorentz::FormFactorRipple1Lorentz(double length, double width, double height)
+    : ProfileRipple1{length, width, height}
 {
-    return (m_width + m_length) / 4.0;
+    setName(BornAgain::FFRipple1LorentzType);
 }
 
-//! Integrand for complex form factor.
-complex_t FormFactorRipple1::Integrand(double u) const
+FormFactorRipple1Lorentz* FormFactorRipple1Lorentz::clone() const
 {
-    return sin(u) * exp(m_az * std::cos(u)) * (m_ay == 0. ? u : sin(m_ay * u) / m_ay);
+    return new FormFactorRipple1Lorentz(m_length, m_width, m_height);
 }
 
-//! Complex form factor.
-complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const
+void FormFactorRipple1Lorentz::accept(INodeVisitor* visitor) const
 {
-    complex_t factor = m_length * MathFunctions::sinc(q.x() * m_length * 0.5) * m_width / M_PI;
-
-    // analytical expressions for some particular cases
-    if (q.z() == 0.) {
-        if (q.y() == 0.)
-            return factor * M_PI_2 * m_height;
-        complex_t aaa = q.y() * m_width / (M_TWOPI);
-        complex_t aaa2 = aaa * aaa;
-        if (aaa2 == 1.)
-            return factor * M_PI_4 * m_height;
-        return factor * M_PI_2 * m_height * MathFunctions::sinc(q.y() * m_width * 0.5)
-               / (1.0 - aaa2);
-    }
-
-    // numerical integration otherwise
-    m_ay = q.y() * m_width / M_TWOPI;
-    m_az = complex_t(0, 1) * q.z() * (m_height / 2);
-    complex_t integral = mP_integrator->integrate(0, M_PI);
-    return factor * integral * exp(m_az) * (m_height / 2);
+    visitor->visit(this);
 }
 
-void FormFactorRipple1::onChange()
+complex_t FormFactorRipple1Lorentz::factor_x(complex_t qx) const
 {
-    mP_shape.reset(new RippleCosine(m_length, m_width, m_height));
+    return ripples::factor_x_Lorentz(qx, m_length);
 }
diff --git a/Core/HardParticle/FormFactorRipple1.h b/Core/HardParticle/FormFactorRipple1.h
index faddc554a382a8fe3b7aff831587062b257563c7..ad2098fc06db1209a9f60d2517be11da40840234 100644
--- a/Core/HardParticle/FormFactorRipple1.h
+++ b/Core/HardParticle/FormFactorRipple1.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/HardParticle/FormFactorRipple1.h
-//! @brief     Defines class FormFactorRipple1.
+//! @brief     Defines classes FormFactorRipple1*.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -15,48 +15,42 @@
 #ifndef FORMFACTORRIPPLE1_H
 #define FORMFACTORRIPPLE1_H
 
-#include "IFormFactorBorn.h"
-#include "IntegratorComplex.h"
+#include "ProfileRipple1.h"
 
-//! The form factor for a cosine ripple.
+//! The form factor for a cosine ripple, with box profile in elongation direction.
 //! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorRipple1 : public IFormFactorBorn
+class BA_CORE_API_ FormFactorRipple1Box : public ProfileRipple1
 {
 public:
-    FormFactorRipple1(double length, double width, double height);
-
-    FormFactorRipple1* clone() const override final
-    {
-        return new FormFactorRipple1(m_length, m_width, m_height);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
-
-    double getLength() const { return m_length; }
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-
-    double radialExtension() const override final;
-
-    complex_t evaluate_for_q(cvector_t q) const override final;
-
-protected:
-    void onChange() override final;
-
+    FormFactorRipple1Box(double length, double width, double height);
+    FormFactorRipple1Box* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
 private:
-    complex_t Integrand(double u) const;
-    bool check_initialization() const;
-
-    double m_length;
-    double m_width;
-    double m_height;
+    complex_t factor_x(complex_t qx) const override final;
+};
 
-    mutable complex_t m_ay;
-    mutable complex_t m_az;
+//! The form factor for a cosine ripple, with Gaussian profile in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorRipple1Gauss : public ProfileRipple1
+{
+public:
+    FormFactorRipple1Gauss(double length, double width, double height);
+    FormFactorRipple1Gauss* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
+private:
+    complex_t factor_x(complex_t qx) const override final;
+};
 
-#ifndef SWIG
-    std::unique_ptr<IntegratorComplex<FormFactorRipple1>> mP_integrator;
-#endif
+//! The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorRipple1Lorentz : public ProfileRipple1
+{
+public:
+    FormFactorRipple1Lorentz(double length, double width, double height);
+    FormFactorRipple1Lorentz* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
+private:
+    complex_t factor_x(complex_t qx) const override final;
 };
 
 #endif // FORMFACTORRIPPLE1_H
diff --git a/Core/HardParticle/FormFactorLongRipple1Gauss.cpp b/Core/HardParticle/ProfileRipple1.cpp
similarity index 63%
rename from Core/HardParticle/FormFactorLongRipple1Gauss.cpp
rename to Core/HardParticle/ProfileRipple1.cpp
index 4c2288153b3c5cbef37119e4522e5da407eaad8f..b2503e3ab0b90cdde268d5e70d854e24b351a4ef 100644
--- a/Core/HardParticle/FormFactorLongRipple1Gauss.cpp
+++ b/Core/HardParticle/ProfileRipple1.cpp
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/HardParticle/FormFactorLongRipple1Gauss.cpp
-//! @brief     Implements class FormFactorLongRipple1Gauss.
+//! @file      Core/HardParticle/ProfileRipple1.cpp
+//! @brief     Implements class ProfileRipple1.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,33 +12,36 @@
 //
 // ************************************************************************** //
 
-#include "FormFactorLongRipple1Gauss.h"
+#include "ProfileRipple1.h"
 #include "BornAgainNamespace.h"
-#include "Box.h"
 #include "Exceptions.h"
 #include "MathConstants.h"
 #include "MathFunctions.h"
 #include "RealLimits.h"
 #include "RealParameter.h"
+#include "RippleCosine.h"
 
-FormFactorLongRipple1Gauss::FormFactorLongRipple1Gauss(double length, double width, double height)
+//! @brief Constructor of cosine ripple.
+//! @param length: length of the rectangular base in nanometers
+//! @param width: width of the rectangular base in nanometers
+//! @param height: height of the ripple in nanometers
+ProfileRipple1::ProfileRipple1(double length, double width, double height)
     : m_length(length), m_width(width), m_height(height)
 {
-    setName(BornAgain::FFLongRipple1GaussType);
     check_initialization();
     registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
     registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
     registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    mP_integrator = make_integrator_complex(this, &FormFactorLongRipple1Gauss::Integrand);
+    mP_integrator = make_integrator_complex(this, &ProfileRipple1::Integrand);
     onChange();
 }
 
-bool FormFactorLongRipple1Gauss::check_initialization() const
+bool ProfileRipple1::check_initialization() const
 {
     bool result(true);
     if (m_height <= 0.0 || m_width <= 0.0 || m_length <= 0.0) {
         std::ostringstream ostr;
-        ostr << "FormFactorLongRipple1Gauss() -> Error in class initialization with parameters ";
+        ostr << "ProfileRipple1() -> Error in class initialization with parameters ";
         ostr << " height:" << m_height;
         ostr << " width:" << m_width;
         ostr << " length:" << m_length << "\n\n";
@@ -48,43 +51,42 @@ bool FormFactorLongRipple1Gauss::check_initialization() const
     return result;
 }
 
-double FormFactorLongRipple1Gauss::radialExtension() const
+double ProfileRipple1::radialExtension() const
 {
     return (m_width + m_length) / 4.0;
 }
 
 //! Integrand for complex form factor.
-complex_t FormFactorLongRipple1Gauss::Integrand(double u) const
+complex_t ProfileRipple1::Integrand(double u) const
 {
     return sin(u) * exp(m_az * std::cos(u)) * (m_ay == 0. ? u : sin(m_ay * u) / m_ay);
 }
 
 //! Complex form factor.
-complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const
+complex_t ProfileRipple1::factor_yz(complex_t qy, complex_t qz) const
 {
-    complex_t qxL2 = std::pow(m_length * q.x(), 2) / 2.0;
-    complex_t factor = m_length * std::exp(-qxL2) * m_width / M_PI;
+    complex_t factor = m_width / M_PI;
 
     // analytical expressions for some particular cases
-    if (q.z() == 0.) {
-        if (q.y() == 0.)
+    if (qz == 0.) {
+        if (qy == 0.)
             return factor * M_PI_2 * m_height;
-        complex_t aaa = q.y() * m_width / (M_TWOPI);
+        complex_t aaa = qy * m_width / (M_TWOPI);
         complex_t aaa2 = aaa * aaa;
         if (aaa2 == 1.)
             return factor * M_PI_4 * m_height;
-        return factor * M_PI_2 * m_height * MathFunctions::sinc(q.y() * m_width * 0.5)
+        return factor * M_PI_2 * m_height * MathFunctions::sinc(qy * m_width * 0.5)
                / (1.0 - aaa2);
     }
 
     // numerical integration otherwise
-    m_ay = q.y() * m_width / M_TWOPI;
-    m_az = complex_t(0, 1) * q.z() * (m_height / 2);
+    m_ay = qy * m_width / M_TWOPI;
+    m_az = complex_t(0, 1) * qz * (m_height / 2);
     complex_t integral = mP_integrator->integrate(0, M_PI);
     return factor * integral * exp(m_az) * (m_height / 2);
 }
 
-void FormFactorLongRipple1Gauss::onChange()
+void ProfileRipple1::onChange()
 {
-    mP_shape.reset(new Box(m_length, m_width, m_height));
+    mP_shape.reset(new RippleCosine(m_length, m_width, m_height));
 }
diff --git a/Core/HardParticle/FormFactorLongRipple1Gauss.h b/Core/HardParticle/ProfileRipple1.h
similarity index 51%
rename from Core/HardParticle/FormFactorLongRipple1Gauss.h
rename to Core/HardParticle/ProfileRipple1.h
index d80ff7f32a007832f1dd5bb2fe4b2d7cba377de8..02fd0fce22e232fec394e03e49818f30f70c4f55 100644
--- a/Core/HardParticle/FormFactorLongRipple1Gauss.h
+++ b/Core/HardParticle/ProfileRipple1.h
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/HardParticle/FormFactorLongRipple1Gauss.h
-//! @brief     Defines class FormFactorLongRipple1Gauss.
+//! @file      Core/HardParticle/ProfileRipple1.h
+//! @brief     Defines class ProfileRipple1.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,54 +12,49 @@
 //
 // ************************************************************************** //
 
-#ifndef FORMFACTORLONGRIPPLE1GAUSS_H
-#define FORMFACTORLONGRIPPLE1GAUSS_H
+#ifndef PROFILERIPPLE1_H
+#define PROFILERIPPLE1_H
 
 #include "IFormFactorBorn.h"
 #include "IntegratorComplex.h"
 
-//! The form factor for a cosine ripple.
-//! @ingroup legacyGrating
+//! Base class for form factors with a cosine ripple profile in the yz plane.
 
-class BA_CORE_API_ FormFactorLongRipple1Gauss : public IFormFactorBorn
+class BA_CORE_API_ ProfileRipple1 : public IFormFactorBorn
 {
 public:
-    //! @brief Ripple1 constructor
-    //! @param length of Ripple1
-    //! @param width of cosine cross section
-    //! @param height of cosine cross section
-    FormFactorLongRipple1Gauss(double length, double width, double height);
-
-    FormFactorLongRipple1Gauss* clone() const override final
-    {
-        return new FormFactorLongRipple1Gauss(m_length, m_width, m_height);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
+    ProfileRipple1(double length, double width, double height);
 
+    double getLength() const { return m_length; }
     double getHeight() const { return m_height; }
     double getWidth() const { return m_width; }
-    double getLength() const { return m_length; }
 
     double radialExtension() const override final;
 
-    complex_t evaluate_for_q(cvector_t q) const override final;
+    complex_t evaluate_for_q(cvector_t q) const override final
+    {
+        return factor_x(q.x()) * factor_yz(q.y(), q.z());
+    }
 
 protected:
     void onChange() override final;
+    virtual complex_t factor_x(complex_t qx) const = 0;
+
+    double m_length;
+    double m_width;
+    double m_height;
 
 private:
+    complex_t factor_yz(complex_t qy, complex_t qz) const;
     complex_t Integrand(double u) const;
     bool check_initialization() const;
 
-    double m_length;
-    double m_width;
-    double m_height;
     mutable complex_t m_ay;
     mutable complex_t m_az;
 
 #ifndef SWIG
-    std::unique_ptr<IntegratorComplex<FormFactorLongRipple1Gauss>> mP_integrator;
+    std::unique_ptr<IntegratorComplex<ProfileRipple1>> mP_integrator;
 #endif
 };
 
-#endif // FORMFACTORLONGRIPPLE1GAUSS_H
+#endif // PROFILERIPPLE1_H
diff --git a/Core/HardParticle/Ripples.cpp b/Core/HardParticle/Ripples.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..78b0a5f12251f2357e7a98b6b3e30f3704560975
--- /dev/null
+++ b/Core/HardParticle/Ripples.cpp
@@ -0,0 +1,31 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/Ripples.cpp
+//! @brief     Implements computations in namespace ripples.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2018
+//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
+//
+// ************************************************************************** //
+
+#include "Ripples.h"
+#include "MathFunctions.h"
+
+complex_t ripples::factor_x_box(complex_t q, double r)
+{
+    return r * MathFunctions::sinc(q*r/2.0);
+}
+
+complex_t ripples::factor_x_Gauss(complex_t q, double r)
+{
+    return r * exp(-q*r/8.0);
+}
+
+complex_t ripples::factor_x_Lorentz(complex_t q, double r)
+{
+    return r / (1.0 + (q*r)*(q*r));
+}
diff --git a/Core/HardParticle/Ripples.h b/Core/HardParticle/Ripples.h
new file mode 100644
index 0000000000000000000000000000000000000000..c179d58fb08a7c98ccda99d4e3cce42ea334c7fd
--- /dev/null
+++ b/Core/HardParticle/Ripples.h
@@ -0,0 +1,24 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/Ripples.h
+//! @brief     Declares computations in namespace ripples.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2018
+//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
+//
+// ************************************************************************** //
+
+#include "Complex.h"
+
+//! Computations for elongated particles.
+namespace ripples {
+
+complex_t factor_x_box(complex_t q, double l);
+complex_t factor_x_Gauss(complex_t q, double l);
+complex_t factor_x_Lorentz(complex_t q, double l);
+
+} // namespace ripples
diff --git a/Core/Parametrization/INodeVisitor.h b/Core/Parametrization/INodeVisitor.h
index 02c97da2e5b6ebb232a5db264e3769952de3c33c..1b59c06a315c32d3859da9aedcebf70af38c7217 100644
--- a/Core/Parametrization/INodeVisitor.h
+++ b/Core/Parametrization/INodeVisitor.h
@@ -50,14 +50,15 @@ class FormFactorFullSpheroid;
 class FormFactorGauss;
 class FormFactorHemiEllipsoid;
 class FormFactorIcosahedron;
-class FormFactorLongBox;
 class FormFactorLongBoxGauss;
 class FormFactorLongBoxLorentz;
 class FormFactorLorentz;
 class FormFactorPrism3;
 class FormFactorPrism6;
 class FormFactorPyramid;
-class FormFactorRipple1;
+class FormFactorRipple1Box;
+class FormFactorRipple1Gauss;
+class FormFactorRipple1Lorentz;
 class FormFactorRipple2;
 class FormFactorSphereGaussianRadius;
 class FormFactorSphereLogNormalRadius;
@@ -182,14 +183,15 @@ public:
     virtual void visit(const FormFactorGauss*) {}
     virtual void visit(const FormFactorHemiEllipsoid*) {}
     virtual void visit(const FormFactorIcosahedron*) {}
-    virtual void visit(const FormFactorLongBox*) {}
     virtual void visit(const FormFactorLongBoxGauss*) {}
     virtual void visit(const FormFactorLongBoxLorentz*) {}
     virtual void visit(const FormFactorLorentz*) {}
     virtual void visit(const FormFactorPrism3*) {}
     virtual void visit(const FormFactorPrism6*) {}
     virtual void visit(const FormFactorPyramid*) {}
-    virtual void visit(const FormFactorRipple1*) {}
+    virtual void visit(const FormFactorRipple1Box*) {}
+    virtual void visit(const FormFactorRipple1Gauss*) {}
+    virtual void visit(const FormFactorRipple1Lorentz*) {}
     virtual void visit(const FormFactorRipple2*) {}
     virtual void visit(const FormFactorSphereGaussianRadius*) {}
     virtual void visit(const FormFactorSphereLogNormalRadius*) {}
diff --git a/Core/StandardSamples/RipplesBuilder.cpp b/Core/StandardSamples/RipplesBuilder.cpp
index d4436f3f0866404616fa78a263bea5b344045908..06c5b9edefab76246d1ae324017937fa102b9d7a 100644
--- a/Core/StandardSamples/RipplesBuilder.cpp
+++ b/Core/StandardSamples/RipplesBuilder.cpp
@@ -36,7 +36,7 @@ MultiLayer* CosineRippleBuilder::buildSample() const
     Material particle_material = HomogeneousMaterial("Particle", 6e-4, 2e-8);
 
     Layer air_layer(air_material);
-    FormFactorRipple1 ff_ripple1(100.0, 20.0, 4.0);
+    FormFactorRipple1Box ff_ripple1(100.0, 20.0, 4.0);
     Particle ripple(particle_material, ff_ripple1);
 
     ParticleLayout particle_layout;
diff --git a/Core/StandardSamples/SampleComponents.cpp b/Core/StandardSamples/SampleComponents.cpp
index f967dde73868162275013ba5fa3c7d2e5d349283..1ca66022ea93efad720cd2b9326dcd029f1e6bbc 100644
--- a/Core/StandardSamples/SampleComponents.cpp
+++ b/Core/StandardSamples/SampleComponents.cpp
@@ -67,7 +67,7 @@ FormFactorComponents::FormFactorComponents()
 
     add(BornAgain::FFPyramidType, new FormFactorPyramid(10.0, 5.0, Units::deg2rad(54.73)));
 
-    add(BornAgain::FFRipple1Type, new FormFactorRipple1(100.0, 20.0, 4.0));
+    add(BornAgain::FFRipple1BoxType, new FormFactorRipple1Box(100.0, 20.0, 4.0));
 
     add(BornAgain::FFRipple2Type, new FormFactorRipple2(100.0, 20.0, 4.0, 0.0));
 
diff --git a/Core/includeIncludes/HardParticles.h b/Core/includeIncludes/HardParticles.h
index 624e61da1117d7af994d4eaca061cf0ddaf55f3f..f68eeb2e52b37a73b94c429049068c04ec3f8214 100644
--- a/Core/includeIncludes/HardParticles.h
+++ b/Core/includeIncludes/HardParticles.h
@@ -28,7 +28,6 @@
 #include "FormFactorFullSpheroid.h"
 #include "FormFactorHemiEllipsoid.h"
 #include "FormFactorIcosahedron.h"
-#include "FormFactorLongBox.h"
 #include "FormFactorLongBoxGauss.h"
 #include "FormFactorLongBoxLorentz.h"
 #include "FormFactorPrism3.h"
diff --git a/Doc/FFCatalog/FFCatalog.pdf b/Doc/FFCatalog/FFCatalog.pdf
index caf9177b0aac4362ca76314f0731bbb1258b10ca..39e9a87bfb2cf72ed632869a9052dd5d70f09ea3 100644
Binary files a/Doc/FFCatalog/FFCatalog.pdf and b/Doc/FFCatalog/FFCatalog.pdf differ
diff --git a/Doc/FFCatalog/FormFactors.tex b/Doc/FFCatalog/FormFactors.tex
index 7c2aa7d73c9f8f136f658c30005adf5e19753d78..a61aceb980d6e867e59a6e2f51aab87d092c987d 100644
--- a/Doc/FFCatalog/FormFactors.tex
+++ b/Doc/FFCatalog/FormFactors.tex
@@ -25,6 +25,8 @@
 \makeatother
 
 \index{Cone|see{Frustum}}
+\index{Cuboid|see{Box}}
+\index{Prism!reactangular|see{Box}}
 \index{Tilt|see{Rotation}}
 \index{Truncation|seealso{Facetting}}
 \index{Truncation!cone|see{Frustum}}
@@ -343,8 +345,6 @@ and were found to fully agree.
 %===============================================================================
 \index{Box}
 \index{Cube}
-\index{Cuboid}
-\index{Prism!reactangular}
 \index{Platonic solid!cube}
 \index{FormFactorBox@\Code{FormFactorBox}}
 
@@ -408,7 +408,7 @@ except for factors $1/2$ in the definitions of parameters $L$, $W$, $H$.
 \item \ffref{AnisoPyramid} or \ffref{Pyramid}
   if sides are not vertical,
 \item \ffref{TruncatedCube} if $L=W=H$ and corners are facetted,
-\item \ffref{LongBox} if stretched in one horizontal direction
+\item Sect.~\ref{SElongatedBox} if elongated in one horizontal direction.
 \end{itemize}
 
 %===============================================================================
@@ -1890,9 +1890,10 @@ in \cref{SCylinder}.
 \chapter{Ripples}\label{SRipple}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \index{Ripple|(}
+\index{Particle!elongated|see{Ripple}}
+
+Elongated particles, or ripples, are typically used to model lamellar cuts or man-made gratings.
 
-Gratings can be modelled
-as one-dimensional arrangement of elongated particles.
 As everywhere else in BornAgain
 only single scattering in the DWBA is simulated.
 This can be insufficient for periodic gratings
@@ -1902,12 +1903,86 @@ it may be advisable to compute Bloch waves \cite{AsSW10}
 or use finite elements to solve the exact wave equation \cite{SoFP17}.
 For the foreseeable future, this is not in the scope of BornAgain.
 
+We choose ripples to be elongated in $x$ direction.
+Different profiles in the $yz$ plane can be chosen:
+box, sinusoidal [\ffref{Ripple1}], saw-tooth [\ffref{Ripple2}].
+
+For each of them, different profiles can also be chosen in the $xz$ plane,
+namely box, Gauss, and Lorentzian,
+each of them characterized by a single parameter \texttt{length},~$L$.
+The corresponding form factor along the elongation axis~$x$ is
+\begin{equation}\label{EFparallel}
+    f_\parallel(q_x) = \left\{\begin{array}{l@{\quad}l}
+    L\sinc(q_x L/2) &\text{box,}\\
+    L\exp(-(q_x L)^2/8) &\text{Gauss,}\\
+    L/(1+(q_x L)^2) &\text{Lorentz.}
+    \end{array}\right.
+\end{equation}
+Constant factors have been chosen so that the forward scattering is the same
+in all three cases, $f_\parallel(0)=L$.
+
+%===============================================================================
+\ffsection{Elongated box} \label{SElongatedBox}
+%===============================================================================
+\index{Box}
+\index{FormFactorBox@\Code{FormFactorBox}}
+\index{FormFactorLongBoxGauss@\Code{FormFactorLongBoxGauss}}
+\index{FormFactorLongBoxLorentz@\Code{FormFactorLongBoxLorentz}}
+
+\paragraph{Real-space geometry}\strut\\
+
+\begin{figure}[H]
+\hfill
+\subfigure[Perspective]{\includefinal{.24\TW}{fig/blue/Box3d.png}}
+\hfill
+\subfigure[Top view]{\includefinal{.3\TW}{fig/cuts/Box2dxy.pdf}}
+\hfill
+\subfigure[Side view]{\raisebox{2mm}{\includefinal{.3\TW}{fig/cuts/Box2dxz.pdf}}}
+\hfill
+\caption{A rectangular cuboid.}
+\end{figure}
+
+\FloatBarrier
+
+\paragraph{Syntax and parameters}\strut\\[-2ex plus .2ex minus .2ex]
+\begin{lstlisting}
+  FormFactorBox(
+     double length, double width, double height)
+  FormFactorLongBoxGauss(
+     double length, double width, double height)
+  FormFactorLongBoxLorentz(
+     double length, double width, double height)
+\end{lstlisting}
+with the parameters
+\begin{itemize}
+\item \texttt{length} of the base, $L$,
+\item \texttt{width} of the base, $W$,
+\item \texttt{height}, $H$.
+\end{itemize}
+
+\paragraph{Form factor, volume, horizontal section}
+
+\begin{equation*}
+F= f_\parallel(q_x) W H\exp\left(i q_z \frac{H}{2}\right)
+\sinc\left(q_y \frac{W}{2}\right) \sinc\left(q_z \frac{H}{2}\right)
+\end{equation*}
+with $f_\parallel$ as defined in~\cref{EFparallel},
+\begin{equation*}
+  V= LWH,
+\end{equation*}
+\begin{equation*}
+  S = LW.
+\end{equation*}
+
+
 %===============================================================================
 \ffsection{Ripple1 (sinusoidal)} \label{SRipple1}
 %===============================================================================
 \index{Ripple!sinusoidal}
 \index{Sinusoidal ripple}
-\index{FormFactorRipple1@\Code{FormFactorRipple1}}
+\index{FormFactorRipple1Box@\Code{FormFactorRipple1Box}}
+\index{FormFactorRipple1Gauss@\Code{FormFactorRipple1Gauss}}
+\index{FormFactorRipple1Lorentz@\Code{FormFactorRipple1Lorentz}}
 
 \paragraph{Real-space geometry}\strut\\
 
@@ -1924,7 +1999,12 @@ For the foreseeable future, this is not in the scope of BornAgain.
 
 \paragraph{Syntax and parameters}\strut\\[-2ex plus .2ex minus .2ex]
 \begin{lstlisting}
-  FormFactorRipple1(double length, double width, double height)
+  FormFactorRipple1Box(
+     double length, double width, double height)
+  FormFactorRipple1Gauss(
+     double length, double width, double height)
+  FormFactorRipple1Lorentz(
+     double length, double width, double height)
 \end{lstlisting}
 with the parameters
 \begin{itemize}
@@ -1944,9 +2024,10 @@ Using the inverse profile
 \end{equation*}
 the form factor is computed by numeric integration:
 \begin{equation*}
-F = L \sinc\left(\frac{q_xL}{2}\right)
-   \int_0^H\!\d z\,\e^{iq_zz}\, 2Y(z)\sinc\left(q_y Y(z)\right).
+F = f_\parallel(q_x)
+   \int_0^H\!\d z\,\e^{iq_zz}\, 2Y(z)\sinc\left(q_y Y(z)\right)
 \end{equation*}
+with $f_\parallel$ defined in~\cref{EFparallel}.
 The integration is substantially accelerated by the substitution
 $u=\text{arccos}( 2z/H-1)$.
 
@@ -1978,6 +2059,8 @@ Agrees with the \E{Ripple1} form factor of \FitGISAXS\ \cite{Bab13}.
 \index{Ripple!saw-tooth}
 \index{Saw-tooth ripple}
 \index{FormFactorRipple2@\Code{FormFactorRipple2}}
+\index{FormFactorLongRipple2Gauss@\Code{FormFactorLongRipple2Gauss}}
+\index{FormFactorLongRipple2Lorentz@\Code{FormFactorLongRipple2Lorentz}}
 
 \paragraph{Real-space geometry}\strut\\
 
@@ -1996,7 +2079,12 @@ Agrees with the \E{Ripple1} form factor of \FitGISAXS\ \cite{Bab13}.
 
 \paragraph{Syntax and parameters}\strut\\[-2ex plus .2ex minus .2ex]
 \begin{lstlisting}
-  FormFactorRipple2(double length, double width, double height, asymmetry)
+  FormFactorRipple2(
+     double length, double width, double height, asymmetry)
+  FormFactorLongRipple2Gauss(
+     double length, double width, double height)
+  FormFactorLongRipple2Lorentz(
+     double length, double width, double height)
 \end{lstlisting}
 with the parameters
 \begin{itemize}
@@ -2012,14 +2100,14 @@ They must fulfill
 
 \paragraph{Form factor, volume, horizontal section}\strut\\
 \begin{equation*}
-  F = \frac{L H}{q_y}
-  \sinc\left(\frac{q_xL}{2}\right)
+  F = f_\parallel(q_x)
   i\e^{-i q_y d}
   \left[
     \e^{i \alpha_{-}/2} \sinc\left( \frac{\alpha_{+}}{2} \right)
     - \e^{i \alpha_{+}/2} \sinc\left( \frac{\alpha_{-}}{2} \right)
   \right],
 \end{equation*}
+with $f_\parallel$ defined in~\cref{EFparallel}.
 \begin{equation*}
   \alpha_{+} = H q_z + \frac{q_y W}{2} + q_y d, \quad
   \alpha_{-} = H q_z - \frac{q_y W}{2} + q_y d,
diff --git a/Doc/dev-notes/modify-formfactor.md b/Doc/dev-notes/modify-formfactor.md
new file mode 100644
index 0000000000000000000000000000000000000000..7b8b7636b66b994856aca6513451ad6fb975addc
--- /dev/null
+++ b/Doc/dev-notes/modify-formfactor.md
@@ -0,0 +1,45 @@
+#### How to make an API change that involves a form factor
+
+This note shall help when you
+* add a form factor
+* remove a form factor
+* change a form factor's argument list
+
+After adding or removing a form factor, the following files need to be updated:
+* Core/Basics/BornAgainNamespace.h
+* Core/Parametrization/INodeVisitor.h (in two places)
+* Core/includeIncludes/HardParticles.h
+* Wrap/swig/libBornAgainCore.i (in two places: #include and %include)
+
+Possibly, the form factor appears in
+* Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
+* Core/StandardSamples/SampleComponents.cpp
+* Core/StandardSamples/...
+
+Examples and tests, e.g.:
+* Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
+* Examples/python/simulation/...
+* Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
+* Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
+* Tests/ReferenceData/Core/FormFactors_*
+* Tests/ReferenceData/Core/FormFactorsWithAbsorption_*
+
+If the form factor is supported by the GUI, then also:
+* GUI/coregui/Models/GroupInfoCatalogue.cpp
+* GUI/coregui/Models/item_constants.h
+* GUI/coregui/Models/FormFactorItems.h and .cpp
+* GUI/coregui/Models/GUIDomainSampleVisitor.h and .cpp
+* GUI/coregui/Models/ItemCatalogue.cpp
+* GUI/coregui/Models/item_constants.h
+* GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
+* GUI/coregui/Views/widgetbox/widgetbox.qrc
+* GUI/coregui/Views/widgetbox/widgetbox.xml
+
+If there is a real-space view:
+* GUI/coregui/Models/item_constants.h
+* GUI/ba3d/ba3d/model/model.cpp
+* GUI/ba3d/ba3d/model/particles.h and .cpp
+* GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
+* GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
+
+Recreate bindings with `cmake -DAUTOGENERATE=ON ..`
\ No newline at end of file
diff --git a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
index 426e01b60ab04a21c8168db87206f37b1df2b491..627c99dfa6407519040d5f1aba2ceb259fe4a2b5 100644
--- a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
+++ b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
@@ -26,7 +26,7 @@ formfactors = [
     ba.FormFactorPrism3(10.0, 13.0),
     ba.FormFactorPrism6(5.0, 11.0),
     ba.FormFactorPyramid(18.0, 13.0, 60.0*deg),
-    ba.FormFactorRipple1(27.0, 20.0, 14.0),
+    ba.FormFactorRipple1Box(27.0, 20.0, 14.0),
     ba.FormFactorRipple2(36.0, 25.0, 14.0, 3.0),
     ba.FormFactorTetrahedron(15.0, 6.0, 60.0*deg),
     ba.FormFactorTruncatedSphere(5.0, 7.0),
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py b/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
index 6271631e3039b5142513355ecf3db3fd739c7659..7d6eb9e5d91d62d8176ab2d1a74b38d91b056385 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
@@ -17,11 +17,11 @@ def get_sample():
     m_particle = ba.HomogeneousMaterial("Particle", 6e-4, 2e-8)
 
     # collection of particles
-    ripple1_ff = ba.FormFactorRipple1(100*nm, 20*nm, 4*nm)
-    ripple = ba.Particle(m_particle, ripple1_ff)
+    ff = ba.FormFactorRipple1Box(100*nm, 20*nm, 4*nm)
+    particle = ba.Particle(m_particle, ff)
 
     particle_layout = ba.ParticleLayout()
-    particle_layout.addParticle(ripple, 1.0)
+    particle_layout.addParticle(particle, 1.0)
 
     interference = ba.InterferenceFunction2DLattice(
         200.0*nm, 50.0*nm, 90.0*deg, 0.0*deg)
diff --git a/GUI/ba3d/ba3d/model/model.cpp b/GUI/ba3d/ba3d/model/model.cpp
index 1df26c3a9d11e21d6170a70f10985d59f930f6d8..d32e8320b9c78f6d4be95f320659a15347055ccd 100644
--- a/GUI/ba3d/ba3d/model/model.cpp
+++ b/GUI/ba3d/ba3d/model/model.cpp
@@ -94,8 +94,12 @@ Particles::Particle* Model::newParticle(Particles::EShape k, float R)
         return new HemiEllipsoid(R, R, D);
     case EShape::Dot:
         return new Dot();
-    case EShape::Ripple1:
-        return new Ripple1(D, D, D);
+    case EShape::Ripple1Box:
+        return new Ripple1Box(D, D, D); // TODO ripples should be elongated
+    case EShape::Ripple1Gauss:
+        return new Ripple1Gauss(D, D, D); // TODO ripples should be elongated
+    case EShape::Ripple1Lorentz:
+        return new Ripple1Lorentz(D, D, D); // TODO ripples should be elongated
     case EShape::Ripple2:
         return new Ripple2(D, D, D, 0.3f);
     case EShape::AnisoPyramid:
diff --git a/GUI/ba3d/ba3d/model/particles.cpp b/GUI/ba3d/ba3d/model/particles.cpp
index 150e933ef1e11b0a8fd34062022a21ed7bb66ce7..181d23f7c8ca85d42e82d5ed46560991a826e2d5 100644
--- a/GUI/ba3d/ba3d/model/particles.cpp
+++ b/GUI/ba3d/ba3d/model/particles.cpp
@@ -43,7 +43,9 @@ QString const& name(EShape k)
         "Box",
         "HemiEllipsoid",
         "Dot",
-        "Ripple1",
+        "Ripple1Box",
+        "Ripple1Gauss",
+        "Ripple1Lorentz",
         "Ripple2",
         "AnisoPyramid",
     };
@@ -239,7 +241,25 @@ Pyramid::Pyramid(float L, float H, float alpha)
     set();
 }
 
-Ripple1::Ripple1(float L, float W, float H) : Particle(Key(BaseShape::Ripple, 0, 0))
+Ripple1Box::Ripple1Box(float L, float W, float H) : Particle(Key(BaseShape::Ripple, 0, 0))
+{
+    isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
+    turn = Vector3D(0, 0, 0);
+    scale = Vector3D(L, W, H);
+    offset = Vector3D(0, 0, 0);
+    set();
+}
+
+Ripple1Gauss::Ripple1Gauss(float L, float W, float H) : Particle(Key(BaseShape::Ripple, 0, 0))
+{
+    isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
+    turn = Vector3D(0, 0, 0);
+    scale = Vector3D(L, W, H);
+    offset = Vector3D(0, 0, 0);
+    set();
+}
+
+Ripple1Lorentz::Ripple1Lorentz(float L, float W, float H) : Particle(Key(BaseShape::Ripple, 0, 0))
 {
     isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
     turn = Vector3D(0, 0, 0);
diff --git a/GUI/ba3d/ba3d/model/particles.h b/GUI/ba3d/ba3d/model/particles.h
index 15cd0c556103024a112340980f1bc664352347e3..117aeff6ce9cc0bf3e15e1bc6f3ce418dcebd0a1 100644
--- a/GUI/ba3d/ba3d/model/particles.h
+++ b/GUI/ba3d/ba3d/model/particles.h
@@ -43,7 +43,9 @@ enum class EShape {
     Box,
     HemiEllipsoid,
     Dot,
-    Ripple1,
+    Ripple1Box,
+    Ripple1Gauss,
+    Ripple1Lorentz,
     Ripple2,
     AnisoPyramid,
 };
@@ -192,10 +194,22 @@ public:
     HemiEllipsoid(float Ra, float Rb, float H);
 };
 
-class Ripple1 : public Particle
+class Ripple1Box : public Particle
 {
 public:
-    Ripple1(float L, float W, float H);
+    Ripple1Box(float L, float W, float H);
+};
+
+class Ripple1Gauss : public Particle
+{
+public:
+    Ripple1Gauss(float L, float W, float H);
+};
+
+class Ripple1Lorentz : public Particle
+{
+public:
+    Ripple1Lorentz(float L, float W, float H);
 };
 
 class Ripple2 : public Particle
diff --git a/GUI/coregui/Models/FormFactorItems.cpp b/GUI/coregui/Models/FormFactorItems.cpp
index eaa111bb2b3848f1026f295baa1e24a6eac5cc3e..f1f2be74e9807cdf91bbc5217eb8b499338e34a6 100644
--- a/GUI/coregui/Models/FormFactorItems.cpp
+++ b/GUI/coregui/Models/FormFactorItems.cpp
@@ -357,11 +357,11 @@ std::unique_ptr<IFormFactor> PyramidItem::createFormFactor() const
 
 /* ------------------------------------------------ */
 
-const QString Ripple1Item::P_LENGTH = QString::fromStdString(BornAgain::Length);
-const QString Ripple1Item::P_WIDTH = QString::fromStdString(BornAgain::Width);
-const QString Ripple1Item::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+const QString Ripple1BoxItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple1BoxItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple1BoxItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
 
-Ripple1Item::Ripple1Item() : FormFactorItem(Constants::Ripple1Type)
+Ripple1BoxItem::Ripple1BoxItem() : FormFactorItem(Constants::Ripple1BoxType)
 {
     setToolTip(QStringLiteral("Particle with a cosine profile and a rectangular base"));
     addProperty(P_LENGTH, 27.0)
@@ -371,11 +371,57 @@ Ripple1Item::Ripple1Item() : FormFactorItem(Constants::Ripple1Type)
     addProperty(P_HEIGHT, 14.0)->setToolTip(QStringLiteral("Height of the ripple in nanometers"));
 }
 
-std::unique_ptr<IFormFactor> Ripple1Item::createFormFactor() const
+std::unique_ptr<IFormFactor> Ripple1BoxItem::createFormFactor() const
 {
-    return std::make_unique<FormFactorRipple1>(getItemValue(P_LENGTH).toDouble(),
-                                               getItemValue(P_WIDTH).toDouble(),
-                                               getItemValue(P_HEIGHT).toDouble());
+    return std::make_unique<FormFactorRipple1Box>(getItemValue(P_LENGTH).toDouble(),
+                                                  getItemValue(P_WIDTH).toDouble(),
+                                                  getItemValue(P_HEIGHT).toDouble());
+}
+
+/* ------------------------------------------------ */
+
+const QString Ripple1GaussItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple1GaussItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple1GaussItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+
+Ripple1GaussItem::Ripple1GaussItem() : FormFactorItem(Constants::Ripple1GaussType)
+{
+    setToolTip(QStringLiteral("Particle with a cosine profile and a rectangular base"));
+    addProperty(P_LENGTH, 27.0)
+        ->setToolTip(QStringLiteral("Length of the rectangular base in nanometers"));
+    addProperty(P_WIDTH, 20.0)
+        ->setToolTip(QStringLiteral("Width of the rectangular base in nanometers"));
+    addProperty(P_HEIGHT, 14.0)->setToolTip(QStringLiteral("Height of the ripple in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> Ripple1GaussItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorRipple1Gauss>(getItemValue(P_LENGTH).toDouble(),
+                                                  getItemValue(P_WIDTH).toDouble(),
+                                                  getItemValue(P_HEIGHT).toDouble());
+}
+
+/* ------------------------------------------------ */
+
+const QString Ripple1LorentzItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple1LorentzItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple1LorentzItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+
+Ripple1LorentzItem::Ripple1LorentzItem() : FormFactorItem(Constants::Ripple1LorentzType)
+{
+    setToolTip(QStringLiteral("Particle with a cosine profile and a rectangular base"));
+    addProperty(P_LENGTH, 27.0)
+        ->setToolTip(QStringLiteral("Length of the rectangular base in nanometers"));
+    addProperty(P_WIDTH, 20.0)
+        ->setToolTip(QStringLiteral("Width of the rectangular base in nanometers"));
+    addProperty(P_HEIGHT, 14.0)->setToolTip(QStringLiteral("Height of the ripple in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> Ripple1LorentzItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorRipple1Lorentz>(getItemValue(P_LENGTH).toDouble(),
+                                                  getItemValue(P_WIDTH).toDouble(),
+                                                  getItemValue(P_HEIGHT).toDouble());
 }
 
 /* ------------------------------------------------ */
diff --git a/GUI/coregui/Models/FormFactorItems.h b/GUI/coregui/Models/FormFactorItems.h
index baa211c95c3214bada24d279685fb12f9ea32361..4bd0c2dfab560d7c39af25fbf632cd8975063e40 100644
--- a/GUI/coregui/Models/FormFactorItems.h
+++ b/GUI/coregui/Models/FormFactorItems.h
@@ -176,13 +176,33 @@ public:
     std::unique_ptr<IFormFactor> createFormFactor() const;
 };
 
-class BA_CORE_API_ Ripple1Item : public FormFactorItem
+class BA_CORE_API_ Ripple1BoxItem : public FormFactorItem
 {
 public:
     static const QString P_LENGTH;
     static const QString P_WIDTH;
     static const QString P_HEIGHT;
-    Ripple1Item();
+    Ripple1BoxItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
+class BA_CORE_API_ Ripple1GaussItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    Ripple1GaussItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
+class BA_CORE_API_ Ripple1LorentzItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    Ripple1LorentzItem();
     std::unique_ptr<IFormFactor> createFormFactor() const;
 };
 
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index 8fca0fbb3efe8f11ba1b73bd6169e45da5dad596..82021a684ed4feced7dd29e14937a417ce3ee28b 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -332,13 +332,33 @@ void GUIDomainSampleVisitor::visit(const FormFactorPyramid* p_sample)
     m_levelToParentItem[depth()] = p_particle_item;
 }
 
-void GUIDomainSampleVisitor::visit(const FormFactorRipple1* p_sample)
+void GUIDomainSampleVisitor::visit(const FormFactorRipple1Box* p_sample)
 {
     SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
-    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple1Type);
-    p_ff_item->setItemValue(Ripple1Item::P_LENGTH, p_sample->getLength());
-    p_ff_item->setItemValue(Ripple1Item::P_WIDTH, p_sample->getWidth());
-    p_ff_item->setItemValue(Ripple1Item::P_HEIGHT, p_sample->getHeight());
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple1BoxType);
+    p_ff_item->setItemValue(Ripple1BoxItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple1BoxItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple1BoxItem::P_HEIGHT, p_sample->getHeight());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
+void GUIDomainSampleVisitor::visit(const FormFactorRipple1Gauss* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple1GaussType);
+    p_ff_item->setItemValue(Ripple1GaussItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple1GaussItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple1GaussItem::P_HEIGHT, p_sample->getHeight());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
+void GUIDomainSampleVisitor::visit(const FormFactorRipple1Lorentz* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple1LorentzType);
+    p_ff_item->setItemValue(Ripple1LorentzItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple1LorentzItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple1LorentzItem::P_HEIGHT, p_sample->getHeight());
     m_levelToParentItem[depth()] = p_particle_item;
 }
 
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.h b/GUI/coregui/Models/GUIDomainSampleVisitor.h
index ace44caabdafc10a1f1eb29d69cd7846357f21c4..6da972f6c0d569fdfeb39e4b6cdf0f3c4f7fcb48 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.h
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.h
@@ -69,7 +69,9 @@ public:
     void visit(const FormFactorPrism3*);
     void visit(const FormFactorPrism6*);
     void visit(const FormFactorPyramid*);
-    void visit(const FormFactorRipple1*);
+    void visit(const FormFactorRipple1Box*);
+    void visit(const FormFactorRipple1Gauss*);
+    void visit(const FormFactorRipple1Lorentz*);
     void visit(const FormFactorRipple2*);
     void visit(const FormFactorTetrahedron*);
     void visit(const FormFactorDot*);
diff --git a/GUI/coregui/Models/GroupInfoCatalogue.cpp b/GUI/coregui/Models/GroupInfoCatalogue.cpp
index 1b2b5eb70c9591ed0f389fee2535b140a0612fe1..fcad2f924df2aaca1b6896921ecdf5a5d7c32027 100644
--- a/GUI/coregui/Models/GroupInfoCatalogue.cpp
+++ b/GUI/coregui/Models/GroupInfoCatalogue.cpp
@@ -35,7 +35,9 @@ GroupInfoCatalogue::GroupInfoCatalogue()
     info.add(Constants::Prism3Type, "Prism3");
     info.add(Constants::Prism6Type, "Prism6");
     info.add(Constants::PyramidType, "Pyramid");
-    info.add(Constants::Ripple1Type, "Ripple1");
+    info.add(Constants::Ripple1BoxType, "Ripple1Box");
+    info.add(Constants::Ripple1GaussType, "Ripple1Gauss");
+    info.add(Constants::Ripple1LorentzType, "Ripple1Lorentz");
     info.add(Constants::Ripple2Type, "Ripple2");
     info.add(Constants::TetrahedronType, "Tetrahedron");
     info.add(Constants::TruncatedCubeType, "Truncated Cube");
diff --git a/GUI/coregui/Models/ItemCatalogue.cpp b/GUI/coregui/Models/ItemCatalogue.cpp
index fa616a20b6c5872fa169f1c0abc8d38500bd1bba..95c044249e6f352d5f4f6c1f77e26052399c307a 100644
--- a/GUI/coregui/Models/ItemCatalogue.cpp
+++ b/GUI/coregui/Models/ItemCatalogue.cpp
@@ -120,7 +120,9 @@ ItemCatalogue::ItemCatalogue()
     add(Constants::Prism3Type, create_new<Prism3Item>);
     add(Constants::Prism6Type, create_new<Prism6Item>);
     add(Constants::PyramidType, create_new<PyramidItem>);
-    add(Constants::Ripple1Type, create_new<Ripple1Item>);
+    add(Constants::Ripple1BoxType, create_new<Ripple1BoxItem>);
+    add(Constants::Ripple1GaussType, create_new<Ripple1GaussItem>);
+    add(Constants::Ripple1LorentzType, create_new<Ripple1LorentzItem>);
     add(Constants::Ripple2Type, create_new<Ripple2Item>);
     add(Constants::TetrahedronType, create_new<TetrahedronItem>);
     add(Constants::TruncatedCubeType, create_new<TruncatedCubeItem>);
diff --git a/GUI/coregui/Models/item_constants.h b/GUI/coregui/Models/item_constants.h
index 73aa51fd2d8ef557efdcff3bf94f0e1efdbe8c1a..929d67487f067b94d90062d7898d0e3e34848e01 100644
--- a/GUI/coregui/Models/item_constants.h
+++ b/GUI/coregui/Models/item_constants.h
@@ -68,7 +68,9 @@ const ModelType IcosahedronType = "Icosahedron";
 const ModelType Prism3Type = "Prism3";
 const ModelType Prism6Type = "Prism6";
 const ModelType PyramidType = "Pyramid";
-const ModelType Ripple1Type = "Ripple1";
+const ModelType Ripple1BoxType = "Ripple1Box";
+const ModelType Ripple1GaussType = "Ripple1Gauss";
+const ModelType Ripple1LorentzType = "Ripple1Lorentz";
 const ModelType Ripple2Type = "Ripple2";
 const ModelType TetrahedronType = "Tetrahedron";
 const ModelType TruncatedCubeType = "TruncatedCube";
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
index b54d2f0c252a127a331115c0d6dec0352d2c7843..7c09eabc0c3541af2b614f888ab8b8f22523d4a0 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
@@ -239,10 +239,22 @@ bool isPositionInsideMesoCrystal(const IFormFactor* outerShape, kvector_t positi
         if (std::abs(positionInside.x()) <= l_z && std::abs(positionInside.y()) <= l_z
             && (positionInside.z() >= 0 && positionInside.z() <= H))
             check = true;
-    } else if (dynamic_cast<const FormFactorRipple1*>(outerShape)) {
-        // TODO: Implement Ripple1
+    } else if (dynamic_cast<const FormFactorRipple1Box*>(outerShape)) {
+        // TODO: Implement Ripple1Box
         std::ostringstream ostr;
-        ostr << "Sorry, outer shape Ripple1 not yet implemented for Mesocrystal";
+        ostr << "Sorry, outer shape Ripple1Box not yet implemented for Mesocrystal";
+        ostr << "\n\nStay tuned!";
+        throw Exceptions::ClassInitializationException(ostr.str());
+    } else if (dynamic_cast<const FormFactorRipple1Gauss*>(outerShape)) {
+        // TODO: Implement Ripple1Gauss
+        std::ostringstream ostr;
+        ostr << "Sorry, outer shape Ripple1Gauss not yet implemented for Mesocrystal";
+        ostr << "\n\nStay tuned!";
+        throw Exceptions::ClassInitializationException(ostr.str());
+    } else if (dynamic_cast<const FormFactorRipple1Lorentz*>(outerShape)) {
+        // TODO: Implement Ripple1Lorentz
+        std::ostringstream ostr;
+        ostr << "Sorry, outer shape Ripple1Lorentz not yet implemented for Mesocrystal";
         ostr << "\n\nStay tuned!";
         throw Exceptions::ClassInitializationException(ostr.str());
     } else if (dynamic_cast<const FormFactorRipple2*>(outerShape)) {
diff --git a/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp b/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
index 176655288d7822ed8e955526f681595ea5d1557d..30bc6b2602dc5ccb76fca019cc89f7f886f7fbd8 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
@@ -178,11 +178,21 @@ TransformTo3D::createParticlefromIFormFactor(const IFormFactor* ff)
         double height = ff_Pyramid->getHeight();
         double alpha = ff_Pyramid->getAlpha();
         result = std::make_unique<RealSpace::Particles::Pyramid>(baseedge, height, alpha);
-    } else if (auto ff_Ripple1 = dynamic_cast<const FormFactorRipple1*>(ff)) {
-        double length = ff_Ripple1->getLength();
-        double width = ff_Ripple1->getWidth();
-        double height = ff_Ripple1->getHeight();
-        result = std::make_unique<RealSpace::Particles::Ripple1>(length, width, height);
+    } else if (auto ff_Ripple1Box = dynamic_cast<const FormFactorRipple1Box*>(ff)) {
+        double length = ff_Ripple1Box->getLength();
+        double width = ff_Ripple1Box->getWidth();
+        double height = ff_Ripple1Box->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple1Box>(length, width, height);
+    } else if (auto ff_Ripple1Gauss = dynamic_cast<const FormFactorRipple1Gauss*>(ff)) {
+        double length = ff_Ripple1Gauss->getLength();
+        double width = ff_Ripple1Gauss->getWidth();
+        double height = ff_Ripple1Gauss->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple1Gauss>(length, width, height);
+    } else if (auto ff_Ripple1Lorentz = dynamic_cast<const FormFactorRipple1Lorentz*>(ff)) {
+        double length = ff_Ripple1Lorentz->getLength();
+        double width = ff_Ripple1Lorentz->getWidth();
+        double height = ff_Ripple1Lorentz->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple1Lorentz>(length, width, height);
     } else if (auto ff_Ripple2 = dynamic_cast<const FormFactorRipple2*>(ff)) {
         double length = ff_Ripple2->getLength();
         double width = ff_Ripple2->getWidth();
diff --git a/GUI/coregui/Views/widgetbox/widgetbox.xml b/GUI/coregui/Views/widgetbox/widgetbox.xml
index 947d48adb6d69369d1e8981caa60c16d0ca630ce..4f55ec1947b382cc69866f20b8f0ff786b996391 100644
--- a/GUI/coregui/Views/widgetbox/widgetbox.xml
+++ b/GUI/coregui/Views/widgetbox/widgetbox.xml
@@ -85,7 +85,7 @@
 
     </category>
 
-    <category name="Particles">
+    <category name="Hard particles">
 
         <categoryentry name="Anisotropic pyramid" icon="images/ff_AnisoPyramid_64x64.png">
             <widget class="FormFactorAnisoPyramid">
@@ -215,54 +215,78 @@
             </widget>
         </categoryentry>
 
-        <categoryentry name="Ripple1" icon="images/ff_Ripple1_64x64.png">
-            <widget class="FormFactorRipple1">
+        <categoryentry name="Tetrahedron" icon="images/ff_Tetrahedron_64x64.png">
+            <widget class="FormFactorTetrahedron">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
-        <categoryentry name="Ripple2" icon="images/ff_Ripple2_64x64.png">
-            <widget class="FormFactorRipple2">
+        <categoryentry name="Truncated cube" icon="images/ff_TruncatedCube_64x64.png">
+            <widget class="FormFactorTruncatedCube">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
-        <categoryentry name="Tetrahedron" icon="images/ff_Tetrahedron_64x64.png">
-            <widget class="FormFactorTetrahedron">
+        <categoryentry name="Truncated sphere" icon="images/ff_TruncatedSphere_64x64.png">
+            <widget class="FormFactorTruncatedSphere">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
-        <categoryentry name="Truncated cube" icon="images/ff_TruncatedCube_64x64.png">
-            <widget class="FormFactorTruncatedCube">
+        <categoryentry name="Truncated spheroid" icon="images/ff_TruncatedSpheroid_64x64.png">
+            <widget class="FormFactorTruncatedSpheroid">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
-        <categoryentry name="Truncated sphere" icon="images/ff_TruncatedSphere_64x64.png">
-            <widget class="FormFactorTruncatedSphere">
+    </category>
+
+    <category name="Ripples">
+
+        <categoryentry name="Ripple1Box" icon="images/ff_Ripple1_64x64.png">
+            <widget class="FormFactorRipple1Box">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
-        <categoryentry name="Truncated spheroid" icon="images/ff_TruncatedSpheroid_64x64.png">
-            <widget class="FormFactorTruncatedSpheroid">
+        <categoryentry name="Ripple1Gauss" icon="images/ff_Ripple1_64x64.png">
+            <widget class="FormFactorRipple1Gauss">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+        <categoryentry name="Ripple1Lorentz" icon="images/ff_Ripple1_64x64.png">
+            <widget class="FormFactorRipple1Lorentz">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
             </widget>
         </categoryentry>
 
+        <categoryentry name="Ripple2" icon="images/ff_Ripple2_64x64.png">
+            <widget class="FormFactorRipple2">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+    </category>
+
+    <category name="Soft particles">
+
     </category>
 
     <category name="Transformations">
diff --git a/Tests/Functional/GUI/GUIStandardTest/main.cpp b/Tests/Functional/GUI/GUIStandardTest/main.cpp
index fccb78dcdfd8116610faa2ce423bcd08e58821cd..5bbb682f95dae0a0127a6be09489f98fca56f9f9 100644
--- a/Tests/Functional/GUI/GUIStandardTest/main.cpp
+++ b/Tests/Functional/GUI/GUIStandardTest/main.cpp
@@ -14,10 +14,17 @@
 
 #include "GUIStandardTest.h"
 #include "StandardTestService.h"
+#include <iostream>
 
 //! Runs GUIStandardTest on a standard simulation indicated by argv[1].
 
 int main(int argc, char** argv)
 {
-    return StandardTestService<GUIStandardTest>().execute(argc, argv) ? 0 : 1;
+    bool ok =  StandardTestService<GUIStandardTest>().execute(argc, argv);
+    if (!ok)
+        std::cout << "\n"
+                  << "hint: If this test fails while all other form-factor related tests\n"
+                  << "pass then a likely cause is a change in the form factor API that is\n"
+                  << "not correctly reflected in the GUIDomainSampleVisitor class.\n\n";
+    return ok ? 0 : 1;
 }
diff --git a/Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple1.int.gz b/Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple1Box.int.gz
similarity index 100%
rename from Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple1.int.gz
rename to Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple1Box.int.gz
diff --git a/Tests/ReferenceData/Core/FormFactors_Ripple1.int.gz b/Tests/ReferenceData/Core/FormFactors_Ripple1Box.int.gz
similarity index 100%
rename from Tests/ReferenceData/Core/FormFactors_Ripple1.int.gz
rename to Tests/ReferenceData/Core/FormFactors_Ripple1Box.int.gz
diff --git a/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp b/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
index dc81d8efaa750a6f06beb598f2a3f09e0c7badd0..53c378837b3f63163654680b2e907a640da8e46e 100644
--- a/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
+++ b/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
@@ -394,16 +394,16 @@ TEST_F(FormFactorBasicTest, Tetrahedron)
     test_ff(&tetrahedron);
 }
 
-TEST_F(FormFactorBasicTest, Ripple1)
+TEST_F(FormFactorBasicTest, Ripple1Box)
 {
     double width = 20.;
     double height = 4.;
     double length = 100.0;
     double volume = 0.5 * height * width * length;
 
-    FormFactorRipple1 ripple1(length, width, height);
+    FormFactorRipple1Box ripple1(length, width, height);
 
-    EXPECT_EQ(BornAgain::FFRipple1Type, ripple1.getName());
+    EXPECT_EQ(BornAgain::FFRipple1BoxType, ripple1.getName());
     EXPECT_EQ(4., ripple1.getHeight());
     EXPECT_EQ(20., ripple1.getWidth());
     EXPECT_EQ(100., ripple1.getLength());
diff --git a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
index deb467d276de7c41af0b5e94df7ca65453ff0a14..0818e716c875c5b4a05f28692bab91cb77572ea2 100644
--- a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
+++ b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
@@ -139,10 +139,10 @@ TEST_F(TestGUICoreObjectCorrespondence, test_Pyramid)
     GUICoreObjectCorrespondence(gui_pyramid, core_pyramid);
 }
 
-TEST_F(TestGUICoreObjectCorrespondence, test_Ripple1)
+TEST_F(TestGUICoreObjectCorrespondence, test_Ripple1Box)
 {
-    Ripple1Item gui_ripple1;
-    FormFactorRipple1 core_ripple1(10.0, 2.0, 1.0);
+    Ripple1BoxItem gui_ripple1;
+    FormFactorRipple1Box core_ripple1(10.0, 2.0, 1.0);
     GUICoreObjectCorrespondence(gui_ripple1, core_ripple1);
 }
 
diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i
index 0751cb5f5b214ccb507d247e6ab3135ba2fbfa49..a9e8f21500e988647ccccb1181db8820bbe5f413 100644
--- a/Wrap/swig/libBornAgainCore.i
+++ b/Wrap/swig/libBornAgainCore.i
@@ -87,10 +87,8 @@
 #include "DepthProbeSimulation.h"
 #include "DetectorMask.h"
 #include "Distributions.h"
-#include "Distributions.h"
 #include "Ellipse.h"
 #include "FTDecayFunctions.h"
-#include "FTDecayFunctions.h"
 #include "FTDistributions1D.h"
 #include "FTDistributions2D.h"
 #include "FitOptions.h"
@@ -115,13 +113,8 @@
 #include "FormFactorGauss.h"
 #include "FormFactorHemiEllipsoid.h"
 #include "FormFactorIcosahedron.h"
-#include "FormFactorLongBox.h"
 #include "FormFactorLongBoxGauss.h"
 #include "FormFactorLongBoxLorentz.h"
-#include "FormFactorLongRipple1Gauss.h"
-#include "FormFactorLongRipple1Lorentz.h"
-#include "FormFactorLongRipple2Gauss.h"
-#include "FormFactorLongRipple2Lorentz.h"
 #include "FormFactorLorentz.h"
 #include "FormFactorOrnsteinZernike.h"
 #include "FormFactorPolyhedron.h"
@@ -214,7 +207,7 @@
 #include "Rectangle.h"
 #include "RectangularDetector.h"
 #include "ResolutionFunction2DGaussian.h"
-#include "Rotations.h"
+#include "Ripples.h"
 #include "Rotations.h"
 #include "SampleBuilderFactory.h"
 #include "ScanResolution.h"
@@ -347,6 +340,8 @@
 %include "IFormFactorBorn.h"
 %include "IFormFactorDecorator.h"
 %include "FormFactorPolyhedron.h"
+%include "ProfileRipple1.h"
+%include "Ripples.h"
 
 %include "FormFactorAnisoPyramid.h"
 %include "FormFactorBox.h"
@@ -364,20 +359,15 @@
 %include "FormFactorGauss.h"
 %include "FormFactorHemiEllipsoid.h"
 %include "FormFactorIcosahedron.h"
-%include "FormFactorLongBox.h"
 %include "FormFactorLongBoxGauss.h"
 %include "FormFactorLongBoxLorentz.h"
-%include "FormFactorLongRipple1Gauss.h"
-%include "FormFactorLongRipple1Lorentz.h"
-%include "FormFactorLongRipple2Gauss.h"
-%include "FormFactorLongRipple2Lorentz.h"
+%include "FormFactorRipple1.h"
 %include "FormFactorLorentz.h"
 %include "FormFactorOrnsteinZernike.h"
 %include "FormFactorPolyhedron.h"
 %include "FormFactorPrism3.h"
 %include "FormFactorPrism6.h"
 %include "FormFactorPyramid.h"
-%include "FormFactorRipple1.h"
 %include "FormFactorRipple2.h"
 %include "FormFactorSphereGaussianRadius.h"
 %include "FormFactorSphereLogNormalRadius.h"
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index e5d31a31e5a1b41804824466be1dceea8c4a7341..81c5b32d6afe6ca89706c2f2945bd1c8b28e28a5 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -4011,61 +4011,6 @@ Calls the  INodeVisitor's visit method.
 ";
 
 
-// File: classFormFactorLongBox.xml
-%feature("docstring") FormFactorLongBox "
-
-The form factor for a long rectangular box. Approximates the rapidly oscillating sinc function by the square root of a Lorentzian
-
-C++ includes: FormFactorLongBox.h
-";
-
-%feature("docstring")  FormFactorLongBox::FormFactorLongBox "FormFactorLongBox::FormFactorLongBox(double length, double width, double height)
-
-Box constructor.
-
-Parameters:
------------
-
-length: 
-of  Box's base
-
-width: 
-of  Box's base
-
-height: 
-of  Box
-";
-
-%feature("docstring")  FormFactorLongBox::clone "FormFactorLongBox* FormFactorLongBox::clone() const override final
-
-Returns a clone of this  ISample object. 
-";
-
-%feature("docstring")  FormFactorLongBox::accept "void FormFactorLongBox::accept(INodeVisitor *visitor) const override final
-
-Calls the  INodeVisitor's visit method. 
-";
-
-%feature("docstring")  FormFactorLongBox::getLength "double FormFactorLongBox::getLength() const
-";
-
-%feature("docstring")  FormFactorLongBox::getHeight "double FormFactorLongBox::getHeight() const
-";
-
-%feature("docstring")  FormFactorLongBox::getWidth "double FormFactorLongBox::getWidth() const
-";
-
-%feature("docstring")  FormFactorLongBox::radialExtension "double FormFactorLongBox::radialExtension() const override final
-
-Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-";
-
-%feature("docstring")  FormFactorLongBox::evaluate_for_q "complex_t FormFactorLongBox::evaluate_for_q(cvector_t q) const override final
-
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
-";
-
-
 // File: classFormFactorLongBoxGauss.xml
 %feature("docstring") FormFactorLongBoxGauss "
 
@@ -4176,116 +4121,6 @@ Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This m
 ";
 
 
-// File: classFormFactorLongRipple1Gauss.xml
-%feature("docstring") FormFactorLongRipple1Gauss "
-
-The form factor for a cosine ripple.
-
-C++ includes: FormFactorLongRipple1Gauss.h
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::FormFactorLongRipple1Gauss "FormFactorLongRipple1Gauss::FormFactorLongRipple1Gauss(double length, double width, double height)
-
-Ripple1 constructor.
-
-Parameters:
------------
-
-length: 
-of Ripple1
-
-width: 
-of cosine cross section
-
-height: 
-of cosine cross section 
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::clone "FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final
-
-Returns a clone of this  ISample object. 
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::accept "void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final
-
-Calls the  INodeVisitor's visit method. 
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::getHeight "double FormFactorLongRipple1Gauss::getHeight() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::getWidth "double FormFactorLongRipple1Gauss::getWidth() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::getLength "double FormFactorLongRipple1Gauss::getLength() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::radialExtension "double FormFactorLongRipple1Gauss::radialExtension() const override final
-
-Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::evaluate_for_q "complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final
-
-Complex form factor. 
-";
-
-
-// File: classFormFactorLongRipple1Lorentz.xml
-%feature("docstring") FormFactorLongRipple1Lorentz "
-
-The form factor for a cosine ripple.
-
-C++ includes: FormFactorLongRipple1Lorentz.h
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::FormFactorLongRipple1Lorentz "FormFactorLongRipple1Lorentz::FormFactorLongRipple1Lorentz(double length, double width, double height)
-
-FormFactorLongRipple1Lorentz constructor.
-
-Parameters:
------------
-
-length: 
-of Ripple1
-
-width: 
-of cosine cross section
-
-height: 
-of cosine cross section 
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::clone "FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final
-
-Returns a clone of this  ISample object. 
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::accept "void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final
-
-Calls the  INodeVisitor's visit method. 
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::radialExtension "double FormFactorLongRipple1Lorentz::radialExtension() const override final
-
-Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::getHeight "double FormFactorLongRipple1Lorentz::getHeight() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::getWidth "double FormFactorLongRipple1Lorentz::getWidth() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::getLength "double FormFactorLongRipple1Lorentz::getLength() const
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::evaluate_for_q "complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final
-
-Complex form factor. 
-";
-
-
 // File: classFormFactorLongRipple2Gauss.xml
 %feature("docstring") FormFactorLongRipple2Gauss "
 
@@ -4690,58 +4525,69 @@ Calls the  INodeVisitor's visit method.
 ";
 
 
-// File: classFormFactorRipple1.xml
-%feature("docstring") FormFactorRipple1 "
+// File: classFormFactorRipple1Box.xml
+%feature("docstring") FormFactorRipple1Box "
 
-The form factor for a cosine ripple.
+The form factor for a cosine ripple, with box profile in elongation direction.
 
 C++ includes: FormFactorRipple1.h
 ";
 
-%feature("docstring")  FormFactorRipple1::FormFactorRipple1 "FormFactorRipple1::FormFactorRipple1(double length, double width, double height)
+%feature("docstring")  FormFactorRipple1Box::FormFactorRipple1Box "FormFactorRipple1Box::FormFactorRipple1Box(double length, double width, double height)
+";
 
-Constructor of cosine ripple.
+%feature("docstring")  FormFactorRipple1Box::clone "FormFactorRipple1Box * FormFactorRipple1Box::clone() const override final
 
-Parameters:
------------
+Returns a clone of this  ISample object. 
+";
 
-length: 
-length of the rectangular base in nanometers
+%feature("docstring")  FormFactorRipple1Box::accept "void FormFactorRipple1Box::accept(INodeVisitor *visitor) const override final
 
-width: 
-width of the rectangular base in nanometers
+Calls the  INodeVisitor's visit method. 
+";
 
-height: 
-height of the ripple in nanometers 
+
+// File: classFormFactorRipple1Gauss.xml
+%feature("docstring") FormFactorRipple1Gauss "
+
+The form factor for a cosine ripple, with Gaussian profile in elongation direction.
+
+C++ includes: FormFactorRipple1.h
+";
+
+%feature("docstring")  FormFactorRipple1Gauss::FormFactorRipple1Gauss "FormFactorRipple1Gauss::FormFactorRipple1Gauss(double length, double width, double height)
 ";
 
-%feature("docstring")  FormFactorRipple1::clone "FormFactorRipple1* FormFactorRipple1::clone() const override final
+%feature("docstring")  FormFactorRipple1Gauss::clone "FormFactorRipple1Gauss * FormFactorRipple1Gauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple1::accept "void FormFactorRipple1::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  FormFactorRipple1Gauss::accept "void FormFactorRipple1Gauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorRipple1::getLength "double FormFactorRipple1::getLength() const
-";
 
-%feature("docstring")  FormFactorRipple1::getHeight "double FormFactorRipple1::getHeight() const
+// File: classFormFactorRipple1Lorentz.xml
+%feature("docstring") FormFactorRipple1Lorentz "
+
+The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
+
+C++ includes: FormFactorRipple1.h
 ";
 
-%feature("docstring")  FormFactorRipple1::getWidth "double FormFactorRipple1::getWidth() const
+%feature("docstring")  FormFactorRipple1Lorentz::FormFactorRipple1Lorentz "FormFactorRipple1Lorentz::FormFactorRipple1Lorentz(double length, double width, double height)
 ";
 
-%feature("docstring")  FormFactorRipple1::radialExtension "double FormFactorRipple1::radialExtension() const override final
+%feature("docstring")  FormFactorRipple1Lorentz::clone "FormFactorRipple1Lorentz * FormFactorRipple1Lorentz::clone() const override final
 
-Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple1::evaluate_for_q "complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final
+%feature("docstring")  FormFactorRipple1Lorentz::accept "void FormFactorRipple1Lorentz::accept(INodeVisitor *visitor) const override final
 
-Complex form factor. 
+Calls the  INodeVisitor's visit method. 
 ";
 
 
@@ -8204,9 +8050,6 @@ C++ includes: INodeVisitor.h
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorIcosahedron *)
 ";
 
-%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorLongBox *)
-";
-
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorLongBoxGauss *)
 ";
 
@@ -8225,7 +8068,13 @@ C++ includes: INodeVisitor.h
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorPyramid *)
 ";
 
-%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple1 *)
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple1Box *)
+";
+
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple1Gauss *)
+";
+
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple1Lorentz *)
 ";
 
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple2 *)
@@ -13475,6 +13324,51 @@ Fourier transform of the correlation function of roughnesses between the interfa
 ";
 
 
+// File: classProfileRipple1.xml
+%feature("docstring") ProfileRipple1 "
+
+Base class for form factors with a cosine ripple profile in the yz plane.
+
+C++ includes: ProfileRipple1.h
+";
+
+%feature("docstring")  ProfileRipple1::ProfileRipple1 "ProfileRipple1::ProfileRipple1(double length, double width, double height)
+
+Constructor of cosine ripple.
+
+Parameters:
+-----------
+
+length: 
+length of the rectangular base in nanometers
+
+width: 
+width of the rectangular base in nanometers
+
+height: 
+height of the ripple in nanometers 
+";
+
+%feature("docstring")  ProfileRipple1::getLength "double ProfileRipple1::getLength() const
+";
+
+%feature("docstring")  ProfileRipple1::getHeight "double ProfileRipple1::getHeight() const
+";
+
+%feature("docstring")  ProfileRipple1::getWidth "double ProfileRipple1::getWidth() const
+";
+
+%feature("docstring")  ProfileRipple1::radialExtension "double ProfileRipple1::radialExtension() const override final
+
+Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+";
+
+%feature("docstring")  ProfileRipple1::evaluate_for_q "complex_t ProfileRipple1::evaluate_for_q(cvector_t q) const override final
+
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
+";
+
+
 // File: classProgressHandler.xml
 %feature("docstring") ProgressHandler "
 
@@ -17217,49 +17111,52 @@ C++ includes: ZLimits.h
 // File: namespace_0d18.xml
 
 
-// File: namespace_0d197.xml
+// File: namespace_0d191.xml
 
 
 // File: namespace_0d20.xml
 
 
-// File: namespace_0d224.xml
+// File: namespace_0d222.xml
 
 
-// File: namespace_0d232.xml
+// File: namespace_0d230.xml
 
 
-// File: namespace_0d238.xml
+// File: namespace_0d236.xml
 
 
-// File: namespace_0d242.xml
+// File: namespace_0d240.xml
 
 
-// File: namespace_0d292.xml
+// File: namespace_0d290.xml
 
 
-// File: namespace_0d301.xml
+// File: namespace_0d299.xml
 
 
-// File: namespace_0d309.xml
+// File: namespace_0d307.xml
 
 
-// File: namespace_0d313.xml
+// File: namespace_0d311.xml
 
 
-// File: namespace_0d315.xml
+// File: namespace_0d313.xml
 
 
 // File: namespace_0d32.xml
 
 
-// File: namespace_0d327.xml
+// File: namespace_0d325.xml
+
 
+// File: namespace_0d331.xml
 
-// File: namespace_0d333.xml
 
+// File: namespace_0d352.xml
 
-// File: namespace_0d354.xml
+
+// File: namespace_0d356.xml
 
 
 // File: namespace_0d358.xml
@@ -17268,31 +17165,31 @@ C++ includes: ZLimits.h
 // File: namespace_0d360.xml
 
 
-// File: namespace_0d362.xml
+// File: namespace_0d370.xml
 
 
-// File: namespace_0d372.xml
+// File: namespace_0d383.xml
 
 
-// File: namespace_0d385.xml
+// File: namespace_0d387.xml
 
 
-// File: namespace_0d389.xml
+// File: namespace_0d399.xml
 
 
 // File: namespace_0d40.xml
 
 
-// File: namespace_0d401.xml
+// File: namespace_0d405.xml
 
 
-// File: namespace_0d407.xml
+// File: namespace_0d410.xml
 
 
 // File: namespace_0d412.xml
 
 
-// File: namespace_0d414.xml
+// File: namespace_0d416.xml
 
 
 // File: namespace_0d418.xml
@@ -17301,28 +17198,28 @@ C++ includes: ZLimits.h
 // File: namespace_0d42.xml
 
 
-// File: namespace_0d420.xml
+// File: namespace_0d428.xml
 
 
-// File: namespace_0d430.xml
+// File: namespace_0d441.xml
 
 
-// File: namespace_0d443.xml
+// File: namespace_0d450.xml
 
 
 // File: namespace_0d452.xml
 
 
-// File: namespace_0d454.xml
+// File: namespace_0d486.xml
 
 
-// File: namespace_0d488.xml
+// File: namespace_0d493.xml
 
 
-// File: namespace_0d495.xml
+// File: namespace_0d531.xml
 
 
-// File: namespace_0d533.xml
+// File: namespace_0d539.xml
 
 
 // File: namespace_0d541.xml
@@ -17331,19 +17228,16 @@ C++ includes: ZLimits.h
 // File: namespace_0d543.xml
 
 
-// File: namespace_0d545.xml
-
-
 // File: namespace_0d6.xml
 
 
-// File: namespace_0d629.xml
+// File: namespace_0d627.xml
 
 
-// File: namespace_0d633.xml
+// File: namespace_0d631.xml
 
 
-// File: namespace_0d657.xml
+// File: namespace_0d655.xml
 
 
 // File: namespace_0d97.xml
@@ -18184,6 +18078,17 @@ Returns a string of blanks with given width. By default the width equals standar
 ";
 
 
+// File: namespaceripples.xml
+%feature("docstring")  ripples::factor_x_box "complex_t ripples::factor_x_box(complex_t q, double l)
+";
+
+%feature("docstring")  ripples::factor_x_Gauss "complex_t ripples::factor_x_Gauss(complex_t q, double l)
+";
+
+%feature("docstring")  ripples::factor_x_Lorentz "complex_t ripples::factor_x_Lorentz(complex_t q, double l)
+";
+
+
 // File: namespaceSpectrumUtils.xml
 %feature("docstring")  SpectrumUtils::FindPeaks "std::vector< std::pair< double, double > > SpectrumUtils::FindPeaks(const Histogram2D &hist, double sigma=2, const std::string &option={}, double threshold=0.05)
 ";
@@ -18978,12 +18883,6 @@ global helper function for comparison of axes
 // File: FormFactorIcosahedron_8h.xml
 
 
-// File: FormFactorLongBox_8cpp.xml
-
-
-// File: FormFactorLongBox_8h.xml
-
-
 // File: FormFactorLongBoxGauss_8cpp.xml
 
 
@@ -18996,18 +18895,6 @@ global helper function for comparison of axes
 // File: FormFactorLongBoxLorentz_8h.xml
 
 
-// File: FormFactorLongRipple1Gauss_8cpp.xml
-
-
-// File: FormFactorLongRipple1Gauss_8h.xml
-
-
-// File: FormFactorLongRipple1Lorentz_8cpp.xml
-
-
-// File: FormFactorLongRipple1Lorentz_8h.xml
-
-
 // File: FormFactorLongRipple2Gauss_8cpp.xml
 
 
@@ -19086,6 +18973,18 @@ global helper function for comparison of axes
 // File: FormFactorTruncatedSpheroid_8h.xml
 
 
+// File: ProfileRipple1_8cpp.xml
+
+
+// File: ProfileRipple1_8h.xml
+
+
+// File: Ripples_8cpp.xml
+
+
+// File: Ripples_8h.xml
+
+
 // File: FormFactors_8h.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 012157b075be3ecbaa214bfc6c371fd5dac70945..a1db1d062866dad068af24d91fa459d44ae8650f 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -5839,14 +5839,15 @@ class INodeVisitor(object):
         visit(INodeVisitor self, FormFactorGauss arg2)
         visit(INodeVisitor self, FormFactorHemiEllipsoid arg2)
         visit(INodeVisitor self, FormFactorIcosahedron arg2)
-        visit(INodeVisitor self, FormFactorLongBox arg2)
         visit(INodeVisitor self, FormFactorLongBoxGauss arg2)
         visit(INodeVisitor self, FormFactorLongBoxLorentz arg2)
         visit(INodeVisitor self, FormFactorLorentz arg2)
         visit(INodeVisitor self, FormFactorPrism3 arg2)
         visit(INodeVisitor self, FormFactorPrism6 arg2)
         visit(INodeVisitor self, FormFactorPyramid arg2)
-        visit(INodeVisitor self, FormFactorRipple1 arg2)
+        visit(INodeVisitor self, FormFactorRipple1Box arg2)
+        visit(INodeVisitor self, FormFactorRipple1Gauss arg2)
+        visit(INodeVisitor self, FormFactorRipple1Lorentz arg2)
         visit(INodeVisitor self, FormFactorRipple2 arg2)
         visit(INodeVisitor self, FormFactorSphereGaussianRadius arg2)
         visit(INodeVisitor self, FormFactorSphereLogNormalRadius arg2)
@@ -9532,6 +9533,94 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
 # Register FormFactorPolygonalSurface in _libBornAgainCore:
 _libBornAgainCore.FormFactorPolygonalSurface_swigregister(FormFactorPolygonalSurface)
 
+class ProfileRipple1(IFormFactorBorn):
+    r"""
+
+
+    Base class for form factors with a cosine ripple profile in the yz plane.
+
+    C++ includes: ProfileRipple1.h
+
+    """
+
+    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
+
+    def __init__(self, *args, **kwargs):
+        raise AttributeError("No constructor defined - class is abstract")
+    __repr__ = _swig_repr
+
+    def getLength(self):
+        r"""
+        getLength(ProfileRipple1 self) -> double
+        double ProfileRipple1::getLength() const
+
+        """
+        return _libBornAgainCore.ProfileRipple1_getLength(self)
+
+    def getHeight(self):
+        r"""
+        getHeight(ProfileRipple1 self) -> double
+        double ProfileRipple1::getHeight() const
+
+        """
+        return _libBornAgainCore.ProfileRipple1_getHeight(self)
+
+    def getWidth(self):
+        r"""
+        getWidth(ProfileRipple1 self) -> double
+        double ProfileRipple1::getWidth() const
+
+        """
+        return _libBornAgainCore.ProfileRipple1_getWidth(self)
+
+    def radialExtension(self):
+        r"""
+        radialExtension(ProfileRipple1 self) -> double
+        double ProfileRipple1::radialExtension() const override final
+
+        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+
+        """
+        return _libBornAgainCore.ProfileRipple1_radialExtension(self)
+
+    def evaluate_for_q(self, q):
+        r"""
+        evaluate_for_q(ProfileRipple1 self, cvector_t q) -> complex_t
+        complex_t ProfileRipple1::evaluate_for_q(cvector_t q) const override final
+
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
+
+        """
+        return _libBornAgainCore.ProfileRipple1_evaluate_for_q(self, q)
+    __swig_destroy__ = _libBornAgainCore.delete_ProfileRipple1
+
+# Register ProfileRipple1 in _libBornAgainCore:
+_libBornAgainCore.ProfileRipple1_swigregister(ProfileRipple1)
+
+
+def factor_x_box(q, l):
+    r"""
+    factor_x_box(complex_t q, double l) -> complex_t
+    complex_t ripples::factor_x_box(complex_t q, double l)
+
+    """
+    return _libBornAgainCore.factor_x_box(q, l)
+
+def factor_x_Gauss(q, l):
+    r"""
+    factor_x_Gauss(complex_t q, double l) -> complex_t
+    complex_t ripples::factor_x_Gauss(complex_t q, double l)
+
+    """
+    return _libBornAgainCore.factor_x_Gauss(q, l)
+
+def factor_x_Lorentz(q, l):
+    r"""
+    factor_x_Lorentz(complex_t q, double l) -> complex_t
+    complex_t ripples::factor_x_Lorentz(complex_t q, double l)
+
+    """
+    return _libBornAgainCore.factor_x_Lorentz(q, l)
 class FormFactorAnisoPyramid(FormFactorPolyhedron):
     r"""
 
@@ -10983,109 +11072,6 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
 # Register FormFactorIcosahedron in _libBornAgainCore:
 _libBornAgainCore.FormFactorIcosahedron_swigregister(FormFactorIcosahedron)
 
-class FormFactorLongBox(IFormFactorBorn):
-    r"""
-
-
-    The form factor for a long rectangular box. Approximates the rapidly oscillating sinc function by the square root of a Lorentzian
-
-    C++ includes: FormFactorLongBox.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-    __repr__ = _swig_repr
-
-    def __init__(self, length, width, height):
-        r"""
-        __init__(FormFactorLongBox self, double length, double width, double height) -> FormFactorLongBox
-        FormFactorLongBox::FormFactorLongBox(double length, double width, double height)
-
-        Box constructor.
-
-        Parameters:
-        -----------
-
-        length: 
-        of  Box's base
-
-        width: 
-        of  Box's base
-
-        height: 
-        of  Box
-
-        """
-        _libBornAgainCore.FormFactorLongBox_swiginit(self, _libBornAgainCore.new_FormFactorLongBox(length, width, height))
-
-    def clone(self):
-        r"""
-        clone(FormFactorLongBox self) -> FormFactorLongBox
-        FormFactorLongBox* FormFactorLongBox::clone() const override final
-
-        Returns a clone of this  ISample object. 
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_clone(self)
-
-    def accept(self, visitor):
-        r"""
-        accept(FormFactorLongBox self, INodeVisitor visitor)
-        void FormFactorLongBox::accept(INodeVisitor *visitor) const override final
-
-        Calls the  INodeVisitor's visit method. 
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_accept(self, visitor)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorLongBox self) -> double
-        double FormFactorLongBox::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_getLength(self)
-
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorLongBox self) -> double
-        double FormFactorLongBox::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorLongBox self) -> double
-        double FormFactorLongBox::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_getWidth(self)
-
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorLongBox self) -> double
-        double FormFactorLongBox::radialExtension() const override final
-
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_radialExtension(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorLongBox self, cvector_t q) -> complex_t
-        complex_t FormFactorLongBox::evaluate_for_q(cvector_t q) const override final
-
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
-
-        """
-        return _libBornAgainCore.FormFactorLongBox_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongBox
-
-# Register FormFactorLongBox in _libBornAgainCore:
-_libBornAgainCore.FormFactorLongBox_swigregister(FormFactorLongBox)
-
 class FormFactorLongBoxGauss(IFormFactorBorn):
     r"""
 
@@ -11292,13 +11278,13 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
 # Register FormFactorLongBoxLorentz in _libBornAgainCore:
 _libBornAgainCore.FormFactorLongBoxLorentz_swigregister(FormFactorLongBoxLorentz)
 
-class FormFactorLongRipple1Gauss(IFormFactorBorn):
+class FormFactorRipple1Box(ProfileRipple1):
     r"""
 
 
-    The form factor for a cosine ripple.
+    The form factor for a cosine ripple, with box profile in elongation direction.
 
-    C++ includes: FormFactorLongRipple1Gauss.h
+    C++ includes: FormFactorRipple1.h
 
     """
 
@@ -11307,101 +11293,43 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
 
     def __init__(self, length, width, height):
         r"""
-        __init__(FormFactorLongRipple1Gauss self, double length, double width, double height) -> FormFactorLongRipple1Gauss
-        FormFactorLongRipple1Gauss::FormFactorLongRipple1Gauss(double length, double width, double height)
-
-        Ripple1 constructor.
-
-        Parameters:
-        -----------
-
-        length: 
-        of Ripple1
-
-        width: 
-        of cosine cross section
-
-        height: 
-        of cosine cross section 
+        __init__(FormFactorRipple1Box self, double length, double width, double height) -> FormFactorRipple1Box
+        FormFactorRipple1Box::FormFactorRipple1Box(double length, double width, double height)
 
         """
-        _libBornAgainCore.FormFactorLongRipple1Gauss_swiginit(self, _libBornAgainCore.new_FormFactorLongRipple1Gauss(length, width, height))
+        _libBornAgainCore.FormFactorRipple1Box_swiginit(self, _libBornAgainCore.new_FormFactorRipple1Box(length, width, height))
 
     def clone(self):
         r"""
-        clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss
-        FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final
+        clone(FormFactorRipple1Box self) -> FormFactorRipple1Box
+        FormFactorRipple1Box * FormFactorRipple1Box::clone() const override final
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_clone(self)
+        return _libBornAgainCore.FormFactorRipple1Box_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorLongRipple1Gauss self, INodeVisitor visitor)
-        void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorRipple1Box self, INodeVisitor visitor)
+        void FormFactorRipple1Box::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_accept(self, visitor)
+        return _libBornAgainCore.FormFactorRipple1Box_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple1Box
 
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorLongRipple1Gauss self) -> double
-        double FormFactorLongRipple1Gauss::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorLongRipple1Gauss self) -> double
-        double FormFactorLongRipple1Gauss::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_getWidth(self)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorLongRipple1Gauss self) -> double
-        double FormFactorLongRipple1Gauss::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_getLength(self)
+# Register FormFactorRipple1Box in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple1Box_swigregister(FormFactorRipple1Box)
 
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorLongRipple1Gauss self) -> double
-        double FormFactorLongRipple1Gauss::radialExtension() const override final
-
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_radialExtension(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t
-        complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final
-
-        Complex form factor. 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Gauss_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple1Gauss
-
-# Register FormFactorLongRipple1Gauss in _libBornAgainCore:
-_libBornAgainCore.FormFactorLongRipple1Gauss_swigregister(FormFactorLongRipple1Gauss)
-
-class FormFactorLongRipple1Lorentz(IFormFactorBorn):
+class FormFactorRipple1Gauss(ProfileRipple1):
     r"""
 
 
-    The form factor for a cosine ripple.
+    The form factor for a cosine ripple, with Gaussian profile in elongation direction.
 
-    C++ includes: FormFactorLongRipple1Lorentz.h
+    C++ includes: FormFactorRipple1.h
 
     """
 
@@ -11410,319 +11338,80 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
 
     def __init__(self, length, width, height):
         r"""
-        __init__(FormFactorLongRipple1Lorentz self, double length, double width, double height) -> FormFactorLongRipple1Lorentz
-        FormFactorLongRipple1Lorentz::FormFactorLongRipple1Lorentz(double length, double width, double height)
-
-        FormFactorLongRipple1Lorentz constructor.
-
-        Parameters:
-        -----------
-
-        length: 
-        of Ripple1
-
-        width: 
-        of cosine cross section
-
-        height: 
-        of cosine cross section 
-
-        """
-        _libBornAgainCore.FormFactorLongRipple1Lorentz_swiginit(self, _libBornAgainCore.new_FormFactorLongRipple1Lorentz(length, width, height))
-
-    def clone(self):
-        r"""
-        clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz
-        FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final
-
-        Returns a clone of this  ISample object. 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_clone(self)
-
-    def accept(self, visitor):
-        r"""
-        accept(FormFactorLongRipple1Lorentz self, INodeVisitor visitor)
-        void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final
-
-        Calls the  INodeVisitor's visit method. 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_accept(self, visitor)
-
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorLongRipple1Lorentz self) -> double
-        double FormFactorLongRipple1Lorentz::radialExtension() const override final
-
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_radialExtension(self)
-
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorLongRipple1Lorentz self) -> double
-        double FormFactorLongRipple1Lorentz::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorLongRipple1Lorentz self) -> double
-        double FormFactorLongRipple1Lorentz::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_getWidth(self)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorLongRipple1Lorentz self) -> double
-        double FormFactorLongRipple1Lorentz::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_getLength(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t
-        complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final
-
-        Complex form factor. 
+        __init__(FormFactorRipple1Gauss self, double length, double width, double height) -> FormFactorRipple1Gauss
+        FormFactorRipple1Gauss::FormFactorRipple1Gauss(double length, double width, double height)
 
         """
-        return _libBornAgainCore.FormFactorLongRipple1Lorentz_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple1Lorentz
-
-# Register FormFactorLongRipple1Lorentz in _libBornAgainCore:
-_libBornAgainCore.FormFactorLongRipple1Lorentz_swigregister(FormFactorLongRipple1Lorentz)
-
-class FormFactorLongRipple2Gauss(IFormFactorBorn):
-    r"""
-
-
-    The form factor for a triangular ripple.
-
-    C++ includes: FormFactorLongRipple2Gauss.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-    __repr__ = _swig_repr
-
-    def __init__(self, length, width, height, asymmetry):
-        r"""
-        __init__(FormFactorLongRipple2Gauss self, double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Gauss
-        FormFactorLongRipple2Gauss::FormFactorLongRipple2Gauss(double length, double width, double height, double asymmetry)
-
-        FormFactorLongRipple2Gauss constructor.
-
-        Parameters:
-        -----------
-
-        length: 
-        of Ripple2
-
-        width: 
-        of triangular cross section
-
-        height: 
-        of triangular cross section
-
-        asymmetry: 
-        length of triangular cross section 
-
-        """
-        _libBornAgainCore.FormFactorLongRipple2Gauss_swiginit(self, _libBornAgainCore.new_FormFactorLongRipple2Gauss(length, width, height, asymmetry))
+        _libBornAgainCore.FormFactorRipple1Gauss_swiginit(self, _libBornAgainCore.new_FormFactorRipple1Gauss(length, width, height))
 
     def clone(self):
         r"""
-        clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss
-        FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final
+        clone(FormFactorRipple1Gauss self) -> FormFactorRipple1Gauss
+        FormFactorRipple1Gauss * FormFactorRipple1Gauss::clone() const override final
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_clone(self)
+        return _libBornAgainCore.FormFactorRipple1Gauss_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorLongRipple2Gauss self, INodeVisitor visitor)
-        void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorRipple1Gauss self, INodeVisitor visitor)
+        void FormFactorRipple1Gauss::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_accept(self, visitor)
-
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorLongRipple2Gauss self) -> double
-        double FormFactorLongRipple2Gauss::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorLongRipple2Gauss self) -> double
-        double FormFactorLongRipple2Gauss::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_getWidth(self)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorLongRipple2Gauss self) -> double
-        double FormFactorLongRipple2Gauss::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_getLength(self)
-
-    def getAsymmetry(self):
-        r"""
-        getAsymmetry(FormFactorLongRipple2Gauss self) -> double
-        double FormFactorLongRipple2Gauss::getAsymmetry() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_getAsymmetry(self)
-
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorLongRipple2Gauss self) -> double
-        double FormFactorLongRipple2Gauss::radialExtension() const override final
+        return _libBornAgainCore.FormFactorRipple1Gauss_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple1Gauss
 
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_radialExtension(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t
-        complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final
+# Register FormFactorRipple1Gauss in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple1Gauss_swigregister(FormFactorRipple1Gauss)
 
-        Complex form factor. 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Gauss_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple2Gauss
-
-# Register FormFactorLongRipple2Gauss in _libBornAgainCore:
-_libBornAgainCore.FormFactorLongRipple2Gauss_swigregister(FormFactorLongRipple2Gauss)
-
-class FormFactorLongRipple2Lorentz(IFormFactorBorn):
+class FormFactorRipple1Lorentz(ProfileRipple1):
     r"""
 
 
-    The form factor for a triangular ripple.
+    The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
 
-    C++ includes: FormFactorLongRipple2Lorentz.h
+    C++ includes: FormFactorRipple1.h
 
     """
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
-    def __init__(self, length, width, height, asymmetry):
+    def __init__(self, length, width, height):
         r"""
-        __init__(FormFactorLongRipple2Lorentz self, double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Lorentz
-        FormFactorLongRipple2Lorentz::FormFactorLongRipple2Lorentz(double length, double width, double height, double asymmetry)
-
-        Parameters:
-        -----------
-
-        length: 
-        of Ripple2
-
-        width: 
-        of triangular cross section
-
-        height: 
-        of triangular cross section
-
-        asymmetry: 
-        length of triangular cross section 
+        __init__(FormFactorRipple1Lorentz self, double length, double width, double height) -> FormFactorRipple1Lorentz
+        FormFactorRipple1Lorentz::FormFactorRipple1Lorentz(double length, double width, double height)
 
         """
-        _libBornAgainCore.FormFactorLongRipple2Lorentz_swiginit(self, _libBornAgainCore.new_FormFactorLongRipple2Lorentz(length, width, height, asymmetry))
+        _libBornAgainCore.FormFactorRipple1Lorentz_swiginit(self, _libBornAgainCore.new_FormFactorRipple1Lorentz(length, width, height))
 
     def clone(self):
         r"""
-        clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz
-        FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final
+        clone(FormFactorRipple1Lorentz self) -> FormFactorRipple1Lorentz
+        FormFactorRipple1Lorentz * FormFactorRipple1Lorentz::clone() const override final
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_clone(self)
+        return _libBornAgainCore.FormFactorRipple1Lorentz_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorLongRipple2Lorentz self, INodeVisitor visitor)
-        void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorRipple1Lorentz self, INodeVisitor visitor)
+        void FormFactorRipple1Lorentz::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_accept(self, visitor)
-
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorLongRipple2Lorentz self) -> double
-        double FormFactorLongRipple2Lorentz::getHeight() const
+        return _libBornAgainCore.FormFactorRipple1Lorentz_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple1Lorentz
 
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorLongRipple2Lorentz self) -> double
-        double FormFactorLongRipple2Lorentz::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getWidth(self)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorLongRipple2Lorentz self) -> double
-        double FormFactorLongRipple2Lorentz::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getLength(self)
-
-    def getAsymmetry(self):
-        r"""
-        getAsymmetry(FormFactorLongRipple2Lorentz self) -> double
-        double FormFactorLongRipple2Lorentz::getAsymmetry() const
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getAsymmetry(self)
-
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorLongRipple2Lorentz self) -> double
-        double FormFactorLongRipple2Lorentz::radialExtension() const override final
-
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_radialExtension(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t
-        complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final
-
-        Complex form factor. 
-
-        """
-        return _libBornAgainCore.FormFactorLongRipple2Lorentz_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple2Lorentz
-
-# Register FormFactorLongRipple2Lorentz in _libBornAgainCore:
-_libBornAgainCore.FormFactorLongRipple2Lorentz_swigregister(FormFactorLongRipple2Lorentz)
+# Register FormFactorRipple1Lorentz in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple1Lorentz_swigregister(FormFactorRipple1Lorentz)
 
 class FormFactorLorentz(IFormFactorBorn):
     r"""
@@ -12082,109 +11771,6 @@ class FormFactorPyramid(FormFactorPolyhedron):
 # Register FormFactorPyramid in _libBornAgainCore:
 _libBornAgainCore.FormFactorPyramid_swigregister(FormFactorPyramid)
 
-class FormFactorRipple1(IFormFactorBorn):
-    r"""
-
-
-    The form factor for a cosine ripple.
-
-    C++ includes: FormFactorRipple1.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-    __repr__ = _swig_repr
-
-    def __init__(self, length, width, height):
-        r"""
-        __init__(FormFactorRipple1 self, double length, double width, double height) -> FormFactorRipple1
-        FormFactorRipple1::FormFactorRipple1(double length, double width, double height)
-
-        Constructor of cosine ripple.
-
-        Parameters:
-        -----------
-
-        length: 
-        length of the rectangular base in nanometers
-
-        width: 
-        width of the rectangular base in nanometers
-
-        height: 
-        height of the ripple in nanometers 
-
-        """
-        _libBornAgainCore.FormFactorRipple1_swiginit(self, _libBornAgainCore.new_FormFactorRipple1(length, width, height))
-
-    def clone(self):
-        r"""
-        clone(FormFactorRipple1 self) -> FormFactorRipple1
-        FormFactorRipple1* FormFactorRipple1::clone() const override final
-
-        Returns a clone of this  ISample object. 
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_clone(self)
-
-    def accept(self, visitor):
-        r"""
-        accept(FormFactorRipple1 self, INodeVisitor visitor)
-        void FormFactorRipple1::accept(INodeVisitor *visitor) const override final
-
-        Calls the  INodeVisitor's visit method. 
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_accept(self, visitor)
-
-    def getLength(self):
-        r"""
-        getLength(FormFactorRipple1 self) -> double
-        double FormFactorRipple1::getLength() const
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_getLength(self)
-
-    def getHeight(self):
-        r"""
-        getHeight(FormFactorRipple1 self) -> double
-        double FormFactorRipple1::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_getHeight(self)
-
-    def getWidth(self):
-        r"""
-        getWidth(FormFactorRipple1 self) -> double
-        double FormFactorRipple1::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_getWidth(self)
-
-    def radialExtension(self):
-        r"""
-        radialExtension(FormFactorRipple1 self) -> double
-        double FormFactorRipple1::radialExtension() const override final
-
-        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_radialExtension(self)
-
-    def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t
-        complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final
-
-        Complex form factor. 
-
-        """
-        return _libBornAgainCore.FormFactorRipple1_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple1
-
-# Register FormFactorRipple1 in _libBornAgainCore:
-_libBornAgainCore.FormFactorRipple1_swigregister(FormFactorRipple1)
-
 class FormFactorRipple2(IFormFactorBorn):
     r"""
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 4ba9621da2e93ab98d3d455f466ce86f75e190ba..37b49582970dfba71502df9aca3f1413a0c5f493 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3145,269 +3145,267 @@ namespace Swig {
 #define SWIGTYPE_p_FormFactorGauss swig_types[77]
 #define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[78]
 #define SWIGTYPE_p_FormFactorIcosahedron swig_types[79]
-#define SWIGTYPE_p_FormFactorLongBox swig_types[80]
-#define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[81]
-#define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[82]
-#define SWIGTYPE_p_FormFactorLongRipple1Gauss swig_types[83]
-#define SWIGTYPE_p_FormFactorLongRipple1Lorentz swig_types[84]
-#define SWIGTYPE_p_FormFactorLongRipple2Gauss swig_types[85]
-#define SWIGTYPE_p_FormFactorLongRipple2Lorentz swig_types[86]
-#define SWIGTYPE_p_FormFactorLorentz swig_types[87]
-#define SWIGTYPE_p_FormFactorOrnsteinZernike swig_types[88]
-#define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[89]
-#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[90]
-#define SWIGTYPE_p_FormFactorPolyhedron swig_types[91]
-#define SWIGTYPE_p_FormFactorPrism3 swig_types[92]
-#define SWIGTYPE_p_FormFactorPrism6 swig_types[93]
-#define SWIGTYPE_p_FormFactorPyramid swig_types[94]
-#define SWIGTYPE_p_FormFactorRipple1 swig_types[95]
-#define SWIGTYPE_p_FormFactorRipple2 swig_types[96]
-#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[97]
-#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[98]
-#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[99]
-#define SWIGTYPE_p_FormFactorTetrahedron swig_types[100]
-#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[101]
-#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[102]
-#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[103]
-#define SWIGTYPE_p_FormFactorWeighted swig_types[104]
-#define SWIGTYPE_p_GISASSimulation swig_types[105]
-#define SWIGTYPE_p_GaussFisherPeakShape swig_types[106]
-#define SWIGTYPE_p_HexagonalLattice swig_types[107]
-#define SWIGTYPE_p_Histogram1D swig_types[108]
-#define SWIGTYPE_p_Histogram2D swig_types[109]
-#define SWIGTYPE_p_HorizontalLine swig_types[110]
-#define SWIGTYPE_p_IAbstractParticle swig_types[111]
-#define SWIGTYPE_p_IAxis swig_types[112]
-#define SWIGTYPE_p_IBackground swig_types[113]
-#define SWIGTYPE_p_IChiSquaredModule swig_types[114]
-#define SWIGTYPE_p_ICloneable swig_types[115]
-#define SWIGTYPE_p_IClusteredParticles swig_types[116]
-#define SWIGTYPE_p_IDetector swig_types[117]
-#define SWIGTYPE_p_IDetector2D swig_types[118]
-#define SWIGTYPE_p_IDetectorResolution swig_types[119]
-#define SWIGTYPE_p_IDistribution1D swig_types[120]
-#define SWIGTYPE_p_IFTDecayFunction1D swig_types[121]
-#define SWIGTYPE_p_IFTDecayFunction2D swig_types[122]
-#define SWIGTYPE_p_IFTDistribution1D swig_types[123]
-#define SWIGTYPE_p_IFTDistribution2D swig_types[124]
-#define SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t swig_types[125]
-#define SWIGTYPE_p_IFactoryT_std__string_Simulation_t swig_types[126]
-#define SWIGTYPE_p_IFootprintFactor swig_types[127]
-#define SWIGTYPE_p_IFormFactor swig_types[128]
-#define SWIGTYPE_p_IFormFactorBorn swig_types[129]
-#define SWIGTYPE_p_IFormFactorDecorator swig_types[130]
-#define SWIGTYPE_p_IHistogram swig_types[131]
-#define SWIGTYPE_p_IIntensityFunction swig_types[132]
-#define SWIGTYPE_p_IIntensityNormalizer swig_types[133]
-#define SWIGTYPE_p_IInterferenceFunction swig_types[134]
-#define SWIGTYPE_p_ILatticeOrientation swig_types[135]
-#define SWIGTYPE_p_ILayout swig_types[136]
-#define SWIGTYPE_p_IMultiLayerBuilder swig_types[137]
-#define SWIGTYPE_p_INamed swig_types[138]
-#define SWIGTYPE_p_INode swig_types[139]
-#define SWIGTYPE_p_INodeVisitor swig_types[140]
-#define SWIGTYPE_p_IObservable swig_types[141]
-#define SWIGTYPE_p_IObserver swig_types[142]
-#define SWIGTYPE_p_IParameterT_double_t swig_types[143]
-#define SWIGTYPE_p_IParameterized swig_types[144]
-#define SWIGTYPE_p_IParticle swig_types[145]
-#define SWIGTYPE_p_IPeakShape swig_types[146]
-#define SWIGTYPE_p_IPixel swig_types[147]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[148]
-#define SWIGTYPE_p_IRotation swig_types[149]
-#define SWIGTYPE_p_ISample swig_types[150]
-#define SWIGTYPE_p_ISelectionRule swig_types[151]
-#define SWIGTYPE_p_IShape2D swig_types[152]
-#define SWIGTYPE_p_ISpecularScan swig_types[153]
-#define SWIGTYPE_p_IUnitConverter swig_types[154]
-#define SWIGTYPE_p_IVarianceFunction swig_types[155]
-#define SWIGTYPE_p_IdentityRotation swig_types[156]
-#define SWIGTYPE_p_Instrument swig_types[157]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[158]
-#define SWIGTYPE_p_IntensityFunctionLog swig_types[159]
-#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[160]
-#define SWIGTYPE_p_IntensityNormalizer swig_types[161]
-#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[162]
-#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[163]
-#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[164]
-#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[165]
-#define SWIGTYPE_p_InterferenceFunction2DSuperLattice swig_types[166]
-#define SWIGTYPE_p_InterferenceFunction3DLattice swig_types[167]
-#define SWIGTYPE_p_InterferenceFunctionFinite2DLattice swig_types[168]
-#define SWIGTYPE_p_InterferenceFunctionFinite3DLattice swig_types[169]
-#define SWIGTYPE_p_InterferenceFunctionHardDisk swig_types[170]
-#define SWIGTYPE_p_InterferenceFunctionNone swig_types[171]
-#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[172]
-#define SWIGTYPE_p_InterferenceFunctionTwin swig_types[173]
-#define SWIGTYPE_p_IsGISAXSDetector swig_types[174]
-#define SWIGTYPE_p_IsotropicGaussPeakShape swig_types[175]
-#define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[176]
-#define SWIGTYPE_p_IterationInfo swig_types[177]
-#define SWIGTYPE_p_Lattice swig_types[178]
-#define SWIGTYPE_p_Lattice1DParameters swig_types[179]
-#define SWIGTYPE_p_Lattice2D swig_types[180]
-#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[181]
-#define SWIGTYPE_p_Layer swig_types[182]
-#define SWIGTYPE_p_LayerInterface swig_types[183]
-#define SWIGTYPE_p_LayerRoughness swig_types[184]
-#define SWIGTYPE_p_Line swig_types[185]
-#define SWIGTYPE_p_LorentzFisherPeakShape swig_types[186]
-#define SWIGTYPE_p_Material swig_types[187]
-#define SWIGTYPE_p_MesoCrystal swig_types[188]
-#define SWIGTYPE_p_MillerIndex swig_types[189]
-#define SWIGTYPE_p_MillerIndexOrientation swig_types[190]
-#define SWIGTYPE_p_MultiLayer swig_types[191]
-#define SWIGTYPE_p_OffSpecSimulation swig_types[192]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[193]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[194]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[195]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[196]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[197]
-#define SWIGTYPE_p_ParameterDistribution swig_types[198]
-#define SWIGTYPE_p_ParameterPool swig_types[199]
-#define SWIGTYPE_p_ParameterSample swig_types[200]
-#define SWIGTYPE_p_Particle swig_types[201]
-#define SWIGTYPE_p_ParticleComposition swig_types[202]
-#define SWIGTYPE_p_ParticleCoreShell swig_types[203]
-#define SWIGTYPE_p_ParticleDistribution swig_types[204]
-#define SWIGTYPE_p_ParticleLayout swig_types[205]
-#define SWIGTYPE_p_ParticleLimits swig_types[206]
-#define SWIGTYPE_p_PoissonNoiseBackground swig_types[207]
-#define SWIGTYPE_p_Polygon swig_types[208]
-#define SWIGTYPE_p_PolygonPrivate swig_types[209]
-#define SWIGTYPE_p_PolygonalTopology swig_types[210]
-#define SWIGTYPE_p_PolyhedralEdge swig_types[211]
-#define SWIGTYPE_p_PolyhedralFace swig_types[212]
-#define SWIGTYPE_p_PolyhedralTopology swig_types[213]
-#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[214]
-#define SWIGTYPE_p_PyBuilderCallback swig_types[215]
-#define SWIGTYPE_p_PyObserverCallback swig_types[216]
-#define SWIGTYPE_p_QSpecScan swig_types[217]
-#define SWIGTYPE_p_RangedDistribution swig_types[218]
-#define SWIGTYPE_p_RangedDistributionCosine swig_types[219]
-#define SWIGTYPE_p_RangedDistributionGate swig_types[220]
-#define SWIGTYPE_p_RangedDistributionGaussian swig_types[221]
-#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[222]
-#define SWIGTYPE_p_RangedDistributionLorentz swig_types[223]
-#define SWIGTYPE_p_RealLimits swig_types[224]
-#define SWIGTYPE_p_RealParameter swig_types[225]
-#define SWIGTYPE_p_Rectangle swig_types[226]
-#define SWIGTYPE_p_RectangularDetector swig_types[227]
-#define SWIGTYPE_p_RectangularPixel swig_types[228]
-#define SWIGTYPE_p_RegionOfInterest swig_types[229]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[230]
-#define SWIGTYPE_p_RotationEuler swig_types[231]
-#define SWIGTYPE_p_RotationX swig_types[232]
-#define SWIGTYPE_p_RotationY swig_types[233]
-#define SWIGTYPE_p_RotationZ swig_types[234]
-#define SWIGTYPE_p_RoughnessModelWrap swig_types[235]
-#define SWIGTYPE_p_RoughnessModelWrap__RoughnessModel swig_types[236]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[237]
-#define SWIGTYPE_p_SampleBuilderFactory swig_types[238]
-#define SWIGTYPE_p_ScanResolution swig_types[239]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[240]
-#define SWIGTYPE_p_Simulation swig_types[241]
-#define SWIGTYPE_p_Simulation2D swig_types[242]
-#define SWIGTYPE_p_SimulationFactory swig_types[243]
-#define SWIGTYPE_p_SimulationOptions swig_types[244]
-#define SWIGTYPE_p_SimulationResult swig_types[245]
-#define SWIGTYPE_p_SlicedParticle swig_types[246]
-#define SWIGTYPE_p_SlicingEffects swig_types[247]
-#define SWIGTYPE_p_SpecularDetector1D swig_types[248]
-#define SWIGTYPE_p_SpecularSimulation swig_types[249]
-#define SWIGTYPE_p_SphericalDetector swig_types[250]
-#define SWIGTYPE_p_SphericalPixel swig_types[251]
-#define SWIGTYPE_p_SquareLattice swig_types[252]
-#define SWIGTYPE_p_ThreadInfo swig_types[253]
-#define SWIGTYPE_p_Transform3D swig_types[254]
-#define SWIGTYPE_p_VariableBinAxis swig_types[255]
-#define SWIGTYPE_p_VarianceConstantFunction swig_types[256]
-#define SWIGTYPE_p_VarianceSimFunction swig_types[257]
-#define SWIGTYPE_p_VerticalLine swig_types[258]
-#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[259]
-#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[260]
-#define SWIGTYPE_p_WavevectorInfo swig_types[261]
-#define SWIGTYPE_p_ZLimits swig_types[262]
-#define SWIGTYPE_p_allocator_type swig_types[263]
-#define SWIGTYPE_p_bool swig_types[264]
-#define SWIGTYPE_p_char swig_types[265]
-#define SWIGTYPE_p_const_iterator swig_types[266]
-#define SWIGTYPE_p_corr_matrix_t swig_types[267]
-#define SWIGTYPE_p_difference_type swig_types[268]
-#define SWIGTYPE_p_double swig_types[269]
-#define SWIGTYPE_p_first_type swig_types[270]
-#define SWIGTYPE_p_int swig_types[271]
-#define SWIGTYPE_p_iterator swig_types[272]
-#define SWIGTYPE_p_key_type swig_types[273]
-#define SWIGTYPE_p_long_long swig_types[274]
-#define SWIGTYPE_p_mapped_type swig_types[275]
-#define SWIGTYPE_p_observer_t swig_types[276]
-#define SWIGTYPE_p_p_PyObject swig_types[277]
-#define SWIGTYPE_p_parameters_t swig_types[278]
-#define SWIGTYPE_p_second_type swig_types[279]
-#define SWIGTYPE_p_short swig_types[280]
-#define SWIGTYPE_p_signed_char swig_types[281]
-#define SWIGTYPE_p_size_type swig_types[282]
-#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[283]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[284]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[285]
-#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[286]
-#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[287]
-#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[288]
-#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[289]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[290]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[291]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[292]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[293]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[294]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[295]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[296]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[297]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[298]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[299]
-#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[300]
-#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[301]
-#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[302]
-#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[303]
-#define SWIGTYPE_p_std__invalid_argument swig_types[304]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[305]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[306]
-#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[307]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[308]
-#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[309]
-#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[310]
-#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[311]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[312]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[313]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[314]
-#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[315]
-#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[316]
-#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[317]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[318]
-#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[319]
-#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[320]
-#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[321]
-#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[322]
-#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[323]
-#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[324]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[325]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[326]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[327]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[328]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[329]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[330]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[331]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[332]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[333]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[334]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[335]
-#define SWIGTYPE_p_unsigned_char swig_types[336]
-#define SWIGTYPE_p_unsigned_int swig_types[337]
-#define SWIGTYPE_p_unsigned_long_long swig_types[338]
-#define SWIGTYPE_p_unsigned_short swig_types[339]
-#define SWIGTYPE_p_value_type swig_types[340]
-static swig_type_info *swig_types[342];
-static swig_module_info swig_module = {swig_types, 341, 0, 0, 0, 0};
+#define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[80]
+#define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[81]
+#define SWIGTYPE_p_FormFactorLorentz swig_types[82]
+#define SWIGTYPE_p_FormFactorOrnsteinZernike swig_types[83]
+#define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[84]
+#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[85]
+#define SWIGTYPE_p_FormFactorPolyhedron swig_types[86]
+#define SWIGTYPE_p_FormFactorPrism3 swig_types[87]
+#define SWIGTYPE_p_FormFactorPrism6 swig_types[88]
+#define SWIGTYPE_p_FormFactorPyramid swig_types[89]
+#define SWIGTYPE_p_FormFactorRipple1Box swig_types[90]
+#define SWIGTYPE_p_FormFactorRipple1Gauss swig_types[91]
+#define SWIGTYPE_p_FormFactorRipple1Lorentz swig_types[92]
+#define SWIGTYPE_p_FormFactorRipple2 swig_types[93]
+#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[94]
+#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[95]
+#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[96]
+#define SWIGTYPE_p_FormFactorTetrahedron swig_types[97]
+#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[98]
+#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[99]
+#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[100]
+#define SWIGTYPE_p_FormFactorWeighted swig_types[101]
+#define SWIGTYPE_p_GISASSimulation swig_types[102]
+#define SWIGTYPE_p_GaussFisherPeakShape swig_types[103]
+#define SWIGTYPE_p_HexagonalLattice swig_types[104]
+#define SWIGTYPE_p_Histogram1D swig_types[105]
+#define SWIGTYPE_p_Histogram2D swig_types[106]
+#define SWIGTYPE_p_HorizontalLine swig_types[107]
+#define SWIGTYPE_p_IAbstractParticle swig_types[108]
+#define SWIGTYPE_p_IAxis swig_types[109]
+#define SWIGTYPE_p_IBackground swig_types[110]
+#define SWIGTYPE_p_IChiSquaredModule swig_types[111]
+#define SWIGTYPE_p_ICloneable swig_types[112]
+#define SWIGTYPE_p_IClusteredParticles swig_types[113]
+#define SWIGTYPE_p_IDetector swig_types[114]
+#define SWIGTYPE_p_IDetector2D swig_types[115]
+#define SWIGTYPE_p_IDetectorResolution swig_types[116]
+#define SWIGTYPE_p_IDistribution1D swig_types[117]
+#define SWIGTYPE_p_IFTDecayFunction1D swig_types[118]
+#define SWIGTYPE_p_IFTDecayFunction2D swig_types[119]
+#define SWIGTYPE_p_IFTDistribution1D swig_types[120]
+#define SWIGTYPE_p_IFTDistribution2D swig_types[121]
+#define SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t swig_types[122]
+#define SWIGTYPE_p_IFactoryT_std__string_Simulation_t swig_types[123]
+#define SWIGTYPE_p_IFootprintFactor swig_types[124]
+#define SWIGTYPE_p_IFormFactor swig_types[125]
+#define SWIGTYPE_p_IFormFactorBorn swig_types[126]
+#define SWIGTYPE_p_IFormFactorDecorator swig_types[127]
+#define SWIGTYPE_p_IHistogram swig_types[128]
+#define SWIGTYPE_p_IIntensityFunction swig_types[129]
+#define SWIGTYPE_p_IIntensityNormalizer swig_types[130]
+#define SWIGTYPE_p_IInterferenceFunction swig_types[131]
+#define SWIGTYPE_p_ILatticeOrientation swig_types[132]
+#define SWIGTYPE_p_ILayout swig_types[133]
+#define SWIGTYPE_p_IMultiLayerBuilder swig_types[134]
+#define SWIGTYPE_p_INamed swig_types[135]
+#define SWIGTYPE_p_INode swig_types[136]
+#define SWIGTYPE_p_INodeVisitor swig_types[137]
+#define SWIGTYPE_p_IObservable swig_types[138]
+#define SWIGTYPE_p_IObserver swig_types[139]
+#define SWIGTYPE_p_IParameterT_double_t swig_types[140]
+#define SWIGTYPE_p_IParameterized swig_types[141]
+#define SWIGTYPE_p_IParticle swig_types[142]
+#define SWIGTYPE_p_IPeakShape swig_types[143]
+#define SWIGTYPE_p_IPixel swig_types[144]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[145]
+#define SWIGTYPE_p_IRotation swig_types[146]
+#define SWIGTYPE_p_ISample swig_types[147]
+#define SWIGTYPE_p_ISelectionRule swig_types[148]
+#define SWIGTYPE_p_IShape2D swig_types[149]
+#define SWIGTYPE_p_ISpecularScan swig_types[150]
+#define SWIGTYPE_p_IUnitConverter swig_types[151]
+#define SWIGTYPE_p_IVarianceFunction swig_types[152]
+#define SWIGTYPE_p_IdentityRotation swig_types[153]
+#define SWIGTYPE_p_Instrument swig_types[154]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[155]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[156]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[157]
+#define SWIGTYPE_p_IntensityNormalizer swig_types[158]
+#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[159]
+#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[160]
+#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[161]
+#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[162]
+#define SWIGTYPE_p_InterferenceFunction2DSuperLattice swig_types[163]
+#define SWIGTYPE_p_InterferenceFunction3DLattice swig_types[164]
+#define SWIGTYPE_p_InterferenceFunctionFinite2DLattice swig_types[165]
+#define SWIGTYPE_p_InterferenceFunctionFinite3DLattice swig_types[166]
+#define SWIGTYPE_p_InterferenceFunctionHardDisk swig_types[167]
+#define SWIGTYPE_p_InterferenceFunctionNone swig_types[168]
+#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[169]
+#define SWIGTYPE_p_InterferenceFunctionTwin swig_types[170]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[171]
+#define SWIGTYPE_p_IsotropicGaussPeakShape swig_types[172]
+#define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[173]
+#define SWIGTYPE_p_IterationInfo swig_types[174]
+#define SWIGTYPE_p_Lattice swig_types[175]
+#define SWIGTYPE_p_Lattice1DParameters swig_types[176]
+#define SWIGTYPE_p_Lattice2D swig_types[177]
+#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[178]
+#define SWIGTYPE_p_Layer swig_types[179]
+#define SWIGTYPE_p_LayerInterface swig_types[180]
+#define SWIGTYPE_p_LayerRoughness swig_types[181]
+#define SWIGTYPE_p_Line swig_types[182]
+#define SWIGTYPE_p_LorentzFisherPeakShape swig_types[183]
+#define SWIGTYPE_p_Material swig_types[184]
+#define SWIGTYPE_p_MesoCrystal swig_types[185]
+#define SWIGTYPE_p_MillerIndex swig_types[186]
+#define SWIGTYPE_p_MillerIndexOrientation swig_types[187]
+#define SWIGTYPE_p_MultiLayer swig_types[188]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[189]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[190]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[191]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[192]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[193]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[194]
+#define SWIGTYPE_p_ParameterDistribution swig_types[195]
+#define SWIGTYPE_p_ParameterPool swig_types[196]
+#define SWIGTYPE_p_ParameterSample swig_types[197]
+#define SWIGTYPE_p_Particle swig_types[198]
+#define SWIGTYPE_p_ParticleComposition swig_types[199]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[200]
+#define SWIGTYPE_p_ParticleDistribution swig_types[201]
+#define SWIGTYPE_p_ParticleLayout swig_types[202]
+#define SWIGTYPE_p_ParticleLimits swig_types[203]
+#define SWIGTYPE_p_PoissonNoiseBackground swig_types[204]
+#define SWIGTYPE_p_Polygon swig_types[205]
+#define SWIGTYPE_p_PolygonPrivate swig_types[206]
+#define SWIGTYPE_p_PolygonalTopology swig_types[207]
+#define SWIGTYPE_p_PolyhedralEdge swig_types[208]
+#define SWIGTYPE_p_PolyhedralFace swig_types[209]
+#define SWIGTYPE_p_PolyhedralTopology swig_types[210]
+#define SWIGTYPE_p_ProfileRipple1 swig_types[211]
+#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[212]
+#define SWIGTYPE_p_PyBuilderCallback swig_types[213]
+#define SWIGTYPE_p_PyObserverCallback swig_types[214]
+#define SWIGTYPE_p_QSpecScan swig_types[215]
+#define SWIGTYPE_p_RangedDistribution swig_types[216]
+#define SWIGTYPE_p_RangedDistributionCosine swig_types[217]
+#define SWIGTYPE_p_RangedDistributionGate swig_types[218]
+#define SWIGTYPE_p_RangedDistributionGaussian swig_types[219]
+#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[220]
+#define SWIGTYPE_p_RangedDistributionLorentz swig_types[221]
+#define SWIGTYPE_p_RealLimits swig_types[222]
+#define SWIGTYPE_p_RealParameter swig_types[223]
+#define SWIGTYPE_p_Rectangle swig_types[224]
+#define SWIGTYPE_p_RectangularDetector swig_types[225]
+#define SWIGTYPE_p_RectangularPixel swig_types[226]
+#define SWIGTYPE_p_RegionOfInterest swig_types[227]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[228]
+#define SWIGTYPE_p_RotationEuler swig_types[229]
+#define SWIGTYPE_p_RotationX swig_types[230]
+#define SWIGTYPE_p_RotationY swig_types[231]
+#define SWIGTYPE_p_RotationZ swig_types[232]
+#define SWIGTYPE_p_RoughnessModelWrap swig_types[233]
+#define SWIGTYPE_p_RoughnessModelWrap__RoughnessModel swig_types[234]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[235]
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[236]
+#define SWIGTYPE_p_ScanResolution swig_types[237]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[238]
+#define SWIGTYPE_p_Simulation swig_types[239]
+#define SWIGTYPE_p_Simulation2D swig_types[240]
+#define SWIGTYPE_p_SimulationFactory swig_types[241]
+#define SWIGTYPE_p_SimulationOptions swig_types[242]
+#define SWIGTYPE_p_SimulationResult swig_types[243]
+#define SWIGTYPE_p_SlicedParticle swig_types[244]
+#define SWIGTYPE_p_SlicingEffects swig_types[245]
+#define SWIGTYPE_p_SpecularDetector1D swig_types[246]
+#define SWIGTYPE_p_SpecularSimulation swig_types[247]
+#define SWIGTYPE_p_SphericalDetector swig_types[248]
+#define SWIGTYPE_p_SphericalPixel swig_types[249]
+#define SWIGTYPE_p_SquareLattice swig_types[250]
+#define SWIGTYPE_p_ThreadInfo swig_types[251]
+#define SWIGTYPE_p_Transform3D swig_types[252]
+#define SWIGTYPE_p_VariableBinAxis swig_types[253]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[254]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[255]
+#define SWIGTYPE_p_VerticalLine swig_types[256]
+#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[257]
+#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[258]
+#define SWIGTYPE_p_WavevectorInfo swig_types[259]
+#define SWIGTYPE_p_ZLimits swig_types[260]
+#define SWIGTYPE_p_allocator_type swig_types[261]
+#define SWIGTYPE_p_bool swig_types[262]
+#define SWIGTYPE_p_char swig_types[263]
+#define SWIGTYPE_p_const_iterator swig_types[264]
+#define SWIGTYPE_p_corr_matrix_t swig_types[265]
+#define SWIGTYPE_p_difference_type swig_types[266]
+#define SWIGTYPE_p_double swig_types[267]
+#define SWIGTYPE_p_first_type swig_types[268]
+#define SWIGTYPE_p_int swig_types[269]
+#define SWIGTYPE_p_iterator swig_types[270]
+#define SWIGTYPE_p_key_type swig_types[271]
+#define SWIGTYPE_p_long_long swig_types[272]
+#define SWIGTYPE_p_mapped_type swig_types[273]
+#define SWIGTYPE_p_observer_t swig_types[274]
+#define SWIGTYPE_p_p_PyObject swig_types[275]
+#define SWIGTYPE_p_parameters_t swig_types[276]
+#define SWIGTYPE_p_second_type swig_types[277]
+#define SWIGTYPE_p_short swig_types[278]
+#define SWIGTYPE_p_signed_char swig_types[279]
+#define SWIGTYPE_p_size_type swig_types[280]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[281]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[282]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[283]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[284]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[285]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[286]
+#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[287]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[288]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[289]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[290]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[291]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[292]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[293]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[294]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[295]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[296]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[297]
+#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[298]
+#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[299]
+#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[300]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[301]
+#define SWIGTYPE_p_std__invalid_argument swig_types[302]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[303]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[304]
+#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[305]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[306]
+#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[307]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[308]
+#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[309]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[310]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[311]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[312]
+#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[313]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[314]
+#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[315]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[316]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[317]
+#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[318]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[319]
+#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[320]
+#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[321]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[322]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[323]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[324]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[325]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[326]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[327]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[328]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[329]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[330]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[331]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[332]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[333]
+#define SWIGTYPE_p_unsigned_char swig_types[334]
+#define SWIGTYPE_p_unsigned_int swig_types[335]
+#define SWIGTYPE_p_unsigned_long_long swig_types[336]
+#define SWIGTYPE_p_unsigned_short swig_types[337]
+#define SWIGTYPE_p_value_type swig_types[338]
+static swig_type_info *swig_types[340];
+static swig_module_info swig_module = {swig_types, 339, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -6904,10 +6902,8 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "DepthProbeSimulation.h"
 #include "DetectorMask.h"
 #include "Distributions.h"
-#include "Distributions.h"
 #include "Ellipse.h"
 #include "FTDecayFunctions.h"
-#include "FTDecayFunctions.h"
 #include "FTDistributions1D.h"
 #include "FTDistributions2D.h"
 #include "FitOptions.h"
@@ -6932,13 +6928,8 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "FormFactorGauss.h"
 #include "FormFactorHemiEllipsoid.h"
 #include "FormFactorIcosahedron.h"
-#include "FormFactorLongBox.h"
 #include "FormFactorLongBoxGauss.h"
 #include "FormFactorLongBoxLorentz.h"
-#include "FormFactorLongRipple1Gauss.h"
-#include "FormFactorLongRipple1Lorentz.h"
-#include "FormFactorLongRipple2Gauss.h"
-#include "FormFactorLongRipple2Lorentz.h"
 #include "FormFactorLorentz.h"
 #include "FormFactorOrnsteinZernike.h"
 #include "FormFactorPolyhedron.h"
@@ -7031,7 +7022,7 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Rectangle.h"
 #include "RectangularDetector.h"
 #include "ResolutionFunction2DGaussian.h"
-#include "Rotations.h"
+#include "Ripples.h"
 #include "Rotations.h"
 #include "SampleBuilderFactory.h"
 #include "ScanResolution.h"
@@ -49992,34 +49983,6 @@ fail:
 
 
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_33(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
-  FormFactorLongBox *arg2 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INodeVisitor, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
-  }
-  arg1 = reinterpret_cast< INodeVisitor * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg2 = reinterpret_cast< FormFactorLongBox * >(argp2);
-  (arg1)->visit((FormFactorLongBox const *)arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_34(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorLongBoxGauss *arg2 = (FormFactorLongBoxGauss *) 0 ;
@@ -50047,7 +50010,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_35(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_34(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorLongBoxLorentz *arg2 = (FormFactorLongBoxLorentz *) 0 ;
@@ -50075,7 +50038,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_36(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_35(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorLorentz *arg2 = (FormFactorLorentz *) 0 ;
@@ -50103,7 +50066,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_37(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_36(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPrism3 *arg2 = (FormFactorPrism3 *) 0 ;
@@ -50131,7 +50094,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_38(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_37(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPrism6 *arg2 = (FormFactorPrism6 *) 0 ;
@@ -50159,7 +50122,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_39(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_38(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPyramid *arg2 = (FormFactorPyramid *) 0 ;
@@ -50187,10 +50150,38 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_39(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
+  FormFactorRipple1Box *arg2 = (FormFactorRipple1Box *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INodeVisitor, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
+  }
+  arg1 = reinterpret_cast< INodeVisitor * >(argp1);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorRipple1Box, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple1Box const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorRipple1Box * >(argp2);
+  (arg1)->visit((FormFactorRipple1Box const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_40(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
-  FormFactorRipple1 *arg2 = (FormFactorRipple1 *) 0 ;
+  FormFactorRipple1Gauss *arg2 = (FormFactorRipple1Gauss *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -50202,12 +50193,12 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_40(PyObject *SWIGUNUSEDPARM(
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
   }
   arg1 = reinterpret_cast< INodeVisitor * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorRipple1Gauss, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple1 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple1Gauss const *""'"); 
   }
-  arg2 = reinterpret_cast< FormFactorRipple1 * >(argp2);
-  (arg1)->visit((FormFactorRipple1 const *)arg2);
+  arg2 = reinterpret_cast< FormFactorRipple1Gauss * >(argp2);
+  (arg1)->visit((FormFactorRipple1Gauss const *)arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -50216,6 +50207,34 @@ fail:
 
 
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_41(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
+  FormFactorRipple1Lorentz *arg2 = (FormFactorRipple1Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INodeVisitor, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
+  }
+  arg1 = reinterpret_cast< INodeVisitor * >(argp1);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorRipple1Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple1Lorentz const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorRipple1Lorentz * >(argp2);
+  (arg1)->visit((FormFactorRipple1Lorentz const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_42(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorRipple2 *arg2 = (FormFactorRipple2 *) 0 ;
@@ -50243,7 +50262,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_42(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_43(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorSphereGaussianRadius *arg2 = (FormFactorSphereGaussianRadius *) 0 ;
@@ -50271,7 +50290,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_43(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_44(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorSphereLogNormalRadius *arg2 = (FormFactorSphereLogNormalRadius *) 0 ;
@@ -50299,7 +50318,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_44(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_45(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTetrahedron *arg2 = (FormFactorTetrahedron *) 0 ;
@@ -50327,7 +50346,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_45(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_46(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDot *arg2 = (FormFactorDot *) 0 ;
@@ -50355,7 +50374,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_46(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_47(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedCube *arg2 = (FormFactorTruncatedCube *) 0 ;
@@ -50383,7 +50402,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_47(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_48(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedSphere *arg2 = (FormFactorTruncatedSphere *) 0 ;
@@ -50411,7 +50430,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_48(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_49(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedSpheroid *arg2 = (FormFactorTruncatedSpheroid *) 0 ;
@@ -50439,7 +50458,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_49(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_50(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorWeighted *arg2 = (FormFactorWeighted *) 0 ;
@@ -50467,7 +50486,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_50(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_51(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DCauchy *arg2 = (FTDecayFunction1DCauchy *) 0 ;
@@ -50495,7 +50514,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_51(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_52(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DGauss *arg2 = (FTDecayFunction1DGauss *) 0 ;
@@ -50523,7 +50542,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_52(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_53(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DTriangle *arg2 = (FTDecayFunction1DTriangle *) 0 ;
@@ -50551,7 +50570,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_53(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_54(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DVoigt *arg2 = (FTDecayFunction1DVoigt *) 0 ;
@@ -50579,7 +50598,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_54(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_55(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DCauchy *arg2 = (FTDecayFunction2DCauchy *) 0 ;
@@ -50607,7 +50626,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_55(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_56(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DGauss *arg2 = (FTDecayFunction2DGauss *) 0 ;
@@ -50635,7 +50654,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_56(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_57(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DVoigt *arg2 = (FTDecayFunction2DVoigt *) 0 ;
@@ -50663,7 +50682,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_57(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_58(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DCauchy *arg2 = (FTDistribution1DCauchy *) 0 ;
@@ -50691,7 +50710,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_58(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_59(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DCosine *arg2 = (FTDistribution1DCosine *) 0 ;
@@ -50719,7 +50738,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_59(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_60(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DGate *arg2 = (FTDistribution1DGate *) 0 ;
@@ -50747,7 +50766,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_60(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_61(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DGauss *arg2 = (FTDistribution1DGauss *) 0 ;
@@ -50775,7 +50794,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_61(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_62(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DTriangle *arg2 = (FTDistribution1DTriangle *) 0 ;
@@ -50803,7 +50822,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_62(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_63(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DVoigt *arg2 = (FTDistribution1DVoigt *) 0 ;
@@ -50831,7 +50850,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_63(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_64(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DCauchy *arg2 = (FTDistribution2DCauchy *) 0 ;
@@ -50859,7 +50878,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_64(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_65(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DCone *arg2 = (FTDistribution2DCone *) 0 ;
@@ -50887,7 +50906,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_65(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_66(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DGate *arg2 = (FTDistribution2DGate *) 0 ;
@@ -50915,7 +50934,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_66(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_67(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DGauss *arg2 = (FTDistribution2DGauss *) 0 ;
@@ -50943,7 +50962,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_67(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_68(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DVoigt *arg2 = (FTDistribution2DVoigt *) 0 ;
@@ -50971,7 +50990,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_68(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_69(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   GISASSimulation *arg2 = (GISASSimulation *) 0 ;
@@ -50999,7 +51018,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_69(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_70(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   HexagonalLattice *arg2 = (HexagonalLattice *) 0 ;
@@ -51027,7 +51046,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_70(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_71(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IAbstractParticle *arg2 = (IAbstractParticle *) 0 ;
@@ -51055,7 +51074,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_71(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_72(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IClusteredParticles *arg2 = (IClusteredParticles *) 0 ;
@@ -51083,7 +51102,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_72(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_73(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IdentityRotation *arg2 = (IdentityRotation *) 0 ;
@@ -51111,7 +51130,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_73(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_74(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactor *arg2 = (IFormFactor *) 0 ;
@@ -51139,7 +51158,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_74(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_75(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactorBorn *arg2 = (IFormFactorBorn *) 0 ;
@@ -51167,7 +51186,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_75(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_76(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactorDecorator *arg2 = (IFormFactorDecorator *) 0 ;
@@ -51195,7 +51214,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_76(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_77(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IInterferenceFunction *arg2 = (IInterferenceFunction *) 0 ;
@@ -51223,7 +51242,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_77(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_78(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ILayout *arg2 = (ILayout *) 0 ;
@@ -51251,7 +51270,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_78(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_79(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   INode *arg2 = (INode *) 0 ;
@@ -51279,7 +51298,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_79(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_80(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Instrument *arg2 = (Instrument *) 0 ;
@@ -51307,7 +51326,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_80(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_81(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IntensityNormalizer *arg2 = (IntensityNormalizer *) 0 ;
@@ -51335,7 +51354,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_81(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_82(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IntensityScaleAndShiftNormalizer *arg2 = (IntensityScaleAndShiftNormalizer *) 0 ;
@@ -51363,7 +51382,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_82(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_83(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction1DLattice *arg2 = (InterferenceFunction1DLattice *) 0 ;
@@ -51391,7 +51410,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_83(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_84(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DLattice *arg2 = (InterferenceFunction2DLattice *) 0 ;
@@ -51419,7 +51438,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_84(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_85(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DParaCrystal *arg2 = (InterferenceFunction2DParaCrystal *) 0 ;
@@ -51447,7 +51466,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_85(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_86(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DSuperLattice *arg2 = (InterferenceFunction2DSuperLattice *) 0 ;
@@ -51475,7 +51494,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_86(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_87(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction3DLattice *arg2 = (InterferenceFunction3DLattice *) 0 ;
@@ -51503,7 +51522,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_87(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_88(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionFinite2DLattice *arg2 = (InterferenceFunctionFinite2DLattice *) 0 ;
@@ -51531,7 +51550,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_88(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_89(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionFinite3DLattice *arg2 = (InterferenceFunctionFinite3DLattice *) 0 ;
@@ -51559,7 +51578,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_89(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_90(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionHardDisk *arg2 = (InterferenceFunctionHardDisk *) 0 ;
@@ -51587,7 +51606,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_90(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_91(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionRadialParaCrystal *arg2 = (InterferenceFunctionRadialParaCrystal *) 0 ;
@@ -51615,7 +51634,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_91(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_92(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionTwin *arg2 = (InterferenceFunctionTwin *) 0 ;
@@ -51643,7 +51662,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_92(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_93(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionNone *arg2 = (InterferenceFunctionNone *) 0 ;
@@ -51671,7 +51690,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_93(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_94(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IParticle *arg2 = (IParticle *) 0 ;
@@ -51699,7 +51718,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_94(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_95(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IPeakShape *arg2 = (IPeakShape *) 0 ;
@@ -51727,7 +51746,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_95(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_96(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IRotation *arg2 = (IRotation *) 0 ;
@@ -51755,7 +51774,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_96(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_97(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ISample *arg2 = (ISample *) 0 ;
@@ -51783,7 +51802,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_97(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_98(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IsGISAXSDetector *arg2 = (IsGISAXSDetector *) 0 ;
@@ -51811,7 +51830,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_98(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_99(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Layer *arg2 = (Layer *) 0 ;
@@ -51839,7 +51858,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_99(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_100(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   LayerInterface *arg2 = (LayerInterface *) 0 ;
@@ -51867,7 +51886,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_100(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_101(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   LayerRoughness *arg2 = (LayerRoughness *) 0 ;
@@ -51895,7 +51914,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_101(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_102(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   MesoCrystal *arg2 = (MesoCrystal *) 0 ;
@@ -51923,7 +51942,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_102(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_103(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   MultiLayer *arg2 = (MultiLayer *) 0 ;
@@ -51951,7 +51970,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_103(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_104(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   OffSpecSimulation *arg2 = (OffSpecSimulation *) 0 ;
@@ -51979,7 +51998,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_104(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_105(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Particle *arg2 = (Particle *) 0 ;
@@ -52007,7 +52026,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_105(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_106(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleComposition *arg2 = (ParticleComposition *) 0 ;
@@ -52035,7 +52054,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_106(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_107(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleCoreShell *arg2 = (ParticleCoreShell *) 0 ;
@@ -52063,7 +52082,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_107(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_108(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleDistribution *arg2 = (ParticleDistribution *) 0 ;
@@ -52091,7 +52110,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_108(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_109(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleLayout *arg2 = (ParticleLayout *) 0 ;
@@ -52119,7 +52138,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_109(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_110(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   PoissonNoiseBackground *arg2 = (PoissonNoiseBackground *) 0 ;
@@ -52147,7 +52166,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_110(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_111(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RectangularDetector *arg2 = (RectangularDetector *) 0 ;
@@ -52175,7 +52194,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_111(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_112(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ResolutionFunction2DGaussian *arg2 = (ResolutionFunction2DGaussian *) 0 ;
@@ -52203,7 +52222,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_112(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_113(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationEuler *arg2 = (RotationEuler *) 0 ;
@@ -52231,7 +52250,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_113(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_114(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationX *arg2 = (RotationX *) 0 ;
@@ -52259,7 +52278,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_114(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_115(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationY *arg2 = (RotationY *) 0 ;
@@ -52287,7 +52306,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_115(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_116(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationZ *arg2 = (RotationZ *) 0 ;
@@ -52315,7 +52334,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_116(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_117(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SpecularDetector1D *arg2 = (SpecularDetector1D *) 0 ;
@@ -52343,7 +52362,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_117(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_118(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SpecularSimulation *arg2 = (SpecularSimulation *) 0 ;
@@ -52371,7 +52390,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_118(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_119(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SphericalDetector *arg2 = (SphericalDetector *) 0 ;
@@ -52399,7 +52418,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_119(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_120(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SquareLattice *arg2 = (SquareLattice *) 0 ;
@@ -52904,7 +52923,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLongBox, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLongBoxGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_33(self, argc, argv);
@@ -52918,7 +52937,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLongBoxGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLongBoxLorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_34(self, argc, argv);
@@ -52932,7 +52951,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLongBoxLorentz, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_35(self, argc, argv);
@@ -52946,7 +52965,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLorentz, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPrism3, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_36(self, argc, argv);
@@ -52960,7 +52979,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPrism3, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPrism6, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_37(self, argc, argv);
@@ -52974,7 +52993,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPrism6, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPyramid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_38(self, argc, argv);
@@ -52988,7 +53007,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPyramid, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple1Box, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_39(self, argc, argv);
@@ -53002,7 +53021,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple1, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple1Gauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_40(self, argc, argv);
@@ -53016,7 +53035,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple2, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple1Lorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_41(self, argc, argv);
@@ -53030,7 +53049,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorSphereGaussianRadius, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple2, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_42(self, argc, argv);
@@ -53044,7 +53063,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorSphereLogNormalRadius, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorSphereGaussianRadius, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_43(self, argc, argv);
@@ -53058,7 +53077,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTetrahedron, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorSphereLogNormalRadius, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_44(self, argc, argv);
@@ -53072,7 +53091,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDot, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTetrahedron, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_45(self, argc, argv);
@@ -53086,7 +53105,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedCube, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDot, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_46(self, argc, argv);
@@ -53100,7 +53119,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedSphere, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedCube, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_47(self, argc, argv);
@@ -53114,7 +53133,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedSpheroid, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedSphere, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_48(self, argc, argv);
@@ -53128,7 +53147,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorWeighted, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorTruncatedSpheroid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_49(self, argc, argv);
@@ -53142,7 +53161,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DCauchy, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorWeighted, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_50(self, argc, argv);
@@ -53156,7 +53175,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_51(self, argc, argv);
@@ -53170,7 +53189,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DTriangle, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_52(self, argc, argv);
@@ -53184,7 +53203,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DVoigt, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DTriangle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_53(self, argc, argv);
@@ -53198,7 +53217,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DCauchy, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction1DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_54(self, argc, argv);
@@ -53212,7 +53231,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_55(self, argc, argv);
@@ -53226,7 +53245,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DVoigt, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_56(self, argc, argv);
@@ -53240,7 +53259,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DCauchy, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDecayFunction2DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_57(self, argc, argv);
@@ -53254,7 +53273,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DCosine, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_58(self, argc, argv);
@@ -53268,7 +53287,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DGate, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DCosine, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_59(self, argc, argv);
@@ -53282,7 +53301,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DGate, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_60(self, argc, argv);
@@ -53296,7 +53315,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DTriangle, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_61(self, argc, argv);
@@ -53310,7 +53329,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DVoigt, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DTriangle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_62(self, argc, argv);
@@ -53324,7 +53343,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DCauchy, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution1DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_63(self, argc, argv);
@@ -53338,7 +53357,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DCone, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_64(self, argc, argv);
@@ -53352,7 +53371,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DGate, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DCone, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_65(self, argc, argv);
@@ -53366,7 +53385,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DGate, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_66(self, argc, argv);
@@ -53380,7 +53399,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DVoigt, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_67(self, argc, argv);
@@ -53394,7 +53413,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_GISASSimulation, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FTDistribution2DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_68(self, argc, argv);
@@ -53408,13 +53427,27 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_HexagonalLattice, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_GISASSimulation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_69(self, argc, argv);
       }
     }
   }
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_INodeVisitor, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_HexagonalLattice, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_INodeVisitor_visit__SWIG_70(self, argc, argv);
+      }
+    }
+  }
   if (argc == 2) {
     int _v;
     void *vptr = 0;
@@ -53425,7 +53458,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_MesoCrystal, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_101(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_102(self, argc, argv);
       }
     }
   }
@@ -53439,7 +53472,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IClusteredParticles, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_71(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_72(self, argc, argv);
       }
     }
   }
@@ -53453,7 +53486,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IdentityRotation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_72(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_73(self, argc, argv);
       }
     }
   }
@@ -53467,7 +53500,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IFormFactorBorn, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_74(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_75(self, argc, argv);
       }
     }
   }
@@ -53481,7 +53514,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IFormFactorDecorator, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_75(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_76(self, argc, argv);
       }
     }
   }
@@ -53495,7 +53528,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IFormFactor, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_73(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_74(self, argc, argv);
       }
     }
   }
@@ -53509,7 +53542,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunction1DLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_82(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_83(self, argc, argv);
       }
     }
   }
@@ -53523,7 +53556,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ParticleLayout, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_108(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_109(self, argc, argv);
       }
     }
   }
@@ -53537,7 +53570,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_Instrument, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_79(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_80(self, argc, argv);
       }
     }
   }
@@ -53551,7 +53584,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IntensityScaleAndShiftNormalizer, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_81(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_82(self, argc, argv);
       }
     }
   }
@@ -53565,7 +53598,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IntensityNormalizer, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_80(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_81(self, argc, argv);
       }
     }
   }
@@ -53579,7 +53612,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunction2DLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_83(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_84(self, argc, argv);
       }
     }
   }
@@ -53593,7 +53626,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunction2DParaCrystal, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_84(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_85(self, argc, argv);
       }
     }
   }
@@ -53607,7 +53640,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunction2DSuperLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_85(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_86(self, argc, argv);
       }
     }
   }
@@ -53621,7 +53654,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunction3DLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_86(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_87(self, argc, argv);
       }
     }
   }
@@ -53635,7 +53668,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionFinite2DLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_87(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_88(self, argc, argv);
       }
     }
   }
@@ -53649,7 +53682,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionFinite3DLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_88(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_89(self, argc, argv);
       }
     }
   }
@@ -53663,7 +53696,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionHardDisk, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_89(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_90(self, argc, argv);
       }
     }
   }
@@ -53677,7 +53710,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionRadialParaCrystal, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_90(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_91(self, argc, argv);
       }
     }
   }
@@ -53691,7 +53724,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionTwin, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_91(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_92(self, argc, argv);
       }
     }
   }
@@ -53705,7 +53738,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_InterferenceFunctionNone, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_92(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_93(self, argc, argv);
       }
     }
   }
@@ -53719,7 +53752,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IInterferenceFunction, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_76(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_77(self, argc, argv);
       }
     }
   }
@@ -53733,7 +53766,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_Particle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_104(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_105(self, argc, argv);
       }
     }
   }
@@ -53747,7 +53780,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IPeakShape, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_94(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_95(self, argc, argv);
       }
     }
   }
@@ -53761,7 +53794,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_RotationEuler, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_112(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_113(self, argc, argv);
       }
     }
   }
@@ -53775,7 +53808,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_Layer, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_98(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_99(self, argc, argv);
       }
     }
   }
@@ -53789,7 +53822,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IsGISAXSDetector, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_97(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_98(self, argc, argv);
       }
     }
   }
@@ -53803,7 +53836,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_LayerRoughness, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_100(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_101(self, argc, argv);
       }
     }
   }
@@ -53817,7 +53850,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ParticleComposition, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_105(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_106(self, argc, argv);
       }
     }
   }
@@ -53831,7 +53864,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_LayerInterface, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_99(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_100(self, argc, argv);
       }
     }
   }
@@ -53845,7 +53878,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_MultiLayer, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_102(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_103(self, argc, argv);
       }
     }
   }
@@ -53859,7 +53892,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ParticleCoreShell, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_106(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_107(self, argc, argv);
       }
     }
   }
@@ -53873,7 +53906,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_OffSpecSimulation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_103(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_104(self, argc, argv);
       }
     }
   }
@@ -53887,7 +53920,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IParticle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_93(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_94(self, argc, argv);
       }
     }
   }
@@ -53901,7 +53934,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ParticleDistribution, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_107(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_108(self, argc, argv);
       }
     }
   }
@@ -53915,7 +53948,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IAbstractParticle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_70(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_71(self, argc, argv);
       }
     }
   }
@@ -53929,7 +53962,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ILayout, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_77(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_78(self, argc, argv);
       }
     }
   }
@@ -53943,7 +53976,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_RotationX, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_113(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_114(self, argc, argv);
       }
     }
   }
@@ -53957,7 +53990,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_PoissonNoiseBackground, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_109(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_110(self, argc, argv);
       }
     }
   }
@@ -53971,7 +54004,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_RectangularDetector, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_110(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_111(self, argc, argv);
       }
     }
   }
@@ -53985,7 +54018,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ResolutionFunction2DGaussian, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_111(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_112(self, argc, argv);
       }
     }
   }
@@ -53999,7 +54032,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_RotationY, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_114(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_115(self, argc, argv);
       }
     }
   }
@@ -54013,7 +54046,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_RotationZ, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_115(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_116(self, argc, argv);
       }
     }
   }
@@ -54027,7 +54060,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_IRotation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_95(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_96(self, argc, argv);
       }
     }
   }
@@ -54041,7 +54074,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_ISample, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_96(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_97(self, argc, argv);
       }
     }
   }
@@ -54055,7 +54088,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_117(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_118(self, argc, argv);
       }
     }
   }
@@ -54069,7 +54102,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_SpecularDetector1D, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_116(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_117(self, argc, argv);
       }
     }
   }
@@ -54083,7 +54116,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_SphericalDetector, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_118(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_119(self, argc, argv);
       }
     }
   }
@@ -54097,7 +54130,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_SquareLattice, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_119(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_120(self, argc, argv);
       }
     }
   }
@@ -54111,7 +54144,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_INode, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_INodeVisitor_visit__SWIG_78(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_79(self, argc, argv);
       }
     }
   }
@@ -54152,14 +54185,15 @@ fail:
     "    INodeVisitor::visit(FormFactorGauss const *)\n"
     "    INodeVisitor::visit(FormFactorHemiEllipsoid const *)\n"
     "    INodeVisitor::visit(FormFactorIcosahedron const *)\n"
-    "    INodeVisitor::visit(FormFactorLongBox const *)\n"
     "    INodeVisitor::visit(FormFactorLongBoxGauss const *)\n"
     "    INodeVisitor::visit(FormFactorLongBoxLorentz const *)\n"
     "    INodeVisitor::visit(FormFactorLorentz const *)\n"
     "    INodeVisitor::visit(FormFactorPrism3 const *)\n"
     "    INodeVisitor::visit(FormFactorPrism6 const *)\n"
     "    INodeVisitor::visit(FormFactorPyramid const *)\n"
-    "    INodeVisitor::visit(FormFactorRipple1 const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple1Box const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple1Gauss const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple1Lorentz const *)\n"
     "    INodeVisitor::visit(FormFactorRipple2 const *)\n"
     "    INodeVisitor::visit(FormFactorSphereGaussianRadius const *)\n"
     "    INodeVisitor::visit(FormFactorSphereLogNormalRadius const *)\n"
@@ -68663,6 +68697,255 @@ SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSE
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_ProfileRipple1_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  double result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple1_getLength" "', argument " "1"" of type '" "ProfileRipple1 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  result = (double)((ProfileRipple1 const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple1_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  double result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple1_getHeight" "', argument " "1"" of type '" "ProfileRipple1 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  result = (double)((ProfileRipple1 const *)arg1)->getHeight();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple1_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  double result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple1_getWidth" "', argument " "1"" of type '" "ProfileRipple1 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  result = (double)((ProfileRipple1 const *)arg1)->getWidth();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple1_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  double result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple1_radialExtension" "', argument " "1"" of type '" "ProfileRipple1 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  result = (double)((ProfileRipple1 const *)arg1)->radialExtension();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple1_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  cvector_t arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 ;
+  int res2 = 0 ;
+  PyObject *swig_obj[2] ;
+  complex_t result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "ProfileRipple1_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple1_evaluate_for_q" "', argument " "1"" of type '" "ProfileRipple1 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  {
+    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ProfileRipple1_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
+    }  
+    if (!argp2) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ProfileRipple1_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
+    } else {
+      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
+      arg2 = *temp;
+      if (SWIG_IsNewObj(res2)) delete temp;
+    }
+  }
+  result = ((ProfileRipple1 const *)arg1)->evaluate_for_q(arg2);
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_ProfileRipple1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple1, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ProfileRipple1" "', argument " "1"" of type '" "ProfileRipple1 *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple1 * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *ProfileRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_ProfileRipple1, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
+SWIGINTERN PyObject *_wrap_factor_x_box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  complex_t arg1 ;
+  double arg2 ;
+  std::complex< double > val1 ;
+  int ecode1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  PyObject *swig_obj[2] ;
+  complex_t result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "factor_x_box", 2, 2, swig_obj)) SWIG_fail;
+  ecode1 = SWIG_AsVal_std_complex_Sl_double_Sg_(swig_obj[0], &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "factor_x_box" "', argument " "1"" of type '" "complex_t""'");
+  } 
+  arg1 = static_cast< complex_t >(val1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "factor_x_box" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = ripples::factor_x_box(arg1,arg2);
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_factor_x_Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  complex_t arg1 ;
+  double arg2 ;
+  std::complex< double > val1 ;
+  int ecode1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  PyObject *swig_obj[2] ;
+  complex_t result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "factor_x_Gauss", 2, 2, swig_obj)) SWIG_fail;
+  ecode1 = SWIG_AsVal_std_complex_Sl_double_Sg_(swig_obj[0], &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "factor_x_Gauss" "', argument " "1"" of type '" "complex_t""'");
+  } 
+  arg1 = static_cast< complex_t >(val1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "factor_x_Gauss" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = ripples::factor_x_Gauss(arg1,arg2);
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_factor_x_Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  complex_t arg1 ;
+  double arg2 ;
+  std::complex< double > val1 ;
+  int ecode1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  PyObject *swig_obj[2] ;
+  complex_t result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "factor_x_Lorentz", 2, 2, swig_obj)) SWIG_fail;
+  ecode1 = SWIG_AsVal_std_complex_Sl_double_Sg_(swig_obj[0], &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "factor_x_Lorentz" "', argument " "1"" of type '" "complex_t""'");
+  } 
+  arg1 = static_cast< complex_t >(val1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "factor_x_Lorentz" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = ripples::factor_x_Lorentz(arg1,arg2);
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_new_FormFactorAnisoPyramid(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
@@ -72491,259 +72774,6 @@ SWIGINTERN PyObject *FormFactorIcosahedron_swiginit(PyObject *SWIGUNUSEDPARM(sel
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLongBox(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double arg1 ;
-  double arg2 ;
-  double arg3 ;
-  double val1 ;
-  int ecode1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  PyObject *swig_obj[3] ;
-  FormFactorLongBox *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorLongBox", 3, 3, swig_obj)) SWIG_fail;
-  ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLongBox" "', argument " "1"" of type '" "double""'");
-  } 
-  arg1 = static_cast< double >(val1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongBox" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongBox" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  result = (FormFactorLongBox *)new FormFactorLongBox(arg1,arg2,arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongBox, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  FormFactorLongBox *result = 0 ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_clone" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  result = (FormFactorLongBox *)((FormFactorLongBox const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  INodeVisitor *arg2 = (INodeVisitor *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongBox_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_accept" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongBox_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
-  }
-  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLongBox const *)arg1)->accept(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_getLength" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  result = (double)((FormFactorLongBox const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_getHeight" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  result = (double)((FormFactorLongBox const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_getWidth" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  result = (double)((FormFactorLongBox const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_radialExtension" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  result = (double)((FormFactorLongBox const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongBox_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  cvector_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  complex_t result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongBox_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongBox_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongBox const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongBox_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongBox_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  result = ((FormFactorLongBox const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FormFactorLongBox(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongBox *arg1 = (FormFactorLongBox *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongBox, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongBox" "', argument " "1"" of type '" "FormFactorLongBox *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongBox * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *FormFactorLongBox_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBox, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *FormFactorLongBox_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
 SWIGINTERN PyObject *_wrap_new_FormFactorLongBoxGauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
@@ -73250,7 +73280,7 @@ SWIGINTERN PyObject *FormFactorLongBoxLorentz_swiginit(PyObject *SWIGUNUSEDPARM(
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple1Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple1Box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -73262,58 +73292,58 @@ SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple1Gauss(PyObject *SWIGUNUSEDPA
   double val3 ;
   int ecode3 = 0 ;
   PyObject *swig_obj[3] ;
-  FormFactorLongRipple1Gauss *result = 0 ;
+  FormFactorRipple1Box *result = 0 ;
   
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorLongRipple1Gauss", 3, 3, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple1Box", 3, 3, swig_obj)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLongRipple1Gauss" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorRipple1Box" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple1Gauss" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorRipple1Box" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
   if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple1Gauss" "', argument " "3"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorRipple1Box" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (FormFactorLongRipple1Gauss *)new FormFactorLongRipple1Gauss(arg1,arg2,arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorRipple1Box *)new FormFactorRipple1Box(arg1,arg2,arg3);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Box, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Box_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
+  FormFactorRipple1Box *arg1 = (FormFactorRipple1Box *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorLongRipple1Gauss *result = 0 ;
+  FormFactorRipple1Box *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Box, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_clone" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Box_clone" "', argument " "1"" of type '" "FormFactorRipple1Box const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  result = (FormFactorLongRipple1Gauss *)((FormFactorLongRipple1Gauss const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorRipple1Box * >(argp1);
+  result = (FormFactorRipple1Box *)((FormFactorRipple1Box const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Box, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Box_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
+  FormFactorRipple1Box *arg1 = (FormFactorRipple1Box *) 0 ;
   INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -73321,18 +73351,18 @@ SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_accept(PyObject *SWIGUNUSE
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple1Gauss_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple1Box_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Box, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_accept" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Box_accept" "', argument " "1"" of type '" "FormFactorRipple1Box const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple1Box * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple1Gauss_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple1Box_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
   arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLongRipple1Gauss const *)arg1)->accept(arg2);
+  ((FormFactorRipple1Box const *)arg1)->accept(arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -73340,150 +73370,20 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple1Box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple1Gauss const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple1Gauss const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_getLength" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple1Gauss const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_radialExtension" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple1Gauss const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Gauss_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
-  cvector_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  complex_t result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple1Gauss_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Gauss_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple1Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple1Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  result = ((FormFactorLongRipple1Gauss const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple1Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Gauss *arg1 = (FormFactorLongRipple1Gauss *) 0 ;
+  FormFactorRipple1Box *arg1 = (FormFactorRipple1Box *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Box, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple1Gauss" "', argument " "1"" of type '" "FormFactorLongRipple1Gauss *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple1Box" "', argument " "1"" of type '" "FormFactorRipple1Box *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Gauss * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple1Box * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -73492,18 +73392,18 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorLongRipple1Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple1Box_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1Box, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorLongRipple1Gauss_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple1Box_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple1Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple1Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -73515,603 +73415,58 @@ SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple1Lorentz(PyObject *SWIGUNUSED
   double val3 ;
   int ecode3 = 0 ;
   PyObject *swig_obj[3] ;
-  FormFactorLongRipple1Lorentz *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorLongRipple1Lorentz", 3, 3, swig_obj)) SWIG_fail;
-  ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLongRipple1Lorentz" "', argument " "1"" of type '" "double""'");
-  } 
-  arg1 = static_cast< double >(val1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple1Lorentz" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple1Lorentz" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  result = (FormFactorLongRipple1Lorentz *)new FormFactorLongRipple1Lorentz(arg1,arg2,arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  FormFactorLongRipple1Lorentz *result = 0 ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_clone" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  result = (FormFactorLongRipple1Lorentz *)((FormFactorLongRipple1Lorentz const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  INodeVisitor *arg2 = (INodeVisitor *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple1Lorentz_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_accept" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple1Lorentz_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
-  }
-  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLongRipple1Lorentz const *)arg1)->accept(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_radialExtension" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple1Lorentz const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple1Lorentz const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple1Lorentz const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_getLength" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple1Lorentz const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple1Lorentz_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  cvector_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  complex_t result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple1Lorentz_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple1Lorentz_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple1Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple1Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  result = ((FormFactorLongRipple1Lorentz const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple1Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple1Lorentz *arg1 = (FormFactorLongRipple1Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple1Lorentz" "', argument " "1"" of type '" "FormFactorLongRipple1Lorentz *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple1Lorentz * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *FormFactorLongRipple1Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *FormFactorLongRipple1Lorentz_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
-SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double arg1 ;
-  double arg2 ;
-  double arg3 ;
-  double arg4 ;
-  double val1 ;
-  int ecode1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  double val4 ;
-  int ecode4 = 0 ;
-  PyObject *swig_obj[4] ;
-  FormFactorLongRipple2Gauss *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorLongRipple2Gauss", 4, 4, swig_obj)) SWIG_fail;
-  ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "1"" of type '" "double""'");
-  } 
-  arg1 = static_cast< double >(val1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  ecode4 = SWIG_AsVal_double(swig_obj[3], &val4);
-  if (!SWIG_IsOK(ecode4)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "4"" of type '" "double""'");
-  } 
-  arg4 = static_cast< double >(val4);
-  result = (FormFactorLongRipple2Gauss *)new FormFactorLongRipple2Gauss(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  FormFactorLongRipple2Gauss *result = 0 ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_clone" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (FormFactorLongRipple2Gauss *)((FormFactorLongRipple2Gauss const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  INodeVisitor *arg2 = (INodeVisitor *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple2Gauss_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_accept" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Gauss_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
-  }
-  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLongRipple2Gauss const *)arg1)->accept(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getLength" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getAsymmetry" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getAsymmetry();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_radialExtension" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  cvector_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  complex_t result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple2Gauss_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  result = ((FormFactorLongRipple2Gauss const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
+  FormFactorRipple1Gauss *result = 0 ;
   
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple2Gauss" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
-SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double arg1 ;
-  double arg2 ;
-  double arg3 ;
-  double arg4 ;
-  double val1 ;
-  int ecode1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  double val4 ;
-  int ecode4 = 0 ;
-  PyObject *swig_obj[4] ;
-  FormFactorLongRipple2Lorentz *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorLongRipple2Lorentz", 4, 4, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple1Gauss", 3, 3, swig_obj)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorRipple1Gauss" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorRipple1Gauss" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
   if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "3"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorRipple1Gauss" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  ecode4 = SWIG_AsVal_double(swig_obj[3], &val4);
-  if (!SWIG_IsOK(ecode4)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "4"" of type '" "double""'");
-  } 
-  arg4 = static_cast< double >(val4);
-  result = (FormFactorLongRipple2Lorentz *)new FormFactorLongRipple2Lorentz(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorRipple1Gauss *)new FormFactorRipple1Gauss(arg1,arg2,arg3);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Gauss, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Gauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  FormFactorRipple1Gauss *arg1 = (FormFactorRipple1Gauss *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorLongRipple2Lorentz *result = 0 ;
+  FormFactorRipple1Gauss *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Gauss, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_clone" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Gauss_clone" "', argument " "1"" of type '" "FormFactorRipple1Gauss const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (FormFactorLongRipple2Lorentz *)((FormFactorLongRipple2Lorentz const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorRipple1Gauss * >(argp1);
+  result = (FormFactorRipple1Gauss *)((FormFactorRipple1Gauss const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Gauss, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Gauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  FormFactorRipple1Gauss *arg1 = (FormFactorRipple1Gauss *) 0 ;
   INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -74119,18 +73474,18 @@ SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_accept(PyObject *SWIGUNU
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple2Lorentz_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple1Gauss_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Gauss, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_accept" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Gauss_accept" "', argument " "1"" of type '" "FormFactorRipple1Gauss const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple1Gauss * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Lorentz_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple1Gauss_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
   arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLongRipple2Lorentz const *)arg1)->accept(arg2);
+  ((FormFactorRipple1Gauss const *)arg1)->accept(arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -74138,173 +73493,143 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple1Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  FormFactorRipple1Gauss *arg1 = (FormFactorRipple1Gauss *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  double result;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Gauss, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple1Gauss" "', argument " "1"" of type '" "FormFactorRipple1Gauss *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  arg1 = reinterpret_cast< FormFactorRipple1Gauss * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
+SWIGINTERN PyObject *FormFactorRipple1Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1Gauss, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
 }
 
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getLength" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
+SWIGINTERN PyObject *FormFactorRipple1Gauss_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
 }
 
-
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple1Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
+  double arg1 ;
+  double arg2 ;
+  double arg3 ;
+  double val1 ;
+  int ecode1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  PyObject *swig_obj[3] ;
+  FormFactorRipple1Lorentz *result = 0 ;
   
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getAsymmetry" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getAsymmetry();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple1Lorentz", 3, 3, swig_obj)) SWIG_fail;
+  ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorRipple1Lorentz" "', argument " "1"" of type '" "double""'");
+  } 
+  arg1 = static_cast< double >(val1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorRipple1Lorentz" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorRipple1Lorentz" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = static_cast< double >(val3);
+  result = (FormFactorRipple1Lorentz *)new FormFactorRipple1Lorentz(arg1,arg2,arg3);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Lorentz, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Lorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  FormFactorRipple1Lorentz *arg1 = (FormFactorRipple1Lorentz *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  double result;
+  FormFactorRipple1Lorentz *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Lorentz, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_radialExtension" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Lorentz_clone" "', argument " "1"" of type '" "FormFactorRipple1Lorentz const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  arg1 = reinterpret_cast< FormFactorRipple1Lorentz * >(argp1);
+  result = (FormFactorRipple1Lorentz *)((FormFactorRipple1Lorentz const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1Lorentz, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple1Lorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
-  cvector_t arg2 ;
+  FormFactorRipple1Lorentz *arg1 = (FormFactorRipple1Lorentz *) 0 ;
+  INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  void *argp2 ;
+  void *argp2 = 0 ;
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
-  complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLongRipple2Lorentz_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple1Lorentz_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Lorentz, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1Lorentz_accept" "', argument " "1"" of type '" "FormFactorRipple1Lorentz const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
+  arg1 = reinterpret_cast< FormFactorRipple1Lorentz * >(argp1);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple1Lorentz_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
-  result = ((FormFactorLongRipple2Lorentz const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
+  ((FormFactorRipple1Lorentz const *)arg1)->accept(arg2);
+  resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple1Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  FormFactorRipple1Lorentz *arg1 = (FormFactorRipple1Lorentz *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1Lorentz, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple2Lorentz" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple1Lorentz" "', argument " "1"" of type '" "FormFactorRipple1Lorentz *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple1Lorentz * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -74313,14 +73638,14 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple1Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple1Lorentz_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
@@ -75262,259 +74587,6 @@ SWIGINTERN PyObject *FormFactorPyramid_swiginit(PyObject *SWIGUNUSEDPARM(self),
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorRipple1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double arg1 ;
-  double arg2 ;
-  double arg3 ;
-  double val1 ;
-  int ecode1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  PyObject *swig_obj[3] ;
-  FormFactorRipple1 *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple1", 3, 3, swig_obj)) SWIG_fail;
-  ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorRipple1" "', argument " "1"" of type '" "double""'");
-  } 
-  arg1 = static_cast< double >(val1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorRipple1" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorRipple1" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  result = (FormFactorRipple1 *)new FormFactorRipple1(arg1,arg2,arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  FormFactorRipple1 *result = 0 ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_clone" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  result = (FormFactorRipple1 *)((FormFactorRipple1 const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  INodeVisitor *arg2 = (INodeVisitor *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple1_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_accept" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple1_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
-  }
-  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorRipple1 const *)arg1)->accept(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_getLength" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  result = (double)((FormFactorRipple1 const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_getHeight" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  result = (double)((FormFactorRipple1 const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_getWidth" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  result = (double)((FormFactorRipple1 const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_radialExtension" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  result = (double)((FormFactorRipple1 const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple1_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  cvector_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  complex_t result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple1_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple1_evaluate_for_q" "', argument " "1"" of type '" "FormFactorRipple1 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple1_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorRipple1_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
-    } else {
-      cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  result = ((FormFactorRipple1 const *)arg1)->evaluate_for_q(arg2);
-  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FormFactorRipple1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple1 *arg1 = (FormFactorRipple1 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple1, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple1" "', argument " "1"" of type '" "FormFactorRipple1 *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple1 * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *FormFactorRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *FormFactorRipple1_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
 SWIGINTERN PyObject *_wrap_new_FormFactorRipple2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
@@ -124781,14 +123853,15 @@ static PyMethodDef SwigMethods[] = {
 		"INodeVisitor_visit(INodeVisitor self, FormFactorGauss arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorHemiEllipsoid arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorIcosahedron arg2)\n"
-		"INodeVisitor_visit(INodeVisitor self, FormFactorLongBox arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorLongBoxGauss arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorLongBoxLorentz arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorLorentz arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPrism3 arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPrism6 arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPyramid arg2)\n"
-		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple1 arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple1Box arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple1Gauss arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple1Lorentz arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple2 arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorSphereGaussianRadius arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorSphereLogNormalRadius arg2)\n"
@@ -126906,6 +125979,52 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_FormFactorPolygonalSurface", _wrap_delete_FormFactorPolygonalSurface, METH_O, "delete_FormFactorPolygonalSurface(FormFactorPolygonalSurface self)"},
 	 { "FormFactorPolygonalSurface_swigregister", FormFactorPolygonalSurface_swigregister, METH_O, NULL},
+	 { "ProfileRipple1_getLength", _wrap_ProfileRipple1_getLength, METH_O, "\n"
+		"ProfileRipple1_getLength(ProfileRipple1 self) -> double\n"
+		"double ProfileRipple1::getLength() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple1_getHeight", _wrap_ProfileRipple1_getHeight, METH_O, "\n"
+		"ProfileRipple1_getHeight(ProfileRipple1 self) -> double\n"
+		"double ProfileRipple1::getHeight() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple1_getWidth", _wrap_ProfileRipple1_getWidth, METH_O, "\n"
+		"ProfileRipple1_getWidth(ProfileRipple1 self) -> double\n"
+		"double ProfileRipple1::getWidth() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple1_radialExtension", _wrap_ProfileRipple1_radialExtension, METH_O, "\n"
+		"ProfileRipple1_radialExtension(ProfileRipple1 self) -> double\n"
+		"double ProfileRipple1::radialExtension() const override final\n"
+		"\n"
+		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
+		"\n"
+		""},
+	 { "ProfileRipple1_evaluate_for_q", _wrap_ProfileRipple1_evaluate_for_q, METH_VARARGS, "\n"
+		"ProfileRipple1_evaluate_for_q(ProfileRipple1 self, cvector_t q) -> complex_t\n"
+		"complex_t ProfileRipple1::evaluate_for_q(cvector_t q) const override final\n"
+		"\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
+		"\n"
+		""},
+	 { "delete_ProfileRipple1", _wrap_delete_ProfileRipple1, METH_O, "delete_ProfileRipple1(ProfileRipple1 self)"},
+	 { "ProfileRipple1_swigregister", ProfileRipple1_swigregister, METH_O, NULL},
+	 { "factor_x_box", _wrap_factor_x_box, METH_VARARGS, "\n"
+		"factor_x_box(complex_t q, double l) -> complex_t\n"
+		"complex_t ripples::factor_x_box(complex_t q, double l)\n"
+		"\n"
+		""},
+	 { "factor_x_Gauss", _wrap_factor_x_Gauss, METH_VARARGS, "\n"
+		"factor_x_Gauss(complex_t q, double l) -> complex_t\n"
+		"complex_t ripples::factor_x_Gauss(complex_t q, double l)\n"
+		"\n"
+		""},
+	 { "factor_x_Lorentz", _wrap_factor_x_Lorentz, METH_VARARGS, "\n"
+		"factor_x_Lorentz(complex_t q, double l) -> complex_t\n"
+		"complex_t ripples::factor_x_Lorentz(complex_t q, double l)\n"
+		"\n"
+		""},
 	 { "new_FormFactorAnisoPyramid", _wrap_new_FormFactorAnisoPyramid, METH_VARARGS, "\n"
 		"new_FormFactorAnisoPyramid(double length, double width, double height, double alpha) -> FormFactorAnisoPyramid\n"
 		"FormFactorAnisoPyramid::FormFactorAnisoPyramid(double length, double width, double height, double alpha)\n"
@@ -127808,71 +126927,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_FormFactorIcosahedron", _wrap_delete_FormFactorIcosahedron, METH_O, "delete_FormFactorIcosahedron(FormFactorIcosahedron self)"},
 	 { "FormFactorIcosahedron_swigregister", FormFactorIcosahedron_swigregister, METH_O, NULL},
 	 { "FormFactorIcosahedron_swiginit", FormFactorIcosahedron_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLongBox", _wrap_new_FormFactorLongBox, METH_VARARGS, "\n"
-		"new_FormFactorLongBox(double length, double width, double height) -> FormFactorLongBox\n"
-		"FormFactorLongBox::FormFactorLongBox(double length, double width, double height)\n"
-		"\n"
-		"Box constructor.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"of  Box's base\n"
-		"\n"
-		"width: \n"
-		"of  Box's base\n"
-		"\n"
-		"height: \n"
-		"of  Box\n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_clone", _wrap_FormFactorLongBox_clone, METH_O, "\n"
-		"FormFactorLongBox_clone(FormFactorLongBox self) -> FormFactorLongBox\n"
-		"FormFactorLongBox* FormFactorLongBox::clone() const override final\n"
-		"\n"
-		"Returns a clone of this  ISample object. \n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_accept", _wrap_FormFactorLongBox_accept, METH_VARARGS, "\n"
-		"FormFactorLongBox_accept(FormFactorLongBox self, INodeVisitor visitor)\n"
-		"void FormFactorLongBox::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		"Calls the  INodeVisitor's visit method. \n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_getLength", _wrap_FormFactorLongBox_getLength, METH_O, "\n"
-		"FormFactorLongBox_getLength(FormFactorLongBox self) -> double\n"
-		"double FormFactorLongBox::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_getHeight", _wrap_FormFactorLongBox_getHeight, METH_O, "\n"
-		"FormFactorLongBox_getHeight(FormFactorLongBox self) -> double\n"
-		"double FormFactorLongBox::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_getWidth", _wrap_FormFactorLongBox_getWidth, METH_O, "\n"
-		"FormFactorLongBox_getWidth(FormFactorLongBox self) -> double\n"
-		"double FormFactorLongBox::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_radialExtension", _wrap_FormFactorLongBox_radialExtension, METH_O, "\n"
-		"FormFactorLongBox_radialExtension(FormFactorLongBox self) -> double\n"
-		"double FormFactorLongBox::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
-		"\n"
-		""},
-	 { "FormFactorLongBox_evaluate_for_q", _wrap_FormFactorLongBox_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLongBox_evaluate_for_q(FormFactorLongBox self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLongBox::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
-		"\n"
-		""},
-	 { "delete_FormFactorLongBox", _wrap_delete_FormFactorLongBox, METH_O, "delete_FormFactorLongBox(FormFactorLongBox self)"},
-	 { "FormFactorLongBox_swigregister", FormFactorLongBox_swigregister, METH_O, NULL},
-	 { "FormFactorLongBox_swiginit", FormFactorLongBox_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorLongBoxGauss", _wrap_new_FormFactorLongBoxGauss, METH_VARARGS, "\n"
 		"new_FormFactorLongBoxGauss(double length, double width, double height) -> FormFactorLongBoxGauss\n"
 		"FormFactorLongBoxGauss::FormFactorLongBoxGauss(double length, double width, double height)\n"
@@ -128003,280 +127057,72 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_FormFactorLongBoxLorentz", _wrap_delete_FormFactorLongBoxLorentz, METH_O, "delete_FormFactorLongBoxLorentz(FormFactorLongBoxLorentz self)"},
 	 { "FormFactorLongBoxLorentz_swigregister", FormFactorLongBoxLorentz_swigregister, METH_O, NULL},
 	 { "FormFactorLongBoxLorentz_swiginit", FormFactorLongBoxLorentz_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLongRipple1Gauss", _wrap_new_FormFactorLongRipple1Gauss, METH_VARARGS, "\n"
-		"new_FormFactorLongRipple1Gauss(double length, double width, double height) -> FormFactorLongRipple1Gauss\n"
-		"FormFactorLongRipple1Gauss::FormFactorLongRipple1Gauss(double length, double width, double height)\n"
-		"\n"
-		"Ripple1 constructor.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"of Ripple1\n"
-		"\n"
-		"width: \n"
-		"of cosine cross section\n"
-		"\n"
-		"height: \n"
-		"of cosine cross section \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_clone", _wrap_FormFactorLongRipple1Gauss_clone, METH_O, "\n"
-		"FormFactorLongRipple1Gauss_clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss\n"
-		"FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final\n"
-		"\n"
-		"Returns a clone of this  ISample object. \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_accept", _wrap_FormFactorLongRipple1Gauss_accept, METH_VARARGS, "\n"
-		"FormFactorLongRipple1Gauss_accept(FormFactorLongRipple1Gauss self, INodeVisitor visitor)\n"
-		"void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		"Calls the  INodeVisitor's visit method. \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_getHeight", _wrap_FormFactorLongRipple1Gauss_getHeight, METH_O, "\n"
-		"FormFactorLongRipple1Gauss_getHeight(FormFactorLongRipple1Gauss self) -> double\n"
-		"double FormFactorLongRipple1Gauss::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_getWidth", _wrap_FormFactorLongRipple1Gauss_getWidth, METH_O, "\n"
-		"FormFactorLongRipple1Gauss_getWidth(FormFactorLongRipple1Gauss self) -> double\n"
-		"double FormFactorLongRipple1Gauss::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_getLength", _wrap_FormFactorLongRipple1Gauss_getLength, METH_O, "\n"
-		"FormFactorLongRipple1Gauss_getLength(FormFactorLongRipple1Gauss self) -> double\n"
-		"double FormFactorLongRipple1Gauss::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_radialExtension", _wrap_FormFactorLongRipple1Gauss_radialExtension, METH_O, "\n"
-		"FormFactorLongRipple1Gauss_radialExtension(FormFactorLongRipple1Gauss self) -> double\n"
-		"double FormFactorLongRipple1Gauss::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Gauss_evaluate_for_q", _wrap_FormFactorLongRipple1Gauss_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLongRipple1Gauss_evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Complex form factor. \n"
-		"\n"
-		""},
-	 { "delete_FormFactorLongRipple1Gauss", _wrap_delete_FormFactorLongRipple1Gauss, METH_O, "delete_FormFactorLongRipple1Gauss(FormFactorLongRipple1Gauss self)"},
-	 { "FormFactorLongRipple1Gauss_swigregister", FormFactorLongRipple1Gauss_swigregister, METH_O, NULL},
-	 { "FormFactorLongRipple1Gauss_swiginit", FormFactorLongRipple1Gauss_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLongRipple1Lorentz", _wrap_new_FormFactorLongRipple1Lorentz, METH_VARARGS, "\n"
-		"new_FormFactorLongRipple1Lorentz(double length, double width, double height) -> FormFactorLongRipple1Lorentz\n"
-		"FormFactorLongRipple1Lorentz::FormFactorLongRipple1Lorentz(double length, double width, double height)\n"
-		"\n"
-		"FormFactorLongRipple1Lorentz constructor.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"of Ripple1\n"
-		"\n"
-		"width: \n"
-		"of cosine cross section\n"
-		"\n"
-		"height: \n"
-		"of cosine cross section \n"
+	 { "new_FormFactorRipple1Box", _wrap_new_FormFactorRipple1Box, METH_VARARGS, "\n"
+		"new_FormFactorRipple1Box(double length, double width, double height) -> FormFactorRipple1Box\n"
+		"FormFactorRipple1Box::FormFactorRipple1Box(double length, double width, double height)\n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple1Lorentz_clone", _wrap_FormFactorLongRipple1Lorentz_clone, METH_O, "\n"
-		"FormFactorLongRipple1Lorentz_clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz\n"
-		"FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final\n"
+	 { "FormFactorRipple1Box_clone", _wrap_FormFactorRipple1Box_clone, METH_O, "\n"
+		"FormFactorRipple1Box_clone(FormFactorRipple1Box self) -> FormFactorRipple1Box\n"
+		"FormFactorRipple1Box * FormFactorRipple1Box::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple1Lorentz_accept", _wrap_FormFactorLongRipple1Lorentz_accept, METH_VARARGS, "\n"
-		"FormFactorLongRipple1Lorentz_accept(FormFactorLongRipple1Lorentz self, INodeVisitor visitor)\n"
-		"void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorRipple1Box_accept", _wrap_FormFactorRipple1Box_accept, METH_VARARGS, "\n"
+		"FormFactorRipple1Box_accept(FormFactorRipple1Box self, INodeVisitor visitor)\n"
+		"void FormFactorRipple1Box::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple1Lorentz_radialExtension", _wrap_FormFactorLongRipple1Lorentz_radialExtension, METH_O, "\n"
-		"FormFactorLongRipple1Lorentz_radialExtension(FormFactorLongRipple1Lorentz self) -> double\n"
-		"double FormFactorLongRipple1Lorentz::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Lorentz_getHeight", _wrap_FormFactorLongRipple1Lorentz_getHeight, METH_O, "\n"
-		"FormFactorLongRipple1Lorentz_getHeight(FormFactorLongRipple1Lorentz self) -> double\n"
-		"double FormFactorLongRipple1Lorentz::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Lorentz_getWidth", _wrap_FormFactorLongRipple1Lorentz_getWidth, METH_O, "\n"
-		"FormFactorLongRipple1Lorentz_getWidth(FormFactorLongRipple1Lorentz self) -> double\n"
-		"double FormFactorLongRipple1Lorentz::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Lorentz_getLength", _wrap_FormFactorLongRipple1Lorentz_getLength, METH_O, "\n"
-		"FormFactorLongRipple1Lorentz_getLength(FormFactorLongRipple1Lorentz self) -> double\n"
-		"double FormFactorLongRipple1Lorentz::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple1Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple1Lorentz_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLongRipple1Lorentz_evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Complex form factor. \n"
+	 { "delete_FormFactorRipple1Box", _wrap_delete_FormFactorRipple1Box, METH_O, "delete_FormFactorRipple1Box(FormFactorRipple1Box self)"},
+	 { "FormFactorRipple1Box_swigregister", FormFactorRipple1Box_swigregister, METH_O, NULL},
+	 { "FormFactorRipple1Box_swiginit", FormFactorRipple1Box_swiginit, METH_VARARGS, NULL},
+	 { "new_FormFactorRipple1Gauss", _wrap_new_FormFactorRipple1Gauss, METH_VARARGS, "\n"
+		"new_FormFactorRipple1Gauss(double length, double width, double height) -> FormFactorRipple1Gauss\n"
+		"FormFactorRipple1Gauss::FormFactorRipple1Gauss(double length, double width, double height)\n"
 		"\n"
 		""},
-	 { "delete_FormFactorLongRipple1Lorentz", _wrap_delete_FormFactorLongRipple1Lorentz, METH_O, "delete_FormFactorLongRipple1Lorentz(FormFactorLongRipple1Lorentz self)"},
-	 { "FormFactorLongRipple1Lorentz_swigregister", FormFactorLongRipple1Lorentz_swigregister, METH_O, NULL},
-	 { "FormFactorLongRipple1Lorentz_swiginit", FormFactorLongRipple1Lorentz_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLongRipple2Gauss", _wrap_new_FormFactorLongRipple2Gauss, METH_VARARGS, "\n"
-		"new_FormFactorLongRipple2Gauss(double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Gauss\n"
-		"FormFactorLongRipple2Gauss::FormFactorLongRipple2Gauss(double length, double width, double height, double asymmetry)\n"
-		"\n"
-		"FormFactorLongRipple2Gauss constructor.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"of Ripple2\n"
-		"\n"
-		"width: \n"
-		"of triangular cross section\n"
-		"\n"
-		"height: \n"
-		"of triangular cross section\n"
-		"\n"
-		"asymmetry: \n"
-		"length of triangular cross section \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Gauss_clone", _wrap_FormFactorLongRipple2Gauss_clone, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss\n"
-		"FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final\n"
+	 { "FormFactorRipple1Gauss_clone", _wrap_FormFactorRipple1Gauss_clone, METH_O, "\n"
+		"FormFactorRipple1Gauss_clone(FormFactorRipple1Gauss self) -> FormFactorRipple1Gauss\n"
+		"FormFactorRipple1Gauss * FormFactorRipple1Gauss::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple2Gauss_accept", _wrap_FormFactorLongRipple2Gauss_accept, METH_VARARGS, "\n"
-		"FormFactorLongRipple2Gauss_accept(FormFactorLongRipple2Gauss self, INodeVisitor visitor)\n"
-		"void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorRipple1Gauss_accept", _wrap_FormFactorRipple1Gauss_accept, METH_VARARGS, "\n"
+		"FormFactorRipple1Gauss_accept(FormFactorRipple1Gauss self, INodeVisitor visitor)\n"
+		"void FormFactorRipple1Gauss::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple2Gauss_getHeight", _wrap_FormFactorLongRipple2Gauss_getHeight, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_getHeight(FormFactorLongRipple2Gauss self) -> double\n"
-		"double FormFactorLongRipple2Gauss::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Gauss_getWidth", _wrap_FormFactorLongRipple2Gauss_getWidth, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_getWidth(FormFactorLongRipple2Gauss self) -> double\n"
-		"double FormFactorLongRipple2Gauss::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Gauss_getLength", _wrap_FormFactorLongRipple2Gauss_getLength, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_getLength(FormFactorLongRipple2Gauss self) -> double\n"
-		"double FormFactorLongRipple2Gauss::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Gauss_getAsymmetry", _wrap_FormFactorLongRipple2Gauss_getAsymmetry, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_getAsymmetry(FormFactorLongRipple2Gauss self) -> double\n"
-		"double FormFactorLongRipple2Gauss::getAsymmetry() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Gauss_radialExtension", _wrap_FormFactorLongRipple2Gauss_radialExtension, METH_O, "\n"
-		"FormFactorLongRipple2Gauss_radialExtension(FormFactorLongRipple2Gauss self) -> double\n"
-		"double FormFactorLongRipple2Gauss::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
+	 { "delete_FormFactorRipple1Gauss", _wrap_delete_FormFactorRipple1Gauss, METH_O, "delete_FormFactorRipple1Gauss(FormFactorRipple1Gauss self)"},
+	 { "FormFactorRipple1Gauss_swigregister", FormFactorRipple1Gauss_swigregister, METH_O, NULL},
+	 { "FormFactorRipple1Gauss_swiginit", FormFactorRipple1Gauss_swiginit, METH_VARARGS, NULL},
+	 { "new_FormFactorRipple1Lorentz", _wrap_new_FormFactorRipple1Lorentz, METH_VARARGS, "\n"
+		"new_FormFactorRipple1Lorentz(double length, double width, double height) -> FormFactorRipple1Lorentz\n"
+		"FormFactorRipple1Lorentz::FormFactorRipple1Lorentz(double length, double width, double height)\n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple2Gauss_evaluate_for_q", _wrap_FormFactorLongRipple2Gauss_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLongRipple2Gauss_evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Complex form factor. \n"
-		"\n"
-		""},
-	 { "delete_FormFactorLongRipple2Gauss", _wrap_delete_FormFactorLongRipple2Gauss, METH_O, "delete_FormFactorLongRipple2Gauss(FormFactorLongRipple2Gauss self)"},
-	 { "FormFactorLongRipple2Gauss_swigregister", FormFactorLongRipple2Gauss_swigregister, METH_O, NULL},
-	 { "FormFactorLongRipple2Gauss_swiginit", FormFactorLongRipple2Gauss_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLongRipple2Lorentz", _wrap_new_FormFactorLongRipple2Lorentz, METH_VARARGS, "\n"
-		"new_FormFactorLongRipple2Lorentz(double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Lorentz\n"
-		"FormFactorLongRipple2Lorentz::FormFactorLongRipple2Lorentz(double length, double width, double height, double asymmetry)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"of Ripple2\n"
-		"\n"
-		"width: \n"
-		"of triangular cross section\n"
-		"\n"
-		"height: \n"
-		"of triangular cross section\n"
-		"\n"
-		"asymmetry: \n"
-		"length of triangular cross section \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_clone", _wrap_FormFactorLongRipple2Lorentz_clone, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz\n"
-		"FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final\n"
+	 { "FormFactorRipple1Lorentz_clone", _wrap_FormFactorRipple1Lorentz_clone, METH_O, "\n"
+		"FormFactorRipple1Lorentz_clone(FormFactorRipple1Lorentz self) -> FormFactorRipple1Lorentz\n"
+		"FormFactorRipple1Lorentz * FormFactorRipple1Lorentz::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple2Lorentz_accept", _wrap_FormFactorLongRipple2Lorentz_accept, METH_VARARGS, "\n"
-		"FormFactorLongRipple2Lorentz_accept(FormFactorLongRipple2Lorentz self, INodeVisitor visitor)\n"
-		"void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorRipple1Lorentz_accept", _wrap_FormFactorRipple1Lorentz_accept, METH_VARARGS, "\n"
+		"FormFactorRipple1Lorentz_accept(FormFactorRipple1Lorentz self, INodeVisitor visitor)\n"
+		"void FormFactorRipple1Lorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorLongRipple2Lorentz_getHeight", _wrap_FormFactorLongRipple2Lorentz_getHeight, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_getHeight(FormFactorLongRipple2Lorentz self) -> double\n"
-		"double FormFactorLongRipple2Lorentz::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_getWidth", _wrap_FormFactorLongRipple2Lorentz_getWidth, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_getWidth(FormFactorLongRipple2Lorentz self) -> double\n"
-		"double FormFactorLongRipple2Lorentz::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_getLength", _wrap_FormFactorLongRipple2Lorentz_getLength, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_getLength(FormFactorLongRipple2Lorentz self) -> double\n"
-		"double FormFactorLongRipple2Lorentz::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_getAsymmetry", _wrap_FormFactorLongRipple2Lorentz_getAsymmetry, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_getAsymmetry(FormFactorLongRipple2Lorentz self) -> double\n"
-		"double FormFactorLongRipple2Lorentz::getAsymmetry() const\n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_radialExtension", _wrap_FormFactorLongRipple2Lorentz_radialExtension, METH_O, "\n"
-		"FormFactorLongRipple2Lorentz_radialExtension(FormFactorLongRipple2Lorentz self) -> double\n"
-		"double FormFactorLongRipple2Lorentz::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
-		"\n"
-		""},
-	 { "FormFactorLongRipple2Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple2Lorentz_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLongRipple2Lorentz_evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Complex form factor. \n"
-		"\n"
-		""},
-	 { "delete_FormFactorLongRipple2Lorentz", _wrap_delete_FormFactorLongRipple2Lorentz, METH_O, "delete_FormFactorLongRipple2Lorentz(FormFactorLongRipple2Lorentz self)"},
-	 { "FormFactorLongRipple2Lorentz_swigregister", FormFactorLongRipple2Lorentz_swigregister, METH_O, NULL},
-	 { "FormFactorLongRipple2Lorentz_swiginit", FormFactorLongRipple2Lorentz_swiginit, METH_VARARGS, NULL},
+	 { "delete_FormFactorRipple1Lorentz", _wrap_delete_FormFactorRipple1Lorentz, METH_O, "delete_FormFactorRipple1Lorentz(FormFactorRipple1Lorentz self)"},
+	 { "FormFactorRipple1Lorentz_swigregister", FormFactorRipple1Lorentz_swigregister, METH_O, NULL},
+	 { "FormFactorRipple1Lorentz_swiginit", FormFactorRipple1Lorentz_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorLorentz", _wrap_new_FormFactorLorentz, METH_VARARGS, "\n"
 		"FormFactorLorentz(double length)\n"
 		"new_FormFactorLorentz(double width, double height) -> FormFactorLorentz\n"
@@ -128487,71 +127333,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_FormFactorPyramid", _wrap_delete_FormFactorPyramid, METH_O, "delete_FormFactorPyramid(FormFactorPyramid self)"},
 	 { "FormFactorPyramid_swigregister", FormFactorPyramid_swigregister, METH_O, NULL},
 	 { "FormFactorPyramid_swiginit", FormFactorPyramid_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorRipple1", _wrap_new_FormFactorRipple1, METH_VARARGS, "\n"
-		"new_FormFactorRipple1(double length, double width, double height) -> FormFactorRipple1\n"
-		"FormFactorRipple1::FormFactorRipple1(double length, double width, double height)\n"
-		"\n"
-		"Constructor of cosine ripple.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"length of the rectangular base in nanometers\n"
-		"\n"
-		"width: \n"
-		"width of the rectangular base in nanometers\n"
-		"\n"
-		"height: \n"
-		"height of the ripple in nanometers \n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_clone", _wrap_FormFactorRipple1_clone, METH_O, "\n"
-		"FormFactorRipple1_clone(FormFactorRipple1 self) -> FormFactorRipple1\n"
-		"FormFactorRipple1* FormFactorRipple1::clone() const override final\n"
-		"\n"
-		"Returns a clone of this  ISample object. \n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_accept", _wrap_FormFactorRipple1_accept, METH_VARARGS, "\n"
-		"FormFactorRipple1_accept(FormFactorRipple1 self, INodeVisitor visitor)\n"
-		"void FormFactorRipple1::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		"Calls the  INodeVisitor's visit method. \n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_getLength", _wrap_FormFactorRipple1_getLength, METH_O, "\n"
-		"FormFactorRipple1_getLength(FormFactorRipple1 self) -> double\n"
-		"double FormFactorRipple1::getLength() const\n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_getHeight", _wrap_FormFactorRipple1_getHeight, METH_O, "\n"
-		"FormFactorRipple1_getHeight(FormFactorRipple1 self) -> double\n"
-		"double FormFactorRipple1::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_getWidth", _wrap_FormFactorRipple1_getWidth, METH_O, "\n"
-		"FormFactorRipple1_getWidth(FormFactorRipple1 self) -> double\n"
-		"double FormFactorRipple1::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_radialExtension", _wrap_FormFactorRipple1_radialExtension, METH_O, "\n"
-		"FormFactorRipple1_radialExtension(FormFactorRipple1 self) -> double\n"
-		"double FormFactorRipple1::radialExtension() const override final\n"
-		"\n"
-		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
-		"\n"
-		""},
-	 { "FormFactorRipple1_evaluate_for_q", _wrap_FormFactorRipple1_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorRipple1_evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
-		"Complex form factor. \n"
-		"\n"
-		""},
-	 { "delete_FormFactorRipple1", _wrap_delete_FormFactorRipple1, METH_O, "delete_FormFactorRipple1(FormFactorRipple1 self)"},
-	 { "FormFactorRipple1_swigregister", FormFactorRipple1_swigregister, METH_O, NULL},
-	 { "FormFactorRipple1_swiginit", FormFactorRipple1_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorRipple2", _wrap_new_FormFactorRipple2, METH_VARARGS, "\n"
 		"new_FormFactorRipple2(double length, double width, double height, double asymmetry) -> FormFactorRipple2\n"
 		"FormFactorRipple2::FormFactorRipple2(double length, double width, double height, double asymmetry)\n"
@@ -135526,6 +134307,15 @@ static void *_p_RectangularDetectorTo_p_IDetector(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_IDetector2DTo_p_IDetector(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IDetector *)  ((IDetector2D *) x));
 }
+static void *_p_FormFactorRipple1LorentzTo_p_ProfileRipple1(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple1 *)  ((FormFactorRipple1Lorentz *) x));
+}
+static void *_p_FormFactorRipple1BoxTo_p_ProfileRipple1(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple1 *)  ((FormFactorRipple1Box *) x));
+}
+static void *_p_FormFactorRipple1GaussTo_p_ProfileRipple1(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple1 *)  ((FormFactorRipple1Gauss *) x));
+}
 static void *_p_PolygonTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IShape2D *)  ((Polygon *) x));
 }
@@ -135607,14 +134397,17 @@ static void *_p_FormFactorDebyeBuecheTo_p_IFormFactorBorn(void *x, int *SWIGUNUS
 static void *_p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorTruncatedSpheroid *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_FormFactorLongBoxGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLongBoxGauss *) x));
 }
 static void *_p_FormFactorOrnsteinZernikeTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorOrnsteinZernike *) x));
 }
-static void *_p_FormFactorRipple1To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorPolygonalSurface *) x));
@@ -135622,9 +134415,6 @@ static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn(void *x, int *SWI
 static void *_p_FormFactorRipple2To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorRipple2 *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLongBox *) x));
-}
 static void *_p_FormFactorFullSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorFullSphere *) x));
 }
@@ -135634,8 +134424,8 @@ static void *_p_FormFactorTruncatedCubeTo_p_IFormFactorBorn(void *x, int *SWIGUN
 static void *_p_FormFactorTruncatedSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorTruncatedSphere *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_FormFactorCylinderTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorCylinder *) x));
@@ -135646,6 +134436,9 @@ static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn(void *x, int *
 static void *_p_FormFactorBoxTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorBox *) x));
 }
+static void *_p_FormFactorTetrahedronTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
+}
 static void *_p_FormFactorIcosahedronTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorIcosahedron *) x));
 }
@@ -135658,9 +134451,6 @@ static void *_p_FormFactorCuboctahedronTo_p_IFormFactorBorn(void *x, int *SWIGUN
 static void *_p_FormFactorDodecahedronTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
 }
-static void *_p_FormFactorTetrahedronTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
-}
 static void *_p_FormFactorConeTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorCone *) x));
 }
@@ -135679,15 +134469,15 @@ static void *_p_FormFactorDotTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_FormFactorLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple2Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple1LorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple1Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLongBoxLorentz *) x));
 }
+static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorSphereUniformRadius *) x));
+}
 static void *_p_FormFactorPyramidTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorPyramid *) x));
 }
@@ -135697,12 +134487,6 @@ static void *_p_FormFactorAnisoPyramidTo_p_IFormFactorBorn(void *x, int *SWIGUNU
 static void *_p_FormFactorPrism3To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolygonalPrism *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorSphereUniformRadius *) x));
-}
-static void *_p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_FormFactorGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorGauss *) x));
 }
@@ -135967,9 +134751,6 @@ static void *_p_FormFactorDotTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_ResolutionFunction2DGaussianTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IResolutionFunction2D *) ((ResolutionFunction2DGaussian *) x));
 }
@@ -136048,9 +134829,6 @@ static void *_p_IntensityNormalizerTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(
 static void *_p_IntensityScaleAndShiftNormalizerTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IIntensityNormalizer *)(IntensityNormalizer *) ((IntensityScaleAndShiftNormalizer *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_FTDecayFunction2DGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IFTDecayFunction2D *) ((FTDecayFunction2DGauss *) x));
 }
@@ -136171,8 +134949,8 @@ static void *_p_FormFactorBoxTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FTDistribution1DGateTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IFTDistribution1D *) ((FTDistribution1DGate *) x));
 }
-static void *_p_FormFactorRipple1To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPolygonalPrismTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalPrism *) x));
@@ -136198,15 +134976,15 @@ static void *_p_DistributionLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(
 static void *_p_FormFactorLongBoxLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
-static void *_p_FormFactorLongRipple1LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple2LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_FormFactorPrism6To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism6 *) x));
 }
@@ -136225,8 +135003,8 @@ static void *_p_IFootprintFactorTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_ISampleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((ISample *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_IResolutionFunction2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IResolutionFunction2D *) x));
@@ -136432,6 +135210,9 @@ static void *_p_DistributionLogNormalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_InterferenceFunctionHardDiskTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionHardDisk *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_InstrumentTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *) ((Instrument *) x));
 }
@@ -136477,9 +135258,6 @@ static void *_p_RotationZTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_RectangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IShape2D *) ((Rectangle *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_FormFactorGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -136534,15 +135312,15 @@ static void *_p_InterferenceFunctionTwinTo_p_INamed(void *x, int *SWIGUNUSEDPARM
 static void *_p_LayerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((Layer *) x));
 }
-static void *_p_FormFactorRipple1To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x));
-}
-static void *_p_FormFactorAnisoPyramidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorAnisoPyramid *) x));
+static void *_p_ProfileRipple1To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPyramidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x));
 }
+static void *_p_FormFactorAnisoPyramidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorAnisoPyramid *) x));
+}
 static void *_p_FormFactorRipple2To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
 }
@@ -136582,9 +135360,6 @@ static void *_p_FTDistribution1DCosineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_FTDistribution1DGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DGate *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_FTDistribution2DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DVoigt *) x));
 }
@@ -136612,8 +135387,8 @@ static void *_p_FootprintFactorSquareTo_p_INamed(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FormFactorCone6To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_IFormFactorDecoratorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
@@ -136666,11 +135441,8 @@ static void *_p_RealParameterTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)
 static void *_p_FormFactorLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorLongRipple2LorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple1LorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
@@ -136723,18 +135495,6 @@ static void *_p_AngularSpecScanTo_p_ISpecularScan(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_QSpecScanTo_p_ISpecularScan(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISpecularScan *)  ((QSpecScan *) x));
 }
-static void *_p_VarianceConstantFunctionTo_p_IVarianceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IVarianceFunction *)  ((VarianceConstantFunction *) x));
-}
-static void *_p_VarianceSimFunctionTo_p_IVarianceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IVarianceFunction *)  ((VarianceSimFunction *) x));
-}
-static void *_p_IntensityFunctionSqrtTo_p_IIntensityFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IIntensityFunction *)  ((IntensityFunctionSqrt *) x));
-}
-static void *_p_IntensityFunctionLogTo_p_IIntensityFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IIntensityFunction *)  ((IntensityFunctionLog *) x));
-}
 static void *_p_InterferenceFunctionHardDiskTo_p_IInterferenceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IInterferenceFunction *)  ((InterferenceFunctionHardDisk *) x));
 }
@@ -136768,6 +135528,18 @@ static void *_p_InterferenceFunctionRadialParaCrystalTo_p_IInterferenceFunction(
 static void *_p_InterferenceFunctionTwinTo_p_IInterferenceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IInterferenceFunction *)  ((InterferenceFunctionTwin *) x));
 }
+static void *_p_VarianceConstantFunctionTo_p_IVarianceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IVarianceFunction *)  ((VarianceConstantFunction *) x));
+}
+static void *_p_VarianceSimFunctionTo_p_IVarianceFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IVarianceFunction *)  ((VarianceSimFunction *) x));
+}
+static void *_p_IntensityFunctionSqrtTo_p_IIntensityFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IIntensityFunction *)  ((IntensityFunctionSqrt *) x));
+}
+static void *_p_IntensityFunctionLogTo_p_IIntensityFunction(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IIntensityFunction *)  ((IntensityFunctionLog *) x));
+}
 static void *_p_IntensityScaleAndShiftNormalizerTo_p_IntensityNormalizer(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IntensityNormalizer *)  ((IntensityScaleAndShiftNormalizer *) x));
 }
@@ -136789,12 +135561,12 @@ static void *_p_ConstantBackgroundTo_p_IParameterized(void *x, int *SWIGUNUSEDPA
 static void *_p_PoissonNoiseBackgroundTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(IBackground *) ((PoissonNoiseBackground *) x));
 }
-static void *_p_FormFactorSphereGaussianRadiusTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
-}
 static void *_p_FormFactorSphereLogNormalRadiusTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
 }
+static void *_p_FormFactorSphereGaussianRadiusTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
+}
 static void *_p_MultiLayerTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *) ((MultiLayer *) x));
 }
@@ -136948,6 +135720,9 @@ static void *_p_DistributionLogNormalTo_p_IParameterized(void *x, int *SWIGUNUSE
 static void *_p_InterferenceFunctionHardDiskTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionHardDisk *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_InstrumentTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *) ((Instrument *) x));
 }
@@ -136987,9 +135762,6 @@ static void *_p_RotationYTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_RotationZTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_FormFactorGaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -137038,8 +135810,8 @@ static void *_p_InterferenceFunctionTwinTo_p_IParameterized(void *x, int *SWIGUN
 static void *_p_LayerTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *) ((Layer *) x));
 }
-static void *_p_FormFactorRipple1To_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPyramidTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x));
@@ -137086,9 +135858,6 @@ static void *_p_FTDistribution1DCosineTo_p_IParameterized(void *x, int *SWIGUNUS
 static void *_p_FTDistribution1DGateTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(IFTDistribution1D *) ((FTDistribution1DGate *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_FTDistribution2DVoigtTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(IFTDistribution2D *) ((FTDistribution2DVoigt *) x));
 }
@@ -137116,8 +135885,8 @@ static void *_p_FootprintFactorSquareTo_p_IParameterized(void *x, int *SWIGUNUSE
 static void *_p_FormFactorCone6To_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_IFormFactorDecoratorTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
@@ -137164,11 +135933,8 @@ static void *_p_FormFactorWeightedTo_p_IParameterized(void *x, int *SWIGUNUSEDPA
 static void *_p_FormFactorLorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorLongRipple2LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple1LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
@@ -137239,14 +136005,17 @@ static void *_p_FormFactorDebyeBuecheTo_p_IFormFactor(void *x, int *SWIGUNUSEDPA
 static void *_p_FormFactorTruncatedSpheroidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_FormFactorLongBoxGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
 }
 static void *_p_FormFactorOrnsteinZernikeTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorOrnsteinZernike *) x));
 }
-static void *_p_FormFactorRipple1To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPolygonalSurface *) x));
@@ -137257,9 +136026,6 @@ static void *_p_FormFactorCrystalTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_FormFactorRipple2To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple2 *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_FormFactorFullSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSphere *) x));
 }
@@ -137269,8 +136035,8 @@ static void *_p_FormFactorTruncatedCubeTo_p_IFormFactor(void *x, int *SWIGUNUSED
 static void *_p_FormFactorTruncatedSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
@@ -137287,15 +136053,15 @@ static void *_p_IFormFactorDecoratorTo_p_IFormFactor(void *x, int *SWIGUNUSEDPAR
 static void *_p_FormFactorIcosahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorIcosahedron *) x));
 }
+static void *_p_FormFactorDodecahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
+}
 static void *_p_FormFactorPolyhedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPolyhedron *) x));
 }
 static void *_p_FormFactorCuboctahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
 }
-static void *_p_FormFactorDodecahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
-}
 static void *_p_FormFactorTetrahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
 }
@@ -137320,11 +136086,8 @@ static void *_p_FormFactorDotTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_FormFactorLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorLongRipple2LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple1LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
@@ -137344,9 +136107,6 @@ static void *_p_FormFactorPrism3To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_FormFactorGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -137407,12 +136167,12 @@ static void *_p_FormFactorPrism3To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorTetrahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_FormFactorPolyhedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x));
 }
+static void *_p_FormFactorCuboctahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
+}
 static void *_p_FormFactorDodecahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
 }
@@ -137449,6 +136209,9 @@ static void *_p_FormFactorPolygonalPrismTo_p_ISample(void *x, int *SWIGUNUSEDPAR
 static void *_p_InterferenceFunctionHardDiskTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IInterferenceFunction *) ((InterferenceFunctionHardDisk *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_IdentityRotationTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IRotation *) ((IdentityRotation *) x));
 }
@@ -137476,9 +136239,6 @@ static void *_p_RotationZTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_FormFactorGaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_IFormFactorBornTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((IFormFactorBorn *) x));
 }
@@ -137503,8 +136263,8 @@ static void *_p_InterferenceFunctionTwinTo_p_ISample(void *x, int *SWIGUNUSEDPAR
 static void *_p_LayerTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *)  ((Layer *) x));
 }
-static void *_p_FormFactorRipple1To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPyramidTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x));
@@ -137527,17 +136287,14 @@ static void *_p_ParticleCompositionTo_p_ISample(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorSphereUniformRadiusTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_IInterferenceFunctionTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *)  ((IInterferenceFunction *) x));
 }
 static void *_p_FormFactorCone6To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_IFormFactorDecoratorTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((IFormFactorDecorator *) x));
@@ -137572,11 +136329,8 @@ static void *_p_FormFactorWeightedTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_FormFactorLongBoxLorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
-static void *_p_FormFactorLongRipple1LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple2LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
@@ -137695,6 +136449,9 @@ static void *_p_FormFactorPrism3To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemor
 static void *_p_DistributionTrapezoidTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IDistribution1D *) ((DistributionTrapezoid *) x));
 }
+static void *_p_FormFactorTetrahedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
+}
 static void *_p_FormFactorIcosahedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorIcosahedron *) x));
 }
@@ -137707,9 +136464,6 @@ static void *_p_FormFactorCuboctahedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_FormFactorPolyhedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x));
 }
-static void *_p_FormFactorTetrahedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
-}
 static void *_p_FormFactorDebyeBuecheTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDebyeBueche *) x));
 }
@@ -137767,6 +136521,9 @@ static void *_p_DistributionLogNormalTo_p_INode(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_InterferenceFunctionHardDiskTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IInterferenceFunction *) ((InterferenceFunctionHardDisk *) x));
 }
+static void *_p_FormFactorRipple1BoxTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Box *) x));
+}
 static void *_p_InstrumentTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *)  ((Instrument *) x));
 }
@@ -137806,9 +136563,6 @@ static void *_p_RotationYTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_RotationZTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_FormFactorLongRipple2GaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
-}
 static void *_p_FormFactorGaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -137854,8 +136608,8 @@ static void *_p_InterferenceFunctionTwinTo_p_INode(void *x, int *SWIGUNUSEDPARM(
 static void *_p_LayerTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *) ((Layer *) x));
 }
-static void *_p_FormFactorRipple1To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_ProfileRipple1To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple1 *) x));
 }
 static void *_p_FormFactorPyramidTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x));
@@ -137902,9 +136656,6 @@ static void *_p_FTDistribution1DCosineTo_p_INode(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FTDistribution1DGateTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IFTDistribution1D *) ((FTDistribution1DGate *) x));
 }
-static void *_p_FormFactorLongBoxTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBox *) x));
-}
 static void *_p_FTDistribution2DVoigtTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IFTDistribution2D *) ((FTDistribution2DVoigt *) x));
 }
@@ -137932,8 +136683,8 @@ static void *_p_FootprintFactorSquareTo_p_INode(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorCone6To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorLongRipple1GaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x));
+static void *_p_FormFactorRipple1GaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
 static void *_p_IFormFactorDecoratorTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
@@ -137980,11 +136731,8 @@ static void *_p_FormFactorWeightedTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorLorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorLongRipple2LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
-}
-static void *_p_FormFactorLongRipple1LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple1Lorentz *) x));
+static void *_p_FormFactorRipple1LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Lorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
@@ -138285,13 +137033,8 @@ static swig_type_info _swigt__p_FormFactorFullSpheroid = {"_p_FormFactorFullSphe
 static swig_type_info _swigt__p_FormFactorGauss = {"_p_FormFactorGauss", "FormFactorGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorHemiEllipsoid = {"_p_FormFactorHemiEllipsoid", "FormFactorHemiEllipsoid *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorIcosahedron = {"_p_FormFactorIcosahedron", "FormFactorIcosahedron *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorLongBox = {"_p_FormFactorLongBox", "FormFactorLongBox *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLongBoxGauss = {"_p_FormFactorLongBoxGauss", "FormFactorLongBoxGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLongBoxLorentz = {"_p_FormFactorLongBoxLorentz", "FormFactorLongBoxLorentz *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorLongRipple1Gauss = {"_p_FormFactorLongRipple1Gauss", "FormFactorLongRipple1Gauss *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorLongRipple1Lorentz = {"_p_FormFactorLongRipple1Lorentz", "FormFactorLongRipple1Lorentz *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorLongRipple2Gauss = {"_p_FormFactorLongRipple2Gauss", "FormFactorLongRipple2Gauss *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorLongRipple2Lorentz = {"_p_FormFactorLongRipple2Lorentz", "FormFactorLongRipple2Lorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLorentz = {"_p_FormFactorLorentz", "FormFactorLorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorOrnsteinZernike = {"_p_FormFactorOrnsteinZernike", "FormFactorOrnsteinZernike *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPolygonalPrism = {"_p_FormFactorPolygonalPrism", "FormFactorPolygonalPrism *", 0, 0, (void*)0, 0};
@@ -138300,7 +137043,9 @@ static swig_type_info _swigt__p_FormFactorPolyhedron = {"_p_FormFactorPolyhedron
 static swig_type_info _swigt__p_FormFactorPrism3 = {"_p_FormFactorPrism3", "FormFactorPrism3 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPrism6 = {"_p_FormFactorPrism6", "FormFactorPrism6 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPyramid = {"_p_FormFactorPyramid", "FormFactorPyramid *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorRipple1 = {"_p_FormFactorRipple1", "FormFactorRipple1 *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorRipple1Box = {"_p_FormFactorRipple1Box", "FormFactorRipple1Box *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorRipple1Gauss = {"_p_FormFactorRipple1Gauss", "FormFactorRipple1Gauss *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorRipple1Lorentz = {"_p_FormFactorRipple1Lorentz", "FormFactorRipple1Lorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorRipple2 = {"_p_FormFactorRipple2", "FormFactorRipple2 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorSphereGaussianRadius = {"_p_FormFactorSphereGaussianRadius", "FormFactorSphereGaussianRadius *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorSphereLogNormalRadius = {"_p_FormFactorSphereLogNormalRadius", "FormFactorSphereLogNormalRadius *", 0, 0, (void*)0, 0};
@@ -138419,6 +137164,7 @@ static swig_type_info _swigt__p_PolygonalTopology = {"_p_PolygonalTopology", "Po
 static swig_type_info _swigt__p_PolyhedralEdge = {"_p_PolyhedralEdge", "PolyhedralEdge *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PolyhedralFace = {"_p_PolyhedralFace", "PolyhedralFace *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PolyhedralTopology = {"_p_PolyhedralTopology", "PolyhedralTopology *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_ProfileRipple1 = {"_p_ProfileRipple1", "ProfileRipple1 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ProgressHandler__Callback_t = {"_p_ProgressHandler__Callback_t", "ProgressHandler::Callback_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PyBuilderCallback = {"_p_PyBuilderCallback", "PyBuilderCallback *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PyObserverCallback = {"_p_PyObserverCallback", "PyObserverCallback *", 0, 0, (void*)0, 0};
@@ -138628,13 +137374,8 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorGauss,
   &_swigt__p_FormFactorHemiEllipsoid,
   &_swigt__p_FormFactorIcosahedron,
-  &_swigt__p_FormFactorLongBox,
   &_swigt__p_FormFactorLongBoxGauss,
   &_swigt__p_FormFactorLongBoxLorentz,
-  &_swigt__p_FormFactorLongRipple1Gauss,
-  &_swigt__p_FormFactorLongRipple1Lorentz,
-  &_swigt__p_FormFactorLongRipple2Gauss,
-  &_swigt__p_FormFactorLongRipple2Lorentz,
   &_swigt__p_FormFactorLorentz,
   &_swigt__p_FormFactorOrnsteinZernike,
   &_swigt__p_FormFactorPolygonalPrism,
@@ -138643,7 +137384,9 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorPrism3,
   &_swigt__p_FormFactorPrism6,
   &_swigt__p_FormFactorPyramid,
-  &_swigt__p_FormFactorRipple1,
+  &_swigt__p_FormFactorRipple1Box,
+  &_swigt__p_FormFactorRipple1Gauss,
+  &_swigt__p_FormFactorRipple1Lorentz,
   &_swigt__p_FormFactorRipple2,
   &_swigt__p_FormFactorSphereGaussianRadius,
   &_swigt__p_FormFactorSphereLogNormalRadius,
@@ -138762,6 +137505,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_PolyhedralEdge,
   &_swigt__p_PolyhedralFace,
   &_swigt__p_PolyhedralTopology,
+  &_swigt__p_ProfileRipple1,
   &_swigt__p_ProgressHandler__Callback_t,
   &_swigt__p_PyBuilderCallback,
   &_swigt__p_PyObserverCallback,
@@ -138971,13 +137715,8 @@ static swig_cast_info _swigc__p_FormFactorFullSpheroid[] = {  {&_swigt__p_FormFa
 static swig_cast_info _swigc__p_FormFactorGauss[] = {  {&_swigt__p_FormFactorGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorHemiEllipsoid[] = {  {&_swigt__p_FormFactorHemiEllipsoid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorIcosahedron[] = {  {&_swigt__p_FormFactorIcosahedron, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorLongBox[] = {  {&_swigt__p_FormFactorLongBox, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLongBoxGauss[] = {  {&_swigt__p_FormFactorLongBoxGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLongBoxLorentz[] = {  {&_swigt__p_FormFactorLongBoxLorentz, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorLongRipple1Gauss[] = {  {&_swigt__p_FormFactorLongRipple1Gauss, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorLongRipple1Lorentz[] = {  {&_swigt__p_FormFactorLongRipple1Lorentz, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorLongRipple2Gauss[] = {  {&_swigt__p_FormFactorLongRipple2Gauss, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorLongRipple2Lorentz[] = {  {&_swigt__p_FormFactorLongRipple2Lorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLorentz[] = {  {&_swigt__p_FormFactorLorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorOrnsteinZernike[] = {  {&_swigt__p_FormFactorOrnsteinZernike, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPolygonalPrism[] = {  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_FormFactorPolygonalPrism, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_FormFactorPolygonalPrism, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, 0, 0, 0},{0, 0, 0, 0}};
@@ -138986,7 +137725,9 @@ static swig_cast_info _swigc__p_FormFactorPolyhedron[] = {  {&_swigt__p_FormFact
 static swig_cast_info _swigc__p_FormFactorPrism3[] = {  {&_swigt__p_FormFactorPrism3, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPrism6[] = {  {&_swigt__p_FormFactorPrism6, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPyramid[] = {  {&_swigt__p_FormFactorPyramid, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorRipple1[] = {  {&_swigt__p_FormFactorRipple1, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorRipple1Box[] = {  {&_swigt__p_FormFactorRipple1Box, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorRipple1Gauss[] = {  {&_swigt__p_FormFactorRipple1Gauss, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorRipple1Lorentz[] = {  {&_swigt__p_FormFactorRipple1Lorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorRipple2[] = {  {&_swigt__p_FormFactorRipple2, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorSphereGaussianRadius[] = {  {&_swigt__p_FormFactorSphereGaussianRadius, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorSphereLogNormalRadius[] = {  {&_swigt__p_FormFactorSphereLogNormalRadius, 0, 0, 0},{0, 0, 0, 0}};
@@ -139006,7 +137747,7 @@ static swig_cast_info _swigc__p_IAbstractParticle[] = {  {&_swigt__p_ParticleCom
 static swig_cast_info _swigc__p_IAxis[] = {  {&_swigt__p_IAxis, 0, 0, 0},  {&_swigt__p_VariableBinAxis, _p_VariableBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_ConstKBinAxis, _p_ConstKBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_CustomBinAxis, _p_CustomBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_FixedBinAxis, _p_FixedBinAxisTo_p_IAxis, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IBackground[] = {  {&_swigt__p_IBackground, 0, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IBackground, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IBackground, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IChiSquaredModule[] = {  {&_swigt__p_IChiSquaredModule, 0, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_IChiSquaredModule, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGate, _p_RangedDistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_IUnitConverter, _p_IUnitConverterTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistribution, _p_RangedDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGaussian, _p_RangedDistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionCosine, _p_RangedDistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLogNormal, _p_RangedDistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLorentz, _p_RangedDistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGate, _p_RangedDistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_IUnitConverter, _p_IUnitConverterTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistribution, _p_RangedDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGaussian, _p_RangedDistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionCosine, _p_RangedDistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLogNormal, _p_RangedDistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLorentz, _p_RangedDistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IClusteredParticles[] = {  {&_swigt__p_IClusteredParticles, 0, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IClusteredParticles, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector[] = {  {&_swigt__p_IDetector, 0, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IDetector, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
@@ -139019,8 +137760,8 @@ static swig_cast_info _swigc__p_IFTDistribution2D[] = {  {&_swigt__p_FTDistribut
 static swig_cast_info _swigc__p_IFactoryT_std__string_IMultiLayerBuilder_t[] = {  {&_swigt__p_IFactoryT_std__string_IMultiLayerBuilder_t, 0, 0, 0},  {&_swigt__p_SampleBuilderFactory, _p_SampleBuilderFactoryTo_p_IFactoryT_std__string_IMultiLayerBuilder_t, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFactoryT_std__string_Simulation_t[] = {  {&_swigt__p_SimulationFactory, _p_SimulationFactoryTo_p_IFactoryT_std__string_Simulation_t, 0, 0},  {&_swigt__p_IFactoryT_std__string_Simulation_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFootprintFactor[] = {  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_IFootprintFactor, 0, 0},  {&_swigt__p_IFootprintFactor, 0, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_IFootprintFactor, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactor[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactor[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormFactorDecorator[] = {  {&_swigt__p_IFormFactorDecorator, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IHistogram[] = {  {&_swigt__p_IHistogram, 0, 0, 0},  {&_swigt__p_Histogram2D, _p_Histogram2DTo_p_IHistogram, 0, 0},  {&_swigt__p_Histogram1D, _p_Histogram1DTo_p_IHistogram, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IIntensityFunction[] = {  {&_swigt__p_IntensityFunctionSqrt, _p_IntensityFunctionSqrtTo_p_IIntensityFunction, 0, 0},  {&_swigt__p_IIntensityFunction, 0, 0, 0},  {&_swigt__p_IntensityFunctionLog, _p_IntensityFunctionLogTo_p_IIntensityFunction, 0, 0},{0, 0, 0, 0}};
@@ -139029,19 +137770,19 @@ static swig_cast_info _swigc__p_IInterferenceFunction[] = {  {&_swigt__p_Interfe
 static swig_cast_info _swigc__p_ILatticeOrientation[] = {  {&_swigt__p_ILatticeOrientation, 0, 0, 0},  {&_swigt__p_MillerIndexOrientation, _p_MillerIndexOrientationTo_p_ILatticeOrientation, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ILayout[] = {  {&_swigt__p_ILayout, 0, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ILayout, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMultiLayerBuilder[] = {  {&_swigt__p_IMultiLayerBuilder, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_INamed, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_INamed, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INamed, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_INamed, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INamed, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_INamed, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INamed, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INamed, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INamed, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INode, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INode, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INode, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INode, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INode, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INode, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INode, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INode, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INode, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_INode, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INode, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INode, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INode, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INode, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_INamed, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_INamed, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INamed, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_INamed, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INamed, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_INamed, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INamed, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_INamed, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INamed, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INamed, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INode, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INode, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INode, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INode, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INode, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INode, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INode, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INode, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INode, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INode, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INode, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INode, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_INode, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INode, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INode, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INodeVisitor[] = {  {&_swigt__p_INodeVisitor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObservable[] = {  {&_swigt__p_IObservable, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObserver[] = {  {&_swigt__p_IObserver, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParameterT_double_t[] = {  {&_swigt__p_IParameterT_double_t, 0, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_IParameterT_double_t, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IParameterized[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IParameterized, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IParameterized, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IParameterized, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0},  {&_swigt__p_IParameterized, 0, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IParameterized, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IParameterized, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IParameterized[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IParameterized, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IParameterized, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IParameterized, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0},  {&_swigt__p_IParameterized, 0, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IParameterized, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IParameterized, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParticle[] = {  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParticle, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParticle, 0, 0},  {&_swigt__p_IParticle, 0, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParticle, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParticle, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPeakShape[] = {  {&_swigt__p_IPeakShape, 0, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IPeakShape, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPixel[] = {  {&_swigt__p_RectangularPixel, _p_RectangularPixelTo_p_IPixel, 0, 0},  {&_swigt__p_SphericalPixel, _p_SphericalPixelTo_p_IPixel, 0, 0},  {&_swigt__p_IPixel, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IResolutionFunction2D[] = {  {&_swigt__p_IResolutionFunction2D, 0, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IResolutionFunction2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IRotation[] = {  {&_swigt__p_RotationY, _p_RotationYTo_p_IRotation, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IRotation, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IRotation, 0, 0},  {&_swigt__p_IRotation, 0, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IRotation, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IRotation, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ISample, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBox, _p_FormFactorLongBoxTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ISample, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ISample, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ISample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISelectionRule[] = {  {&_swigt__p_ISelectionRule, 0, 0, 0},  {&_swigt__p_SimpleSelectionRule, _p_SimpleSelectionRuleTo_p_ISelectionRule, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IShape2D[] = {  {&_swigt__p_Polygon, _p_PolygonTo_p_IShape2D, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_IShape2D, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_IShape2D, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_IShape2D, 0, 0},  {&_swigt__p_IShape2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISpecularScan[] = {  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ISpecularScan, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ISpecularScan, 0, 0},  {&_swigt__p_ISpecularScan, 0, 0, 0},{0, 0, 0, 0}};
@@ -139105,6 +137846,7 @@ static swig_cast_info _swigc__p_PolygonalTopology[] = {  {&_swigt__p_PolygonalTo
 static swig_cast_info _swigc__p_PolyhedralEdge[] = {  {&_swigt__p_PolyhedralEdge, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PolyhedralFace[] = {  {&_swigt__p_PolyhedralFace, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PolyhedralTopology[] = {  {&_swigt__p_PolyhedralTopology, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ProfileRipple1[] = {  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ProfileRipple1, 0, 0},  {&_swigt__p_ProfileRipple1, 0, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ProfileRipple1, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ProfileRipple1, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ProgressHandler__Callback_t[] = {  {&_swigt__p_ProgressHandler__Callback_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PyBuilderCallback[] = {  {&_swigt__p_PyBuilderCallback, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PyObserverCallback[] = {  {&_swigt__p_PyObserverCallback, 0, 0, 0},{0, 0, 0, 0}};
@@ -139314,13 +138056,8 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorGauss,
   _swigc__p_FormFactorHemiEllipsoid,
   _swigc__p_FormFactorIcosahedron,
-  _swigc__p_FormFactorLongBox,
   _swigc__p_FormFactorLongBoxGauss,
   _swigc__p_FormFactorLongBoxLorentz,
-  _swigc__p_FormFactorLongRipple1Gauss,
-  _swigc__p_FormFactorLongRipple1Lorentz,
-  _swigc__p_FormFactorLongRipple2Gauss,
-  _swigc__p_FormFactorLongRipple2Lorentz,
   _swigc__p_FormFactorLorentz,
   _swigc__p_FormFactorOrnsteinZernike,
   _swigc__p_FormFactorPolygonalPrism,
@@ -139329,7 +138066,9 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorPrism3,
   _swigc__p_FormFactorPrism6,
   _swigc__p_FormFactorPyramid,
-  _swigc__p_FormFactorRipple1,
+  _swigc__p_FormFactorRipple1Box,
+  _swigc__p_FormFactorRipple1Gauss,
+  _swigc__p_FormFactorRipple1Lorentz,
   _swigc__p_FormFactorRipple2,
   _swigc__p_FormFactorSphereGaussianRadius,
   _swigc__p_FormFactorSphereLogNormalRadius,
@@ -139448,6 +138187,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_PolyhedralEdge,
   _swigc__p_PolyhedralFace,
   _swigc__p_PolyhedralTopology,
+  _swigc__p_ProfileRipple1,
   _swigc__p_ProgressHandler__Callback_t,
   _swigc__p_PyBuilderCallback,
   _swigc__p_PyObserverCallback,