diff --git a/Core/Basics/BornAgainNamespace.h b/Core/Basics/BornAgainNamespace.h
index 6275977adae03145dd0506775d4ea6fe9843bbf1..2da9e6b679c97c04679ba7a58d43f4b9618a56ad 100644
--- a/Core/Basics/BornAgainNamespace.h
+++ b/Core/Basics/BornAgainNamespace.h
@@ -107,12 +107,14 @@ const std::string FFOrnsteinZernikeType = "FormFactorOrnsteinZernike";
 const std::string FFPrism3Type = "Prism3";
 const std::string FFPrism6Type = "Prism6";
 const std::string FFPyramidType = "Pyramid";
+const std::string FFBarGaussType = "BarGauss";
+const std::string FFBarLorentzType = "BarLorentz";
 const std::string FFRipple1BoxType = "Ripple1Box";
 const std::string FFRipple1GaussType = "Ripple1Gauss";
 const std::string FFRipple1LorentzType = "Ripple1Lorentz";
-const std::string FFRipple2Type = "Ripple2";
-const std::string FFLongRipple2GaussType = "LongRipple2Gauss";
-const std::string FFLongRipple2LorentzType = "LongRipple2Lorentz";
+const std::string FFRipple2BoxType = "Ripple2Box";
+const std::string FFRipple2GaussType = "Ripple2Gauss";
+const std::string FFRipple2LorentzType = "Ripple2Lorentz";
 const std::string FFTetrahedronType = "Tetrahedron";
 const std::string FFTruncatedCubeType = "TruncatedCube";
 const std::string FFTruncatedSphereType = "TruncatedSphere";
diff --git a/Core/HardParticle/FormFactorBar.cpp b/Core/HardParticle/FormFactorBar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7df8a6c856a8abbaf0f946d4c7ef36ba56d6354c
--- /dev/null
+++ b/Core/HardParticle/FormFactorBar.cpp
@@ -0,0 +1,66 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/FormFactorBar.cpp
+//! @brief     Implements classes FormFactorBar*.
+//!
+//! @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 "FormFactorBar.h"
+#include "Ripples.h"
+
+// ************************************************************************** //
+// class FormFactorBarGauss
+// ************************************************************************** //
+
+FormFactorBarGauss::FormFactorBarGauss(double length, double width, double height)
+    : ProfileBar{length, width, height}
+{
+    setName(BornAgain::FFBarGaussType);
+}
+
+FormFactorBarGauss* FormFactorBarGauss::clone() const
+{
+    return new FormFactorBarGauss(m_length, m_width, m_height);
+}
+
+void FormFactorBarGauss::accept(INodeVisitor* visitor) const
+{
+    visitor->visit(this);
+}
+
+complex_t FormFactorBarGauss::factor_x(complex_t qx) const
+{
+    return ripples::factor_x_Gauss(qx, m_length);
+}
+
+// ************************************************************************** //
+// class FormFactorBarLorentz
+// ************************************************************************** //
+
+FormFactorBarLorentz::FormFactorBarLorentz(double length, double width, double height)
+    : ProfileBar{length, width, height}
+{
+    setName(BornAgain::FFBarLorentzType);
+}
+
+FormFactorBarLorentz* FormFactorBarLorentz::clone() const
+{
+    return new FormFactorBarLorentz(m_length, m_width, m_height);
+}
+
+void FormFactorBarLorentz::accept(INodeVisitor* visitor) const
+{
+    visitor->visit(this);
+}
+
+complex_t FormFactorBarLorentz::factor_x(complex_t qx) const
+{
+    return ripples::factor_x_Lorentz(qx, m_length);
+}
diff --git a/Core/HardParticle/FormFactorBar.h b/Core/HardParticle/FormFactorBar.h
new file mode 100644
index 0000000000000000000000000000000000000000..316cb23d6471751919fd397d779f38db40ac4739
--- /dev/null
+++ b/Core/HardParticle/FormFactorBar.h
@@ -0,0 +1,46 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/FormFactorBar.h
+//! @brief     Defines classes FormFactorBar*.
+//!
+//! @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 FORMFACTORBAR_H
+#define FORMFACTORBAR_H
+
+#include "ProfileBar.h"
+
+//! The form factor of an elongated bar, with Gaussian profile in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorBarGauss : public ProfileBar
+{
+public:
+    FormFactorBarGauss(double length, double width, double height);
+    FormFactorBarGauss* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
+
+private:
+    complex_t factor_x(complex_t qx) const override final;
+};
+
+//! The form factor of an elongated, with Lorentz form factor in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorBarLorentz : public ProfileBar
+{
+public:
+    FormFactorBarLorentz(double length, double width, double height);
+    FormFactorBarLorentz* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
+
+private:
+    complex_t factor_x(complex_t qx) const override final;
+};
+
+#endif // FORMFACTORBAR_H
diff --git a/Core/HardParticle/FormFactorLongRipple2Gauss.cpp b/Core/HardParticle/FormFactorLongRipple2Gauss.cpp
deleted file mode 100644
index f17399b9906f4ccc2afa2ed3195f3fc8fb6fad9e..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple2Gauss.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple2Gauss.cpp
-//! @brief     Implements class FormFactorLongRipple2Gauss.
-//!
-//! @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 "FormFactorLongRipple2Gauss.h"
-#include "BornAgainNamespace.h"
-#include "Box.h"
-#include "Exceptions.h"
-#include "RealParameter.h"
-
-FormFactorLongRipple2Gauss::FormFactorLongRipple2Gauss(double length, double width, double height,
-                                                       double asymmetry)
-    : m_width(width), m_height(height), m_length(length), m_d(asymmetry)
-{
-    setName(BornAgain::FFLongRipple2GaussType);
-    check_initialization();
-    registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::AsymmetryLength, &m_d).setUnit(BornAgain::UnitsNm);
-    onChange();
-}
-
-bool FormFactorLongRipple2Gauss::check_initialization() const
-{
-    bool result(true);
-    std::string message;
-    if (-1 * m_width > 2. * m_d) {
-        result = false;
-        message = std::string("Check for '-1*width <= 2.*asymmetry' failed.");
-    }
-    if (m_width < 2. * m_d) {
-        result = false;
-        message = std::string("Check for 'width >= 2.*asymmetry' failed.");
-    }
-    if (m_height <= 0) {
-        result = false;
-        message = std::string("Check for 'height > 0' failed.");
-    }
-
-    if (!result) {
-        std::ostringstream ostr;
-        ostr << "FormFactorLongRipple2Gauss() -> Error in class initialization with parameters ";
-        ostr << " width:" << m_width;
-        ostr << " height:" << m_height;
-        ostr << " length:" << m_length;
-        ostr << " asymmetry:" << m_d << "\n\n";
-        ostr << message;
-        throw Exceptions::ClassInitializationException(ostr.str());
-    }
-    return result;
-}
-
-double FormFactorLongRipple2Gauss::radialExtension() const
-{
-    return (m_width + m_length) / 4.0;
-}
-
-//! Complex form factor.
-complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const
-{
-    m_q = q;
-
-    complex_t qxL2 = std::pow(m_length * q.x(), 2) / 2.0;
-    complex_t factor = m_length * std::exp(-qxL2) * m_width;
-    complex_t result = 0;
-    complex_t iqzH = mul_I(q.z() * m_height);
-    complex_t iqyW = mul_I(q.y() * m_width);
-    complex_t aaa = 2.0 * (m_d * q.y() + m_height * q.z());
-
-    if (0.0 == q.y() && 0.0 == q.z())
-        result = m_height * 0.5;
-    else if (0.0 == q.y())
-        result = (1.0 - std::exp(iqzH) + iqzH) / (m_height * q.z() * q.z());
-    else if (1.0 == aaa / (q.y() * m_width))
-        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) - iqyW)
-                 / (q.y() * q.y() * m_width * m_width);
-    else if (-1.0 == aaa / (q.y() * m_width))
-        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) + iqyW)
-                 / (q.y() * q.y() * m_width * m_width);
-    else {
-        complex_t iHqzdqy = complex_t(0.0, 1.0) * (q.z() * m_height + q.y() * m_d);
-        complex_t Hqzdqy = q.z() * m_height + q.y() * m_d;
-        result = std::cos(q.y() * m_width * 0.5)
-                 + 2.0 * iHqzdqy * std::sin(q.y() * m_width * 0.5) / (m_width * q.y());
-        result = result * std::exp(-1.0 * iHqzdqy) - 1.0;
-        result = result * 4.0 * m_height * std::exp(iqzH)
-                 / (4.0 * Hqzdqy * Hqzdqy - q.y() * q.y() * m_width * m_width);
-    }
-    return factor * result;
-}
-
-void FormFactorLongRipple2Gauss::onChange()
-{
-    mP_shape.reset(new Box(m_length, m_width, m_height));
-}
diff --git a/Core/HardParticle/FormFactorLongRipple2Gauss.h b/Core/HardParticle/FormFactorLongRipple2Gauss.h
deleted file mode 100644
index 4c6f15fe805511722364f184094537a2bbfbcc6d..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple2Gauss.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple2Gauss.h
-//! @brief     Defines class FormFactorLongRipple2Gauss.
-//!
-//! @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 FORMFACTORLONGRIPPLE2GAUSS_H
-#define FORMFACTORLONGRIPPLE2GAUSS_H
-
-#include "IFormFactorBorn.h"
-
-//! The form factor for a triangular ripple.
-//! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorLongRipple2Gauss : public IFormFactorBorn
-{
-public:
-    //! @brief FormFactorLongRipple2Gauss constructor
-    //! @param length of Ripple2
-    //! @param width of triangular cross section
-    //! @param height of triangular cross section
-    //! @param asymmetry length of triangular cross section
-    FormFactorLongRipple2Gauss(double length, double width, double height, double asymmetry);
-
-    FormFactorLongRipple2Gauss* clone() const override final
-    {
-        return new FormFactorLongRipple2Gauss(m_length, m_width, m_height, m_d);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
-
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-    double getLength() const { return m_length; }
-    double getAsymmetry() const { return m_d; }
-
-    double radialExtension() const override final;
-
-    complex_t evaluate_for_q(cvector_t q) const override final;
-
-protected:
-    void onChange() override final;
-
-private:
-    bool check_initialization() const;
-
-    double m_width;
-    double m_height;
-    double m_length;
-    double m_d;
-    mutable cvector_t m_q;
-};
-
-#endif // FORMFACTORLONGRIPPLE2GAUSS_H
diff --git a/Core/HardParticle/FormFactorLongRipple2Lorentz.cpp b/Core/HardParticle/FormFactorLongRipple2Lorentz.cpp
deleted file mode 100644
index 2addea46b0e8bcecfbf643a220d1ed76aa94b9f4..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple2Lorentz.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple2Lorentz.cpp
-//! @brief     Implements class FormFactorRipple2.
-//!
-//! @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 "FormFactorLongRipple2Lorentz.h"
-#include "BornAgainNamespace.h"
-#include "Box.h"
-#include "Exceptions.h"
-#include "RealParameter.h"
-
-//! @param length of Ripple2
-//! @param width of triangular cross section
-//! @param height of triangular cross section
-//! @param asymmetry length of triangular cross section
-FormFactorLongRipple2Lorentz::FormFactorLongRipple2Lorentz(double length, double width,
-                                                           double height, double asymetry)
-    : m_length(length), m_width(width), m_height(height), m_d(asymetry)
-{
-    setName(BornAgain::FFLongRipple2LorentzType);
-    registerParameter(BornAgain::Width, &m_width).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::Length, &m_length).setUnit(BornAgain::UnitsNm).setNonnegative();
-    registerParameter(BornAgain::AsymmetryLength, &m_d).setUnit(BornAgain::UnitsNm);
-    onChange();
-}
-
-void FormFactorLongRipple2Lorentz::check_parameters() const
-{
-    bool ok = true;
-    std::string message;
-    if (-1 * m_width > 2. * m_d) {
-        ok = false;
-        message = std::string("Check for '-1*width <= 2.*asymmetry' failed.");
-    }
-    if (m_width < 2. * m_d) {
-        ok = false;
-        message = std::string("Check for 'width >= 2.*asymmetry' failed.");
-    }
-    if (m_height <= 0) {
-        ok = false;
-        message = std::string("Check for 'height > 0' failed.");
-    }
-
-    if (ok)
-        return;
-
-    std::ostringstream ostr;
-    ostr << "FormFactorLongRipple2Lorentz() -> Error in class initialization with parameters ";
-    ostr << " width:" << m_width;
-    ostr << " height:" << m_height;
-    ostr << " length:" << m_length;
-    ostr << " asymmetry:" << m_d << "\n\n";
-    ostr << message;
-    throw Exceptions::ClassInitializationException(ostr.str());
-}
-
-double FormFactorLongRipple2Lorentz::radialExtension() const
-{
-    return (m_width + m_length) / 4.0;
-}
-
-//! Complex form factor.
-complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const
-{
-    check_parameters();
-
-    m_q = q;
-
-    complex_t qxL2 = 2.5 * std::pow(m_length * q.x(), 2);
-    complex_t factor = m_length / (1.0 + qxL2) * m_width;
-
-    complex_t result = 0;
-    complex_t iqzH = mul_I(q.z() * m_height);
-    complex_t iqyW = mul_I(q.y() * m_width);
-    complex_t aaa = 2.0 * (m_d * q.y() + m_height * q.z());
-
-    if (0.0 == q.y() && 0.0 == q.z())
-        result = m_height * 0.5;
-    else if (0.0 == q.y())
-        result = (1.0 - std::exp(iqzH) + iqzH) / (m_height * q.z() * q.z());
-    else if (1.0 == aaa / (q.y() * m_width))
-        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) - iqyW)
-                 / (q.y() * q.y() * m_width * m_width);
-    else if (-1.0 == aaa / (q.y() * m_width))
-        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) + iqyW)
-                 / (q.y() * q.y() * m_width * m_width);
-    else {
-        complex_t iHqzdqy = complex_t(0.0, 1.0) * (q.z() * m_height + q.y() * m_d);
-        complex_t Hqzdqy = q.z() * m_height + q.y() * m_d;
-        result = std::cos(q.y() * m_width * 0.5)
-                 + 2.0 * iHqzdqy * std::sin(q.y() * m_width * 0.5) / (m_width * q.y());
-        result = result * std::exp(-1.0 * iHqzdqy) - 1.0;
-        result = result * 4.0 * m_height * std::exp(iqzH)
-                 / (4.0 * Hqzdqy * Hqzdqy - q.y() * q.y() * m_width * m_width);
-    }
-    return factor * result;
-}
-
-void FormFactorLongRipple2Lorentz::onChange()
-{
-    mP_shape.reset(new Box(m_length, m_width, m_height));
-}
diff --git a/Core/HardParticle/FormFactorLongRipple2Lorentz.h b/Core/HardParticle/FormFactorLongRipple2Lorentz.h
deleted file mode 100644
index b70cd16655097cc0fd32fc81a532018d93c4ee6a..0000000000000000000000000000000000000000
--- a/Core/HardParticle/FormFactorLongRipple2Lorentz.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/HardParticle/FormFactorLongRipple2Lorentz.h
-//! @brief     Defines class FormFactorLongRipple2Lorentz.
-//!
-//! @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 FORMFACTORLONGRIPPLE2LORENTZ_H
-#define FORMFACTORLONGRIPPLE2LORENTZ_H
-
-#include "IFormFactorBorn.h"
-
-//! The form factor for a triangular ripple.
-//! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorLongRipple2Lorentz : public IFormFactorBorn
-{
-public:
-    FormFactorLongRipple2Lorentz(double length, double width, double height, double asymmetry);
-
-    FormFactorLongRipple2Lorentz* clone() const override final
-    {
-        return new FormFactorLongRipple2Lorentz(m_length, m_width, m_height, m_d);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
-
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-    double getLength() const { return m_length; }
-    double getAsymmetry() const { return m_d; }
-
-    double radialExtension() const override final;
-
-    complex_t evaluate_for_q(cvector_t q) const override final;
-
-protected:
-    void onChange() override final;
-
-private:
-    void check_parameters() const;
-
-    double m_length;
-    double m_width;
-    double m_height;
-    double m_d;
-    mutable cvector_t m_q;
-};
-
-#endif // FORMFACTORLONGRIPPLE2LORENTZ_H
diff --git a/Core/HardParticle/FormFactorRipple2.cpp b/Core/HardParticle/FormFactorRipple2.cpp
index 50a70d831c466ba083a32b32fc61a2511a79a076..d8b65086e9418340ccd588033429120d46fcd0ba 100644
--- a/Core/HardParticle/FormFactorRipple2.cpp
+++ b/Core/HardParticle/FormFactorRipple2.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/HardParticle/FormFactorRipple2.cpp
-//! @brief     Implements class FormFactorRipple2.
+//! @brief     Implements classes FormFactorRipple2*.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -13,96 +13,82 @@
 // ************************************************************************** //
 
 #include "FormFactorRipple2.h"
-#include "BornAgainNamespace.h"
-#include "Exceptions.h"
-#include "MathFunctions.h"
-#include "RealParameter.h"
-#include "RippleSawtooth.h"
-
-//! @brief Constructor of a triangular 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
-//! @param asymmetry: asymmetry length of the triangular profile in nanometers
-FormFactorRipple2::FormFactorRipple2(double length, double width, double height, double asymmetry)
-    : m_length(length), m_width(width), m_height(height), m_d(asymmetry)
+#include "Ripples.h"
+
+// ************************************************************************** //
+// class FormFactorRipple2Box
+// ************************************************************************** //
+
+FormFactorRipple2Box::FormFactorRipple2Box(
+    double length, double width, double height, double asymmetry)
+    : ProfileRipple2{length, width, height, asymmetry}
+{
+    setName(BornAgain::FFRipple2BoxType);
+}
+
+FormFactorRipple2Box* FormFactorRipple2Box::clone() const
+{
+    return new FormFactorRipple2Box(m_length, m_width, m_height, m_asymmetry);
+}
+
+void FormFactorRipple2Box::accept(INodeVisitor* visitor) const
+{
+    visitor->visit(this);
+}
+
+complex_t FormFactorRipple2Box::factor_x(complex_t qx) const
 {
-    setName(BornAgain::FFRipple2Type);
-    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();
-    registerParameter(BornAgain::AsymmetryLength, &m_d).setUnit(BornAgain::UnitsNm);
-    onChange();
+    return ripples::factor_x_box(qx, m_length);
 }
 
-double FormFactorRipple2::radialExtension() const
+// ************************************************************************** //
+// class FormFactorRipple2Gauss
+// ************************************************************************** //
+
+FormFactorRipple2Gauss::FormFactorRipple2Gauss(
+    double length, double width, double height, double asymmetry)
+    : ProfileRipple2{length, width, height, asymmetry}
+{
+    setName(BornAgain::FFRipple2GaussType);
+}
+
+FormFactorRipple2Gauss* FormFactorRipple2Gauss::clone() const
+{
+    return new FormFactorRipple2Gauss(m_length, m_width, m_height, m_asymmetry);
+}
+
+void FormFactorRipple2Gauss::accept(INodeVisitor* visitor) const
+{
+    visitor->visit(this);
+}
+
+complex_t FormFactorRipple2Gauss::factor_x(complex_t qx) const
+{
+    return ripples::factor_x_Gauss(qx, m_length);
+}
+
+// ************************************************************************** //
+// class FormFactorRipple2Lorentz
+// ************************************************************************** //
+
+FormFactorRipple2Lorentz::FormFactorRipple2Lorentz(
+    double length, double width, double height, double asymmetry)
+    : ProfileRipple2{length, width, height, asymmetry}
 {
-    return (m_width + m_length) / 4.0;
+    setName(BornAgain::FFRipple2LorentzType);
 }
 
-//! Complex form factor.
-complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const
+FormFactorRipple2Lorentz* FormFactorRipple2Lorentz::clone() const
 {
-    complex_t factor = m_length * MathFunctions::sinc(q.x() * m_length / 2.) * m_height * m_width;
-    complex_t result;
-    const complex_t qyW2 = q.y() * m_width * 0.5;
-    const complex_t qyd = q.y() * m_d;
-    const complex_t qzH = q.z() * m_height;
-    const complex_t a = qzH + qyd;
-    // dimensionless scale factors
-    const double a_scale = std::abs(a);
-    const double w_scale = std::abs(qyW2);
-
-    if (w_scale < 1.e-5) {    // |q_y*W| << 1
-        if (a_scale < 1e-5) { // |q_y*W| << 1 && |q_z*H + q_y*d| << 1
-            // relative error is O((q_y*W)^2) and O((q_z*H + q_y*d)^2)
-            result = exp_I(-qyd) * (0.5 + mul_I(a) / 6.);
-        } else {
-            // relative error is O((q_y*W)^2)
-            result = exp_I(-qyd) * (1.0 + mul_I(a) - exp_I(a)) / (a * a);
-        }
-    } else {
-        const complex_t gamma_p = (a + qyW2) * 0.5;
-        const complex_t gamma_m = (a - qyW2) * 0.5;
-        result = exp_I(gamma_m) * MathFunctions::sinc(gamma_p)
-                 - exp_I(gamma_p) * MathFunctions::sinc(gamma_m);
-        result = mul_I(exp_I(-qyd) * result / (qyW2 * 2.));
-    }
-    return factor * result;
+    return new FormFactorRipple2Lorentz(m_length, m_width, m_height, m_asymmetry);
 }
 
-void FormFactorRipple2::onChange()
+void FormFactorRipple2Lorentz::accept(INodeVisitor* visitor) const
 {
-    mP_shape.reset(new RippleSawtooth(m_length, m_width, m_height, m_d));
+    visitor->visit(this);
 }
 
-bool FormFactorRipple2::check_initialization() const
+complex_t FormFactorRipple2Lorentz::factor_x(complex_t qx) const
 {
-    bool result(true);
-    std::string message;
-    if (-1 * m_width > 2. * m_d) {
-        result = false;
-        message = std::string("Check for '-1*width <= 2.*asymmetry' failed.");
-    }
-    if (m_width < 2. * m_d) {
-        result = false;
-        message = std::string("Check for 'width >= 2.*asymmetry' failed.");
-    }
-    if (m_height <= 0) {
-        result = false;
-        message = std::string("Check for 'height > 0' failed.");
-    }
-
-    if (!result) {
-        std::ostringstream ostr;
-        ostr << "FormFactorRipple2() -> Error in class initialization with parameters ";
-        ostr << " width:" << m_width;
-        ostr << " height:" << m_height;
-        ostr << " length:" << m_length;
-        ostr << " asymmetry:" << m_d << "\n\n";
-        ostr << message;
-        throw Exceptions::ClassInitializationException(ostr.str());
-    }
-    return result;
+    return ripples::factor_x_Lorentz(qx, m_length);
 }
diff --git a/Core/HardParticle/FormFactorRipple2.h b/Core/HardParticle/FormFactorRipple2.h
index 6d0ba0368634dd9d5eaead9ddf49de9e52e13bde..738e1259f5a3abd85aea9e951530e1e1af061ed8 100644
--- a/Core/HardParticle/FormFactorRipple2.h
+++ b/Core/HardParticle/FormFactorRipple2.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/HardParticle/FormFactorRipple2.h
-//! @brief     Defines class FormFactorRipple2.
+//! @brief     Defines classes FormFactorRipple2*.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -15,41 +15,45 @@
 #ifndef FORMFACTORRIPPLE2_H
 #define FORMFACTORRIPPLE2_H
 
-#include "IFormFactorBorn.h"
+#include "ProfileRipple2.h"
 
-//! The form factor for a triangular ripple.
+//! The form factor for a cosine ripple, with box profile in elongation direction.
 //! @ingroup legacyGrating
-
-class BA_CORE_API_ FormFactorRipple2 : public IFormFactorBorn
+class BA_CORE_API_ FormFactorRipple2Box : public ProfileRipple2
 {
 public:
-    FormFactorRipple2(double length, double width, double height, double asymmetry);
-
-    FormFactorRipple2* clone() const override final
-    {
-        return new FormFactorRipple2(m_length, m_width, m_height, m_d);
-    }
-    void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
+    FormFactorRipple2Box(double length, double width, double height, double asymmetry);
+    FormFactorRipple2Box* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
 
-    double getHeight() const { return m_height; }
-    double getWidth() const { return m_width; }
-    double getLength() const { return m_length; }
-    double getAsymmetry() const { return m_d; }
+private:
+    complex_t factor_x(complex_t qx) const override final;
+};
 
-    double radialExtension() const override final;
+//! The form factor for a cosine ripple, with Gaussian profile in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorRipple2Gauss : public ProfileRipple2
+{
+public:
+    FormFactorRipple2Gauss(double length, double width, double height, double asymmetry);
+    FormFactorRipple2Gauss* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
 
-    complex_t evaluate_for_q(cvector_t q) const override final;
+private:
+    complex_t factor_x(complex_t qx) const override final;
+};
 
-protected:
-    void onChange() override final;
+//! The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
+//! @ingroup legacyGrating
+class BA_CORE_API_ FormFactorRipple2Lorentz : public ProfileRipple2
+{
+public:
+    FormFactorRipple2Lorentz(double length, double width, double height, double asymmetry);
+    FormFactorRipple2Lorentz* clone() const override final;
+    void accept(INodeVisitor* visitor) const override final;
 
 private:
-    bool check_initialization() const;
-    double m_length;
-    double m_width;
-    double m_height;
-    double m_d;
-    mutable cvector_t m_q;
+    complex_t factor_x(complex_t qx) const override final;
 };
 
 #endif // FORMFACTORRIPPLE2_H
diff --git a/Core/HardParticle/ProfileBar.cpp b/Core/HardParticle/ProfileBar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b42a9aaecf23f828b1a555e0233c5f3caf65c371
--- /dev/null
+++ b/Core/HardParticle/ProfileBar.cpp
@@ -0,0 +1,71 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/ProfileBar.cpp
+//! @brief     Implements class ProfileBar.
+//!
+//! @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 "ProfileBar.h"
+#include "BornAgainNamespace.h"
+#include "Exceptions.h"
+#include "MathConstants.h"
+#include "MathFunctions.h"
+#include "RealLimits.h"
+#include "RealParameter.h"
+#include "Box.h" // from Shapes/
+
+//! @brief Constructor of elongated bar
+//! @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
+ProfileBar::ProfileBar(double length, double width, double height)
+    : m_length(length), m_width(width), m_height(height)
+{
+    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();
+    onChange();
+}
+
+bool ProfileBar::check_initialization() const
+{
+    bool result(true);
+    if (m_height <= 0.0 || m_width <= 0.0 || m_length <= 0.0) {
+        std::ostringstream ostr;
+        ostr << "ProfileBar() -> 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 ProfileBar::radialExtension() const
+{
+    return (m_width + m_length) / 4.0;
+}
+
+//! Complex form factor.
+complex_t ProfileBar::factor_yz(complex_t qy, complex_t qz) const
+{
+    const complex_t qyWdiv2 = m_width * qy / 2.0;
+    const complex_t qzHdiv2 = m_height * qz / 2.0;
+
+    return m_height * m_width * exp_I(qzHdiv2)
+           * MathFunctions::sinc(qyWdiv2) * MathFunctions::sinc(qzHdiv2);
+}
+
+void ProfileBar::onChange()
+{
+    mP_shape.reset(new Box(m_length, m_width, m_height));
+}
diff --git a/Core/HardParticle/ProfileBar.h b/Core/HardParticle/ProfileBar.h
new file mode 100644
index 0000000000000000000000000000000000000000..6e9d29fa04068ad383cd82eb85c68a12d8dd5f2a
--- /dev/null
+++ b/Core/HardParticle/ProfileBar.h
@@ -0,0 +1,53 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/ProfileBar.h
+//! @brief     Defines class ProfileBar.
+//!
+//! @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 PROFILEBAR_H
+#define PROFILEBAR_H
+
+#include "IFormFactorBorn.h"
+#include "Integrator.h"
+
+//! Base class for form factors with a cosine ripple profile in the yz plane.
+
+class BA_CORE_API_ ProfileBar : public IFormFactorBorn
+{
+public:
+    ProfileBar(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 radialExtension() 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;
+    bool check_initialization() const;
+    mutable ComplexIntegrator m_integrator;
+};
+
+#endif // PROFILEBAR_H
diff --git a/Core/HardParticle/ProfileRipple1.cpp b/Core/HardParticle/ProfileRipple1.cpp
index 882384bd03a076f0d62b0dbb6d6a02ef7c3c83b9..8e685c60870ae82a0a75e446d0a4a43e323a7d6e 100644
--- a/Core/HardParticle/ProfileRipple1.cpp
+++ b/Core/HardParticle/ProfileRipple1.cpp
@@ -19,7 +19,7 @@
 #include "MathFunctions.h"
 #include "RealLimits.h"
 #include "RealParameter.h"
-#include "RippleCosine.h"
+#include "RippleCosine.h" // from Shapes/
 
 //! @brief Constructor of cosine ripple.
 //! @param length: length of the rectangular base in nanometers
diff --git a/Core/HardParticle/ProfileRipple2.cpp b/Core/HardParticle/ProfileRipple2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ffae797632847e4332eee3b1eaad512e441e1afa
--- /dev/null
+++ b/Core/HardParticle/ProfileRipple2.cpp
@@ -0,0 +1,93 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/ProfileRipple2.cpp
+//! @brief     Implements class ProfileRipple2.
+//!
+//! @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 "ProfileRipple2.h"
+#include "BornAgainNamespace.h"
+#include "Exceptions.h"
+#include "MathConstants.h"
+#include "MathFunctions.h"
+#include "RealLimits.h"
+#include "RealParameter.h"
+#include "RippleSawtooth.h" // from Shapes/
+
+//! @brief Constructor of triangular 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
+ProfileRipple2::ProfileRipple2(double length, double width, double height, double asymmetry)
+    : m_length(length), m_width(width), m_height(height), m_asymmetry(asymmetry)
+{
+    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();
+    registerParameter(BornAgain::AsymmetryLength, &m_asymmetry).setUnit(BornAgain::UnitsNm);
+    onChange();
+}
+
+bool ProfileRipple2::check_initialization() const
+{
+    bool result(true);
+    if (m_height <= 0.0 || m_width <= 0.0 || m_length <= 0.0) {
+        std::ostringstream ostr;
+        ostr << "ProfileRipple2() -> 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 ProfileRipple2::radialExtension() const
+{
+    return (m_width + m_length) / 4.0;
+}
+
+//! Complex form factor.
+complex_t ProfileRipple2::factor_yz(complex_t qy, complex_t qz) const
+{
+    complex_t result;
+    const complex_t factor = m_height * m_width;
+    const complex_t qyW2 = qy * m_width * 0.5;
+    const complex_t qyd = qy * m_asymmetry;
+    const complex_t qzH = qz * m_height;
+    const complex_t a = qzH + qyd;
+    // dimensionless scale factors
+    const double a_scale = std::abs(a);
+    const double w_scale = std::abs(qyW2);
+
+    if (w_scale < 1.e-5) {    // |q_y*W| << 1
+        if (a_scale < 1e-5) { // |q_y*W| << 1 && |q_z*H + q_y*d| << 1
+            // relative error is O((q_y*W)^2) and O((q_z*H + q_y*d)^2)
+            result = exp_I(-qyd) * (0.5 + mul_I(a) / 6.);
+        } else {
+            // relative error is O((q_y*W)^2)
+            result = exp_I(-qyd) * (1.0 + mul_I(a) - exp_I(a)) / (a * a);
+        }
+    } else {
+        const complex_t gamma_p = (a + qyW2) * 0.5;
+        const complex_t gamma_m = (a - qyW2) * 0.5;
+        result = exp_I(gamma_m) * MathFunctions::sinc(gamma_p)
+                 - exp_I(gamma_p) * MathFunctions::sinc(gamma_m);
+        result = mul_I(exp_I(-qyd) * result / (qyW2 * 2.));
+    }
+    return factor * result;
+}
+
+void ProfileRipple2::onChange()
+{
+    mP_shape.reset(new RippleSawtooth(m_length, m_width, m_height, m_asymmetry));
+}
diff --git a/Core/HardParticle/ProfileRipple2.h b/Core/HardParticle/ProfileRipple2.h
new file mode 100644
index 0000000000000000000000000000000000000000..71c383dcdcfc0c98dcb3a5bc277e6cd93e0953c0
--- /dev/null
+++ b/Core/HardParticle/ProfileRipple2.h
@@ -0,0 +1,55 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/HardParticle/ProfileRipple2.h
+//! @brief     Defines class ProfileRipple2.
+//!
+//! @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 PROFILERIPPLE2_H
+#define PROFILERIPPLE2_H
+
+#include "IFormFactorBorn.h"
+#include "Integrator.h"
+
+//! Base class for form factors with a cosine ripple profile in the yz plane.
+
+class BA_CORE_API_ ProfileRipple2 : public IFormFactorBorn
+{
+public:
+    ProfileRipple2(double length, double width, double height, double asymmetry);
+
+    double getLength() const { return m_length; }
+    double getHeight() const { return m_height; }
+    double getWidth() const { return m_width; }
+    double getAsymmetry() const { return m_asymmetry; }
+
+    double radialExtension() 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;
+    double m_asymmetry;
+
+private:
+    complex_t factor_yz(complex_t qy, complex_t qz) const;
+    bool check_initialization() const;
+    mutable ComplexIntegrator m_integrator;
+};
+
+#endif // PROFILERIPPLE2_H
diff --git a/Core/Parametrization/INodeVisitor.h b/Core/Parametrization/INodeVisitor.h
index 1b59c06a315c32d3859da9aedcebf70af38c7217..64b1e8b5a40c7a7715bf17a7041fc5e2fdad8824 100644
--- a/Core/Parametrization/INodeVisitor.h
+++ b/Core/Parametrization/INodeVisitor.h
@@ -31,6 +31,8 @@ class DistributionTrapezoid;
 class FootprintFactorGaussian;
 class FootprintFactorSquare;
 class FormFactorAnisoPyramid;
+class FormFactorBarGauss;
+class FormFactorBarLorentz;
 class FormFactorBox;
 class FormFactorCone;
 class FormFactorCone6;
@@ -59,7 +61,9 @@ class FormFactorPyramid;
 class FormFactorRipple1Box;
 class FormFactorRipple1Gauss;
 class FormFactorRipple1Lorentz;
-class FormFactorRipple2;
+class FormFactorRipple2Box;
+class FormFactorRipple2Gauss;
+class FormFactorRipple2Lorentz;
 class FormFactorSphereGaussianRadius;
 class FormFactorSphereLogNormalRadius;
 class FormFactorTetrahedron;
@@ -164,6 +168,8 @@ public:
     virtual void visit(const FootprintFactorGaussian*) {}
     virtual void visit(const FootprintFactorSquare*) {}
     virtual void visit(const FormFactorAnisoPyramid*) {}
+    virtual void visit(const FormFactorBarGauss*) {}
+    virtual void visit(const FormFactorBarLorentz*) {}
     virtual void visit(const FormFactorBox*) {}
     virtual void visit(const FormFactorCone*) {}
     virtual void visit(const FormFactorCone6*) {}
@@ -192,7 +198,9 @@ public:
     virtual void visit(const FormFactorRipple1Box*) {}
     virtual void visit(const FormFactorRipple1Gauss*) {}
     virtual void visit(const FormFactorRipple1Lorentz*) {}
-    virtual void visit(const FormFactorRipple2*) {}
+    virtual void visit(const FormFactorRipple2Box*) {}
+    virtual void visit(const FormFactorRipple2Gauss*) {}
+    virtual void visit(const FormFactorRipple2Lorentz*) {}
     virtual void visit(const FormFactorSphereGaussianRadius*) {}
     virtual void visit(const FormFactorSphereLogNormalRadius*) {}
     virtual void visit(const FormFactorTetrahedron*) {}
diff --git a/Core/StandardSamples/RipplesBuilder.cpp b/Core/StandardSamples/RipplesBuilder.cpp
index 06c5b9edefab76246d1ae324017937fa102b9d7a..95605e5c5c0744db807d1c419ddb4dead4e5c776 100644
--- a/Core/StandardSamples/RipplesBuilder.cpp
+++ b/Core/StandardSamples/RipplesBuilder.cpp
@@ -72,7 +72,7 @@ MultiLayer* TriangularRippleBuilder::buildSample() const
     Material particle_material = HomogeneousMaterial("Particle", 6e-4, 2e-8);
 
     Layer air_layer(air_material);
-    FormFactorRipple2 ff_ripple2(100.0, 20.0, 4.0, m_d);
+    FormFactorRipple2Box ff_ripple2(100.0, 20.0, 4.0, m_d);
     Particle ripple(particle_material, ff_ripple2);
 
     ParticleLayout particle_layout;
diff --git a/Core/StandardSamples/SampleComponents.cpp b/Core/StandardSamples/SampleComponents.cpp
index 1ca66022ea93efad720cd2b9326dcd029f1e6bbc..434c5062f61cb16505b88e3c7cc03e0672a1a3a8 100644
--- a/Core/StandardSamples/SampleComponents.cpp
+++ b/Core/StandardSamples/SampleComponents.cpp
@@ -69,7 +69,7 @@ FormFactorComponents::FormFactorComponents()
 
     add(BornAgain::FFRipple1BoxType, new FormFactorRipple1Box(100.0, 20.0, 4.0));
 
-    add(BornAgain::FFRipple2Type, new FormFactorRipple2(100.0, 20.0, 4.0, 0.0));
+    add(BornAgain::FFRipple2BoxType, new FormFactorRipple2Box(100.0, 20.0, 4.0, 0.0));
 
     add(BornAgain::FFTetrahedronType, new FormFactorTetrahedron(10.0, 4.0, Units::deg2rad(54.73)));
 
diff --git a/Core/includeIncludes/HardParticles.h b/Core/includeIncludes/HardParticles.h
index f68eeb2e52b37a73b94c429049068c04ec3f8214..252a6c3487bd092efa9f2c46825b2589b7d10892 100644
--- a/Core/includeIncludes/HardParticles.h
+++ b/Core/includeIncludes/HardParticles.h
@@ -16,6 +16,7 @@
 #define HARDPARTICLES_H
 
 #include "FormFactorAnisoPyramid.h"
+#include "FormFactorBar.h"
 #include "FormFactorBox.h"
 #include "FormFactorCone.h"
 #include "FormFactorCone6.h"
diff --git a/Doc/FFCatalog/fig/ff2/sim_Ripple2.py b/Doc/FFCatalog/fig/ff2/sim_Ripple2.py
index 1858ffc08cadbb6043bbb1d3d77843c27836267f..e387cbb70ee264aa1e994e0435f21664ec965b2a 100644
--- a/Doc/FFCatalog/fig/ff2/sim_Ripple2.py
+++ b/Doc/FFCatalog/fig/ff2/sim_Ripple2.py
@@ -11,9 +11,9 @@ results = []
 for i in range(n):
     omega=90*i/(n-1)
     title = r'$\omega=%d^\circ$' % omega
-    ff = ba.FormFactorRipple2(25*nanometer, 10*nanometer, 8*nanometer, 5*nanometer )
+    ff = ba.FormFactorRipple2Box(25*nanometer, 10*nanometer, 8*nanometer, 5*nanometer )
     trafo = ba.RotationZ(omega*degree)
     data = bp.run_simulation(det,ff,trafo)
     results.append( bp.Result(i, data, title) )
-    
+
 bp.make_plot( results, det, "ff_Ripple2" )
diff --git a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
index 627c99dfa6407519040d5f1aba2ceb259fe4a2b5..00352ff5a165b9a95374d91ff1f5eae60acaa83b 100644
--- a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
+++ b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
@@ -27,7 +27,7 @@ formfactors = [
     ba.FormFactorPrism6(5.0, 11.0),
     ba.FormFactorPyramid(18.0, 13.0, 60.0*deg),
     ba.FormFactorRipple1Box(27.0, 20.0, 14.0),
-    ba.FormFactorRipple2(36.0, 25.0, 14.0, 3.0),
+    ba.FormFactorRipple2Box(36.0, 25.0, 14.0, 3.0),
     ba.FormFactorTetrahedron(15.0, 6.0, 60.0*deg),
     ba.FormFactorTruncatedSphere(5.0, 7.0),
     ba.FormFactorTruncatedSpheroid(7.5, 9.0, 1.2),
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py b/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
index c26779c1eee3e8103f3c630ad8511f1f163e3631..cf05a8f643324c2182d9537aef05054cc349e669 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
@@ -17,7 +17,7 @@ def get_sample():
     m_particle = ba.HomogeneousMaterial("Particle", 6e-4, 2e-8)
 
     # collection of particles
-    ripple2_ff = ba.FormFactorRipple2(
+    ripple2_ff = ba.FormFactorRipple2Box(
         100*nm, 20*nm, 4*nm, -3.0*nm)
     ripple = ba.Particle(m_particle, ripple2_ff)
 
diff --git a/GUI/ba3d/ba3d/model/model.cpp b/GUI/ba3d/ba3d/model/model.cpp
index d32e8320b9c78f6d4be95f320659a15347055ccd..e12cf8dff352e3fe76289f2f1456b2a782aa908f 100644
--- a/GUI/ba3d/ba3d/model/model.cpp
+++ b/GUI/ba3d/ba3d/model/model.cpp
@@ -56,6 +56,12 @@ Particles::Particle* Model::newParticle(Particles::EShape k, float R)
     switch (k) {
     case EShape::None:
         return nullptr;
+    case EShape::BarGauss:
+        return new BarGauss(D, D, 5*D);
+    case EShape::BarLorentz:
+        return new BarLorentz(D, D, 5*D);
+    case EShape::Box:
+        return new Box(D, D, D);
     case EShape::FullSphere:
         return new FullSphere(R);
     case EShape::FullSpheroid:
@@ -88,8 +94,6 @@ Particles::Particle* Model::newParticle(Particles::EShape k, float R)
         return new Tetrahedron(R, D, 1.3f);
     case EShape::EllipsoidalCylinder:
         return new EllipsoidalCylinder(R, R / 2, D);
-    case EShape::Box:
-        return new Box(D, D, D);
     case EShape::HemiEllipsoid:
         return new HemiEllipsoid(R, R, D);
     case EShape::Dot:
@@ -100,8 +104,12 @@ Particles::Particle* Model::newParticle(Particles::EShape k, float R)
         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::Ripple2Box:
+        return new Ripple2Box(D, D, D); // TODO ripples should be elongated
+    case EShape::Ripple2Gauss:
+        return new Ripple2Gauss(D, D, D); // TODO ripples should be elongated
+    case EShape::Ripple2Lorentz:
+        return new Ripple2Lorentz(D, D, D); // TODO ripples should be elongated
     case EShape::AnisoPyramid:
         return new AnisoPyramid(R, D, D, 1.3f);
     }
diff --git a/GUI/ba3d/ba3d/model/particles.cpp b/GUI/ba3d/ba3d/model/particles.cpp
index 181d23f7c8ca85d42e82d5ed46560991a826e2d5..f5fecaed07cd568f20884e183883338313063592 100644
--- a/GUI/ba3d/ba3d/model/particles.cpp
+++ b/GUI/ba3d/ba3d/model/particles.cpp
@@ -40,13 +40,17 @@ QString const& name(EShape k)
         "Prism3",
         "Tetrahedron",
         "EllipsoidalCylinder",
+        "BarGauss",
+        "BarLorentz",
         "Box",
         "HemiEllipsoid",
         "Dot",
         "Ripple1Box",
         "Ripple1Gauss",
         "Ripple1Lorentz",
-        "Ripple2",
+        "Ripple2Box",
+        "Ripple2Gauss",
+        "Ripple2Lorentz",
         "AnisoPyramid",
     };
     return names[uint(k)];
@@ -110,6 +114,24 @@ AnisoPyramid::AnisoPyramid(float L, float W, float H, float alpha)
     set();
 }
 
+BarGauss::BarGauss(float L, float W, float H) : Particle(Key(BaseShape::Column, 1.0f, 4))
+{
+    isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
+    turn = Vector3D(0, 0, 45 * pi / 180.0f);
+    scale = Vector3D(L * sqrt2f, W * sqrt2f, H);
+    offset = Vector3D(0, 0, 0);
+    set();
+}
+
+BarLorentz::BarLorentz(float L, float W, float H) : Particle(Key(BaseShape::Column, 1.0f, 4))
+{
+    isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
+    turn = Vector3D(0, 0, 45 * pi / 180.0f);
+    scale = Vector3D(L * sqrt2f, W * sqrt2f, H);
+    offset = Vector3D(0, 0, 0);
+    set();
+}
+
 Box::Box(float L, float W, float H) : Particle(Key(BaseShape::Column, 1.0f, 4))
 {
     isNull = (L < 0 || W < 0 || H < 0) || (L <= 0 && W <= 0 && H <= 0);
@@ -268,11 +290,27 @@ Ripple1Lorentz::Ripple1Lorentz(float L, float W, float H) : Particle(Key(BaseSha
     set();
 }
 
-Ripple2::Ripple2(float L, float W, float H, float asymmetry)
-    : Particle(Key(BaseShape::Ripple, 3, asymmetry / W))
+Ripple2Box::Ripple2Box(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)
-             || (std::abs(asymmetry) > W / 2.0f);
+    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();
+}
+
+Ripple2Gauss::Ripple2Gauss(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();
+}
+
+Ripple2Lorentz::Ripple2Lorentz(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);
diff --git a/GUI/ba3d/ba3d/model/particles.h b/GUI/ba3d/ba3d/model/particles.h
index 117aeff6ce9cc0bf3e15e1bc6f3ce418dcebd0a1..ffc5892002d4b72ad76f39ef8d992882808ea9f3 100644
--- a/GUI/ba3d/ba3d/model/particles.h
+++ b/GUI/ba3d/ba3d/model/particles.h
@@ -40,13 +40,17 @@ enum class EShape {
     Prism3,
     Tetrahedron,
     EllipsoidalCylinder,
+    BarGauss,
+    BarLorentz,
     Box,
     HemiEllipsoid,
     Dot,
     Ripple1Box,
     Ripple1Gauss,
     Ripple1Lorentz,
-    Ripple2,
+    Ripple2Box,
+    Ripple2Gauss,
+    Ripple2Lorentz,
     AnisoPyramid,
 };
 
@@ -182,6 +186,18 @@ public:
     EllipsoidalCylinder(float Ra, float Rb, float H);
 };
 
+class BarGauss : public Particle
+{
+public:
+    BarGauss(float L, float W, float H);
+};
+
+class BarLorentz : public Particle
+{
+public:
+    BarLorentz(float L, float W, float H);
+};
+
 class Box : public Particle
 {
 public:
@@ -212,6 +228,24 @@ public:
     Ripple1Lorentz(float L, float W, float H);
 };
 
+class Ripple2Box : public Particle
+{
+public:
+    Ripple2Box(float L, float W, float H);
+};
+
+class Ripple2Gauss : public Particle
+{
+public:
+    Ripple2Gauss(float L, float W, float H);
+};
+
+class Ripple2Lorentz : public Particle
+{
+public:
+    Ripple2Lorentz(float L, float W, float H);
+};
+
 class Ripple2 : public Particle
 {
 public:
diff --git a/GUI/coregui/Models/FormFactorItems.cpp b/GUI/coregui/Models/FormFactorItems.cpp
index f1f2be74e9807cdf91bbc5217eb8b499338e34a6..4cf62eb0df59f6633b3529461e4a0e58255689e6 100644
--- a/GUI/coregui/Models/FormFactorItems.cpp
+++ b/GUI/coregui/Models/FormFactorItems.cpp
@@ -45,6 +45,48 @@ std::unique_ptr<IFormFactor> AnisoPyramidItem::createFormFactor() const
 
 /* ------------------------------------------------ */
 
+const QString BarGaussItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString BarGaussItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString BarGaussItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+
+BarGaussItem::BarGaussItem() : FormFactorItem(Constants::BarGaussType)
+{
+    setToolTip(QStringLiteral("Rectangular cuboid"));
+    addProperty(P_LENGTH, 20.0)->setToolTip(QStringLiteral("Length of the base in nanometers"));
+    addProperty(P_WIDTH, 16.0)->setToolTip(QStringLiteral("Width of the base in nanometers"));
+    addProperty(P_HEIGHT, 13.0)->setToolTip(QStringLiteral("Height of the box in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> BarGaussItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorBarGauss>(getItemValue(P_LENGTH).toDouble(),
+                                           getItemValue(P_WIDTH).toDouble(),
+                                           getItemValue(P_HEIGHT).toDouble());
+}
+
+/* ------------------------------------------------ */
+
+const QString BarLorentzItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString BarLorentzItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString BarLorentzItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+
+BarLorentzItem::BarLorentzItem() : FormFactorItem(Constants::BarLorentzType)
+{
+    setToolTip(QStringLiteral("Rectangular cuboid"));
+    addProperty(P_LENGTH, 20.0)->setToolTip(QStringLiteral("Length of the base in nanometers"));
+    addProperty(P_WIDTH, 16.0)->setToolTip(QStringLiteral("Width of the base in nanometers"));
+    addProperty(P_HEIGHT, 13.0)->setToolTip(QStringLiteral("Height of the box in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> BarLorentzItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorBarLorentz>(getItemValue(P_LENGTH).toDouble(),
+                                           getItemValue(P_WIDTH).toDouble(),
+                                           getItemValue(P_HEIGHT).toDouble());
+}
+
+/* ------------------------------------------------ */
+
 const QString BoxItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
 const QString BoxItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
 const QString BoxItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
@@ -426,12 +468,66 @@ std::unique_ptr<IFormFactor> Ripple1LorentzItem::createFormFactor() const
 
 /* ------------------------------------------------ */
 
-const QString Ripple2Item::P_LENGTH = QString::fromStdString(BornAgain::Length);
-const QString Ripple2Item::P_WIDTH = QString::fromStdString(BornAgain::Width);
-const QString Ripple2Item::P_HEIGHT = QString::fromStdString(BornAgain::Height);
-const QString Ripple2Item::P_ASYMMETRY = QString::fromStdString(BornAgain::AsymmetryLength);
+const QString Ripple2BoxItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple2BoxItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple2BoxItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+const QString Ripple2BoxItem::P_ASYMMETRY = QString::fromStdString(BornAgain::AsymmetryLength);
+
+Ripple2BoxItem::Ripple2BoxItem() : FormFactorItem(Constants::Ripple2BoxType)
+{
+    setToolTip(
+        QStringLiteral("Particle with an asymmetric triangle profile and a rectangular base"));
+    addProperty(P_LENGTH, 36.0)
+        ->setToolTip(QStringLiteral("Length of the rectangular base in nanometers"));
+    addProperty(P_WIDTH, 25.0)
+        ->setToolTip(QStringLiteral("Width of the rectangular base in nanometers"));
+    addProperty(P_HEIGHT, 14.0)->setToolTip(QStringLiteral("Height of the ripple in nanometers"));
+    addProperty(P_ASYMMETRY, 3.0)
+        ->setToolTip(QStringLiteral("Asymmetry length of the triangular profile in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> Ripple2BoxItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorRipple2Box>(
+        getItemValue(P_LENGTH).toDouble(), getItemValue(P_WIDTH).toDouble(),
+        getItemValue(P_HEIGHT).toDouble(), getItemValue(P_ASYMMETRY).toDouble());
+}
+
+/* ------------------------------------------------ */
+
+const QString Ripple2GaussItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple2GaussItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple2GaussItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+const QString Ripple2GaussItem::P_ASYMMETRY = QString::fromStdString(BornAgain::AsymmetryLength);
+
+Ripple2GaussItem::Ripple2GaussItem() : FormFactorItem(Constants::Ripple2GaussType)
+{
+    setToolTip(
+        QStringLiteral("Particle with an asymmetric triangle profile and a rectangular base"));
+    addProperty(P_LENGTH, 36.0)
+        ->setToolTip(QStringLiteral("Length of the rectangular base in nanometers"));
+    addProperty(P_WIDTH, 25.0)
+        ->setToolTip(QStringLiteral("Width of the rectangular base in nanometers"));
+    addProperty(P_HEIGHT, 14.0)->setToolTip(QStringLiteral("Height of the ripple in nanometers"));
+    addProperty(P_ASYMMETRY, 3.0)
+        ->setToolTip(QStringLiteral("Asymmetry length of the triangular profile in nanometers"));
+}
+
+std::unique_ptr<IFormFactor> Ripple2GaussItem::createFormFactor() const
+{
+    return std::make_unique<FormFactorRipple2Gauss>(
+        getItemValue(P_LENGTH).toDouble(), getItemValue(P_WIDTH).toDouble(),
+        getItemValue(P_HEIGHT).toDouble(), getItemValue(P_ASYMMETRY).toDouble());
+}
+
+/* ------------------------------------------------ */
+
+const QString Ripple2LorentzItem::P_LENGTH = QString::fromStdString(BornAgain::Length);
+const QString Ripple2LorentzItem::P_WIDTH = QString::fromStdString(BornAgain::Width);
+const QString Ripple2LorentzItem::P_HEIGHT = QString::fromStdString(BornAgain::Height);
+const QString Ripple2LorentzItem::P_ASYMMETRY = QString::fromStdString(BornAgain::AsymmetryLength);
 
-Ripple2Item::Ripple2Item() : FormFactorItem(Constants::Ripple2Type)
+Ripple2LorentzItem::Ripple2LorentzItem() : FormFactorItem(Constants::Ripple2LorentzType)
 {
     setToolTip(
         QStringLiteral("Particle with an asymmetric triangle profile and a rectangular base"));
@@ -444,9 +540,9 @@ Ripple2Item::Ripple2Item() : FormFactorItem(Constants::Ripple2Type)
         ->setToolTip(QStringLiteral("Asymmetry length of the triangular profile in nanometers"));
 }
 
-std::unique_ptr<IFormFactor> Ripple2Item::createFormFactor() const
+std::unique_ptr<IFormFactor> Ripple2LorentzItem::createFormFactor() const
 {
-    return std::make_unique<FormFactorRipple2>(
+    return std::make_unique<FormFactorRipple2Lorentz>(
         getItemValue(P_LENGTH).toDouble(), getItemValue(P_WIDTH).toDouble(),
         getItemValue(P_HEIGHT).toDouble(), getItemValue(P_ASYMMETRY).toDouble());
 }
diff --git a/GUI/coregui/Models/FormFactorItems.h b/GUI/coregui/Models/FormFactorItems.h
index 4bd0c2dfab560d7c39af25fbf632cd8975063e40..096f3e3e7ea120f0ade18150853da65bac9907a1 100644
--- a/GUI/coregui/Models/FormFactorItems.h
+++ b/GUI/coregui/Models/FormFactorItems.h
@@ -37,6 +37,26 @@ public:
     std::unique_ptr<IFormFactor> createFormFactor() const;
 };
 
+class BA_CORE_API_ BarGaussItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    BarGaussItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
+class BA_CORE_API_ BarLorentzItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    BarLorentzItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
 class BA_CORE_API_ BoxItem : public FormFactorItem
 {
 public:
@@ -206,14 +226,36 @@ public:
     std::unique_ptr<IFormFactor> createFormFactor() const;
 };
 
-class BA_CORE_API_ Ripple2Item : public FormFactorItem
+class BA_CORE_API_ Ripple2BoxItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    static const QString P_ASYMMETRY;
+    Ripple2BoxItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
+class BA_CORE_API_ Ripple2GaussItem : public FormFactorItem
+{
+public:
+    static const QString P_LENGTH;
+    static const QString P_WIDTH;
+    static const QString P_HEIGHT;
+    static const QString P_ASYMMETRY;
+    Ripple2GaussItem();
+    std::unique_ptr<IFormFactor> createFormFactor() const;
+};
+
+class BA_CORE_API_ Ripple2LorentzItem : public FormFactorItem
 {
 public:
     static const QString P_LENGTH;
     static const QString P_WIDTH;
     static const QString P_HEIGHT;
     static const QString P_ASYMMETRY;
-    Ripple2Item();
+    Ripple2LorentzItem();
     std::unique_ptr<IFormFactor> createFormFactor() const;
 };
 
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index 82021a684ed4feced7dd29e14937a417ce3ee28b..f1fc35ff8559d19d1566c967c2700ed334c302ca 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -193,6 +193,26 @@ void GUIDomainSampleVisitor::visit(const FormFactorAnisoPyramid* p_sample)
     m_levelToParentItem[depth()] = p_particle_item;
 }
 
+void GUIDomainSampleVisitor::visit(const FormFactorBarGauss* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::BarGaussType);
+    p_ff_item->setItemValue(BarGaussItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(BarGaussItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(BarGaussItem::P_HEIGHT, p_sample->getHeight());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
+void GUIDomainSampleVisitor::visit(const FormFactorBarLorentz* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::BarLorentzType);
+    p_ff_item->setItemValue(BarLorentzItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(BarLorentzItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(BarLorentzItem::P_HEIGHT, p_sample->getHeight());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
 void GUIDomainSampleVisitor::visit(const FormFactorBox* p_sample)
 {
     SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
@@ -362,14 +382,36 @@ void GUIDomainSampleVisitor::visit(const FormFactorRipple1Lorentz* p_sample)
     m_levelToParentItem[depth()] = p_particle_item;
 }
 
-void GUIDomainSampleVisitor::visit(const FormFactorRipple2* p_sample)
+void GUIDomainSampleVisitor::visit(const FormFactorRipple2Box* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple2BoxType);
+    p_ff_item->setItemValue(Ripple2BoxItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple2BoxItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple2BoxItem::P_HEIGHT, p_sample->getHeight());
+    p_ff_item->setItemValue(Ripple2BoxItem::P_ASYMMETRY, p_sample->getAsymmetry());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
+void GUIDomainSampleVisitor::visit(const FormFactorRipple2Gauss* p_sample)
+{
+    SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple2GaussType);
+    p_ff_item->setItemValue(Ripple2GaussItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple2GaussItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple2GaussItem::P_HEIGHT, p_sample->getHeight());
+    p_ff_item->setItemValue(Ripple2GaussItem::P_ASYMMETRY, p_sample->getAsymmetry());
+    m_levelToParentItem[depth()] = p_particle_item;
+}
+
+void GUIDomainSampleVisitor::visit(const FormFactorRipple2Lorentz* p_sample)
 {
     SessionItem* p_particle_item = m_levelToParentItem[depth() - 1];
-    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple2Type);
-    p_ff_item->setItemValue(Ripple2Item::P_LENGTH, p_sample->getLength());
-    p_ff_item->setItemValue(Ripple2Item::P_WIDTH, p_sample->getWidth());
-    p_ff_item->setItemValue(Ripple2Item::P_HEIGHT, p_sample->getHeight());
-    p_ff_item->setItemValue(Ripple2Item::P_ASYMMETRY, p_sample->getAsymmetry());
+    SessionItem* p_ff_item = AddFormFactorItem(p_particle_item, Constants::Ripple2LorentzType);
+    p_ff_item->setItemValue(Ripple2LorentzItem::P_LENGTH, p_sample->getLength());
+    p_ff_item->setItemValue(Ripple2LorentzItem::P_WIDTH, p_sample->getWidth());
+    p_ff_item->setItemValue(Ripple2LorentzItem::P_HEIGHT, p_sample->getHeight());
+    p_ff_item->setItemValue(Ripple2LorentzItem::P_ASYMMETRY, p_sample->getAsymmetry());
     m_levelToParentItem[depth()] = p_particle_item;
 }
 
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.h b/GUI/coregui/Models/GUIDomainSampleVisitor.h
index 6da972f6c0d569fdfeb39e4b6cdf0f3c4f7fcb48..3db72c853fa390f10d61a42cb342be81cd4fa315 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.h
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.h
@@ -55,6 +55,8 @@ public:
     void visit(const Crystal*);
 
     void visit(const FormFactorAnisoPyramid*);
+    void visit(const FormFactorBarGauss*);
+    void visit(const FormFactorBarLorentz*);
     void visit(const FormFactorBox*);
     void visit(const FormFactorCone*);
     void visit(const FormFactorCone6*);
@@ -72,7 +74,9 @@ public:
     void visit(const FormFactorRipple1Box*);
     void visit(const FormFactorRipple1Gauss*);
     void visit(const FormFactorRipple1Lorentz*);
-    void visit(const FormFactorRipple2*);
+    void visit(const FormFactorRipple2Box*);
+    void visit(const FormFactorRipple2Gauss*);
+    void visit(const FormFactorRipple2Lorentz*);
     void visit(const FormFactorTetrahedron*);
     void visit(const FormFactorDot*);
     void visit(const FormFactorTruncatedCube*);
diff --git a/GUI/coregui/Models/GroupInfoCatalogue.cpp b/GUI/coregui/Models/GroupInfoCatalogue.cpp
index fcad2f924df2aaca1b6896921ecdf5a5d7c32027..1f23633edb8ca15a76e7960793b0aebd11853f5a 100644
--- a/GUI/coregui/Models/GroupInfoCatalogue.cpp
+++ b/GUI/coregui/Models/GroupInfoCatalogue.cpp
@@ -20,6 +20,8 @@ GroupInfoCatalogue::GroupInfoCatalogue()
 {
     GroupInfo info(Constants::FormFactorGroup);
     info.add(Constants::AnisoPyramidType, "Aniso Pyramid");
+    info.add(Constants::BarGaussType, "BarGauss");
+    info.add(Constants::BarLorentzType, "BarLorentz");
     info.add(Constants::BoxType, "Box");
     info.add(Constants::ConeType, "Cone");
     info.add(Constants::Cone6Type, "Cone6");
@@ -38,7 +40,9 @@ GroupInfoCatalogue::GroupInfoCatalogue()
     info.add(Constants::Ripple1BoxType, "Ripple1Box");
     info.add(Constants::Ripple1GaussType, "Ripple1Gauss");
     info.add(Constants::Ripple1LorentzType, "Ripple1Lorentz");
-    info.add(Constants::Ripple2Type, "Ripple2");
+    info.add(Constants::Ripple2BoxType, "Ripple2Box");
+    info.add(Constants::Ripple2GaussType, "Ripple2Gauss");
+    info.add(Constants::Ripple2LorentzType, "Ripple2Lorentz");
     info.add(Constants::TetrahedronType, "Tetrahedron");
     info.add(Constants::TruncatedCubeType, "Truncated Cube");
     info.add(Constants::TruncatedSphereType, "Truncated Sphere");
diff --git a/GUI/coregui/Models/ItemCatalogue.cpp b/GUI/coregui/Models/ItemCatalogue.cpp
index 95c044249e6f352d5f4f6c1f77e26052399c307a..2c33a0d7578ebe14bba3f3be31d9f17ad3b2f596 100644
--- a/GUI/coregui/Models/ItemCatalogue.cpp
+++ b/GUI/coregui/Models/ItemCatalogue.cpp
@@ -105,6 +105,8 @@ ItemCatalogue::ItemCatalogue()
     add(Constants::PropertyType, create_new<PropertyItem>);
 
     add(Constants::AnisoPyramidType, create_new<AnisoPyramidItem>);
+    add(Constants::BarGaussType, create_new<BarGaussItem>);
+    add(Constants::BarLorentzType, create_new<BarLorentzItem>);
     add(Constants::BoxType, create_new<BoxItem>);
     add(Constants::ConeType, create_new<ConeItem>);
     add(Constants::Cone6Type, create_new<Cone6Item>);
@@ -123,7 +125,9 @@ ItemCatalogue::ItemCatalogue()
     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::Ripple2BoxType, create_new<Ripple2BoxItem>);
+    add(Constants::Ripple2GaussType, create_new<Ripple2GaussItem>);
+    add(Constants::Ripple2LorentzType, create_new<Ripple2LorentzItem>);
     add(Constants::TetrahedronType, create_new<TetrahedronItem>);
     add(Constants::TruncatedCubeType, create_new<TruncatedCubeItem>);
     add(Constants::TruncatedSphereType, create_new<TruncatedSphereItem>);
diff --git a/GUI/coregui/Models/item_constants.h b/GUI/coregui/Models/item_constants.h
index 929d67487f067b94d90062d7898d0e3e34848e01..837f360f33ebda239a92eae413027386b3683006 100644
--- a/GUI/coregui/Models/item_constants.h
+++ b/GUI/coregui/Models/item_constants.h
@@ -53,6 +53,8 @@ const ModelType SpecularBeamType = "SpecularBeam";
 
 const ModelType FormFactorType = "FormFactor";
 const ModelType AnisoPyramidType = "AnisoPyramid";
+const ModelType BarGaussType = "BarGauss";
+const ModelType BarLorentzType = "BarLorentz";
 const ModelType BoxType = "Box";
 const ModelType ConeType = "Cone";
 const ModelType Cone6Type = "Cone6";
@@ -71,7 +73,9 @@ const ModelType PyramidType = "Pyramid";
 const ModelType Ripple1BoxType = "Ripple1Box";
 const ModelType Ripple1GaussType = "Ripple1Gauss";
 const ModelType Ripple1LorentzType = "Ripple1Lorentz";
-const ModelType Ripple2Type = "Ripple2";
+const ModelType Ripple2BoxType = "Ripple2Box";
+const ModelType Ripple2GaussType = "Ripple2Gauss";
+const ModelType Ripple2LorentzType = "Ripple2Lorentz";
 const ModelType TetrahedronType = "Tetrahedron";
 const ModelType TruncatedCubeType = "TruncatedCube";
 const ModelType TruncatedSphereType = "TruncatedSphere";
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
index 7c09eabc0c3541af2b614f888ab8b8f22523d4a0..508dae0c3ef2fbe8819f87e6b0a1842d51c18e70 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
@@ -54,6 +54,22 @@ bool isPositionInsideMesoCrystal(const IFormFactor* outerShape, kvector_t positi
         if (std::abs(positionInside.x()) <= l_z && std::abs(positionInside.y()) <= w_z
             && (positionInside.z() >= 0 && positionInside.z() <= H))
             check = true;
+    } else if (auto ff_BarGauss = dynamic_cast<const FormFactorBarGauss*>(outerShape)) {
+        double L = ff_BarGauss->getLength();
+        double W = ff_BarGauss->getWidth();
+        double H = ff_BarGauss->getHeight();
+
+        if (std::abs(positionInside.x()) <= L / 2 && std::abs(positionInside.y()) <= W / 2
+            && (positionInside.z() >= 0 && positionInside.z() <= H))
+            check = true;
+    } else if (auto ff_BarLorentz = dynamic_cast<const FormFactorBarLorentz*>(outerShape)) {
+        double L = ff_BarLorentz->getLength();
+        double W = ff_BarLorentz->getWidth();
+        double H = ff_BarLorentz->getHeight();
+
+        if (std::abs(positionInside.x()) <= L / 2 && std::abs(positionInside.y()) <= W / 2
+            && (positionInside.z() >= 0 && positionInside.z() <= H))
+            check = true;
     } else if (auto ff_Box = dynamic_cast<const FormFactorBox*>(outerShape)) {
         double L = ff_Box->getLength();
         double W = ff_Box->getWidth();
@@ -257,10 +273,22 @@ bool isPositionInsideMesoCrystal(const IFormFactor* outerShape, kvector_t positi
         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)) {
-        // TODO: Implement Ripple2
+    } else if (dynamic_cast<const FormFactorRipple2Box*>(outerShape)) {
+        // TODO: Implement Ripple2Box
+        std::ostringstream ostr;
+        ostr << "Sorry, outer shape Ripple2Box not yet implemented for Mesocrystal";
+        ostr << "\n\nStay tuned!";
+        throw Exceptions::ClassInitializationException(ostr.str());
+    } else if (dynamic_cast<const FormFactorRipple2Gauss*>(outerShape)) {
+        // TODO: Implement Ripple2Gauss
+        std::ostringstream ostr;
+        ostr << "Sorry, outer shape Ripple2Gauss not yet implemented for Mesocrystal";
+        ostr << "\n\nStay tuned!";
+        throw Exceptions::ClassInitializationException(ostr.str());
+    } else if (dynamic_cast<const FormFactorRipple2Lorentz*>(outerShape)) {
+        // TODO: Implement Ripple2Lorentz
         std::ostringstream ostr;
-        ostr << "Sorry, outer shape Ripple2 not yet implemented for Mesocrystal";
+        ostr << "Sorry, outer shape Ripple2Lorentz not yet implemented for Mesocrystal";
         ostr << "\n\nStay tuned!";
         throw Exceptions::ClassInitializationException(ostr.str());
     } else if (auto ff_Tetrahedron = dynamic_cast<const FormFactorTetrahedron*>(outerShape)) {
diff --git a/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp b/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
index 30bc6b2602dc5ccb76fca019cc89f7f886f7fbd8..fcee17239fb4d1040881c4b309a4500399a20e1b 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/TransformTo3D.cpp
@@ -111,6 +111,16 @@ TransformTo3D::createParticlefromIFormFactor(const IFormFactor* ff)
         double height = ff_AnisoPyramid->getHeight();
         double alpha = ff_AnisoPyramid->getAlpha();
         result = std::make_unique<RealSpace::Particles::AnisoPyramid>(length, width, height, alpha);
+    } else if (auto ff_BarGauss = dynamic_cast<const FormFactorBarGauss*>(ff)) {
+        double length = ff_BarGauss->getLength();
+        double width = ff_BarGauss->getWidth();
+        double height = ff_BarGauss->getHeight();
+        result = std::make_unique<RealSpace::Particles::BarGauss>(length, width, height);
+    } else if (auto ff_BarLorentz = dynamic_cast<const FormFactorBarLorentz*>(ff)) {
+        double length = ff_BarLorentz->getLength();
+        double width = ff_BarLorentz->getWidth();
+        double height = ff_BarLorentz->getHeight();
+        result = std::make_unique<RealSpace::Particles::BarLorentz>(length, width, height);
     } else if (auto ff_Box = dynamic_cast<const FormFactorBox*>(ff)) {
         double length = ff_Box->getLength();
         double width = ff_Box->getWidth();
@@ -193,12 +203,21 @@ TransformTo3D::createParticlefromIFormFactor(const IFormFactor* ff)
         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();
-        double height = ff_Ripple2->getHeight();
-        double asymmetry = ff_Ripple2->getAsymmetry();
-        result = std::make_unique<RealSpace::Particles::Ripple2>(length, width, height, asymmetry);
+    } else if (auto ff_Ripple2Box = dynamic_cast<const FormFactorRipple2Box*>(ff)) {
+        double length = ff_Ripple2Box->getLength();
+        double width = ff_Ripple2Box->getWidth();
+        double height = ff_Ripple2Box->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple2Box>(length, width, height);
+    } else if (auto ff_Ripple2Gauss = dynamic_cast<const FormFactorRipple2Gauss*>(ff)) {
+        double length = ff_Ripple2Gauss->getLength();
+        double width = ff_Ripple2Gauss->getWidth();
+        double height = ff_Ripple2Gauss->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple2Gauss>(length, width, height);
+    } else if (auto ff_Ripple2Lorentz = dynamic_cast<const FormFactorRipple2Lorentz*>(ff)) {
+        double length = ff_Ripple2Lorentz->getLength();
+        double width = ff_Ripple2Lorentz->getWidth();
+        double height = ff_Ripple2Lorentz->getHeight();
+        result = std::make_unique<RealSpace::Particles::Ripple2Lorentz>(length, width, height);
     } else if (auto ff_Tetrahedron = dynamic_cast<const FormFactorTetrahedron*>(ff)) {
         double baseedge = ff_Tetrahedron->getBaseEdge();
         double height = ff_Tetrahedron->getHeight();
diff --git a/GUI/coregui/Views/widgetbox/widgetbox.xml b/GUI/coregui/Views/widgetbox/widgetbox.xml
index 4f55ec1947b382cc69866f20b8f0ff786b996391..655303c6016d5ede3efc3939f6325b7a180910ff 100644
--- a/GUI/coregui/Views/widgetbox/widgetbox.xml
+++ b/GUI/coregui/Views/widgetbox/widgetbox.xml
@@ -251,6 +251,30 @@
 
     <category name="Ripples">
 
+        <categoryentry name="Box" icon="images/ff_Box_64x64.png">
+            <widget class="FormFactorBox">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+        <categoryentry name="BarGauss" icon="images/ff_Box_64x64.png">
+            <widget class="FormFactorBarGauss">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+        <categoryentry name="BarLorentz" icon="images/ff_Box_64x64.png">
+            <widget class="FormFactorBarLorentz">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
         <categoryentry name="Ripple1Box" icon="images/ff_Ripple1_64x64.png">
             <widget class="FormFactorRipple1Box">
                 <property name="objectName">
@@ -275,8 +299,24 @@
             </widget>
         </categoryentry>
 
-        <categoryentry name="Ripple2" icon="images/ff_Ripple2_64x64.png">
-            <widget class="FormFactorRipple2">
+        <categoryentry name="Ripple2Box" icon="images/ff_Ripple2_64x64.png">
+            <widget class="FormFactorRipple2Box">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+        <categoryentry name="Ripple2Gauss" icon="images/ff_Ripple2_64x64.png">
+            <widget class="FormFactorRipple2Gauss">
+                <property name="objectName">
+                    <string notr="true">somestring</string>
+                </property>
+            </widget>
+        </categoryentry>
+
+        <categoryentry name="Ripple2Lorentz" icon="images/ff_Ripple2_64x64.png">
+            <widget class="FormFactorRipple2Lorentz">
                 <property name="objectName">
                     <string notr="true">somestring</string>
                 </property>
diff --git a/Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple2.int.gz b/Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple2Box.int.gz
similarity index 100%
rename from Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple2.int.gz
rename to Tests/ReferenceData/Core/FormFactorsWithAbsorption_Ripple2Box.int.gz
diff --git a/Tests/ReferenceData/Core/FormFactors_Ripple2.int.gz b/Tests/ReferenceData/Core/FormFactors_Ripple2Box.int.gz
similarity index 100%
rename from Tests/ReferenceData/Core/FormFactors_Ripple2.int.gz
rename to Tests/ReferenceData/Core/FormFactors_Ripple2Box.int.gz
diff --git a/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp b/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
index 53c378837b3f63163654680b2e907a640da8e46e..7330b4065610ab87c064ee93d9be6c6bb3c1cffa 100644
--- a/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
+++ b/Tests/UnitTests/Core/Sample/FormFactorBasicTest.cpp
@@ -428,7 +428,7 @@ TEST_F(FormFactorBasicTest, TruncatedCube)
     test_ff(&trcube);
 }
 
-TEST_F(FormFactorBasicTest, Ripple2)
+TEST_F(FormFactorBasicTest, Ripple2Box)
 {
     double width = 20.;
     double height = 4.;
@@ -436,9 +436,9 @@ TEST_F(FormFactorBasicTest, Ripple2)
     double d = 0.3; // asymmetry
     double volume = 0.5 * height * width * length;
 
-    FormFactorRipple2 ripple2(length, width, height, d);
+    FormFactorRipple2Box ripple2(length, width, height, d);
 
-    EXPECT_EQ(BornAgain::FFRipple2Type, ripple2.getName());
+    EXPECT_EQ(BornAgain::FFRipple2BoxType, ripple2.getName());
     EXPECT_EQ(4., ripple2.getHeight());
     EXPECT_DOUBLE_EQ(volume, ripple2.volume());
 
diff --git a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
index 0818e716c875c5b4a05f28692bab91cb77572ea2..47462c154e86de998106828d49614192f1a240dd 100644
--- a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
+++ b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
@@ -146,10 +146,10 @@ TEST_F(TestGUICoreObjectCorrespondence, test_Ripple1Box)
     GUICoreObjectCorrespondence(gui_ripple1, core_ripple1);
 }
 
-TEST_F(TestGUICoreObjectCorrespondence, test_Ripple2)
+TEST_F(TestGUICoreObjectCorrespondence, test_Ripple2Box)
 {
-    Ripple2Item gui_ripple2;
-    FormFactorRipple2 core_ripple2(10.0, 2.0, 1.0, 0.1);
+    Ripple2BoxItem gui_ripple2;
+    FormFactorRipple2Box core_ripple2(10.0, 2.0, 1.0, 0.1);
     GUICoreObjectCorrespondence(gui_ripple2, core_ripple2);
 }
 
diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i
index a9e8f21500e988647ccccb1181db8820bbe5f413..284d3bccd845d08cf11aedce1d315b56b36270df 100644
--- a/Wrap/swig/libBornAgainCore.i
+++ b/Wrap/swig/libBornAgainCore.i
@@ -98,6 +98,7 @@
 #include "FootprintFactorGaussian.h"
 #include "FootprintFactorSquare.h"
 #include "FormFactorAnisoPyramid.h"
+#include "FormFactorBar.h"
 #include "FormFactorBox.h"
 #include "FormFactorCone.h"
 #include "FormFactorCone6.h"
@@ -340,7 +341,9 @@
 %include "IFormFactorBorn.h"
 %include "IFormFactorDecorator.h"
 %include "FormFactorPolyhedron.h"
+%include "ProfileBar.h"
 %include "ProfileRipple1.h"
+%include "ProfileRipple2.h"
 %include "Ripples.h"
 
 %include "FormFactorAnisoPyramid.h"
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index 5352525d0ec629c8e8d13a535cd2dd07ad650aa6..544a614a04bef78f3e46b3eafc17a7ad32d1d286 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -2896,6 +2896,50 @@ Returns the z-coordinate of the lowest point in this shape after a given rotatio
 ";
 
 
+// File: classFormFactorBarGauss.xml
+%feature("docstring") FormFactorBarGauss "
+
+The form factor of an elongated bar, with Gaussian profile in elongation direction.
+
+C++ includes: FormFactorBar.h
+";
+
+%feature("docstring")  FormFactorBarGauss::FormFactorBarGauss "FormFactorBarGauss::FormFactorBarGauss(double length, double width, double height)
+";
+
+%feature("docstring")  FormFactorBarGauss::clone "FormFactorBarGauss * FormFactorBarGauss::clone() const override final
+
+Returns a clone of this  ISample object. 
+";
+
+%feature("docstring")  FormFactorBarGauss::accept "void FormFactorBarGauss::accept(INodeVisitor *visitor) const override final
+
+Calls the  INodeVisitor's visit method. 
+";
+
+
+// File: classFormFactorBarLorentz.xml
+%feature("docstring") FormFactorBarLorentz "
+
+The form factor of an elongated, with Lorentz form factor in elongation direction.
+
+C++ includes: FormFactorBar.h
+";
+
+%feature("docstring")  FormFactorBarLorentz::FormFactorBarLorentz "FormFactorBarLorentz::FormFactorBarLorentz(double length, double width, double height)
+";
+
+%feature("docstring")  FormFactorBarLorentz::clone "FormFactorBarLorentz * FormFactorBarLorentz::clone() const override final
+
+Returns a clone of this  ISample object. 
+";
+
+%feature("docstring")  FormFactorBarLorentz::accept "void FormFactorBarLorentz::accept(INodeVisitor *visitor) const override final
+
+Calls the  INodeVisitor's visit method. 
+";
+
+
 // File: classFormFactorBox.xml
 %feature("docstring") FormFactorBox "
 
@@ -4124,126 +4168,6 @@ Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This m
 ";
 
 
-// File: classFormFactorLongRipple2Gauss.xml
-%feature("docstring") FormFactorLongRipple2Gauss "
-
-The form factor for a triangular ripple.
-
-C++ includes: FormFactorLongRipple2Gauss.h
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::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 
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::clone "FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final
-
-Returns a clone of this  ISample object. 
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::accept "void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final
-
-Calls the  INodeVisitor's visit method. 
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::getHeight "double FormFactorLongRipple2Gauss::getHeight() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::getWidth "double FormFactorLongRipple2Gauss::getWidth() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::getLength "double FormFactorLongRipple2Gauss::getLength() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::getAsymmetry "double FormFactorLongRipple2Gauss::getAsymmetry() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::radialExtension "double FormFactorLongRipple2Gauss::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")  FormFactorLongRipple2Gauss::evaluate_for_q "complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final
-
-Complex form factor. 
-";
-
-
-// File: classFormFactorLongRipple2Lorentz.xml
-%feature("docstring") FormFactorLongRipple2Lorentz "
-
-The form factor for a triangular ripple.
-
-C++ includes: FormFactorLongRipple2Lorentz.h
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::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 
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::clone "FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final
-
-Returns a clone of this  ISample object. 
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::accept "void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final
-
-Calls the  INodeVisitor's visit method. 
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::getHeight "double FormFactorLongRipple2Lorentz::getHeight() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::getWidth "double FormFactorLongRipple2Lorentz::getWidth() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::getLength "double FormFactorLongRipple2Lorentz::getLength() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::getAsymmetry "double FormFactorLongRipple2Lorentz::getAsymmetry() const
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::radialExtension "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 
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::evaluate_for_q "complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final
-
-Complex form factor. 
-";
-
-
 // File: classFormFactorLorentz.xml
 %feature("docstring") FormFactorLorentz "
 
@@ -4594,64 +4518,69 @@ Calls the  INodeVisitor's visit method.
 ";
 
 
-// File: classFormFactorRipple2.xml
-%feature("docstring") FormFactorRipple2 "
+// File: classFormFactorRipple2Box.xml
+%feature("docstring") FormFactorRipple2Box "
 
-The form factor for a triangular ripple.
+The form factor for a cosine ripple, with box profile in elongation direction.
 
 C++ includes: FormFactorRipple2.h
 ";
 
-%feature("docstring")  FormFactorRipple2::FormFactorRipple2 "FormFactorRipple2::FormFactorRipple2(double length, double width, double height, double asymmetry)
+%feature("docstring")  FormFactorRipple2Box::FormFactorRipple2Box "FormFactorRipple2Box::FormFactorRipple2Box(double length, double width, double height, double asymmetry)
+";
 
-Constructor of a triangular ripple.
+%feature("docstring")  FormFactorRipple2Box::clone "FormFactorRipple2Box * FormFactorRipple2Box::clone() const override final
 
-Parameters:
------------
+Returns a clone of this  ISample object. 
+";
 
-length: 
-length of the rectangular base in nanometers
+%feature("docstring")  FormFactorRipple2Box::accept "void FormFactorRipple2Box::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
 
-asymmetry: 
-asymmetry length of the triangular profile in nanometers 
+// File: classFormFactorRipple2Gauss.xml
+%feature("docstring") FormFactorRipple2Gauss "
+
+The form factor for a cosine ripple, with Gaussian profile in elongation direction.
+
+C++ includes: FormFactorRipple2.h
+";
+
+%feature("docstring")  FormFactorRipple2Gauss::FormFactorRipple2Gauss "FormFactorRipple2Gauss::FormFactorRipple2Gauss(double length, double width, double height, double asymmetry)
 ";
 
-%feature("docstring")  FormFactorRipple2::clone "FormFactorRipple2* FormFactorRipple2::clone() const override final
+%feature("docstring")  FormFactorRipple2Gauss::clone "FormFactorRipple2Gauss * FormFactorRipple2Gauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple2::accept "void FormFactorRipple2::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  FormFactorRipple2Gauss::accept "void FormFactorRipple2Gauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorRipple2::getHeight "double FormFactorRipple2::getHeight() const
-";
 
-%feature("docstring")  FormFactorRipple2::getWidth "double FormFactorRipple2::getWidth() const
-";
+// File: classFormFactorRipple2Lorentz.xml
+%feature("docstring") FormFactorRipple2Lorentz "
+
+The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
 
-%feature("docstring")  FormFactorRipple2::getLength "double FormFactorRipple2::getLength() const
+C++ includes: FormFactorRipple2.h
 ";
 
-%feature("docstring")  FormFactorRipple2::getAsymmetry "double FormFactorRipple2::getAsymmetry() const
+%feature("docstring")  FormFactorRipple2Lorentz::FormFactorRipple2Lorentz "FormFactorRipple2Lorentz::FormFactorRipple2Lorentz(double length, double width, double height, double asymmetry)
 ";
 
-%feature("docstring")  FormFactorRipple2::radialExtension "double FormFactorRipple2::radialExtension() const override final
+%feature("docstring")  FormFactorRipple2Lorentz::clone "FormFactorRipple2Lorentz * FormFactorRipple2Lorentz::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")  FormFactorRipple2::evaluate_for_q "complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final
+%feature("docstring")  FormFactorRipple2Lorentz::accept "void FormFactorRipple2Lorentz::accept(INodeVisitor *visitor) const override final
 
-Complex form factor. 
+Calls the  INodeVisitor's visit method. 
 ";
 
 
@@ -7996,6 +7925,12 @@ C++ includes: INodeVisitor.h
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorAnisoPyramid *)
 ";
 
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorBarGauss *)
+";
+
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorBarLorentz *)
+";
+
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorBox *)
 ";
 
@@ -8080,7 +8015,13 @@ C++ includes: INodeVisitor.h
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple1Lorentz *)
 ";
 
-%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple2 *)
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple2Box *)
+";
+
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple2Gauss *)
+";
+
+%feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorRipple2Lorentz *)
 ";
 
 %feature("docstring")  INodeVisitor::visit "virtual void INodeVisitor::visit(const FormFactorSphereGaussianRadius *)
@@ -13257,6 +13198,51 @@ Fourier transform of the correlation function of roughnesses between the interfa
 ";
 
 
+// File: classProfileBar.xml
+%feature("docstring") ProfileBar "
+
+Base class for form factors with a cosine ripple profile in the yz plane.
+
+C++ includes: ProfileBar.h
+";
+
+%feature("docstring")  ProfileBar::ProfileBar "ProfileBar::ProfileBar(double length, double width, double height)
+
+Constructor of elongated bar.
+
+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")  ProfileBar::getLength "double ProfileBar::getLength() const
+";
+
+%feature("docstring")  ProfileBar::getHeight "double ProfileBar::getHeight() const
+";
+
+%feature("docstring")  ProfileBar::getWidth "double ProfileBar::getWidth() const
+";
+
+%feature("docstring")  ProfileBar::radialExtension "double ProfileBar::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")  ProfileBar::evaluate_for_q "complex_t ProfileBar::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: classProfileHelper.xml
 %feature("docstring") ProfileHelper "";
 
@@ -13318,6 +13304,54 @@ Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This m
 ";
 
 
+// File: classProfileRipple2.xml
+%feature("docstring") ProfileRipple2 "
+
+Base class for form factors with a cosine ripple profile in the yz plane.
+
+C++ includes: ProfileRipple2.h
+";
+
+%feature("docstring")  ProfileRipple2::ProfileRipple2 "ProfileRipple2::ProfileRipple2(double length, double width, double height, double asymmetry)
+
+Constructor of triangular 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")  ProfileRipple2::getLength "double ProfileRipple2::getLength() const
+";
+
+%feature("docstring")  ProfileRipple2::getHeight "double ProfileRipple2::getHeight() const
+";
+
+%feature("docstring")  ProfileRipple2::getWidth "double ProfileRipple2::getWidth() const
+";
+
+%feature("docstring")  ProfileRipple2::getAsymmetry "double ProfileRipple2::getAsymmetry() const
+";
+
+%feature("docstring")  ProfileRipple2::radialExtension "double ProfileRipple2::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")  ProfileRipple2::evaluate_for_q "complex_t ProfileRipple2::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 "
 
@@ -17078,52 +17112,49 @@ C++ includes: ZLimits.h
 // File: namespace_0d18.xml
 
 
-// File: namespace_0d191.xml
+// File: namespace_0d189.xml
 
 
 // File: namespace_0d20.xml
 
 
-// File: namespace_0d222.xml
+// File: namespace_0d224.xml
 
 
-// File: namespace_0d230.xml
+// File: namespace_0d232.xml
 
 
-// File: namespace_0d236.xml
+// File: namespace_0d238.xml
 
 
-// File: namespace_0d240.xml
+// File: namespace_0d242.xml
 
 
-// File: namespace_0d290.xml
+// File: namespace_0d292.xml
 
 
-// File: namespace_0d299.xml
+// File: namespace_0d301.xml
 
 
-// File: namespace_0d307.xml
-
-
-// File: namespace_0d311.xml
+// File: namespace_0d309.xml
 
 
 // File: namespace_0d313.xml
 
 
-// File: namespace_0d32.xml
+// File: namespace_0d315.xml
 
 
-// File: namespace_0d325.xml
+// File: namespace_0d32.xml
 
 
-// File: namespace_0d331.xml
+// File: namespace_0d327.xml
 
 
-// File: namespace_0d352.xml
+// File: namespace_0d333.xml
 
 
-// File: namespace_0d356.xml
+// File: namespace_0d354.xml
 
 
 // File: namespace_0d358.xml
@@ -17132,31 +17163,31 @@ C++ includes: ZLimits.h
 // File: namespace_0d360.xml
 
 
-// File: namespace_0d370.xml
+// File: namespace_0d362.xml
 
 
-// File: namespace_0d383.xml
+// File: namespace_0d372.xml
 
 
-// File: namespace_0d387.xml
+// File: namespace_0d385.xml
 
 
-// File: namespace_0d399.xml
+// File: namespace_0d389.xml
 
 
 // File: namespace_0d40.xml
 
 
-// File: namespace_0d405.xml
+// File: namespace_0d401.xml
 
 
-// File: namespace_0d410.xml
+// File: namespace_0d407.xml
 
 
 // File: namespace_0d412.xml
 
 
-// File: namespace_0d416.xml
+// File: namespace_0d414.xml
 
 
 // File: namespace_0d418.xml
@@ -17165,28 +17196,28 @@ C++ includes: ZLimits.h
 // File: namespace_0d42.xml
 
 
-// File: namespace_0d428.xml
+// File: namespace_0d420.xml
 
 
-// File: namespace_0d441.xml
+// File: namespace_0d430.xml
 
 
-// File: namespace_0d450.xml
+// File: namespace_0d443.xml
 
 
 // File: namespace_0d452.xml
 
 
-// File: namespace_0d486.xml
+// File: namespace_0d454.xml
 
 
-// File: namespace_0d493.xml
+// File: namespace_0d488.xml
 
 
-// File: namespace_0d531.xml
+// File: namespace_0d495.xml
 
 
-// File: namespace_0d539.xml
+// File: namespace_0d533.xml
 
 
 // File: namespace_0d541.xml
@@ -17195,16 +17226,19 @@ C++ includes: ZLimits.h
 // File: namespace_0d543.xml
 
 
+// File: namespace_0d545.xml
+
+
 // File: namespace_0d6.xml
 
 
-// File: namespace_0d627.xml
+// File: namespace_0d629.xml
 
 
-// File: namespace_0d631.xml
+// File: namespace_0d633.xml
 
 
-// File: namespace_0d655.xml
+// File: namespace_0d657.xml
 
 
 // File: namespace_0d97.xml
@@ -18778,6 +18812,12 @@ global helper function for comparison of axes
 // File: FormFactorAnisoPyramid_8h.xml
 
 
+// File: FormFactorBar_8cpp.xml
+
+
+// File: FormFactorBar_8h.xml
+
+
 // File: FormFactorBox_8cpp.xml
 
 
@@ -18862,18 +18902,6 @@ global helper function for comparison of axes
 // File: FormFactorLongBoxLorentz_8h.xml
 
 
-// File: FormFactorLongRipple2Gauss_8cpp.xml
-
-
-// File: FormFactorLongRipple2Gauss_8h.xml
-
-
-// File: FormFactorLongRipple2Lorentz_8cpp.xml
-
-
-// File: FormFactorLongRipple2Lorentz_8h.xml
-
-
 // File: FormFactorPolyhedron_8cpp.xml
 
 
@@ -18940,12 +18968,24 @@ global helper function for comparison of axes
 // File: FormFactorTruncatedSpheroid_8h.xml
 
 
+// File: ProfileBar_8cpp.xml
+
+
+// File: ProfileBar_8h.xml
+
+
 // File: ProfileRipple1_8cpp.xml
 
 
 // File: ProfileRipple1_8h.xml
 
 
+// File: ProfileRipple2_8cpp.xml
+
+
+// File: ProfileRipple2_8h.xml
+
+
 // File: Ripples_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index a1db1d062866dad068af24d91fa459d44ae8650f..2041b249d9af202cfc7909e2c624ae535e4353c9 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -5820,6 +5820,8 @@ class INodeVisitor(object):
         visit(INodeVisitor self, FootprintFactorGaussian arg2)
         visit(INodeVisitor self, FootprintFactorSquare arg2)
         visit(INodeVisitor self, FormFactorAnisoPyramid arg2)
+        visit(INodeVisitor self, FormFactorBarGauss const * arg2)
+        visit(INodeVisitor self, FormFactorBarLorentz const * arg2)
         visit(INodeVisitor self, FormFactorBox arg2)
         visit(INodeVisitor self, FormFactorCone arg2)
         visit(INodeVisitor self, FormFactorCone6 arg2)
@@ -5848,7 +5850,9 @@ class INodeVisitor(object):
         visit(INodeVisitor self, FormFactorRipple1Box arg2)
         visit(INodeVisitor self, FormFactorRipple1Gauss arg2)
         visit(INodeVisitor self, FormFactorRipple1Lorentz arg2)
-        visit(INodeVisitor self, FormFactorRipple2 arg2)
+        visit(INodeVisitor self, FormFactorRipple2Box arg2)
+        visit(INodeVisitor self, FormFactorRipple2Gauss arg2)
+        visit(INodeVisitor self, FormFactorRipple2Lorentz arg2)
         visit(INodeVisitor self, FormFactorSphereGaussianRadius arg2)
         visit(INodeVisitor self, FormFactorSphereLogNormalRadius arg2)
         visit(INodeVisitor self, FormFactorTetrahedron arg2)
@@ -9533,6 +9537,70 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
 # Register FormFactorPolygonalSurface in _libBornAgainCore:
 _libBornAgainCore.FormFactorPolygonalSurface_swigregister(FormFactorPolygonalSurface)
 
+class ProfileBar(IFormFactorBorn):
+    r"""
+
+
+    Base class for form factors with a cosine ripple profile in the yz plane.
+
+    C++ includes: ProfileBar.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(ProfileBar self) -> double
+        double ProfileBar::getLength() const
+
+        """
+        return _libBornAgainCore.ProfileBar_getLength(self)
+
+    def getHeight(self):
+        r"""
+        getHeight(ProfileBar self) -> double
+        double ProfileBar::getHeight() const
+
+        """
+        return _libBornAgainCore.ProfileBar_getHeight(self)
+
+    def getWidth(self):
+        r"""
+        getWidth(ProfileBar self) -> double
+        double ProfileBar::getWidth() const
+
+        """
+        return _libBornAgainCore.ProfileBar_getWidth(self)
+
+    def radialExtension(self):
+        r"""
+        radialExtension(ProfileBar self) -> double
+        double ProfileBar::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.ProfileBar_radialExtension(self)
+
+    def evaluate_for_q(self, q):
+        r"""
+        evaluate_for_q(ProfileBar self, cvector_t q) -> complex_t
+        complex_t ProfileBar::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.ProfileBar_evaluate_for_q(self, q)
+    __swig_destroy__ = _libBornAgainCore.delete_ProfileBar
+
+# Register ProfileBar in _libBornAgainCore:
+_libBornAgainCore.ProfileBar_swigregister(ProfileBar)
+
 class ProfileRipple1(IFormFactorBorn):
     r"""
 
@@ -9597,6 +9665,78 @@ class ProfileRipple1(IFormFactorBorn):
 # Register ProfileRipple1 in _libBornAgainCore:
 _libBornAgainCore.ProfileRipple1_swigregister(ProfileRipple1)
 
+class ProfileRipple2(IFormFactorBorn):
+    r"""
+
+
+    Base class for form factors with a cosine ripple profile in the yz plane.
+
+    C++ includes: ProfileRipple2.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(ProfileRipple2 self) -> double
+        double ProfileRipple2::getLength() const
+
+        """
+        return _libBornAgainCore.ProfileRipple2_getLength(self)
+
+    def getHeight(self):
+        r"""
+        getHeight(ProfileRipple2 self) -> double
+        double ProfileRipple2::getHeight() const
+
+        """
+        return _libBornAgainCore.ProfileRipple2_getHeight(self)
+
+    def getWidth(self):
+        r"""
+        getWidth(ProfileRipple2 self) -> double
+        double ProfileRipple2::getWidth() const
+
+        """
+        return _libBornAgainCore.ProfileRipple2_getWidth(self)
+
+    def getAsymmetry(self):
+        r"""
+        getAsymmetry(ProfileRipple2 self) -> double
+        double ProfileRipple2::getAsymmetry() const
+
+        """
+        return _libBornAgainCore.ProfileRipple2_getAsymmetry(self)
+
+    def radialExtension(self):
+        r"""
+        radialExtension(ProfileRipple2 self) -> double
+        double ProfileRipple2::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.ProfileRipple2_radialExtension(self)
+
+    def evaluate_for_q(self, q):
+        r"""
+        evaluate_for_q(ProfileRipple2 self, cvector_t q) -> complex_t
+        complex_t ProfileRipple2::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.ProfileRipple2_evaluate_for_q(self, q)
+    __swig_destroy__ = _libBornAgainCore.delete_ProfileRipple2
+
+# Register ProfileRipple2 in _libBornAgainCore:
+_libBornAgainCore.ProfileRipple2_swigregister(ProfileRipple2)
+
 
 def factor_x_box(q, l):
     r"""
@@ -11771,11 +11911,11 @@ class FormFactorPyramid(FormFactorPolyhedron):
 # Register FormFactorPyramid in _libBornAgainCore:
 _libBornAgainCore.FormFactorPyramid_swigregister(FormFactorPyramid)
 
-class FormFactorRipple2(IFormFactorBorn):
+class FormFactorRipple2Box(ProfileRipple2):
     r"""
 
 
-    The form factor for a triangular ripple.
+    The form factor for a cosine ripple, with box profile in elongation direction.
 
     C++ includes: FormFactorRipple2.h
 
@@ -11786,104 +11926,125 @@ class FormFactorRipple2(IFormFactorBorn):
 
     def __init__(self, length, width, height, asymmetry):
         r"""
-        __init__(FormFactorRipple2 self, double length, double width, double height, double asymmetry) -> FormFactorRipple2
-        FormFactorRipple2::FormFactorRipple2(double length, double width, double height, double asymmetry)
-
-        Constructor of a triangular 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
-
-        asymmetry: 
-        asymmetry length of the triangular profile in nanometers 
+        __init__(FormFactorRipple2Box self, double length, double width, double height, double asymmetry) -> FormFactorRipple2Box
+        FormFactorRipple2Box::FormFactorRipple2Box(double length, double width, double height, double asymmetry)
 
         """
-        _libBornAgainCore.FormFactorRipple2_swiginit(self, _libBornAgainCore.new_FormFactorRipple2(length, width, height, asymmetry))
+        _libBornAgainCore.FormFactorRipple2Box_swiginit(self, _libBornAgainCore.new_FormFactorRipple2Box(length, width, height, asymmetry))
 
     def clone(self):
         r"""
-        clone(FormFactorRipple2 self) -> FormFactorRipple2
-        FormFactorRipple2* FormFactorRipple2::clone() const override final
+        clone(FormFactorRipple2Box self) -> FormFactorRipple2Box
+        FormFactorRipple2Box * FormFactorRipple2Box::clone() const override final
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_clone(self)
+        return _libBornAgainCore.FormFactorRipple2Box_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorRipple2 self, INodeVisitor visitor)
-        void FormFactorRipple2::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorRipple2Box self, INodeVisitor visitor)
+        void FormFactorRipple2Box::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_accept(self, visitor)
+        return _libBornAgainCore.FormFactorRipple2Box_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple2Box
 
-    def getHeight(self):
+# Register FormFactorRipple2Box in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple2Box_swigregister(FormFactorRipple2Box)
+
+class FormFactorRipple2Gauss(ProfileRipple2):
+    r"""
+
+
+    The form factor for a cosine ripple, with Gaussian profile in elongation direction.
+
+    C++ includes: FormFactorRipple2.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"""
-        getHeight(FormFactorRipple2 self) -> double
-        double FormFactorRipple2::getHeight() const
+        __init__(FormFactorRipple2Gauss self, double length, double width, double height, double asymmetry) -> FormFactorRipple2Gauss
+        FormFactorRipple2Gauss::FormFactorRipple2Gauss(double length, double width, double height, double asymmetry)
 
         """
-        return _libBornAgainCore.FormFactorRipple2_getHeight(self)
+        _libBornAgainCore.FormFactorRipple2Gauss_swiginit(self, _libBornAgainCore.new_FormFactorRipple2Gauss(length, width, height, asymmetry))
 
-    def getWidth(self):
+    def clone(self):
         r"""
-        getWidth(FormFactorRipple2 self) -> double
-        double FormFactorRipple2::getWidth() const
+        clone(FormFactorRipple2Gauss self) -> FormFactorRipple2Gauss
+        FormFactorRipple2Gauss * FormFactorRipple2Gauss::clone() const override final
+
+        Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_getWidth(self)
+        return _libBornAgainCore.FormFactorRipple2Gauss_clone(self)
 
-    def getLength(self):
+    def accept(self, visitor):
         r"""
-        getLength(FormFactorRipple2 self) -> double
-        double FormFactorRipple2::getLength() const
+        accept(FormFactorRipple2Gauss self, INodeVisitor visitor)
+        void FormFactorRipple2Gauss::accept(INodeVisitor *visitor) const override final
+
+        Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_getLength(self)
+        return _libBornAgainCore.FormFactorRipple2Gauss_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple2Gauss
 
-    def getAsymmetry(self):
+# Register FormFactorRipple2Gauss in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple2Gauss_swigregister(FormFactorRipple2Gauss)
+
+class FormFactorRipple2Lorentz(ProfileRipple2):
+    r"""
+
+
+    The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
+
+    C++ includes: FormFactorRipple2.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"""
-        getAsymmetry(FormFactorRipple2 self) -> double
-        double FormFactorRipple2::getAsymmetry() const
+        __init__(FormFactorRipple2Lorentz self, double length, double width, double height, double asymmetry) -> FormFactorRipple2Lorentz
+        FormFactorRipple2Lorentz::FormFactorRipple2Lorentz(double length, double width, double height, double asymmetry)
 
         """
-        return _libBornAgainCore.FormFactorRipple2_getAsymmetry(self)
+        _libBornAgainCore.FormFactorRipple2Lorentz_swiginit(self, _libBornAgainCore.new_FormFactorRipple2Lorentz(length, width, height, asymmetry))
 
-    def radialExtension(self):
+    def clone(self):
         r"""
-        radialExtension(FormFactorRipple2 self) -> double
-        double FormFactorRipple2::radialExtension() const override final
+        clone(FormFactorRipple2Lorentz self) -> FormFactorRipple2Lorentz
+        FormFactorRipple2Lorentz * FormFactorRipple2Lorentz::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. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_radialExtension(self)
+        return _libBornAgainCore.FormFactorRipple2Lorentz_clone(self)
 
-    def evaluate_for_q(self, q):
+    def accept(self, visitor):
         r"""
-        evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t
-        complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final
+        accept(FormFactorRipple2Lorentz self, INodeVisitor visitor)
+        void FormFactorRipple2Lorentz::accept(INodeVisitor *visitor) const override final
 
-        Complex form factor. 
+        Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorRipple2_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple2
+        return _libBornAgainCore.FormFactorRipple2Lorentz_accept(self, visitor)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorRipple2Lorentz
 
-# Register FormFactorRipple2 in _libBornAgainCore:
-_libBornAgainCore.FormFactorRipple2_swigregister(FormFactorRipple2)
+# Register FormFactorRipple2Lorentz in _libBornAgainCore:
+_libBornAgainCore.FormFactorRipple2Lorentz_swigregister(FormFactorRipple2Lorentz)
 
 class FormFactorSphereGaussianRadius(IFormFactorBorn):
     r"""
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 37b49582970dfba71502df9aca3f1413a0c5f493..541152e281e8cfa725122ed16a1383713afc95c5 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3124,288 +3124,294 @@ namespace Swig {
 #define SWIGTYPE_p_FootprintFactorGaussian swig_types[56]
 #define SWIGTYPE_p_FootprintFactorSquare swig_types[57]
 #define SWIGTYPE_p_FormFactorAnisoPyramid swig_types[58]
-#define SWIGTYPE_p_FormFactorBox swig_types[59]
-#define SWIGTYPE_p_FormFactorCone swig_types[60]
-#define SWIGTYPE_p_FormFactorCone6 swig_types[61]
-#define SWIGTYPE_p_FormFactorCoreShell swig_types[62]
-#define SWIGTYPE_p_FormFactorCrystal swig_types[63]
-#define SWIGTYPE_p_FormFactorCuboctahedron swig_types[64]
-#define SWIGTYPE_p_FormFactorCylinder swig_types[65]
-#define SWIGTYPE_p_FormFactorDWBA swig_types[66]
-#define SWIGTYPE_p_FormFactorDWBAPol swig_types[67]
-#define SWIGTYPE_p_FormFactorDebyeBueche swig_types[68]
-#define SWIGTYPE_p_FormFactorDecoratorMaterial swig_types[69]
-#define SWIGTYPE_p_FormFactorDecoratorPositionFactor swig_types[70]
-#define SWIGTYPE_p_FormFactorDecoratorRotation swig_types[71]
-#define SWIGTYPE_p_FormFactorDodecahedron swig_types[72]
-#define SWIGTYPE_p_FormFactorDot swig_types[73]
-#define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[74]
-#define SWIGTYPE_p_FormFactorFullSphere swig_types[75]
-#define SWIGTYPE_p_FormFactorFullSpheroid swig_types[76]
-#define SWIGTYPE_p_FormFactorGauss swig_types[77]
-#define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[78]
-#define SWIGTYPE_p_FormFactorIcosahedron swig_types[79]
-#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 SWIGTYPE_p_FormFactorBarGauss swig_types[59]
+#define SWIGTYPE_p_FormFactorBarLorentz swig_types[60]
+#define SWIGTYPE_p_FormFactorBox swig_types[61]
+#define SWIGTYPE_p_FormFactorCone swig_types[62]
+#define SWIGTYPE_p_FormFactorCone6 swig_types[63]
+#define SWIGTYPE_p_FormFactorCoreShell swig_types[64]
+#define SWIGTYPE_p_FormFactorCrystal swig_types[65]
+#define SWIGTYPE_p_FormFactorCuboctahedron swig_types[66]
+#define SWIGTYPE_p_FormFactorCylinder swig_types[67]
+#define SWIGTYPE_p_FormFactorDWBA swig_types[68]
+#define SWIGTYPE_p_FormFactorDWBAPol swig_types[69]
+#define SWIGTYPE_p_FormFactorDebyeBueche swig_types[70]
+#define SWIGTYPE_p_FormFactorDecoratorMaterial swig_types[71]
+#define SWIGTYPE_p_FormFactorDecoratorPositionFactor swig_types[72]
+#define SWIGTYPE_p_FormFactorDecoratorRotation swig_types[73]
+#define SWIGTYPE_p_FormFactorDodecahedron swig_types[74]
+#define SWIGTYPE_p_FormFactorDot swig_types[75]
+#define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[76]
+#define SWIGTYPE_p_FormFactorFullSphere swig_types[77]
+#define SWIGTYPE_p_FormFactorFullSpheroid swig_types[78]
+#define SWIGTYPE_p_FormFactorGauss swig_types[79]
+#define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[80]
+#define SWIGTYPE_p_FormFactorIcosahedron swig_types[81]
+#define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[82]
+#define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[83]
+#define SWIGTYPE_p_FormFactorLorentz swig_types[84]
+#define SWIGTYPE_p_FormFactorOrnsteinZernike swig_types[85]
+#define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[86]
+#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[87]
+#define SWIGTYPE_p_FormFactorPolyhedron swig_types[88]
+#define SWIGTYPE_p_FormFactorPrism3 swig_types[89]
+#define SWIGTYPE_p_FormFactorPrism6 swig_types[90]
+#define SWIGTYPE_p_FormFactorPyramid swig_types[91]
+#define SWIGTYPE_p_FormFactorRipple1Box swig_types[92]
+#define SWIGTYPE_p_FormFactorRipple1Gauss swig_types[93]
+#define SWIGTYPE_p_FormFactorRipple1Lorentz swig_types[94]
+#define SWIGTYPE_p_FormFactorRipple2Box swig_types[95]
+#define SWIGTYPE_p_FormFactorRipple2Gauss swig_types[96]
+#define SWIGTYPE_p_FormFactorRipple2Lorentz swig_types[97]
+#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[98]
+#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[99]
+#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[100]
+#define SWIGTYPE_p_FormFactorTetrahedron swig_types[101]
+#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[102]
+#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[103]
+#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[104]
+#define SWIGTYPE_p_FormFactorWeighted swig_types[105]
+#define SWIGTYPE_p_GISASSimulation swig_types[106]
+#define SWIGTYPE_p_GaussFisherPeakShape swig_types[107]
+#define SWIGTYPE_p_HexagonalLattice swig_types[108]
+#define SWIGTYPE_p_Histogram1D swig_types[109]
+#define SWIGTYPE_p_Histogram2D swig_types[110]
+#define SWIGTYPE_p_HorizontalLine swig_types[111]
+#define SWIGTYPE_p_IAbstractParticle swig_types[112]
+#define SWIGTYPE_p_IAxis swig_types[113]
+#define SWIGTYPE_p_IBackground swig_types[114]
+#define SWIGTYPE_p_IChiSquaredModule swig_types[115]
+#define SWIGTYPE_p_ICloneable swig_types[116]
+#define SWIGTYPE_p_IClusteredParticles swig_types[117]
+#define SWIGTYPE_p_IDetector swig_types[118]
+#define SWIGTYPE_p_IDetector2D swig_types[119]
+#define SWIGTYPE_p_IDetectorResolution swig_types[120]
+#define SWIGTYPE_p_IDistribution1D swig_types[121]
+#define SWIGTYPE_p_IFTDecayFunction1D swig_types[122]
+#define SWIGTYPE_p_IFTDecayFunction2D swig_types[123]
+#define SWIGTYPE_p_IFTDistribution1D swig_types[124]
+#define SWIGTYPE_p_IFTDistribution2D swig_types[125]
+#define SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t swig_types[126]
+#define SWIGTYPE_p_IFactoryT_std__string_Simulation_t swig_types[127]
+#define SWIGTYPE_p_IFootprintFactor swig_types[128]
+#define SWIGTYPE_p_IFormFactor swig_types[129]
+#define SWIGTYPE_p_IFormFactorBorn swig_types[130]
+#define SWIGTYPE_p_IFormFactorDecorator swig_types[131]
+#define SWIGTYPE_p_IHistogram swig_types[132]
+#define SWIGTYPE_p_IIntensityFunction swig_types[133]
+#define SWIGTYPE_p_IIntensityNormalizer swig_types[134]
+#define SWIGTYPE_p_IInterferenceFunction swig_types[135]
+#define SWIGTYPE_p_ILatticeOrientation swig_types[136]
+#define SWIGTYPE_p_ILayout swig_types[137]
+#define SWIGTYPE_p_IMultiLayerBuilder swig_types[138]
+#define SWIGTYPE_p_INamed swig_types[139]
+#define SWIGTYPE_p_INode swig_types[140]
+#define SWIGTYPE_p_INodeVisitor swig_types[141]
+#define SWIGTYPE_p_IObservable swig_types[142]
+#define SWIGTYPE_p_IObserver swig_types[143]
+#define SWIGTYPE_p_IParameterT_double_t swig_types[144]
+#define SWIGTYPE_p_IParameterized swig_types[145]
+#define SWIGTYPE_p_IParticle swig_types[146]
+#define SWIGTYPE_p_IPeakShape swig_types[147]
+#define SWIGTYPE_p_IPixel swig_types[148]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[149]
+#define SWIGTYPE_p_IRotation swig_types[150]
+#define SWIGTYPE_p_ISample swig_types[151]
+#define SWIGTYPE_p_ISelectionRule swig_types[152]
+#define SWIGTYPE_p_IShape2D swig_types[153]
+#define SWIGTYPE_p_ISpecularScan swig_types[154]
+#define SWIGTYPE_p_IUnitConverter swig_types[155]
+#define SWIGTYPE_p_IVarianceFunction swig_types[156]
+#define SWIGTYPE_p_IdentityRotation swig_types[157]
+#define SWIGTYPE_p_Instrument swig_types[158]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[159]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[160]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[161]
+#define SWIGTYPE_p_IntensityNormalizer swig_types[162]
+#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[163]
+#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[164]
+#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[165]
+#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[166]
+#define SWIGTYPE_p_InterferenceFunction2DSuperLattice swig_types[167]
+#define SWIGTYPE_p_InterferenceFunction3DLattice swig_types[168]
+#define SWIGTYPE_p_InterferenceFunctionFinite2DLattice swig_types[169]
+#define SWIGTYPE_p_InterferenceFunctionFinite3DLattice swig_types[170]
+#define SWIGTYPE_p_InterferenceFunctionHardDisk swig_types[171]
+#define SWIGTYPE_p_InterferenceFunctionNone swig_types[172]
+#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[173]
+#define SWIGTYPE_p_InterferenceFunctionTwin swig_types[174]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[175]
+#define SWIGTYPE_p_IsotropicGaussPeakShape swig_types[176]
+#define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[177]
+#define SWIGTYPE_p_IterationInfo swig_types[178]
+#define SWIGTYPE_p_Lattice swig_types[179]
+#define SWIGTYPE_p_Lattice1DParameters swig_types[180]
+#define SWIGTYPE_p_Lattice2D swig_types[181]
+#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[182]
+#define SWIGTYPE_p_Layer swig_types[183]
+#define SWIGTYPE_p_LayerInterface swig_types[184]
+#define SWIGTYPE_p_LayerRoughness swig_types[185]
+#define SWIGTYPE_p_Line swig_types[186]
+#define SWIGTYPE_p_LorentzFisherPeakShape swig_types[187]
+#define SWIGTYPE_p_Material swig_types[188]
+#define SWIGTYPE_p_MesoCrystal swig_types[189]
+#define SWIGTYPE_p_MillerIndex swig_types[190]
+#define SWIGTYPE_p_MillerIndexOrientation swig_types[191]
+#define SWIGTYPE_p_MultiLayer swig_types[192]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[193]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[194]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[195]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[196]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[197]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[198]
+#define SWIGTYPE_p_ParameterDistribution swig_types[199]
+#define SWIGTYPE_p_ParameterPool swig_types[200]
+#define SWIGTYPE_p_ParameterSample swig_types[201]
+#define SWIGTYPE_p_Particle swig_types[202]
+#define SWIGTYPE_p_ParticleComposition swig_types[203]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[204]
+#define SWIGTYPE_p_ParticleDistribution swig_types[205]
+#define SWIGTYPE_p_ParticleLayout swig_types[206]
+#define SWIGTYPE_p_ParticleLimits swig_types[207]
+#define SWIGTYPE_p_PoissonNoiseBackground swig_types[208]
+#define SWIGTYPE_p_Polygon swig_types[209]
+#define SWIGTYPE_p_PolygonPrivate swig_types[210]
+#define SWIGTYPE_p_PolygonalTopology swig_types[211]
+#define SWIGTYPE_p_PolyhedralEdge swig_types[212]
+#define SWIGTYPE_p_PolyhedralFace swig_types[213]
+#define SWIGTYPE_p_PolyhedralTopology swig_types[214]
+#define SWIGTYPE_p_ProfileBar swig_types[215]
+#define SWIGTYPE_p_ProfileRipple1 swig_types[216]
+#define SWIGTYPE_p_ProfileRipple2 swig_types[217]
+#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[218]
+#define SWIGTYPE_p_PyBuilderCallback swig_types[219]
+#define SWIGTYPE_p_PyObserverCallback swig_types[220]
+#define SWIGTYPE_p_QSpecScan swig_types[221]
+#define SWIGTYPE_p_RangedDistribution swig_types[222]
+#define SWIGTYPE_p_RangedDistributionCosine swig_types[223]
+#define SWIGTYPE_p_RangedDistributionGate swig_types[224]
+#define SWIGTYPE_p_RangedDistributionGaussian swig_types[225]
+#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[226]
+#define SWIGTYPE_p_RangedDistributionLorentz swig_types[227]
+#define SWIGTYPE_p_RealLimits swig_types[228]
+#define SWIGTYPE_p_RealParameter swig_types[229]
+#define SWIGTYPE_p_Rectangle swig_types[230]
+#define SWIGTYPE_p_RectangularDetector swig_types[231]
+#define SWIGTYPE_p_RectangularPixel swig_types[232]
+#define SWIGTYPE_p_RegionOfInterest swig_types[233]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[234]
+#define SWIGTYPE_p_RotationEuler swig_types[235]
+#define SWIGTYPE_p_RotationX swig_types[236]
+#define SWIGTYPE_p_RotationY swig_types[237]
+#define SWIGTYPE_p_RotationZ swig_types[238]
+#define SWIGTYPE_p_RoughnessModelWrap swig_types[239]
+#define SWIGTYPE_p_RoughnessModelWrap__RoughnessModel swig_types[240]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[241]
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[242]
+#define SWIGTYPE_p_ScanResolution swig_types[243]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[244]
+#define SWIGTYPE_p_Simulation swig_types[245]
+#define SWIGTYPE_p_Simulation2D swig_types[246]
+#define SWIGTYPE_p_SimulationFactory swig_types[247]
+#define SWIGTYPE_p_SimulationOptions swig_types[248]
+#define SWIGTYPE_p_SimulationResult swig_types[249]
+#define SWIGTYPE_p_SlicedParticle swig_types[250]
+#define SWIGTYPE_p_SlicingEffects swig_types[251]
+#define SWIGTYPE_p_SpecularDetector1D swig_types[252]
+#define SWIGTYPE_p_SpecularSimulation swig_types[253]
+#define SWIGTYPE_p_SphericalDetector swig_types[254]
+#define SWIGTYPE_p_SphericalPixel swig_types[255]
+#define SWIGTYPE_p_SquareLattice swig_types[256]
+#define SWIGTYPE_p_ThreadInfo swig_types[257]
+#define SWIGTYPE_p_Transform3D swig_types[258]
+#define SWIGTYPE_p_VariableBinAxis swig_types[259]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[260]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[261]
+#define SWIGTYPE_p_VerticalLine swig_types[262]
+#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[263]
+#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[264]
+#define SWIGTYPE_p_WavevectorInfo swig_types[265]
+#define SWIGTYPE_p_ZLimits swig_types[266]
+#define SWIGTYPE_p_allocator_type swig_types[267]
+#define SWIGTYPE_p_bool swig_types[268]
+#define SWIGTYPE_p_char swig_types[269]
+#define SWIGTYPE_p_const_iterator swig_types[270]
+#define SWIGTYPE_p_corr_matrix_t swig_types[271]
+#define SWIGTYPE_p_difference_type swig_types[272]
+#define SWIGTYPE_p_double swig_types[273]
+#define SWIGTYPE_p_first_type swig_types[274]
+#define SWIGTYPE_p_int swig_types[275]
+#define SWIGTYPE_p_iterator swig_types[276]
+#define SWIGTYPE_p_key_type swig_types[277]
+#define SWIGTYPE_p_long_long swig_types[278]
+#define SWIGTYPE_p_mapped_type swig_types[279]
+#define SWIGTYPE_p_observer_t swig_types[280]
+#define SWIGTYPE_p_p_PyObject swig_types[281]
+#define SWIGTYPE_p_parameters_t swig_types[282]
+#define SWIGTYPE_p_second_type swig_types[283]
+#define SWIGTYPE_p_short swig_types[284]
+#define SWIGTYPE_p_signed_char swig_types[285]
+#define SWIGTYPE_p_size_type swig_types[286]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[287]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[288]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[289]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[290]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[291]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[292]
+#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[293]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[294]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[295]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[296]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[297]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[298]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[299]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[300]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[301]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[302]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[303]
+#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[304]
+#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[305]
+#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[306]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[307]
+#define SWIGTYPE_p_std__invalid_argument swig_types[308]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[309]
+#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[310]
+#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[311]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[312]
+#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[313]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[314]
+#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[315]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[316]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[317]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[318]
+#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[319]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[320]
+#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[321]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[322]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[323]
+#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[324]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[325]
+#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[326]
+#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[327]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[328]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[329]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[330]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[331]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[332]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[333]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[334]
+#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[335]
+#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[336]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[337]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[338]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[339]
+#define SWIGTYPE_p_unsigned_char swig_types[340]
+#define SWIGTYPE_p_unsigned_int swig_types[341]
+#define SWIGTYPE_p_unsigned_long_long swig_types[342]
+#define SWIGTYPE_p_unsigned_short swig_types[343]
+#define SWIGTYPE_p_value_type swig_types[344]
+static swig_type_info *swig_types[346];
+static swig_module_info swig_module = {swig_types, 345, 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)
 
@@ -6913,6 +6919,7 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "FootprintFactorGaussian.h"
 #include "FootprintFactorSquare.h"
 #include "FormFactorAnisoPyramid.h"
+#include "FormFactorBar.h"
 #include "FormFactorBox.h"
 #include "FormFactorCone.h"
 #include "FormFactorCone6.h"
@@ -49451,6 +49458,62 @@ fail:
 
 
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_14(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
+  FormFactorBarGauss *arg2 = (FormFactorBarGauss *) 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_FormFactorBarGauss, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorBarGauss const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorBarGauss * >(argp2);
+  (arg1)->visit((FormFactorBarGauss const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_15(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
+  FormFactorBarLorentz *arg2 = (FormFactorBarLorentz *) 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_FormFactorBarLorentz, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorBarLorentz const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorBarLorentz * >(argp2);
+  (arg1)->visit((FormFactorBarLorentz const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_16(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorBox *arg2 = (FormFactorBox *) 0 ;
@@ -49478,7 +49541,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_15(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_17(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCone *arg2 = (FormFactorCone *) 0 ;
@@ -49506,7 +49569,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_16(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_18(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCone6 *arg2 = (FormFactorCone6 *) 0 ;
@@ -49534,7 +49597,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_17(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_19(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCoreShell *arg2 = (FormFactorCoreShell *) 0 ;
@@ -49562,7 +49625,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_18(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_20(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCrystal *arg2 = (FormFactorCrystal *) 0 ;
@@ -49590,7 +49653,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_19(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_21(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCuboctahedron *arg2 = (FormFactorCuboctahedron *) 0 ;
@@ -49618,7 +49681,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_20(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_22(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorCylinder *arg2 = (FormFactorCylinder *) 0 ;
@@ -49646,7 +49709,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_21(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_23(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDecoratorMaterial *arg2 = (FormFactorDecoratorMaterial *) 0 ;
@@ -49674,7 +49737,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_22(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_24(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDecoratorPositionFactor *arg2 = (FormFactorDecoratorPositionFactor *) 0 ;
@@ -49702,7 +49765,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_23(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_25(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDecoratorRotation *arg2 = (FormFactorDecoratorRotation *) 0 ;
@@ -49730,7 +49793,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_24(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_26(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDodecahedron *arg2 = (FormFactorDodecahedron *) 0 ;
@@ -49758,7 +49821,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_25(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_27(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDWBA *arg2 = (FormFactorDWBA *) 0 ;
@@ -49786,7 +49849,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_26(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_28(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDWBAPol *arg2 = (FormFactorDWBAPol *) 0 ;
@@ -49814,7 +49877,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_27(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_29(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorEllipsoidalCylinder *arg2 = (FormFactorEllipsoidalCylinder *) 0 ;
@@ -49842,7 +49905,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_28(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_30(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorFullSphere *arg2 = (FormFactorFullSphere *) 0 ;
@@ -49870,7 +49933,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_29(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_31(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorFullSpheroid *arg2 = (FormFactorFullSpheroid *) 0 ;
@@ -49898,7 +49961,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_30(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_32(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorGauss *arg2 = (FormFactorGauss *) 0 ;
@@ -49926,7 +49989,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_31(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_33(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorHemiEllipsoid *arg2 = (FormFactorHemiEllipsoid *) 0 ;
@@ -49954,7 +50017,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_32(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 ;
   FormFactorIcosahedron *arg2 = (FormFactorIcosahedron *) 0 ;
@@ -49982,7 +50045,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_33(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 ;
   FormFactorLongBoxGauss *arg2 = (FormFactorLongBoxGauss *) 0 ;
@@ -50010,7 +50073,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_34(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 ;
   FormFactorLongBoxLorentz *arg2 = (FormFactorLongBoxLorentz *) 0 ;
@@ -50038,7 +50101,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_37(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorLorentz *arg2 = (FormFactorLorentz *) 0 ;
@@ -50066,7 +50129,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_38(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPrism3 *arg2 = (FormFactorPrism3 *) 0 ;
@@ -50094,7 +50157,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_39(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPrism6 *arg2 = (FormFactorPrism6 *) 0 ;
@@ -50122,7 +50185,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_40(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorPyramid *arg2 = (FormFactorPyramid *) 0 ;
@@ -50150,7 +50213,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_41(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorRipple1Box *arg2 = (FormFactorRipple1Box *) 0 ;
@@ -50178,7 +50241,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_40(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_42(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorRipple1Gauss *arg2 = (FormFactorRipple1Gauss *) 0 ;
@@ -50206,7 +50269,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_41(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 ;
   FormFactorRipple1Lorentz *arg2 = (FormFactorRipple1Lorentz *) 0 ;
@@ -50234,10 +50297,10 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_42(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 ;
-  FormFactorRipple2 *arg2 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Box *arg2 = (FormFactorRipple2Box *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -50249,12 +50312,12 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_42(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_FormFactorRipple2, 0 |  0 );
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorRipple2Box, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple2Box const *""'"); 
   }
-  arg2 = reinterpret_cast< FormFactorRipple2 * >(argp2);
-  (arg1)->visit((FormFactorRipple2 const *)arg2);
+  arg2 = reinterpret_cast< FormFactorRipple2Box * >(argp2);
+  (arg1)->visit((FormFactorRipple2Box const *)arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -50262,7 +50325,63 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_43(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 ;
+  FormFactorRipple2Gauss *arg2 = (FormFactorRipple2Gauss *) 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_FormFactorRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple2Gauss const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorRipple2Gauss * >(argp2);
+  (arg1)->visit((FormFactorRipple2Gauss const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_46(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  INodeVisitor *arg1 = (INodeVisitor *) 0 ;
+  FormFactorRipple2Lorentz *arg2 = (FormFactorRipple2Lorentz *) 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_FormFactorRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorRipple2Lorentz const *""'"); 
+  }
+  arg2 = reinterpret_cast< FormFactorRipple2Lorentz * >(argp2);
+  (arg1)->visit((FormFactorRipple2Lorentz const *)arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_47(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorSphereGaussianRadius *arg2 = (FormFactorSphereGaussianRadius *) 0 ;
@@ -50290,7 +50409,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_48(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorSphereLogNormalRadius *arg2 = (FormFactorSphereLogNormalRadius *) 0 ;
@@ -50318,7 +50437,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_49(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTetrahedron *arg2 = (FormFactorTetrahedron *) 0 ;
@@ -50346,7 +50465,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_50(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorDot *arg2 = (FormFactorDot *) 0 ;
@@ -50374,7 +50493,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_51(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedCube *arg2 = (FormFactorTruncatedCube *) 0 ;
@@ -50402,7 +50521,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_52(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedSphere *arg2 = (FormFactorTruncatedSphere *) 0 ;
@@ -50430,7 +50549,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_53(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorTruncatedSpheroid *arg2 = (FormFactorTruncatedSpheroid *) 0 ;
@@ -50458,7 +50577,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_54(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FormFactorWeighted *arg2 = (FormFactorWeighted *) 0 ;
@@ -50486,7 +50605,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_55(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DCauchy *arg2 = (FTDecayFunction1DCauchy *) 0 ;
@@ -50514,7 +50633,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_56(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DGauss *arg2 = (FTDecayFunction1DGauss *) 0 ;
@@ -50542,7 +50661,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_57(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DTriangle *arg2 = (FTDecayFunction1DTriangle *) 0 ;
@@ -50570,7 +50689,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_58(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction1DVoigt *arg2 = (FTDecayFunction1DVoigt *) 0 ;
@@ -50598,7 +50717,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_59(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DCauchy *arg2 = (FTDecayFunction2DCauchy *) 0 ;
@@ -50626,7 +50745,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_60(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DGauss *arg2 = (FTDecayFunction2DGauss *) 0 ;
@@ -50654,7 +50773,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_61(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDecayFunction2DVoigt *arg2 = (FTDecayFunction2DVoigt *) 0 ;
@@ -50682,7 +50801,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_62(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DCauchy *arg2 = (FTDistribution1DCauchy *) 0 ;
@@ -50710,7 +50829,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_63(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DCosine *arg2 = (FTDistribution1DCosine *) 0 ;
@@ -50738,7 +50857,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_64(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DGate *arg2 = (FTDistribution1DGate *) 0 ;
@@ -50766,7 +50885,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_65(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DGauss *arg2 = (FTDistribution1DGauss *) 0 ;
@@ -50794,7 +50913,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_66(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DTriangle *arg2 = (FTDistribution1DTriangle *) 0 ;
@@ -50822,7 +50941,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_67(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution1DVoigt *arg2 = (FTDistribution1DVoigt *) 0 ;
@@ -50850,7 +50969,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_68(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DCauchy *arg2 = (FTDistribution2DCauchy *) 0 ;
@@ -50878,7 +50997,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_69(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DCone *arg2 = (FTDistribution2DCone *) 0 ;
@@ -50906,7 +51025,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_70(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DGate *arg2 = (FTDistribution2DGate *) 0 ;
@@ -50934,7 +51053,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_71(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DGauss *arg2 = (FTDistribution2DGauss *) 0 ;
@@ -50962,7 +51081,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_72(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   FTDistribution2DVoigt *arg2 = (FTDistribution2DVoigt *) 0 ;
@@ -50990,7 +51109,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_73(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   GISASSimulation *arg2 = (GISASSimulation *) 0 ;
@@ -51018,7 +51137,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_74(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   HexagonalLattice *arg2 = (HexagonalLattice *) 0 ;
@@ -51046,7 +51165,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_75(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IAbstractParticle *arg2 = (IAbstractParticle *) 0 ;
@@ -51074,7 +51193,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_76(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IClusteredParticles *arg2 = (IClusteredParticles *) 0 ;
@@ -51102,7 +51221,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_77(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IdentityRotation *arg2 = (IdentityRotation *) 0 ;
@@ -51130,7 +51249,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_78(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactor *arg2 = (IFormFactor *) 0 ;
@@ -51158,7 +51277,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_79(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactorBorn *arg2 = (IFormFactorBorn *) 0 ;
@@ -51186,7 +51305,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_80(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IFormFactorDecorator *arg2 = (IFormFactorDecorator *) 0 ;
@@ -51214,7 +51333,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_81(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IInterferenceFunction *arg2 = (IInterferenceFunction *) 0 ;
@@ -51242,7 +51361,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_82(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ILayout *arg2 = (ILayout *) 0 ;
@@ -51270,7 +51389,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_83(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   INode *arg2 = (INode *) 0 ;
@@ -51298,7 +51417,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_84(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Instrument *arg2 = (Instrument *) 0 ;
@@ -51326,7 +51445,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_85(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IntensityNormalizer *arg2 = (IntensityNormalizer *) 0 ;
@@ -51354,7 +51473,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_86(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IntensityScaleAndShiftNormalizer *arg2 = (IntensityScaleAndShiftNormalizer *) 0 ;
@@ -51382,7 +51501,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_87(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction1DLattice *arg2 = (InterferenceFunction1DLattice *) 0 ;
@@ -51410,7 +51529,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_88(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DLattice *arg2 = (InterferenceFunction2DLattice *) 0 ;
@@ -51438,7 +51557,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_89(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DParaCrystal *arg2 = (InterferenceFunction2DParaCrystal *) 0 ;
@@ -51466,7 +51585,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_90(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction2DSuperLattice *arg2 = (InterferenceFunction2DSuperLattice *) 0 ;
@@ -51494,7 +51613,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_91(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunction3DLattice *arg2 = (InterferenceFunction3DLattice *) 0 ;
@@ -51522,7 +51641,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_92(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionFinite2DLattice *arg2 = (InterferenceFunctionFinite2DLattice *) 0 ;
@@ -51550,7 +51669,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_93(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionFinite3DLattice *arg2 = (InterferenceFunctionFinite3DLattice *) 0 ;
@@ -51578,7 +51697,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_94(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionHardDisk *arg2 = (InterferenceFunctionHardDisk *) 0 ;
@@ -51606,7 +51725,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_95(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionRadialParaCrystal *arg2 = (InterferenceFunctionRadialParaCrystal *) 0 ;
@@ -51634,7 +51753,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_96(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionTwin *arg2 = (InterferenceFunctionTwin *) 0 ;
@@ -51662,7 +51781,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_97(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   InterferenceFunctionNone *arg2 = (InterferenceFunctionNone *) 0 ;
@@ -51690,7 +51809,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_98(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IParticle *arg2 = (IParticle *) 0 ;
@@ -51718,7 +51837,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_99(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IPeakShape *arg2 = (IPeakShape *) 0 ;
@@ -51746,7 +51865,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_100(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IRotation *arg2 = (IRotation *) 0 ;
@@ -51774,7 +51893,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_101(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ISample *arg2 = (ISample *) 0 ;
@@ -51802,7 +51921,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_102(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   IsGISAXSDetector *arg2 = (IsGISAXSDetector *) 0 ;
@@ -51830,7 +51949,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_103(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Layer *arg2 = (Layer *) 0 ;
@@ -51858,7 +51977,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_104(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   LayerInterface *arg2 = (LayerInterface *) 0 ;
@@ -51886,7 +52005,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_105(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   LayerRoughness *arg2 = (LayerRoughness *) 0 ;
@@ -51914,7 +52033,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_106(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   MesoCrystal *arg2 = (MesoCrystal *) 0 ;
@@ -51942,7 +52061,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_107(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   MultiLayer *arg2 = (MultiLayer *) 0 ;
@@ -51970,7 +52089,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_108(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   OffSpecSimulation *arg2 = (OffSpecSimulation *) 0 ;
@@ -51998,7 +52117,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_109(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   Particle *arg2 = (Particle *) 0 ;
@@ -52026,7 +52145,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_110(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleComposition *arg2 = (ParticleComposition *) 0 ;
@@ -52054,7 +52173,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_111(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleCoreShell *arg2 = (ParticleCoreShell *) 0 ;
@@ -52082,7 +52201,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_112(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleDistribution *arg2 = (ParticleDistribution *) 0 ;
@@ -52110,7 +52229,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_113(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ParticleLayout *arg2 = (ParticleLayout *) 0 ;
@@ -52138,7 +52257,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_114(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   PoissonNoiseBackground *arg2 = (PoissonNoiseBackground *) 0 ;
@@ -52166,7 +52285,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_115(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RectangularDetector *arg2 = (RectangularDetector *) 0 ;
@@ -52194,7 +52313,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_116(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   ResolutionFunction2DGaussian *arg2 = (ResolutionFunction2DGaussian *) 0 ;
@@ -52222,7 +52341,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_117(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationEuler *arg2 = (RotationEuler *) 0 ;
@@ -52250,7 +52369,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_118(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationX *arg2 = (RotationX *) 0 ;
@@ -52278,7 +52397,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_119(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationY *arg2 = (RotationY *) 0 ;
@@ -52306,7 +52425,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_120(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   RotationZ *arg2 = (RotationZ *) 0 ;
@@ -52334,7 +52453,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_121(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SpecularDetector1D *arg2 = (SpecularDetector1D *) 0 ;
@@ -52362,7 +52481,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_122(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SpecularSimulation *arg2 = (SpecularSimulation *) 0 ;
@@ -52390,7 +52509,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_123(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SphericalDetector *arg2 = (SphericalDetector *) 0 ;
@@ -52418,7 +52537,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_120(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_124(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
   SquareLattice *arg2 = (SquareLattice *) 0 ;
@@ -52657,7 +52776,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_FormFactorBox, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorBarGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_14(self, argc, argv);
@@ -52671,7 +52790,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_FormFactorCone, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorBarLorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_15(self, argc, argv);
@@ -52685,7 +52804,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_FormFactorCone6, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorBox, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_16(self, argc, argv);
@@ -52699,7 +52818,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_FormFactorCoreShell, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCone, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_17(self, argc, argv);
@@ -52713,7 +52832,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_FormFactorCrystal, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCone6, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_18(self, argc, argv);
@@ -52727,7 +52846,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_FormFactorCuboctahedron, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCoreShell, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_19(self, argc, argv);
@@ -52741,7 +52860,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_FormFactorCylinder, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCrystal, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_20(self, argc, argv);
@@ -52755,7 +52874,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_FormFactorDecoratorMaterial, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCuboctahedron, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_21(self, argc, argv);
@@ -52769,7 +52888,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_FormFactorDecoratorPositionFactor, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorCylinder, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_22(self, argc, argv);
@@ -52783,7 +52902,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_FormFactorDecoratorRotation, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDecoratorMaterial, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_23(self, argc, argv);
@@ -52797,7 +52916,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_FormFactorDodecahedron, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDecoratorPositionFactor, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_24(self, argc, argv);
@@ -52811,7 +52930,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_FormFactorDWBA, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDecoratorRotation, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_25(self, argc, argv);
@@ -52825,7 +52944,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_FormFactorDWBAPol, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDodecahedron, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_26(self, argc, argv);
@@ -52839,7 +52958,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_FormFactorEllipsoidalCylinder, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDWBA, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_27(self, argc, argv);
@@ -52853,7 +52972,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_FormFactorFullSphere, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorDWBAPol, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_28(self, argc, argv);
@@ -52867,7 +52986,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_FormFactorFullSpheroid, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorEllipsoidalCylinder, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_29(self, argc, argv);
@@ -52881,7 +53000,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_FormFactorGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorFullSphere, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_30(self, argc, argv);
@@ -52895,7 +53014,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_FormFactorHemiEllipsoid, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorFullSpheroid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_31(self, argc, argv);
@@ -52909,7 +53028,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_FormFactorIcosahedron, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_32(self, argc, argv);
@@ -52923,7 +53042,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_FormFactorHemiEllipsoid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_33(self, argc, argv);
@@ -52937,7 +53056,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_FormFactorIcosahedron, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_34(self, argc, argv);
@@ -52951,7 +53070,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_FormFactorLongBoxGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_35(self, argc, argv);
@@ -52965,7 +53084,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_FormFactorLongBoxLorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_36(self, argc, argv);
@@ -52979,7 +53098,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_FormFactorLorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_37(self, argc, argv);
@@ -52993,7 +53112,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_FormFactorPrism3, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_38(self, argc, argv);
@@ -53007,7 +53126,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_FormFactorRipple1Box, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPrism6, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_39(self, argc, argv);
@@ -53021,7 +53140,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_FormFactorRipple1Gauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorPyramid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_40(self, argc, argv);
@@ -53035,7 +53154,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_FormFactorRipple1Lorentz, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorRipple1Box, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_41(self, argc, argv);
@@ -53049,7 +53168,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_FormFactorRipple1Gauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_42(self, argc, argv);
@@ -53063,7 +53182,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_FormFactorRipple1Lorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_43(self, argc, argv);
@@ -53077,7 +53196,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_FormFactorRipple2Box, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_44(self, argc, argv);
@@ -53091,7 +53210,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_FormFactorRipple2Gauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_45(self, argc, argv);
@@ -53105,7 +53224,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_FormFactorRipple2Lorentz, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_46(self, argc, argv);
@@ -53119,7 +53238,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_FormFactorSphereGaussianRadius, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_47(self, argc, argv);
@@ -53133,7 +53252,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_FormFactorSphereLogNormalRadius, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_48(self, argc, argv);
@@ -53147,7 +53266,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_FormFactorTetrahedron, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_49(self, argc, argv);
@@ -53161,7 +53280,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_FormFactorDot, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_50(self, argc, argv);
@@ -53175,7 +53294,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_FormFactorTruncatedCube, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_51(self, argc, argv);
@@ -53189,7 +53308,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_FormFactorTruncatedSphere, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_52(self, argc, argv);
@@ -53203,7 +53322,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_FormFactorTruncatedSpheroid, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_53(self, argc, argv);
@@ -53217,7 +53336,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_FormFactorWeighted, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_54(self, argc, argv);
@@ -53231,7 +53350,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_FTDecayFunction1DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_55(self, argc, argv);
@@ -53245,7 +53364,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_FTDecayFunction1DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_56(self, argc, argv);
@@ -53259,7 +53378,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_FTDecayFunction1DTriangle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_57(self, argc, argv);
@@ -53273,7 +53392,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_FTDecayFunction1DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_58(self, argc, argv);
@@ -53287,7 +53406,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_FTDecayFunction2DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_59(self, argc, argv);
@@ -53301,7 +53420,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_FTDecayFunction2DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_60(self, argc, argv);
@@ -53315,7 +53434,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_FTDecayFunction2DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_61(self, argc, argv);
@@ -53329,7 +53448,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_FTDistribution1DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_62(self, argc, argv);
@@ -53343,7 +53462,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_FTDistribution1DCosine, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_63(self, argc, argv);
@@ -53357,7 +53476,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_FTDistribution1DGate, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_64(self, argc, argv);
@@ -53371,7 +53490,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_FTDistribution1DGauss, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_65(self, argc, argv);
@@ -53385,7 +53504,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_FTDistribution1DTriangle, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_66(self, argc, argv);
@@ -53399,7 +53518,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_FTDistribution1DVoigt, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_67(self, argc, argv);
@@ -53413,7 +53532,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_FTDistribution2DCauchy, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_68(self, argc, argv);
@@ -53427,7 +53546,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_FTDistribution2DCone, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_69(self, argc, argv);
@@ -53441,13 +53560,69 @@ 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_FTDistribution2DGate, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_70(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_FTDistribution2DGauss, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_INodeVisitor_visit__SWIG_71(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_FTDistribution2DVoigt, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_INodeVisitor_visit__SWIG_72(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_GISASSimulation, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_INodeVisitor_visit__SWIG_73(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_74(self, argc, argv);
+      }
+    }
+  }
   if (argc == 2) {
     int _v;
     void *vptr = 0;
@@ -53458,7 +53633,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_102(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_106(self, argc, argv);
       }
     }
   }
@@ -53472,7 +53647,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_72(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_76(self, argc, argv);
       }
     }
   }
@@ -53486,7 +53661,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_73(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_77(self, argc, argv);
       }
     }
   }
@@ -53500,7 +53675,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_75(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_79(self, argc, argv);
       }
     }
   }
@@ -53514,7 +53689,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_76(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_80(self, argc, argv);
       }
     }
   }
@@ -53528,7 +53703,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_74(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_78(self, argc, argv);
       }
     }
   }
@@ -53542,7 +53717,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_83(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_87(self, argc, argv);
       }
     }
   }
@@ -53556,7 +53731,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_109(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_113(self, argc, argv);
       }
     }
   }
@@ -53570,7 +53745,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_80(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_84(self, argc, argv);
       }
     }
   }
@@ -53584,7 +53759,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_82(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_86(self, argc, argv);
       }
     }
   }
@@ -53598,7 +53773,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_81(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_85(self, argc, argv);
       }
     }
   }
@@ -53612,7 +53787,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_84(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_88(self, argc, argv);
       }
     }
   }
@@ -53626,7 +53801,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_85(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_89(self, argc, argv);
       }
     }
   }
@@ -53640,7 +53815,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_86(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_90(self, argc, argv);
       }
     }
   }
@@ -53654,7 +53829,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_87(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_91(self, argc, argv);
       }
     }
   }
@@ -53668,7 +53843,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_88(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_92(self, argc, argv);
       }
     }
   }
@@ -53682,7 +53857,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_89(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_93(self, argc, argv);
       }
     }
   }
@@ -53696,7 +53871,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_90(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_94(self, argc, argv);
       }
     }
   }
@@ -53710,7 +53885,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_91(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_95(self, argc, argv);
       }
     }
   }
@@ -53724,7 +53899,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_92(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_96(self, argc, argv);
       }
     }
   }
@@ -53738,7 +53913,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_93(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_97(self, argc, argv);
       }
     }
   }
@@ -53752,7 +53927,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_77(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_81(self, argc, argv);
       }
     }
   }
@@ -53766,7 +53941,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_105(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_109(self, argc, argv);
       }
     }
   }
@@ -53780,7 +53955,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_95(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_99(self, argc, argv);
       }
     }
   }
@@ -53794,7 +53969,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_113(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_117(self, argc, argv);
       }
     }
   }
@@ -53808,7 +53983,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_99(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_103(self, argc, argv);
       }
     }
   }
@@ -53822,7 +53997,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_98(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_102(self, argc, argv);
       }
     }
   }
@@ -53836,7 +54011,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_101(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_105(self, argc, argv);
       }
     }
   }
@@ -53850,7 +54025,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_106(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_110(self, argc, argv);
       }
     }
   }
@@ -53864,7 +54039,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_100(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_104(self, argc, argv);
       }
     }
   }
@@ -53878,7 +54053,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_103(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_107(self, argc, argv);
       }
     }
   }
@@ -53892,7 +54067,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_107(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_111(self, argc, argv);
       }
     }
   }
@@ -53906,7 +54081,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_104(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_108(self, argc, argv);
       }
     }
   }
@@ -53920,7 +54095,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_94(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_98(self, argc, argv);
       }
     }
   }
@@ -53934,7 +54109,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_108(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_112(self, argc, argv);
       }
     }
   }
@@ -53948,7 +54123,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_71(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_75(self, argc, argv);
       }
     }
   }
@@ -53962,7 +54137,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_78(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_82(self, argc, argv);
       }
     }
   }
@@ -53976,7 +54151,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_114(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_118(self, argc, argv);
       }
     }
   }
@@ -53990,7 +54165,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_110(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_114(self, argc, argv);
       }
     }
   }
@@ -54004,7 +54179,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_111(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_115(self, argc, argv);
       }
     }
   }
@@ -54018,7 +54193,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_112(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_116(self, argc, argv);
       }
     }
   }
@@ -54032,7 +54207,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_115(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_119(self, argc, argv);
       }
     }
   }
@@ -54046,7 +54221,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_116(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_120(self, argc, argv);
       }
     }
   }
@@ -54060,7 +54235,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_96(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_100(self, argc, argv);
       }
     }
   }
@@ -54074,7 +54249,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_97(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_101(self, argc, argv);
       }
     }
   }
@@ -54088,7 +54263,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_118(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_122(self, argc, argv);
       }
     }
   }
@@ -54102,7 +54277,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_117(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_121(self, argc, argv);
       }
     }
   }
@@ -54116,7 +54291,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_119(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_123(self, argc, argv);
       }
     }
   }
@@ -54130,7 +54305,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_120(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_124(self, argc, argv);
       }
     }
   }
@@ -54144,7 +54319,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_79(self, argc, argv);
+        return _wrap_INodeVisitor_visit__SWIG_83(self, argc, argv);
       }
     }
   }
@@ -54166,6 +54341,8 @@ fail:
     "    INodeVisitor::visit(FootprintFactorGaussian const *)\n"
     "    INodeVisitor::visit(FootprintFactorSquare const *)\n"
     "    INodeVisitor::visit(FormFactorAnisoPyramid const *)\n"
+    "    INodeVisitor::visit(FormFactorBarGauss const *)\n"
+    "    INodeVisitor::visit(FormFactorBarLorentz const *)\n"
     "    INodeVisitor::visit(FormFactorBox const *)\n"
     "    INodeVisitor::visit(FormFactorCone const *)\n"
     "    INodeVisitor::visit(FormFactorCone6 const *)\n"
@@ -54194,7 +54371,9 @@ fail:
     "    INodeVisitor::visit(FormFactorRipple1Box const *)\n"
     "    INodeVisitor::visit(FormFactorRipple1Gauss const *)\n"
     "    INodeVisitor::visit(FormFactorRipple1Lorentz const *)\n"
-    "    INodeVisitor::visit(FormFactorRipple2 const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple2Box const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple2Gauss const *)\n"
+    "    INodeVisitor::visit(FormFactorRipple2Lorentz const *)\n"
     "    INodeVisitor::visit(FormFactorSphereGaussianRadius const *)\n"
     "    INodeVisitor::visit(FormFactorSphereLogNormalRadius const *)\n"
     "    INodeVisitor::visit(FormFactorTetrahedron const *)\n"
@@ -68697,6 +68876,165 @@ SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSE
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_ProfileBar_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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_ProfileBar, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileBar_getLength" "', argument " "1"" of type '" "ProfileBar const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(argp1);
+  result = (double)((ProfileBar const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileBar_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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_ProfileBar, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileBar_getHeight" "', argument " "1"" of type '" "ProfileBar const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(argp1);
+  result = (double)((ProfileBar const *)arg1)->getHeight();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileBar_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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_ProfileBar, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileBar_getWidth" "', argument " "1"" of type '" "ProfileBar const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(argp1);
+  result = (double)((ProfileBar const *)arg1)->getWidth();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileBar_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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_ProfileBar, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileBar_radialExtension" "', argument " "1"" of type '" "ProfileBar const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(argp1);
+  result = (double)((ProfileBar const *)arg1)->radialExtension();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileBar_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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, "ProfileBar_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileBar, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileBar_evaluate_for_q" "', argument " "1"" of type '" "ProfileBar const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(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 '" "ProfileBar_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
+    }  
+    if (!argp2) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ProfileBar_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 = ((ProfileBar 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_ProfileBar(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileBar *arg1 = (ProfileBar *) 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_ProfileBar, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ProfileBar" "', argument " "1"" of type '" "ProfileBar *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileBar * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *ProfileBar_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_ProfileBar, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_ProfileRipple1_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ProfileRipple1 *arg1 = (ProfileRipple1 *) 0 ;
@@ -68856,6 +69194,188 @@ SWIGINTERN PyObject *ProfileRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self),
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_ProfileRipple2_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_getLength" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  result = (double)((ProfileRipple2 const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple2_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_getHeight" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  result = (double)((ProfileRipple2 const *)arg1)->getHeight();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple2_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_getWidth" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  result = (double)((ProfileRipple2 const *)arg1)->getWidth();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple2_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_getAsymmetry" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  result = (double)((ProfileRipple2 const *)arg1)->getAsymmetry();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple2_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_radialExtension" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  result = (double)((ProfileRipple2 const *)arg1)->radialExtension();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ProfileRipple2_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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, "ProfileRipple2_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ProfileRipple2, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ProfileRipple2_evaluate_for_q" "', argument " "1"" of type '" "ProfileRipple2 const *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(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 '" "ProfileRipple2_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
+    }  
+    if (!argp2) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ProfileRipple2_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 = ((ProfileRipple2 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_ProfileRipple2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ProfileRipple2 *arg1 = (ProfileRipple2 *) 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_ProfileRipple2, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ProfileRipple2" "', argument " "1"" of type '" "ProfileRipple2 *""'"); 
+  }
+  arg1 = reinterpret_cast< ProfileRipple2 * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *ProfileRipple2_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_ProfileRipple2, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_factor_x_box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   complex_t arg1 ;
@@ -74587,7 +75107,7 @@ SWIGINTERN PyObject *FormFactorPyramid_swiginit(PyObject *SWIGUNUSEDPARM(self),
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorRipple2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple2Box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -74602,63 +75122,63 @@ SWIGINTERN PyObject *_wrap_new_FormFactorRipple2(PyObject *SWIGUNUSEDPARM(self),
   double val4 ;
   int ecode4 = 0 ;
   PyObject *swig_obj[4] ;
-  FormFactorRipple2 *result = 0 ;
+  FormFactorRipple2Box *result = 0 ;
   
-  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple2", 4, 4, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple2Box", 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_FormFactorRipple2" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorRipple2Box" "', 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_FormFactorRipple2" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorRipple2Box" "', 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_FormFactorRipple2" "', argument " "3"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorRipple2Box" "', 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_FormFactorRipple2" "', argument " "4"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorRipple2Box" "', argument " "4"" of type '" "double""'");
   } 
   arg4 = static_cast< double >(val4);
-  result = (FormFactorRipple2 *)new FormFactorRipple2(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorRipple2Box *)new FormFactorRipple2Box(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Box, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Box_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Box *arg1 = (FormFactorRipple2Box *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorRipple2 *result = 0 ;
+  FormFactorRipple2Box *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Box, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_clone" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Box_clone" "', argument " "1"" of type '" "FormFactorRipple2Box const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (FormFactorRipple2 *)((FormFactorRipple2 const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorRipple2Box * >(argp1);
+  result = (FormFactorRipple2Box *)((FormFactorRipple2Box const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Box, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Box_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Box *arg1 = (FormFactorRipple2Box *) 0 ;
   INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -74666,18 +75186,18 @@ SWIGINTERN PyObject *_wrap_FormFactorRipple2_accept(PyObject *SWIGUNUSEDPARM(sel
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple2_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple2Box_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Box, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_accept" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Box_accept" "', argument " "1"" of type '" "FormFactorRipple2Box const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple2Box * >(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 '" "FormFactorRipple2_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorRipple2Box_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
   arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorRipple2 const *)arg1)->accept(arg2);
+  ((FormFactorRipple2Box const *)arg1)->accept(arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -74685,173 +75205,151 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple2Box(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Box *arg1 = (FormFactorRipple2Box *) 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_FormFactorRipple2, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Box, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_getHeight" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple2Box" "', argument " "1"" of type '" "FormFactorRipple2Box *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (double)((FormFactorRipple2 const *)arg1)->getHeight();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  arg1 = reinterpret_cast< FormFactorRipple2Box * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 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_FormFactorRipple2, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_getWidth" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (double)((FormFactorRipple2 const *)arg1)->getWidth();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
+SWIGINTERN PyObject *FormFactorRipple2Box_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2Box, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
 }
 
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 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_FormFactorRipple2, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_getLength" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (double)((FormFactorRipple2 const *)arg1)->getLength();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
+SWIGINTERN PyObject *FormFactorRipple2Box_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
 }
 
-
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
+  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] ;
+  FormFactorRipple2Gauss *result = 0 ;
   
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_getAsymmetry" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
-  }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (double)((FormFactorRipple2 const *)arg1)->getAsymmetry();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple2Gauss", 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_FormFactorRipple2Gauss" "', 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_FormFactorRipple2Gauss" "', 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_FormFactorRipple2Gauss" "', 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_FormFactorRipple2Gauss" "', argument " "4"" of type '" "double""'");
+  } 
+  arg4 = static_cast< double >(val4);
+  result = (FormFactorRipple2Gauss *)new FormFactorRipple2Gauss(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Gauss, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Gauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Gauss *arg1 = (FormFactorRipple2Gauss *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  double result;
+  FormFactorRipple2Gauss *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Gauss, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_radialExtension" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Gauss_clone" "', argument " "1"" of type '" "FormFactorRipple2Gauss const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
-  result = (double)((FormFactorRipple2 const *)arg1)->radialExtension();
-  resultobj = SWIG_From_double(static_cast< double >(result));
+  arg1 = reinterpret_cast< FormFactorRipple2Gauss * >(argp1);
+  result = (FormFactorRipple2Gauss *)((FormFactorRipple2Gauss const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Gauss, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorRipple2_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Gauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
-  cvector_t arg2 ;
+  FormFactorRipple2Gauss *arg1 = (FormFactorRipple2Gauss *) 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, "FormFactorRipple2_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorRipple2Gauss_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Gauss, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2_evaluate_for_q" "', argument " "1"" of type '" "FormFactorRipple2 const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Gauss_accept" "', argument " "1"" of type '" "FormFactorRipple2Gauss const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(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 '" "FormFactorRipple2_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorRipple2_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< FormFactorRipple2Gauss * >(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 '" "FormFactorRipple2Gauss_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
-  result = ((FormFactorRipple2 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);
+  ((FormFactorRipple2Gauss const *)arg1)->accept(arg2);
+  resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_FormFactorRipple2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorRipple2 *arg1 = (FormFactorRipple2 *) 0 ;
+  FormFactorRipple2Gauss *arg1 = (FormFactorRipple2Gauss *) 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_FormFactorRipple2, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Gauss, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple2" "', argument " "1"" of type '" "FormFactorRipple2 *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple2Gauss" "', argument " "1"" of type '" "FormFactorRipple2Gauss *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorRipple2 * >(argp1);
+  arg1 = reinterpret_cast< FormFactorRipple2Gauss * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -74860,14 +75358,145 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorRipple2_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorRipple2_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorRipple2Gauss_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
+}
+
+SWIGINTERN PyObject *_wrap_new_FormFactorRipple2Lorentz(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] ;
+  FormFactorRipple2Lorentz *result = 0 ;
+  
+  if (!SWIG_Python_UnpackTuple(args, "new_FormFactorRipple2Lorentz", 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_FormFactorRipple2Lorentz" "', 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_FormFactorRipple2Lorentz" "', 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_FormFactorRipple2Lorentz" "', 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_FormFactorRipple2Lorentz" "', argument " "4"" of type '" "double""'");
+  } 
+  arg4 = static_cast< double >(val4);
+  result = (FormFactorRipple2Lorentz *)new FormFactorRipple2Lorentz(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Lorentz, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Lorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorRipple2Lorentz *arg1 = (FormFactorRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  FormFactorRipple2Lorentz *result = 0 ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Lorentz_clone" "', argument " "1"" of type '" "FormFactorRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorRipple2Lorentz * >(argp1);
+  result = (FormFactorRipple2Lorentz *)((FormFactorRipple2Lorentz const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorRipple2Lorentz, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorRipple2Lorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorRipple2Lorentz *arg1 = (FormFactorRipple2Lorentz *) 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, "FormFactorRipple2Lorentz_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorRipple2Lorentz_accept" "', argument " "1"" of type '" "FormFactorRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorRipple2Lorentz * >(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 '" "FormFactorRipple2Lorentz_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+  }
+  arg2 = reinterpret_cast< INodeVisitor * >(argp2);
+  ((FormFactorRipple2Lorentz const *)arg1)->accept(arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_FormFactorRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorRipple2Lorentz *arg1 = (FormFactorRipple2Lorentz *) 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_FormFactorRipple2Lorentz, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorRipple2Lorentz" "', argument " "1"" of type '" "FormFactorRipple2Lorentz *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorRipple2Lorentz * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *FormFactorRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2Lorentz, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
+SWIGINTERN PyObject *FormFactorRipple2Lorentz_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
@@ -123834,6 +124463,8 @@ static PyMethodDef SwigMethods[] = {
 		"INodeVisitor_visit(INodeVisitor self, FootprintFactorGaussian arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FootprintFactorSquare arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorAnisoPyramid arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorBarGauss const * arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorBarLorentz const * arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorBox arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorCone arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorCone6 arg2)\n"
@@ -123862,7 +124493,9 @@ static PyMethodDef SwigMethods[] = {
 		"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, FormFactorRipple2Box arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple2Gauss arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorRipple2Lorentz arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorSphereGaussianRadius arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorSphereLogNormalRadius arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorTetrahedron arg2)\n"
@@ -125979,6 +126612,37 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_FormFactorPolygonalSurface", _wrap_delete_FormFactorPolygonalSurface, METH_O, "delete_FormFactorPolygonalSurface(FormFactorPolygonalSurface self)"},
 	 { "FormFactorPolygonalSurface_swigregister", FormFactorPolygonalSurface_swigregister, METH_O, NULL},
+	 { "ProfileBar_getLength", _wrap_ProfileBar_getLength, METH_O, "\n"
+		"ProfileBar_getLength(ProfileBar self) -> double\n"
+		"double ProfileBar::getLength() const\n"
+		"\n"
+		""},
+	 { "ProfileBar_getHeight", _wrap_ProfileBar_getHeight, METH_O, "\n"
+		"ProfileBar_getHeight(ProfileBar self) -> double\n"
+		"double ProfileBar::getHeight() const\n"
+		"\n"
+		""},
+	 { "ProfileBar_getWidth", _wrap_ProfileBar_getWidth, METH_O, "\n"
+		"ProfileBar_getWidth(ProfileBar self) -> double\n"
+		"double ProfileBar::getWidth() const\n"
+		"\n"
+		""},
+	 { "ProfileBar_radialExtension", _wrap_ProfileBar_radialExtension, METH_O, "\n"
+		"ProfileBar_radialExtension(ProfileBar self) -> double\n"
+		"double ProfileBar::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"
+		""},
+	 { "ProfileBar_evaluate_for_q", _wrap_ProfileBar_evaluate_for_q, METH_VARARGS, "\n"
+		"ProfileBar_evaluate_for_q(ProfileBar self, cvector_t q) -> complex_t\n"
+		"complex_t ProfileBar::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_ProfileBar", _wrap_delete_ProfileBar, METH_O, "delete_ProfileBar(ProfileBar self)"},
+	 { "ProfileBar_swigregister", ProfileBar_swigregister, METH_O, NULL},
 	 { "ProfileRipple1_getLength", _wrap_ProfileRipple1_getLength, METH_O, "\n"
 		"ProfileRipple1_getLength(ProfileRipple1 self) -> double\n"
 		"double ProfileRipple1::getLength() const\n"
@@ -126010,6 +126674,42 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_ProfileRipple1", _wrap_delete_ProfileRipple1, METH_O, "delete_ProfileRipple1(ProfileRipple1 self)"},
 	 { "ProfileRipple1_swigregister", ProfileRipple1_swigregister, METH_O, NULL},
+	 { "ProfileRipple2_getLength", _wrap_ProfileRipple2_getLength, METH_O, "\n"
+		"ProfileRipple2_getLength(ProfileRipple2 self) -> double\n"
+		"double ProfileRipple2::getLength() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple2_getHeight", _wrap_ProfileRipple2_getHeight, METH_O, "\n"
+		"ProfileRipple2_getHeight(ProfileRipple2 self) -> double\n"
+		"double ProfileRipple2::getHeight() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple2_getWidth", _wrap_ProfileRipple2_getWidth, METH_O, "\n"
+		"ProfileRipple2_getWidth(ProfileRipple2 self) -> double\n"
+		"double ProfileRipple2::getWidth() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple2_getAsymmetry", _wrap_ProfileRipple2_getAsymmetry, METH_O, "\n"
+		"ProfileRipple2_getAsymmetry(ProfileRipple2 self) -> double\n"
+		"double ProfileRipple2::getAsymmetry() const\n"
+		"\n"
+		""},
+	 { "ProfileRipple2_radialExtension", _wrap_ProfileRipple2_radialExtension, METH_O, "\n"
+		"ProfileRipple2_radialExtension(ProfileRipple2 self) -> double\n"
+		"double ProfileRipple2::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"
+		""},
+	 { "ProfileRipple2_evaluate_for_q", _wrap_ProfileRipple2_evaluate_for_q, METH_VARARGS, "\n"
+		"ProfileRipple2_evaluate_for_q(ProfileRipple2 self, cvector_t q) -> complex_t\n"
+		"complex_t ProfileRipple2::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_ProfileRipple2", _wrap_delete_ProfileRipple2, METH_O, "delete_ProfileRipple2(ProfileRipple2 self)"},
+	 { "ProfileRipple2_swigregister", ProfileRipple2_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"
@@ -127333,79 +128033,72 @@ 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_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"
-		"\n"
-		"Constructor of a triangular 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"
-		"asymmetry: \n"
-		"asymmetry length of the triangular profile in nanometers \n"
+	 { "new_FormFactorRipple2Box", _wrap_new_FormFactorRipple2Box, METH_VARARGS, "\n"
+		"new_FormFactorRipple2Box(double length, double width, double height, double asymmetry) -> FormFactorRipple2Box\n"
+		"FormFactorRipple2Box::FormFactorRipple2Box(double length, double width, double height, double asymmetry)\n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_clone", _wrap_FormFactorRipple2_clone, METH_O, "\n"
-		"FormFactorRipple2_clone(FormFactorRipple2 self) -> FormFactorRipple2\n"
-		"FormFactorRipple2* FormFactorRipple2::clone() const override final\n"
+	 { "FormFactorRipple2Box_clone", _wrap_FormFactorRipple2Box_clone, METH_O, "\n"
+		"FormFactorRipple2Box_clone(FormFactorRipple2Box self) -> FormFactorRipple2Box\n"
+		"FormFactorRipple2Box * FormFactorRipple2Box::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_accept", _wrap_FormFactorRipple2_accept, METH_VARARGS, "\n"
-		"FormFactorRipple2_accept(FormFactorRipple2 self, INodeVisitor visitor)\n"
-		"void FormFactorRipple2::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorRipple2Box_accept", _wrap_FormFactorRipple2Box_accept, METH_VARARGS, "\n"
+		"FormFactorRipple2Box_accept(FormFactorRipple2Box self, INodeVisitor visitor)\n"
+		"void FormFactorRipple2Box::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_getHeight", _wrap_FormFactorRipple2_getHeight, METH_O, "\n"
-		"FormFactorRipple2_getHeight(FormFactorRipple2 self) -> double\n"
-		"double FormFactorRipple2::getHeight() const\n"
+	 { "delete_FormFactorRipple2Box", _wrap_delete_FormFactorRipple2Box, METH_O, "delete_FormFactorRipple2Box(FormFactorRipple2Box self)"},
+	 { "FormFactorRipple2Box_swigregister", FormFactorRipple2Box_swigregister, METH_O, NULL},
+	 { "FormFactorRipple2Box_swiginit", FormFactorRipple2Box_swiginit, METH_VARARGS, NULL},
+	 { "new_FormFactorRipple2Gauss", _wrap_new_FormFactorRipple2Gauss, METH_VARARGS, "\n"
+		"new_FormFactorRipple2Gauss(double length, double width, double height, double asymmetry) -> FormFactorRipple2Gauss\n"
+		"FormFactorRipple2Gauss::FormFactorRipple2Gauss(double length, double width, double height, double asymmetry)\n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_getWidth", _wrap_FormFactorRipple2_getWidth, METH_O, "\n"
-		"FormFactorRipple2_getWidth(FormFactorRipple2 self) -> double\n"
-		"double FormFactorRipple2::getWidth() const\n"
+	 { "FormFactorRipple2Gauss_clone", _wrap_FormFactorRipple2Gauss_clone, METH_O, "\n"
+		"FormFactorRipple2Gauss_clone(FormFactorRipple2Gauss self) -> FormFactorRipple2Gauss\n"
+		"FormFactorRipple2Gauss * FormFactorRipple2Gauss::clone() const override final\n"
+		"\n"
+		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_getLength", _wrap_FormFactorRipple2_getLength, METH_O, "\n"
-		"FormFactorRipple2_getLength(FormFactorRipple2 self) -> double\n"
-		"double FormFactorRipple2::getLength() const\n"
+	 { "FormFactorRipple2Gauss_accept", _wrap_FormFactorRipple2Gauss_accept, METH_VARARGS, "\n"
+		"FormFactorRipple2Gauss_accept(FormFactorRipple2Gauss self, INodeVisitor visitor)\n"
+		"void FormFactorRipple2Gauss::accept(INodeVisitor *visitor) const override final\n"
+		"\n"
+		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_getAsymmetry", _wrap_FormFactorRipple2_getAsymmetry, METH_O, "\n"
-		"FormFactorRipple2_getAsymmetry(FormFactorRipple2 self) -> double\n"
-		"double FormFactorRipple2::getAsymmetry() const\n"
+	 { "delete_FormFactorRipple2Gauss", _wrap_delete_FormFactorRipple2Gauss, METH_O, "delete_FormFactorRipple2Gauss(FormFactorRipple2Gauss self)"},
+	 { "FormFactorRipple2Gauss_swigregister", FormFactorRipple2Gauss_swigregister, METH_O, NULL},
+	 { "FormFactorRipple2Gauss_swiginit", FormFactorRipple2Gauss_swiginit, METH_VARARGS, NULL},
+	 { "new_FormFactorRipple2Lorentz", _wrap_new_FormFactorRipple2Lorentz, METH_VARARGS, "\n"
+		"new_FormFactorRipple2Lorentz(double length, double width, double height, double asymmetry) -> FormFactorRipple2Lorentz\n"
+		"FormFactorRipple2Lorentz::FormFactorRipple2Lorentz(double length, double width, double height, double asymmetry)\n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_radialExtension", _wrap_FormFactorRipple2_radialExtension, METH_O, "\n"
-		"FormFactorRipple2_radialExtension(FormFactorRipple2 self) -> double\n"
-		"double FormFactorRipple2::radialExtension() const override final\n"
+	 { "FormFactorRipple2Lorentz_clone", _wrap_FormFactorRipple2Lorentz_clone, METH_O, "\n"
+		"FormFactorRipple2Lorentz_clone(FormFactorRipple2Lorentz self) -> FormFactorRipple2Lorentz\n"
+		"FormFactorRipple2Lorentz * FormFactorRipple2Lorentz::clone() 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"
+		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorRipple2_evaluate_for_q", _wrap_FormFactorRipple2_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorRipple2_evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final\n"
+	 { "FormFactorRipple2Lorentz_accept", _wrap_FormFactorRipple2Lorentz_accept, METH_VARARGS, "\n"
+		"FormFactorRipple2Lorentz_accept(FormFactorRipple2Lorentz self, INodeVisitor visitor)\n"
+		"void FormFactorRipple2Lorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
-		"Complex form factor. \n"
+		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "delete_FormFactorRipple2", _wrap_delete_FormFactorRipple2, METH_O, "delete_FormFactorRipple2(FormFactorRipple2 self)"},
-	 { "FormFactorRipple2_swigregister", FormFactorRipple2_swigregister, METH_O, NULL},
-	 { "FormFactorRipple2_swiginit", FormFactorRipple2_swiginit, METH_VARARGS, NULL},
+	 { "delete_FormFactorRipple2Lorentz", _wrap_delete_FormFactorRipple2Lorentz, METH_O, "delete_FormFactorRipple2Lorentz(FormFactorRipple2Lorentz self)"},
+	 { "FormFactorRipple2Lorentz_swigregister", FormFactorRipple2Lorentz_swigregister, METH_O, NULL},
+	 { "FormFactorRipple2Lorentz_swiginit", FormFactorRipple2Lorentz_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorSphereGaussianRadius", _wrap_new_FormFactorSphereGaussianRadius, METH_VARARGS, "\n"
 		"new_FormFactorSphereGaussianRadius(double mean, double sigma) -> FormFactorSphereGaussianRadius\n"
 		"FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)\n"
@@ -134316,6 +135009,15 @@ static void *_p_FormFactorRipple1BoxTo_p_ProfileRipple1(void *x, int *SWIGUNUSED
 static void *_p_FormFactorRipple1GaussTo_p_ProfileRipple1(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ProfileRipple1 *)  ((FormFactorRipple1Gauss *) x));
 }
+static void *_p_FormFactorRipple2GaussTo_p_ProfileRipple2(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple2 *)  ((FormFactorRipple2Gauss *) x));
+}
+static void *_p_FormFactorRipple2LorentzTo_p_ProfileRipple2(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple2 *)  ((FormFactorRipple2Lorentz *) x));
+}
+static void *_p_FormFactorRipple2BoxTo_p_ProfileRipple2(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ProfileRipple2 *)  ((FormFactorRipple2Box *) x));
+}
 static void *_p_PolygonTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IShape2D *)  ((Polygon *) x));
 }
@@ -134412,8 +135114,8 @@ static void *_p_ProfileRipple1To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(
 static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorPolygonalSurface *) x));
 }
-static void *_p_FormFactorRipple2To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorFullSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorFullSphere *) x));
@@ -134427,18 +135129,15 @@ static void *_p_FormFactorTruncatedSphereTo_p_IFormFactorBorn(void *x, int *SWIG
 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));
-}
 static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorEllipsoidalCylinder *) x));
 }
+static void *_p_FormFactorCylinderTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorCylinder *) x));
+}
 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));
 }
@@ -134451,21 +135150,30 @@ 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));
 }
 static void *_p_FormFactorCone6To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorSphereLogNormalRadius *) x));
-}
 static void *_p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorSphereGaussianRadius *) x));
 }
+static void *_p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorSphereLogNormalRadius *) x));
+}
 static void *_p_FormFactorDotTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorDot *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
+static void *_p_FormFactorRipple2LorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLorentz *) x));
 }
@@ -134475,8 +135183,8 @@ static void *_p_FormFactorRipple1LorentzTo_p_IFormFactorBorn(void *x, int *SWIGU
 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_ProfileBarTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((ProfileBar *) x));
 }
 static void *_p_FormFactorPyramidTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorPyramid *) x));
@@ -134487,6 +135195,12 @@ 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_FormFactorRipple2GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *) (ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorGauss *) x));
 }
@@ -134586,12 +135300,12 @@ static void *_p_IRotationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)
 static void *_p_FormFactorPolygonalSurfaceTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x));
 }
-static void *_p_IUnitConverterTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *)  ((IUnitConverter *) x));
-}
 static void *_p_IFormFactorTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *) ((IFormFactor *) x));
 }
+static void *_p_IUnitConverterTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *)  ((IUnitConverter *) x));
+}
 static void *_p_MultiLayerTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *) ((MultiLayer *) x));
 }
@@ -134742,12 +135456,18 @@ static void *_p_FTDistribution1DTriangleTo_p_ICloneable(void *x, int *SWIGUNUSED
 static void *_p_FTDecayFunction1DTriangleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IFTDecayFunction1D *) ((FTDecayFunction1DTriangle *) x));
 }
+static void *_p_ProfileBarTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileBar *) x));
+}
 static void *_p_ParameterPoolTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((ParameterPool *) x));
 }
 static void *_p_FormFactorDotTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDot *) x));
 }
+static void *_p_FormFactorRipple2GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -134772,12 +135492,12 @@ static void *_p_ConstantBackgroundTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_IBackgroundTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IBackground *) x));
 }
-static void *_p_ScanResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *)  ((ScanResolution *) x));
-}
 static void *_p_IDetectorResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IDetectorResolution *) x));
 }
+static void *_p_ScanResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *)  ((ScanResolution *) x));
+}
 static void *_p_FormFactorTruncatedSphereTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
@@ -134958,8 +135678,8 @@ static void *_p_FormFactorPolygonalPrismTo_p_ICloneable(void *x, int *SWIGUNUSED
 static void *_p_FormFactorLongBoxGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
 }
-static void *_p_FormFactorRipple2To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorPrism3To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism3 *) x));
@@ -134970,6 +135690,9 @@ static void *_p_FormFactorHemiEllipsoidTo_p_ICloneable(void *x, int *SWIGUNUSEDP
 static void *_p_RangedDistributionLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (RangedDistribution *) ((RangedDistributionLorentz *) x));
 }
+static void *_p_FormFactorRipple2LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_DistributionLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IDistribution1D *) ((DistributionLorentz *) x));
 }
@@ -134997,6 +135720,9 @@ static void *_p_FormFactorDebyeBuecheTo_p_ICloneable(void *x, int *SWIGUNUSEDPAR
 static void *_p_IDetector2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IDetector *) ((IDetector2D *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
 static void *_p_IFootprintFactorTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IFootprintFactor *) x));
 }
@@ -135027,467 +135753,479 @@ static void *_p_FormFactorSphereLogNormalRadiusTo_p_ICloneable(void *x, int *SWI
 static void *_p_FormFactorSphereGaussianRadiusTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
 }
-static void *_p_FormFactorBoxTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorBox *) x));
+static void *_p_DistributionTrapezoidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionTrapezoid *) x));
 }
-static void *_p_IBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IBackground *) x));
+static void *_p_ParticleLayoutTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(ILayout *) ((ParticleLayout *) x));
 }
-static void *_p_ConstantBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IBackground *) ((ConstantBackground *) x));
+static void *_p_ILayoutTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((ILayout *) x));
 }
-static void *_p_PoissonNoiseBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IBackground *) ((PoissonNoiseBackground *) x));
+static void *_p_FTDecayFunction2DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DVoigt *) x));
 }
-static void *_p_FormFactorSphereGaussianRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
+static void *_p_FTDistribution2DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DVoigt *) x));
 }
-static void *_p_FormFactorSphereLogNormalRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
+static void *_p_InterferenceFunctionNoneTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionNone *) x));
 }
-static void *_p_MultiLayerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((MultiLayer *) x));
+static void *_p_IParameterT_double_tTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *)  ((IParameter< double > *) x));
 }
-static void *_p_ParameterDistributionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *) ((ParameterDistribution *) x));
+static void *_p_RotationEulerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationEuler *) x));
 }
-static void *_p_ParticleDistributionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *) ((ParticleDistribution *) x));
+static void *_p_DistributionGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionGate *) x));
 }
-static void *_p_IParameterT_double_tTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *)  ((IParameter< double > *) x));
+static void *_p_IdentityRotationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((IdentityRotation *) x));
 }
-static void *_p_FTDecayFunction1DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DGauss *) x));
+static void *_p_IRotationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IRotation *) x));
 }
-static void *_p_FTDistribution1DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DGauss *) x));
+static void *_p_FormFactorPolygonalSurfaceTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x));
 }
-static void *_p_IDetector2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *) ((IDetector2D *) x));
+static void *_p_IFormFactorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IFormFactor *) x));
 }
-static void *_p_InterferenceFunctionNoneTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionNone *) x));
+static void *_p_MultiLayerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((MultiLayer *) x));
 }
-static void *_p_PolygonTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((Polygon *) x));
+static void *_p_RotationXTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationX *) x));
 }
-static void *_p_EllipseTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((Ellipse *) x));
+static void *_p_RotationYTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationY *) x));
 }
-static void *_p_FormFactorHemiEllipsoidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHemiEllipsoid *) x));
+static void *_p_LayerRoughnessTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((LayerRoughness *) x));
 }
-static void *_p_ILayoutTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((ILayout *) x));
+static void *_p_FormFactorCylinderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCylinder *) x));
 }
-static void *_p_ParticleLayoutTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(ILayout *) ((ParticleLayout *) x));
+static void *_p_FormFactorEllipsoidalCylinderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
 }
-static void *_p_IntensityScaleAndShiftNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IIntensityNormalizer *)(IntensityNormalizer *) ((IntensityScaleAndShiftNormalizer *) x));
+static void *_p_RotationZTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_IntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IIntensityNormalizer *) ((IntensityNormalizer *) x));
+static void *_p_FTDistribution1DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DCauchy *) x));
 }
-static void *_p_IIntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IIntensityNormalizer *) x));
+static void *_p_FTDecayFunction2DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DCauchy *) x));
 }
-static void *_p_INodeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *) ((INode *) x));
+static void *_p_FTDecayFunction1DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DCauchy *) x));
 }
-static void *_p_HorizontalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((HorizontalLine *) x));
+static void *_p_FTDistribution2DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DCauchy *) x));
 }
-static void *_p_IDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IDetector *) x));
+static void *_p_FormFactorTetrahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
 }
-static void *_p_SphericalDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((SphericalDetector *) x));
+static void *_p_FormFactorPolyhedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x));
 }
-static void *_p_IsGISAXSDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *)(SphericalDetector *) ((IsGISAXSDetector *) x));
+static void *_p_FormFactorCuboctahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
 }
-static void *_p_RectangularDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((RectangularDetector *) x));
+static void *_p_FormFactorDodecahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
 }
-static void *_p_IPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IPeakShape *) x));
+static void *_p_FormFactorIcosahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorIcosahedron *) x));
 }
-static void *_p_IsotropicGaussPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((IsotropicGaussPeakShape *) x));
+static void *_p_MesoCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((MesoCrystal *) x));
 }
-static void *_p_IsotropicLorentzPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((IsotropicLorentzPeakShape *) x));
+static void *_p_InterferenceFunctionRadialParaCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionRadialParaCrystal *) x));
 }
-static void *_p_GaussFisherPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((GaussFisherPeakShape *) x));
+static void *_p_InterferenceFunction2DParaCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DParaCrystal *) x));
 }
-static void *_p_LorentzFisherPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((LorentzFisherPeakShape *) x));
+static void *_p_CrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IClusteredParticles *) ((Crystal *) x));
 }
-static void *_p_VonMisesFisherGaussPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((VonMisesFisherGaussPeakShape *) x));
+static void *_p_FormFactorCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((FormFactorCrystal *) x));
+}
+static void *_p_FormFactorSphereUniformRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x));
 }
 static void *_p_VonMisesGaussPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((VonMisesGaussPeakShape *) x));
 }
-static void *_p_FormFactorPrism3To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism3 *) x));
-}
-static void *_p_DistributionTrapezoidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionTrapezoid *) x));
-}
-static void *_p_FormFactorIcosahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorIcosahedron *) x));
+static void *_p_VonMisesFisherGaussPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((VonMisesFisherGaussPeakShape *) x));
 }
-static void *_p_FormFactorDodecahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
+static void *_p_LorentzFisherPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((LorentzFisherPeakShape *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
+static void *_p_GaussFisherPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((GaussFisherPeakShape *) x));
 }
-static void *_p_FormFactorPolyhedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x));
+static void *_p_IsotropicLorentzPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((IsotropicLorentzPeakShape *) x));
 }
-static void *_p_FormFactorTetrahedronTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x));
+static void *_p_IsotropicGaussPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IPeakShape *) ((IsotropicGaussPeakShape *) x));
 }
-static void *_p_FormFactorDebyeBuecheTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDebyeBueche *) x));
+static void *_p_IPeakShapeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IPeakShape *) x));
 }
-static void *_p_FormFactorPrism6To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism6 *) x));
+static void *_p_FormFactorWeightedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((FormFactorWeighted *) x));
 }
-static void *_p_SimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((Simulation *) x));
+static void *_p_LineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Line *) x));
 }
-static void *_p_GISASSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *)(Simulation2D *) ((GISASSimulation *) x));
+static void *_p_FTDecayFunction1DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DVoigt *) x));
 }
-static void *_p_OffSpecSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *)(Simulation2D *) ((OffSpecSimulation *) x));
+static void *_p_FTDistribution1DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DVoigt *) x));
 }
-static void *_p_DepthProbeSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((DepthProbeSimulation *) x));
+static void *_p_IParameterizedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *)  ((IParameterized *) x));
 }
-static void *_p_SpecularSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((SpecularSimulation *) x));
+static void *_p_Lattice2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((Lattice2D *) x));
 }
-static void *_p_FTDistribution2DConeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DCone *) x));
+static void *_p_BeamTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((Beam *) x));
 }
 static void *_p_ParticleCoreShellTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x));
 }
-static void *_p_FormFactorFullSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
-}
-static void *_p_FormFactorTruncatedSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
-}
-static void *_p_IFormFactorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IFormFactor *) x));
-}
-static void *_p_ISampleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((ISample *) x));
-}
-static void *_p_FormFactorPolygonalSurfaceTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x));
+static void *_p_ParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((Particle *) x));
 }
-static void *_p_FormFactorLongBoxGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
+static void *_p_IParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *) ((IParticle *) x));
 }
-static void *_p_FormFactorPolygonalPrismTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalPrism *) x));
+static void *_p_IAbstractParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IAbstractParticle *) x));
 }
 static void *_p_FTDistribution2DGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DGate *) x));
 }
-static void *_p_DistributionLogNormalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionLogNormal *) x));
-}
-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_LayerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((Layer *) x));
 }
-static void *_p_InstrumentTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((Instrument *) x));
+static void *_p_IFormFactorDecoratorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
 }
-static void *_p_FTDistribution1DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DVoigt *) 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_FTDecayFunction1DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DVoigt *) 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_IRotationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IRotation *) x));
+static void *_p_FormFactorTruncatedCubeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x));
 }
-static void *_p_IdentityRotationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((IdentityRotation *) x));
+static void *_p_ParticleDistributionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *) ((ParticleDistribution *) x));
 }
-static void *_p_FormFactorFullSpheroidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
+static void *_p_ParameterDistributionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *) ((ParameterDistribution *) x));
 }
-static void *_p_FormFactorTruncatedSpheroidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x));
+static void *_p_FTDistribution1DTriangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DTriangle *) x));
 }
-static void *_p_RotationXTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationX *) x));
+static void *_p_FTDecayFunction1DTriangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DTriangle *) x));
 }
-static void *_p_IShape2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *)  ((IShape2D *) x));
+static void *_p_ProfileBarTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileBar *) x));
 }
-static void *_p_FTDistribution2DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DGauss *) x));
+static void *_p_FormFactorDotTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDot *) x));
 }
-static void *_p_FTDecayFunction2DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DGauss *) x));
+static void *_p_FormFactorRipple2GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorTruncatedCubeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x));
+static void *_p_FormFactorGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_RotationYTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationY *) x));
+static void *_p_ResolutionFunction2DGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IResolutionFunction2D *) ((ResolutionFunction2DGaussian *) x));
 }
-static void *_p_RotationZTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationZ *) x));
+static void *_p_FootprintFactorGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFootprintFactor *) ((FootprintFactorGaussian *) x));
 }
-static void *_p_RectangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((Rectangle *) x));
+static void *_p_DistributionGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionGaussian *) x));
 }
-static void *_p_FormFactorGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
+static void *_p_PoissonNoiseBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IBackground *) ((PoissonNoiseBackground *) x));
 }
-static void *_p_VerticalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((VerticalLine *) x));
+static void *_p_ConstantBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IBackground *) ((ConstantBackground *) x));
 }
-static void *_p_IFormFactorBornTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
+static void *_p_IBackgroundTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IBackground *) x));
 }
 static void *_p_IDetectorResolutionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *) ((IDetectorResolution *) x));
 }
-static void *_p_IClusteredParticlesTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IClusteredParticles *) x));
-}
-static void *_p_IMultiLayerBuilderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *) ((IMultiLayerBuilder *) x));
-}
-static void *_p_LineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IShape2D *) ((Line *) x));
+static void *_p_FormFactorTruncatedSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
-static void *_p_IAbstractParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IAbstractParticle *) x));
+static void *_p_FormFactorFullSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
 }
-static void *_p_IParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *) ((IParticle *) x));
+static void *_p_IClusteredParticlesTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IClusteredParticles *) x));
 }
-static void *_p_Lattice2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((Lattice2D *) x));
+static void *_p_InterferenceFunctionHardDiskTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionHardDisk *) x));
 }
-static void *_p_ParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((Particle *) x));
+static void *_p_ParticleCompositionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((ParticleComposition *) x));
 }
-static void *_p_DistributionGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionGate *) x));
+static void *_p_InstrumentTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((Instrument *) x));
 }
-static void *_p_IDistribution1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IDistribution1D *) x));
+static void *_p_FTDistribution1DCosineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DCosine *) x));
 }
-static void *_p_IFTDecayFunction1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDecayFunction1D *) x));
+static void *_p_DistributionCosineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionCosine *) x));
 }
-static void *_p_IFTDistribution1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDistribution1D *) x));
+static void *_p_PolygonTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Polygon *) x));
 }
-static void *_p_FormFactorConeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCone *) x));
+static void *_p_IInterferenceFunctionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IInterferenceFunction *) x));
 }
 static void *_p_InterferenceFunctionTwinTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionTwin *) x));
 }
-static void *_p_LayerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((Layer *) x));
+static void *_p_VerticalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((VerticalLine *) 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_IIntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IIntensityNormalizer *) 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_IntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IIntensityNormalizer *) ((IntensityNormalizer *) 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_IntensityScaleAndShiftNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IIntensityNormalizer *)(IntensityNormalizer *) ((IntensityScaleAndShiftNormalizer *) x));
 }
-static void *_p_FormFactorRipple2To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_FTDecayFunction2DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DGauss *) x));
 }
-static void *_p_FormFactorEllipsoidalCylinderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
+static void *_p_FTDistribution2DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DGauss *) x));
 }
-static void *_p_FormFactorCylinderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCylinder *) x));
+static void *_p_IFormFactorBornTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
 }
-static void *_p_DistributionGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionGaussian *) x));
+static void *_p_RectangularDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((RectangularDetector *) x));
 }
-static void *_p_FootprintFactorGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFootprintFactor *) ((FootprintFactorGaussian *) x));
+static void *_p_IsGISAXSDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *)(SphericalDetector *) ((IsGISAXSDetector *) x));
 }
-static void *_p_ResolutionFunction2DGaussianTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IResolutionFunction2D *) ((ResolutionFunction2DGaussian *) x));
+static void *_p_SphericalDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((SphericalDetector *) x));
 }
-static void *_p_IFootprintFactorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IFootprintFactor *) x));
+static void *_p_IDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IDetector *) x));
 }
-static void *_p_BeamTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((Beam *) x));
+static void *_p_INodeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *) ((INode *) x));
 }
-static void *_p_ParticleCompositionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((ParticleComposition *) x));
+static void *_p_FormFactorTruncatedSpheroidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x));
 }
-static void *_p_FormFactorSphereUniformRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x));
+static void *_p_FormFactorFullSpheroidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
 }
-static void *_p_DistributionCosineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionCosine *) x));
+static void *_p_HexagonalLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((HexagonalLattice *) x));
 }
-static void *_p_FTDistribution1DCosineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DCosine *) x));
+static void *_p_SquareLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((SquareLattice *) x));
 }
-static void *_p_FTDistribution1DGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DGate *) x));
+static void *_p_BasicLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((BasicLattice *) x));
 }
-static void *_p_FTDistribution2DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DVoigt *) x));
+static void *_p_LatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((Lattice *) x));
 }
-static void *_p_FTDecayFunction2DVoigtTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DVoigt *) x));
+static void *_p_InterferenceFunctionFinite3DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionFinite3DLattice *) x));
 }
-static void *_p_FTDistribution2DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DCauchy *) x));
+static void *_p_InterferenceFunctionFinite2DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionFinite2DLattice *) x));
 }
-static void *_p_FTDecayFunction1DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DCauchy *) x));
+static void *_p_InterferenceFunction3DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction3DLattice *) x));
 }
-static void *_p_FTDecayFunction2DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction2D *) ((FTDecayFunction2DCauchy *) x));
+static void *_p_InterferenceFunction2DSuperLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DSuperLattice *) x));
 }
-static void *_p_FTDistribution1DCauchyTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DCauchy *) x));
+static void *_p_InterferenceFunction2DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DLattice *) x));
 }
-static void *_p_IInterferenceFunctionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((IInterferenceFunction *) x));
+static void *_p_InterferenceFunction1DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction1DLattice *) x));
+}
+static void *_p_IShape2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *)  ((IShape2D *) x));
 }
 static void *_p_FootprintFactorSquareTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(IFootprintFactor *) ((FootprintFactorSquare *) x));
 }
+static void *_p_RectangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Rectangle *) x));
+}
+static void *_p_FormFactorOrnsteinZernikeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorOrnsteinZernike *) x));
+}
+static void *_p_HorizontalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((HorizontalLine *) x));
+}
+static void *_p_FTDistribution1DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DGauss *) x));
+}
+static void *_p_FTDecayFunction1DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DGauss *) x));
+}
 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_FormFactorRipple1GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
+static void *_p_IFTDistribution1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDistribution1D *) x));
 }
-static void *_p_IFormFactorDecoratorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
+static void *_p_IFTDecayFunction1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDecayFunction1D *) x));
 }
-static void *_p_IParameterizedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *)  ((IParameterized *) x));
+static void *_p_IDistribution1DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IDistribution1D *) x));
 }
-static void *_p_FormFactorOrnsteinZernikeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorOrnsteinZernike *) x));
+static void *_p_SpecularSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((SpecularSimulation *) x));
 }
-static void *_p_FormFactorDotTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDot *) x));
+static void *_p_DepthProbeSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((DepthProbeSimulation *) x));
 }
-static void *_p_LayerRoughnessTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *) ((LayerRoughness *) x));
+static void *_p_OffSpecSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *)(Simulation2D *) ((OffSpecSimulation *) x));
 }
-static void *_p_FormFactorCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((FormFactorCrystal *) x));
+static void *_p_GISASSimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *)(Simulation2D *) ((GISASSimulation *) x));
 }
-static void *_p_CrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IClusteredParticles *) ((Crystal *) x));
+static void *_p_SimulationTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((Simulation *) x));
 }
-static void *_p_InterferenceFunction2DParaCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DParaCrystal *) x));
+static void *_p_FormFactorConeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCone *) x));
 }
-static void *_p_InterferenceFunctionRadialParaCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionRadialParaCrystal *) x));
+static void *_p_DistributionLogNormalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionLogNormal *) x));
 }
-static void *_p_MesoCrystalTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((MesoCrystal *) x));
+static void *_p_FormFactorBoxTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorBox *) x));
 }
-static void *_p_IFTDistribution2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDistribution2D *) x));
+static void *_p_FTDistribution1DGateTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DGate *) x));
 }
-static void *_p_IFTDecayFunction2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDecayFunction2D *) 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_Simulation2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((Simulation2D *) x));
+static void *_p_FormFactorPolygonalPrismTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalPrism *) x));
 }
-static void *_p_IResolutionFunction2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((IResolutionFunction2D *) x));
+static void *_p_FormFactorLongBoxGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
 }
-static void *_p_FormFactorWeightedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *) ((FormFactorWeighted *) x));
+static void *_p_ProfileRipple2To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
-static void *_p_RealParameterTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameter< double > *) ((RealParameter *) x));
+static void *_p_FormFactorPrism3To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
+static void *_p_FormFactorHemiEllipsoidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHemiEllipsoid *) 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_FormFactorRipple2LorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
+static void *_p_DistributionLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionLorentz *) x));
 }
 static void *_p_FormFactorLongBoxLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
-static void *_p_DistributionLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IDistribution1D *) ((DistributionLorentz *) 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_InterferenceFunction1DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction1DLattice *) x));
+static void *_p_FormFactorLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_InterferenceFunction2DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DLattice *) 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_InterferenceFunction2DSuperLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction2DSuperLattice *) x));
+static void *_p_FormFactorPrism6To_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism6 *) x));
 }
-static void *_p_InterferenceFunction3DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction3DLattice *) x));
+static void *_p_FTDistribution2DConeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution2D *) ((FTDistribution2DCone *) x));
 }
-static void *_p_InterferenceFunctionFinite2DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionFinite2DLattice *) x));
+static void *_p_FormFactorDebyeBuecheTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDebyeBueche *) x));
 }
-static void *_p_InterferenceFunctionFinite3DLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionFinite3DLattice *) x));
+static void *_p_IDetector2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(IDetector *) ((IDetector2D *) x));
 }
-static void *_p_LatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *) ((Lattice *) x));
+static void *_p_IMultiLayerBuilderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *) ((IMultiLayerBuilder *) x));
 }
-static void *_p_BasicLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((BasicLattice *) x));
+static void *_p_FormFactorRipple2BoxTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
 }
-static void *_p_SquareLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((SquareLattice *) x));
+static void *_p_RealParameterTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameter< double > *) ((RealParameter *) x));
 }
-static void *_p_HexagonalLatticeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(Lattice2D *) ((HexagonalLattice *) x));
+static void *_p_IFootprintFactorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IFootprintFactor *) x));
 }
-static void *_p_FTDecayFunction1DTriangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDecayFunction1D *) ((FTDecayFunction1DTriangle *) x));
+static void *_p_ISampleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((ISample *) x));
 }
-static void *_p_FTDistribution1DTriangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(IFTDistribution1D *) ((FTDistribution1DTriangle *) 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_RotationEulerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IRotation *) ((RotationEuler *) x));
+static void *_p_IResolutionFunction2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IResolutionFunction2D *) x));
+}
+static void *_p_Simulation2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(Simulation *) ((Simulation2D *) x));
+}
+static void *_p_IFTDecayFunction2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDecayFunction2D *) x));
+}
+static void *_p_IFTDistribution2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *) ((IFTDistribution2D *) x));
+}
+static void *_p_EllipseTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Ellipse *) x));
+}
+static void *_p_FormFactorSphereLogNormalRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
+}
+static void *_p_FormFactorSphereGaussianRadiusTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
 }
 static void *_p_AngularSpecScanTo_p_ISpecularScan(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISpecularScan *)  ((AngularSpecScan *) x));
@@ -135561,12 +136299,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_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_FormFactorSphereLogNormalRadiusTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
+}
 static void *_p_MultiLayerTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *) ((MultiLayer *) x));
 }
@@ -135621,6 +136359,9 @@ static void *_p_IsGISAXSDetectorTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM
 static void *_p_RectangularDetectorTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(IDetector *)(IDetector2D *) ((RectangularDetector *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
 static void *_p_IPeakShapeTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *) ((IPeakShape *) x));
 }
@@ -135690,6 +136431,9 @@ static void *_p_FTDistribution2DConeTo_p_IParameterized(void *x, int *SWIGUNUSED
 static void *_p_ParticleCoreShellTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x));
 }
+static void *_p_ProfileBarTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileBar *) x));
+}
 static void *_p_FormFactorFullSphereTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
 }
@@ -135765,6 +136509,9 @@ static void *_p_RotationZTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorGaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
+static void *_p_FormFactorRipple2GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_IFormFactorBornTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
 }
@@ -135819,8 +136566,8 @@ static void *_p_FormFactorPyramidTo_p_IParameterized(void *x, int *SWIGUNUSEDPAR
 static void *_p_FormFactorAnisoPyramidTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorAnisoPyramid *) x));
 }
-static void *_p_FormFactorRipple2To_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorEllipsoidalCylinderTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
@@ -135942,6 +136689,9 @@ static void *_p_FormFactorLongBoxLorentzTo_p_IParameterized(void *x, int *SWIGUN
 static void *_p_DistributionLorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(IDistribution1D *) ((DistributionLorentz *) x));
 }
+static void *_p_FormFactorRipple2LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_InterferenceFunction1DLatticeTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IInterferenceFunction *) ((InterferenceFunction1DLattice *) x));
 }
@@ -136023,8 +136773,8 @@ static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactor(void *x, int *SWIGUNU
 static void *_p_FormFactorCrystalTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *)  ((FormFactorCrystal *) x));
 }
-static void *_p_FormFactorRipple2To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorFullSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSphere *) x));
@@ -136083,6 +136833,9 @@ static void *_p_IFormFactorBornTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorDotTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorDot *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
 static void *_p_FormFactorLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
@@ -136092,9 +136845,15 @@ static void *_p_FormFactorRipple1LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSE
 static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
+static void *_p_FormFactorRipple2LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_FormFactorWeightedTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *)  ((FormFactorWeighted *) x));
 }
+static void *_p_ProfileBarTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((ProfileBar *) x));
+}
 static void *_p_FormFactorPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x));
 }
@@ -136110,6 +136869,9 @@ static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactor(void *x, int *SWIG
 static void *_p_FormFactorGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGauss *) x));
 }
+static void *_p_FormFactorRipple2GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_SampleBuilderFactoryTo_p_IFactoryT_std__string_IMultiLayerBuilder_t(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFactory< std::string,IMultiLayerBuilder > *)  ((SampleBuilderFactory *) x));
 }
@@ -136140,6 +136902,9 @@ static void *_p_FormFactorHemiEllipsoidTo_p_ISample(void *x, int *SWIGUNUSEDPARM
 static void *_p_ParticleLayoutTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (ILayout *) ((ParticleLayout *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
 static void *_p_VonMisesGaussPeakShapeTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IPeakShape *) ((VonMisesGaussPeakShape *) x));
 }
@@ -136188,6 +136953,9 @@ static void *_p_FormFactorPrism6To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_ParticleCoreShellTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x));
 }
+static void *_p_ProfileBarTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((ProfileBar *) x));
+}
 static void *_p_FormFactorTruncatedSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
@@ -136236,6 +137004,9 @@ static void *_p_RotationYTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_RotationZTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IRotation *) ((RotationZ *) x));
 }
+static void *_p_FormFactorRipple2GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -136272,8 +137043,8 @@ static void *_p_FormFactorPyramidTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_FormFactorAnisoPyramidTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorAnisoPyramid *) x));
 }
-static void *_p_FormFactorRipple2To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorCylinderTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorCylinder *) x));
@@ -136308,17 +137079,17 @@ static void *_p_FormFactorDotTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory
 static void *_p_LayerRoughnessTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *)  ((LayerRoughness *) x));
 }
-static void *_p_InterferenceFunctionRadialParaCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IInterferenceFunction *) ((InterferenceFunctionRadialParaCrystal *) x));
-}
 static void *_p_InterferenceFunction2DParaCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IInterferenceFunction *) ((InterferenceFunction2DParaCrystal *) x));
 }
+static void *_p_CrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IClusteredParticles *) ((Crystal *) x));
+}
 static void *_p_FormFactorCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((FormFactorCrystal *) x));
 }
-static void *_p_CrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IClusteredParticles *) ((Crystal *) x));
+static void *_p_InterferenceFunctionRadialParaCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IInterferenceFunction *) ((InterferenceFunctionRadialParaCrystal *) x));
 }
 static void *_p_MesoCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IAbstractParticle *)(IParticle *) ((MesoCrystal *) x));
@@ -136326,6 +137097,9 @@ static void *_p_MesoCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory))
 static void *_p_FormFactorWeightedTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((FormFactorWeighted *) x));
 }
+static void *_p_FormFactorRipple2LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLongBoxLorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
@@ -136368,12 +137142,12 @@ static void *_p_ConstantBackgroundTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_PoissonNoiseBackgroundTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IBackground *) ((PoissonNoiseBackground *) x));
 }
-static void *_p_FormFactorSphereLogNormalRadiusTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
-}
 static void *_p_FormFactorSphereGaussianRadiusTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
 }
+static void *_p_FormFactorSphereLogNormalRadiusTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
+}
 static void *_p_MultiLayerTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *) ((MultiLayer *) x));
 }
@@ -136422,6 +137196,9 @@ static void *_p_IsGISAXSDetectorTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemor
 static void *_p_RectangularDetectorTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IDetector *)(IDetector2D *) ((RectangularDetector *) x));
 }
+static void *_p_FormFactorRipple2BoxTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Box *) x));
+}
 static void *_p_IPeakShapeTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *) ((IPeakShape *) x));
 }
@@ -136449,9 +137226,6 @@ 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));
 }
@@ -136464,6 +137238,9 @@ 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));
 }
@@ -136491,6 +137268,9 @@ static void *_p_FTDistribution2DConeTo_p_INode(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_ParticleCoreShellTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x));
 }
+static void *_p_ProfileBarTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileBar *) x));
+}
 static void *_p_FormFactorFullSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
 }
@@ -136563,6 +137343,9 @@ 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_FormFactorRipple2GaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -136617,8 +137400,8 @@ static void *_p_FormFactorPyramidTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemo
 static void *_p_FormFactorAnisoPyramidTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorAnisoPyramid *) x));
 }
-static void *_p_FormFactorRipple2To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_ProfileRipple2To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((ProfileRipple2 *) x));
 }
 static void *_p_FormFactorEllipsoidalCylinderTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
@@ -136728,6 +137511,9 @@ static void *_p_IResolutionFunction2DTo_p_INode(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorWeightedTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *) ((FormFactorWeighted *) x));
 }
+static void *_p_FormFactorRipple2LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
@@ -137012,6 +137798,8 @@ static swig_type_info _swigt__p_FixedBinAxis = {"_p_FixedBinAxis", "FixedBinAxis
 static swig_type_info _swigt__p_FootprintFactorGaussian = {"_p_FootprintFactorGaussian", "FootprintFactorGaussian *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FootprintFactorSquare = {"_p_FootprintFactorSquare", "FootprintFactorSquare *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorAnisoPyramid = {"_p_FormFactorAnisoPyramid", "FormFactorAnisoPyramid *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorBarGauss = {"_p_FormFactorBarGauss", "FormFactorBarGauss *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorBarLorentz = {"_p_FormFactorBarLorentz", "FormFactorBarLorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorBox = {"_p_FormFactorBox", "FormFactorBox *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCone = {"_p_FormFactorCone", "FormFactorCone *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCone6 = {"_p_FormFactorCone6", "FormFactorCone6 *", 0, 0, (void*)0, 0};
@@ -137046,7 +137834,9 @@ static swig_type_info _swigt__p_FormFactorPyramid = {"_p_FormFactorPyramid", "Fo
 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_FormFactorRipple2Box = {"_p_FormFactorRipple2Box", "FormFactorRipple2Box *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorRipple2Gauss = {"_p_FormFactorRipple2Gauss", "FormFactorRipple2Gauss *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorRipple2Lorentz = {"_p_FormFactorRipple2Lorentz", "FormFactorRipple2Lorentz *", 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};
 static swig_type_info _swigt__p_FormFactorSphereUniformRadius = {"_p_FormFactorSphereUniformRadius", "FormFactorSphereUniformRadius *", 0, 0, (void*)0, 0};
@@ -137164,7 +137954,9 @@ 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_ProfileBar = {"_p_ProfileBar", "ProfileBar *", 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_ProfileRipple2 = {"_p_ProfileRipple2", "ProfileRipple2 *", 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};
@@ -137353,6 +138145,8 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FootprintFactorGaussian,
   &_swigt__p_FootprintFactorSquare,
   &_swigt__p_FormFactorAnisoPyramid,
+  &_swigt__p_FormFactorBarGauss,
+  &_swigt__p_FormFactorBarLorentz,
   &_swigt__p_FormFactorBox,
   &_swigt__p_FormFactorCone,
   &_swigt__p_FormFactorCone6,
@@ -137387,7 +138181,9 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorRipple1Box,
   &_swigt__p_FormFactorRipple1Gauss,
   &_swigt__p_FormFactorRipple1Lorentz,
-  &_swigt__p_FormFactorRipple2,
+  &_swigt__p_FormFactorRipple2Box,
+  &_swigt__p_FormFactorRipple2Gauss,
+  &_swigt__p_FormFactorRipple2Lorentz,
   &_swigt__p_FormFactorSphereGaussianRadius,
   &_swigt__p_FormFactorSphereLogNormalRadius,
   &_swigt__p_FormFactorSphereUniformRadius,
@@ -137505,7 +138301,9 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_PolyhedralEdge,
   &_swigt__p_PolyhedralFace,
   &_swigt__p_PolyhedralTopology,
+  &_swigt__p_ProfileBar,
   &_swigt__p_ProfileRipple1,
+  &_swigt__p_ProfileRipple2,
   &_swigt__p_ProgressHandler__Callback_t,
   &_swigt__p_PyBuilderCallback,
   &_swigt__p_PyObserverCallback,
@@ -137694,6 +138492,8 @@ static swig_cast_info _swigc__p_FixedBinAxis[] = {  {&_swigt__p_FixedBinAxis, 0,
 static swig_cast_info _swigc__p_FootprintFactorGaussian[] = {  {&_swigt__p_FootprintFactorGaussian, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FootprintFactorSquare[] = {  {&_swigt__p_FootprintFactorSquare, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorAnisoPyramid[] = {  {&_swigt__p_FormFactorAnisoPyramid, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorBarGauss[] = {  {&_swigt__p_FormFactorBarGauss, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorBarLorentz[] = {  {&_swigt__p_FormFactorBarLorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorBox[] = {  {&_swigt__p_FormFactorBox, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCone[] = {  {&_swigt__p_FormFactorCone, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCone6[] = {  {&_swigt__p_FormFactorCone6, 0, 0, 0},{0, 0, 0, 0}};
@@ -137728,7 +138528,9 @@ static swig_cast_info _swigc__p_FormFactorPyramid[] = {  {&_swigt__p_FormFactorP
 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_FormFactorRipple2Box[] = {  {&_swigt__p_FormFactorRipple2Box, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorRipple2Gauss[] = {  {&_swigt__p_FormFactorRipple2Gauss, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorRipple2Lorentz[] = {  {&_swigt__p_FormFactorRipple2Lorentz, 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}};
 static swig_cast_info _swigc__p_FormFactorSphereUniformRadius[] = {  {&_swigt__p_FormFactorSphereUniformRadius, 0, 0, 0},{0, 0, 0, 0}};
@@ -137747,7 +138549,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_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_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_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_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_ProfileBar, _p_ProfileBarTo_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_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_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_Simulation2D, _p_Simulation2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_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_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}};
@@ -137760,8 +138562,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_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_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_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_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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}};
@@ -137770,19 +138572,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_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_INamed[] = {  {&_swigt__p_Line, _p_LineTo_p_INamed, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INamed, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_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_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INamed, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorGaussian, _p_FootprintFactorGaussianTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_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_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_INamed, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_INamed, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INamed, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INamed, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INamed, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INamed, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_INamed, 0, 0},  {&_swigt__p_FootprintFactorSquare, _p_FootprintFactorSquareTo_p_INamed, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INamed, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_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_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INamed, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_INamed, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INamed, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_INamed, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INamed, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_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_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_INode, 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_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_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_ProfileBar, _p_ProfileBarTo_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_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_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_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_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_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_ProfileBar, _p_ProfileBarTo_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_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_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_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_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_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_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_ProfileBar, _p_ProfileBarTo_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_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_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_ProfileRipple2, _p_ProfileRipple2To_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_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_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}};
@@ -137846,7 +138648,9 @@ 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_ProfileBar[] = {  {&_swigt__p_ProfileBar, 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_ProfileRipple2[] = {  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_ProfileRipple2, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ProfileRipple2, 0, 0},  {&_swigt__p_ProfileRipple2, 0, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_ProfileRipple2, 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}};
@@ -138035,6 +138839,8 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FootprintFactorGaussian,
   _swigc__p_FootprintFactorSquare,
   _swigc__p_FormFactorAnisoPyramid,
+  _swigc__p_FormFactorBarGauss,
+  _swigc__p_FormFactorBarLorentz,
   _swigc__p_FormFactorBox,
   _swigc__p_FormFactorCone,
   _swigc__p_FormFactorCone6,
@@ -138069,7 +138875,9 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorRipple1Box,
   _swigc__p_FormFactorRipple1Gauss,
   _swigc__p_FormFactorRipple1Lorentz,
-  _swigc__p_FormFactorRipple2,
+  _swigc__p_FormFactorRipple2Box,
+  _swigc__p_FormFactorRipple2Gauss,
+  _swigc__p_FormFactorRipple2Lorentz,
   _swigc__p_FormFactorSphereGaussianRadius,
   _swigc__p_FormFactorSphereLogNormalRadius,
   _swigc__p_FormFactorSphereUniformRadius,
@@ -138187,7 +138995,9 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_PolyhedralEdge,
   _swigc__p_PolyhedralFace,
   _swigc__p_PolyhedralTopology,
+  _swigc__p_ProfileBar,
   _swigc__p_ProfileRipple1,
+  _swigc__p_ProfileRipple2,
   _swigc__p_ProgressHandler__Callback_t,
   _swigc__p_PyBuilderCallback,
   _swigc__p_PyObserverCallback,