diff --git a/Core/FormFactors/inc/FormFactorLongRipple2Gauss.h b/Core/FormFactors/inc/FormFactorLongRipple2Gauss.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ef37142139e6f8b9de4ad2381fd4858b656e330
--- /dev/null
+++ b/Core/FormFactors/inc/FormFactorLongRipple2Gauss.h
@@ -0,0 +1,85 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      FormFactors/inc/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 2015
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#ifndef FORMFACTORLONGRIPPLE2GAUSS_H
+#define FORMFACTORLONGRIPPLE2GAUSS_H
+
+#include "IFormFactorBorn.h"
+
+//! @class FormFactorLongRipple2Gauss
+//! @ingroup formfactors
+//! @brief The formfactor for a triangular ripple.
+
+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 asymetry);
+
+    virtual ~FormFactorLongRipple2Gauss() { }
+
+    virtual FormFactorLongRipple2Gauss *clone() const;
+
+    virtual void accept(ISampleVisitor *visitor) const;
+
+    virtual double getRadius() const;
+
+    double getHeight() const;
+
+    double getWidth() const;
+
+    double getLength() const;
+
+    double getAsymmetry() const;
+
+    virtual complex_t evaluate_for_q(const cvector_t& q) const;
+
+protected:
+    virtual bool check_initialization() const;
+    virtual void init_parameters();
+
+private:
+    double m_width;
+    double m_height;
+    double m_length;
+    double m_d;
+    mutable cvector_t m_q;
+};
+
+inline double FormFactorLongRipple2Gauss::getHeight() const
+{
+    return m_height;
+}
+
+inline double FormFactorLongRipple2Gauss::getWidth() const
+{
+    return m_width;
+}
+
+inline double FormFactorLongRipple2Gauss::getLength() const
+{
+    return m_length;
+}
+
+inline double FormFactorLongRipple2Gauss::getAsymmetry() const
+{
+    return m_d;
+}
+
+#endif // FORMFACTORRIPPLE2_H
diff --git a/Core/FormFactors/inc/FormFactorLongRipple2Lorentz.h b/Core/FormFactors/inc/FormFactorLongRipple2Lorentz.h
new file mode 100644
index 0000000000000000000000000000000000000000..0fa3c92a83a4c8dc4f9a6066904b21b65bd1ad95
--- /dev/null
+++ b/Core/FormFactors/inc/FormFactorLongRipple2Lorentz.h
@@ -0,0 +1,85 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      FormFactors/inc/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 2015
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#ifndef FORMFACTORLONGRIPPLE2LORENTZ_H
+#define FORMFACTORLONGRIPPLE2LORENTZ_H
+
+#include "IFormFactorBorn.h"
+
+//! @class FormFactorLongRipple2Lorentz
+//! @ingroup formfactors
+//! @brief The formfactor for a triangular ripple.
+
+class BA_CORE_API_ FormFactorLongRipple2Lorentz : public IFormFactorBorn
+{
+public:
+    //! @brief FormFactorLongRipple2Lorentz constructor
+    //! @param length of Ripple2
+    //! @param width of triangular cross section
+    //! @param height of triangular cross section
+    //! @param asymmetry length of triangular cross section
+    FormFactorLongRipple2Lorentz(double length, double width, double height, double asymetry);
+
+    virtual ~FormFactorLongRipple2Lorentz() { }
+
+    virtual FormFactorLongRipple2Lorentz *clone() const;
+
+    virtual void accept(ISampleVisitor *visitor) const;
+
+    virtual double getRadius() const;
+
+    double getHeight() const;
+
+    double getWidth() const;
+
+    double getLength() const;
+
+    double getAsymmetry() const;
+
+    virtual complex_t evaluate_for_q(const cvector_t& q) const;
+
+protected:
+    virtual bool check_initialization() const;
+    virtual void init_parameters();
+
+private:
+    double m_width;
+    double m_height;
+    double m_length;
+    double m_d;
+    mutable cvector_t m_q;
+};
+
+inline double FormFactorLongRipple2Lorentz::getHeight() const
+{
+    return m_height;
+}
+
+inline double FormFactorLongRipple2Lorentz::getWidth() const
+{
+    return m_width;
+}
+
+inline double FormFactorLongRipple2Lorentz::getLength() const
+{
+    return m_length;
+}
+
+inline double FormFactorLongRipple2Lorentz::getAsymmetry() const
+{
+    return m_d;
+}
+
+#endif
diff --git a/Core/FormFactors/src/FormFactorLongRipple2Gauss.cpp b/Core/FormFactors/src/FormFactorLongRipple2Gauss.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3953ff04b6e43fda2653d94f21a81f20c10561a5
--- /dev/null
+++ b/Core/FormFactors/src/FormFactorLongRipple2Gauss.cpp
@@ -0,0 +1,124 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      FormFactors/src/FormFactorRipple2.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 2015
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#include "FormFactorLongRipple2Gauss.h"
+#include "BornAgainNamespace.h"
+#include "Numeric.h"
+#include "MathFunctions.h"
+
+#include <cmath>
+
+using namespace  BornAgain;
+
+FormFactorLongRipple2Gauss::FormFactorLongRipple2Gauss(double length, double width, double height, double asymetry)
+    : m_width(width)
+    , m_height(height)
+    , m_length(length)
+    , m_d(asymetry)
+{
+    setName(FFLongRipple2GaussType);
+    check_initialization();
+    init_parameters();
+}
+
+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 << "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;
+}
+
+void FormFactorLongRipple2Gauss::init_parameters()
+{
+    clearParameterPool();
+    registerParameter(Width, &m_width, AttLimits::n_positive());
+    registerParameter(Height, &m_height, AttLimits::n_positive());
+    registerParameter(Length, &m_length, AttLimits::n_positive());
+    registerParameter(AsymmetryLength, &m_d);
+}
+
+FormFactorLongRipple2Gauss *FormFactorLongRipple2Gauss::clone() const
+{
+    return new FormFactorLongRipple2Gauss(m_length, m_width, m_height, m_d);
+}
+
+void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const
+{
+    visitor->visit(this);
+}
+
+double FormFactorLongRipple2Gauss::getRadius() const
+{
+    return ( m_width + m_length ) / 4.0;
+}
+
+//! Complex formfactor.
+complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t& q) const
+{
+    m_q = q;
+//    complex_t factor = m_length * MathFunctions::sinc(m_q.x() * m_length * 0.5) * m_width;
+    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 = complex_t(0.0, 1.0) * m_q.z() * m_height;
+    complex_t iqyW = complex_t(0.0, 1.0) * m_q.y() * m_width;
+    complex_t aaa = 2.0 * (m_d * m_q.y() + m_height * m_q.z());
+
+    if (0.0 == m_q.y() && 0.0 == m_q.z())
+        result = m_height * 0.5;
+    else if (0.0 == m_q.y())
+        result = (1.0 - std::exp(iqzH) + iqzH) / (m_height * m_q.z() * m_q.z());
+    else if (1.0 == aaa / (m_q.y() * m_width))
+        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) - iqyW)
+                 / (m_q.y() * m_q.y() * m_width * m_width);
+    else if (-1.0 == aaa / (m_q.y() * m_width))
+        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) + iqyW)
+                 / (m_q.y() * m_q.y() * m_width * m_width);
+    else {
+        complex_t iHqzdqy = complex_t(0.0, 1.0) * (m_q.z() * m_height + m_q.y() * m_d);
+        complex_t Hqzdqy = m_q.z() * m_height + m_q.y() * m_d;
+        result = std::cos(m_q.y() * m_width * 0.5)
+                 + 2.0 * iHqzdqy * std::sin(m_q.y() * m_width * 0.5) / (m_width * m_q.y());
+        result = result * std::exp(-1.0 * iHqzdqy) - 1.0;
+        result = result * 4.0 * m_height * std::exp(iqzH)
+                 / (4.0 * Hqzdqy * Hqzdqy - m_q.y() * m_q.y() * m_width * m_width);
+    }
+    return factor * result;
+}
diff --git a/Core/FormFactors/src/FormFactorLongRipple2Lorentz.cpp b/Core/FormFactors/src/FormFactorLongRipple2Lorentz.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6a8fd4a966368cfee0506cd3466d454d5b7b96ab
--- /dev/null
+++ b/Core/FormFactors/src/FormFactorLongRipple2Lorentz.cpp
@@ -0,0 +1,125 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      FormFactors/src/FormFactorRipple2.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 2015
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#include "FormFactorLongRipple2Lorentz.h"
+#include "BornAgainNamespace.h"
+#include "Numeric.h"
+#include "MathFunctions.h"
+
+#include <cmath>
+
+using namespace  BornAgain;
+
+FormFactorLongRipple2Lorentz::FormFactorLongRipple2Lorentz(double length, double width, double height, double asymetry)
+    : m_width(width)
+    , m_height(height)
+    , m_length(length)
+    , m_d(asymetry)
+{
+    setName(FFLongRipple2LorentzType);
+    check_initialization();
+    init_parameters();
+}
+
+bool FormFactorLongRipple2Lorentz::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 << "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());
+    }
+    return result;
+}
+
+void FormFactorLongRipple2Lorentz::init_parameters()
+{
+    clearParameterPool();
+    registerParameter(Width, &m_width, AttLimits::n_positive());
+    registerParameter(Height, &m_height, AttLimits::n_positive());
+    registerParameter(Length, &m_length, AttLimits::n_positive());
+    registerParameter(AsymmetryLength, &m_d);
+}
+
+FormFactorLongRipple2Lorentz *FormFactorLongRipple2Lorentz::clone() const
+{
+    return new FormFactorLongRipple2Lorentz(m_length, m_width, m_height, m_d);
+}
+
+void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const
+{
+    visitor->visit(this);
+}
+
+double FormFactorLongRipple2Lorentz::getRadius() const
+{
+    return ( m_width + m_length ) / 4.0;
+}
+
+//! Complex formfactor.
+complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t& q) const
+{
+    m_q = q;
+//    complex_t factor = m_length * MathFunctions::sinc(m_q.x() * m_length * 0.5) * m_width;
+    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 = complex_t(0.0, 1.0) * m_q.z() * m_height;
+    complex_t iqyW = complex_t(0.0, 1.0) * m_q.y() * m_width;
+    complex_t aaa = 2.0 * (m_d * m_q.y() + m_height * m_q.z());
+
+    if (0.0 == m_q.y() && 0.0 == m_q.z())
+        result = m_height * 0.5;
+    else if (0.0 == m_q.y())
+        result = (1.0 - std::exp(iqzH) + iqzH) / (m_height * m_q.z() * m_q.z());
+    else if (1.0 == aaa / (m_q.y() * m_width))
+        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) - iqyW)
+                 / (m_q.y() * m_q.y() * m_width * m_width);
+    else if (-1.0 == aaa / (m_q.y() * m_width))
+        result = m_height * std::exp(iqzH) * (1.0 - std::exp(-1.0 * iqyW) + iqyW)
+                 / (m_q.y() * m_q.y() * m_width * m_width);
+    else {
+        complex_t iHqzdqy = complex_t(0.0, 1.0) * (m_q.z() * m_height + m_q.y() * m_d);
+        complex_t Hqzdqy = m_q.z() * m_height + m_q.y() * m_d;
+        result = std::cos(m_q.y() * m_width * 0.5)
+                 + 2.0 * iHqzdqy * std::sin(m_q.y() * m_width * 0.5) / (m_width * m_q.y());
+        result = result * std::exp(-1.0 * iHqzdqy) - 1.0;
+        result = result * 4.0 * m_height * std::exp(iqzH)
+                 / (4.0 * Hqzdqy * Hqzdqy - m_q.y() * m_q.y() * m_width * m_width);
+    }
+    return factor * result;
+}
diff --git a/Core/PythonAPI/libBornAgainCore.i b/Core/PythonAPI/libBornAgainCore.i
index ca2b72dc8a657d16e8c05dc4236ac5bf5260ab38..fefe43b37d1eb6760daa39b56ad70045e15c2c52 100644
--- a/Core/PythonAPI/libBornAgainCore.i
+++ b/Core/PythonAPI/libBornAgainCore.i
@@ -218,6 +218,8 @@ namespace Geometry {
 #include "FormFactorPyramid.h"
 #include "FormFactorRipple1.h"
 #include "FormFactorRipple2.h"
+#include "FormFactorLongRipple2Gauss.h"
+#include "FormFactorLongRipple2Lorentz.h"
 #include "FormFactorSphereGaussianRadius.h"
 #include "FormFactorSphereLogNormalRadius.h"
 #include "FormFactorSphereUniformRadius.h"
@@ -405,6 +407,8 @@ namespace Geometry {
 %include "FormFactorPyramid.h"
 %include "FormFactorRipple1.h"
 %include "FormFactorRipple2.h"
+%include "FormFactorLongRipple2Gauss.h"
+%include "FormFactorLongRipple2Lorentz.h"
 %include "FormFactorSphereGaussianRadius.h"
 %include "FormFactorSphereLogNormalRadius.h"
 %include "FormFactorSphereUniformRadius.h"
diff --git a/Core/PythonAPI/libBornAgainCore.py b/Core/PythonAPI/libBornAgainCore.py
index 88e4f7dbece552e31ce5b118b4224c7190b0c2a6..153399a6494011dd31e03862f027a707dbbe6838 100644
--- a/Core/PythonAPI/libBornAgainCore.py
+++ b/Core/PythonAPI/libBornAgainCore.py
@@ -12304,6 +12304,248 @@ class FormFactorRipple2(IFormFactorBorn):
 FormFactorRipple2_swigregister = _libBornAgainCore.FormFactorRipple2_swigregister
 FormFactorRipple2_swigregister(FormFactorRipple2)
 
+class FormFactorLongRipple2Gauss(IFormFactorBorn):
+    """Proxy of C++ FormFactorLongRipple2Gauss class"""
+    __swig_setmethods__ = {}
+    for _s in [IFormFactorBorn]:
+        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
+    __setattr__ = lambda self, name, value: _swig_setattr(self, FormFactorLongRipple2Gauss, name, value)
+    __swig_getmethods__ = {}
+    for _s in [IFormFactorBorn]:
+        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
+    __getattr__ = lambda self, name: _swig_getattr(self, FormFactorLongRipple2Gauss, name)
+    __repr__ = _swig_repr
+
+    def __init__(self, length, width, height, asymetry):
+        """__init__(FormFactorLongRipple2Gauss self, double length, double width, double height, double asymetry) -> FormFactorLongRipple2Gauss"""
+        if self.__class__ == FormFactorLongRipple2Gauss:
+            _self = None
+        else:
+            _self = self
+        this = _libBornAgainCore.new_FormFactorLongRipple2Gauss(_self, length, width, height, asymetry)
+        try:
+            self.this.append(this)
+        except:
+            self.this = this
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple2Gauss
+    __del__ = lambda self: None
+
+    def clone(self):
+        """
+        clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss
+
+        virtual IFormFactorBorn* IFormFactorBorn::clone() const =0
+
+        Returns a clone of this  ISample object. 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_clone(self)
+
+
+    def accept(self, visitor):
+        """
+        accept(FormFactorLongRipple2Gauss self, ISampleVisitor visitor)
+
+        virtual void IFormFactorBorn::accept(ISampleVisitor *visitor) const
+
+        Calls the  ISampleVisitor's visit method. 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_accept(self, visitor)
+
+
+    def getRadius(self):
+        """
+        getRadius(FormFactorLongRipple2Gauss self) -> double
+
+        virtual double IFormFactor::getRadius() const =0
+
+        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_getRadius(self)
+
+
+    def getHeight(self):
+        """getHeight(FormFactorLongRipple2Gauss self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_getHeight(self)
+
+
+    def getWidth(self):
+        """getWidth(FormFactorLongRipple2Gauss self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_getWidth(self)
+
+
+    def getLength(self):
+        """getLength(FormFactorLongRipple2Gauss self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_getLength(self)
+
+
+    def getAsymmetry(self):
+        """getAsymmetry(FormFactorLongRipple2Gauss self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_getAsymmetry(self)
+
+
+    def evaluate_for_q(self, q):
+        """
+        evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t
+
+        virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t &q) const =0
+
+        evaluate scattering amplitude for complex wavevector
+
+        Parameters:
+        -----------
+
+        q: 
+        wavevector transfer q=k_i-k_f 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_evaluate_for_q(self, q)
+
+
+    def check_initialization(self):
+        """check_initialization(FormFactorLongRipple2Gauss self) -> bool"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_check_initialization(self)
+
+
+    def init_parameters(self):
+        """init_parameters(FormFactorLongRipple2Gauss self)"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss_init_parameters(self)
+
+    def __disown__(self):
+        self.this.disown()
+        _libBornAgainCore.disown_FormFactorLongRipple2Gauss(self)
+        return weakref_proxy(self)
+
+    def _print(self, ostr):
+        """_print(FormFactorLongRipple2Gauss self, std::ostream & ostr)"""
+        return _libBornAgainCore.FormFactorLongRipple2Gauss__print(self, ostr)
+
+FormFactorLongRipple2Gauss_swigregister = _libBornAgainCore.FormFactorLongRipple2Gauss_swigregister
+FormFactorLongRipple2Gauss_swigregister(FormFactorLongRipple2Gauss)
+
+class FormFactorLongRipple2Lorentz(IFormFactorBorn):
+    """Proxy of C++ FormFactorLongRipple2Lorentz class"""
+    __swig_setmethods__ = {}
+    for _s in [IFormFactorBorn]:
+        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
+    __setattr__ = lambda self, name, value: _swig_setattr(self, FormFactorLongRipple2Lorentz, name, value)
+    __swig_getmethods__ = {}
+    for _s in [IFormFactorBorn]:
+        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
+    __getattr__ = lambda self, name: _swig_getattr(self, FormFactorLongRipple2Lorentz, name)
+    __repr__ = _swig_repr
+
+    def __init__(self, length, width, height, asymetry):
+        """__init__(FormFactorLongRipple2Lorentz self, double length, double width, double height, double asymetry) -> FormFactorLongRipple2Lorentz"""
+        if self.__class__ == FormFactorLongRipple2Lorentz:
+            _self = None
+        else:
+            _self = self
+        this = _libBornAgainCore.new_FormFactorLongRipple2Lorentz(_self, length, width, height, asymetry)
+        try:
+            self.this.append(this)
+        except:
+            self.this = this
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLongRipple2Lorentz
+    __del__ = lambda self: None
+
+    def clone(self):
+        """
+        clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz
+
+        virtual IFormFactorBorn* IFormFactorBorn::clone() const =0
+
+        Returns a clone of this  ISample object. 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_clone(self)
+
+
+    def accept(self, visitor):
+        """
+        accept(FormFactorLongRipple2Lorentz self, ISampleVisitor visitor)
+
+        virtual void IFormFactorBorn::accept(ISampleVisitor *visitor) const
+
+        Calls the  ISampleVisitor's visit method. 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_accept(self, visitor)
+
+
+    def getRadius(self):
+        """
+        getRadius(FormFactorLongRipple2Lorentz self) -> double
+
+        virtual double IFormFactor::getRadius() const =0
+
+        Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getRadius(self)
+
+
+    def getHeight(self):
+        """getHeight(FormFactorLongRipple2Lorentz self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getHeight(self)
+
+
+    def getWidth(self):
+        """getWidth(FormFactorLongRipple2Lorentz self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getWidth(self)
+
+
+    def getLength(self):
+        """getLength(FormFactorLongRipple2Lorentz self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getLength(self)
+
+
+    def getAsymmetry(self):
+        """getAsymmetry(FormFactorLongRipple2Lorentz self) -> double"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_getAsymmetry(self)
+
+
+    def evaluate_for_q(self, q):
+        """
+        evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t
+
+        virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t &q) const =0
+
+        evaluate scattering amplitude for complex wavevector
+
+        Parameters:
+        -----------
+
+        q: 
+        wavevector transfer q=k_i-k_f 
+
+        """
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_evaluate_for_q(self, q)
+
+
+    def check_initialization(self):
+        """check_initialization(FormFactorLongRipple2Lorentz self) -> bool"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_check_initialization(self)
+
+
+    def init_parameters(self):
+        """init_parameters(FormFactorLongRipple2Lorentz self)"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz_init_parameters(self)
+
+    def __disown__(self):
+        self.this.disown()
+        _libBornAgainCore.disown_FormFactorLongRipple2Lorentz(self)
+        return weakref_proxy(self)
+
+    def _print(self, ostr):
+        """_print(FormFactorLongRipple2Lorentz self, std::ostream & ostr)"""
+        return _libBornAgainCore.FormFactorLongRipple2Lorentz__print(self, ostr)
+
+FormFactorLongRipple2Lorentz_swigregister = _libBornAgainCore.FormFactorLongRipple2Lorentz_swigregister
+FormFactorLongRipple2Lorentz_swigregister(FormFactorLongRipple2Lorentz)
+
 class FormFactorSphereGaussianRadius(IFormFactorBorn):
     """
 
diff --git a/Core/PythonAPI/libBornAgainCore_wrap.cxx b/Core/PythonAPI/libBornAgainCore_wrap.cxx
index 9f4ab700a21220a3dbe4fda2f3165beb90313399..a68b89e7b88294d34c4b2c2681a1edf681f6a398 100644
--- a/Core/PythonAPI/libBornAgainCore_wrap.cxx
+++ b/Core/PythonAPI/libBornAgainCore_wrap.cxx
@@ -3473,187 +3473,189 @@ namespace Swig {
 #define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[55]
 #define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[56]
 #define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[57]
-#define SWIGTYPE_p_FormFactorLorentz swig_types[58]
-#define SWIGTYPE_p_FormFactorPrism3 swig_types[59]
-#define SWIGTYPE_p_FormFactorPrism6 swig_types[60]
-#define SWIGTYPE_p_FormFactorPyramid swig_types[61]
-#define SWIGTYPE_p_FormFactorRipple1 swig_types[62]
-#define SWIGTYPE_p_FormFactorRipple2 swig_types[63]
-#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[64]
-#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[65]
-#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[66]
-#define SWIGTYPE_p_FormFactorTetrahedron swig_types[67]
-#define SWIGTYPE_p_FormFactorTrivial swig_types[68]
-#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[69]
-#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[70]
-#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[71]
-#define SWIGTYPE_p_FormFactorWeighted swig_types[72]
-#define SWIGTYPE_p_GISASSimulation swig_types[73]
-#define SWIGTYPE_p_Geometry__BasicVector3DT_double_t swig_types[74]
-#define SWIGTYPE_p_Geometry__BasicVector3DT_int_t swig_types[75]
-#define SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t swig_types[76]
-#define SWIGTYPE_p_Geometry__Ellipse swig_types[77]
-#define SWIGTYPE_p_Geometry__HorizontalLine swig_types[78]
-#define SWIGTYPE_p_Geometry__IShape2D swig_types[79]
-#define SWIGTYPE_p_Geometry__Line swig_types[80]
-#define SWIGTYPE_p_Geometry__Polygon swig_types[81]
-#define SWIGTYPE_p_Geometry__Rectangle swig_types[82]
-#define SWIGTYPE_p_Geometry__Transform3D swig_types[83]
-#define SWIGTYPE_p_Geometry__VerticalLine swig_types[84]
-#define SWIGTYPE_p_Histogram1D swig_types[85]
-#define SWIGTYPE_p_Histogram2D swig_types[86]
-#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[87]
-#define SWIGTYPE_p_HomogeneousMaterial swig_types[88]
-#define SWIGTYPE_p_IAbstractParticle swig_types[89]
-#define SWIGTYPE_p_IAxis swig_types[90]
-#define SWIGTYPE_p_ICloneable swig_types[91]
-#define SWIGTYPE_p_IClusteredParticles swig_types[92]
-#define SWIGTYPE_p_IComponentService swig_types[93]
-#define SWIGTYPE_p_ICompositeSample swig_types[94]
-#define SWIGTYPE_p_IDetector2D swig_types[95]
-#define SWIGTYPE_p_IDetectorResolution swig_types[96]
-#define SWIGTYPE_p_IDistribution1D swig_types[97]
-#define SWIGTYPE_p_IFTDecayFunction1D swig_types[98]
-#define SWIGTYPE_p_IFTDecayFunction2D swig_types[99]
-#define SWIGTYPE_p_IFTDistribution1D swig_types[100]
-#define SWIGTYPE_p_IFTDistribution2D swig_types[101]
-#define SWIGTYPE_p_IFormFactor swig_types[102]
-#define SWIGTYPE_p_IFormFactorBorn swig_types[103]
-#define SWIGTYPE_p_IFormFactorDecorator swig_types[104]
-#define SWIGTYPE_p_IHistogram swig_types[105]
-#define SWIGTYPE_p_IIntensityFunction swig_types[106]
-#define SWIGTYPE_p_IInterferenceFunction swig_types[107]
-#define SWIGTYPE_p_ILayerRTCoefficients swig_types[108]
-#define SWIGTYPE_p_ILayout swig_types[109]
-#define SWIGTYPE_p_IMaterial swig_types[110]
-#define SWIGTYPE_p_INamed swig_types[111]
-#define SWIGTYPE_p_INamedShared swig_types[112]
-#define SWIGTYPE_p_IObservable swig_types[113]
-#define SWIGTYPE_p_IObserver swig_types[114]
-#define SWIGTYPE_p_IParameterized swig_types[115]
-#define SWIGTYPE_p_IParameterizedShared swig_types[116]
-#define SWIGTYPE_p_IParticle swig_types[117]
-#define SWIGTYPE_p_IPixelMap swig_types[118]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[119]
-#define SWIGTYPE_p_IRotation swig_types[120]
-#define SWIGTYPE_p_IRoughness swig_types[121]
-#define SWIGTYPE_p_ISample swig_types[122]
-#define SWIGTYPE_p_ISampleBuilder swig_types[123]
-#define SWIGTYPE_p_ISampleVisitor swig_types[124]
-#define SWIGTYPE_p_ISelectionRule swig_types[125]
-#define SWIGTYPE_p_Instrument swig_types[126]
-#define SWIGTYPE_p_IntensityDataFunctions swig_types[127]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[128]
-#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[129]
-#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[130]
-#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[131]
-#define SWIGTYPE_p_InterferenceFunctionNone swig_types[132]
-#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[133]
-#define SWIGTYPE_p_IsGISAXSDetector swig_types[134]
-#define SWIGTYPE_p_KVectorContainer swig_types[135]
-#define SWIGTYPE_p_Lattice swig_types[136]
-#define SWIGTYPE_p_Lattice1DParameters swig_types[137]
-#define SWIGTYPE_p_Lattice2DParameters swig_types[138]
-#define SWIGTYPE_p_Layer swig_types[139]
-#define SWIGTYPE_p_LayerDWBASimulation swig_types[140]
-#define SWIGTYPE_p_LayerInterface swig_types[141]
-#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[142]
-#define SWIGTYPE_p_LayerRoughness swig_types[143]
-#define SWIGTYPE_p_MSG__Logger swig_types[144]
-#define SWIGTYPE_p_Mask swig_types[145]
-#define SWIGTYPE_p_MesoCrystal swig_types[146]
-#define SWIGTYPE_p_MultiLayer swig_types[147]
-#define SWIGTYPE_p_MultiLayerDWBASimulation swig_types[148]
-#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[149]
-#define SWIGTYPE_p_OffSpecSimulation swig_types[150]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[151]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[152]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[153]
-#define SWIGTYPE_p_OutputDataT_std__complexT_double_t_t swig_types[154]
-#define SWIGTYPE_p_ParameterDistribution swig_types[155]
-#define SWIGTYPE_p_ParameterPattern swig_types[156]
-#define SWIGTYPE_p_ParameterPool swig_types[157]
-#define SWIGTYPE_p_Particle swig_types[158]
-#define SWIGTYPE_p_ParticleComposition swig_types[159]
-#define SWIGTYPE_p_ParticleCoreShell swig_types[160]
-#define SWIGTYPE_p_ParticleDistribution swig_types[161]
-#define SWIGTYPE_p_ParticleLayout swig_types[162]
-#define SWIGTYPE_p_ProgramOptions swig_types[163]
-#define SWIGTYPE_p_RealParameterWrapper swig_types[164]
-#define SWIGTYPE_p_RectPixelMap swig_types[165]
-#define SWIGTYPE_p_RectangularDetector swig_types[166]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[167]
-#define SWIGTYPE_p_RotationEuler swig_types[168]
-#define SWIGTYPE_p_RotationX swig_types[169]
-#define SWIGTYPE_p_RotationY swig_types[170]
-#define SWIGTYPE_p_RotationZ swig_types[171]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[172]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[173]
-#define SWIGTYPE_p_Simulation swig_types[174]
-#define SWIGTYPE_p_SimulationParameters swig_types[175]
-#define SWIGTYPE_p_SpecularSimulation swig_types[176]
-#define SWIGTYPE_p_SphericalDetector swig_types[177]
-#define SWIGTYPE_p_ThreadInfo swig_types[178]
-#define SWIGTYPE_p_VariableBinAxis swig_types[179]
-#define SWIGTYPE_p_WavevectorInfo swig_types[180]
-#define SWIGTYPE_p__object swig_types[181]
-#define SWIGTYPE_p_allocator_type swig_types[182]
-#define SWIGTYPE_p_char swig_types[183]
-#define SWIGTYPE_p_const_iterator swig_types[184]
-#define SWIGTYPE_p_const_reference swig_types[185]
-#define SWIGTYPE_p_difference_type swig_types[186]
-#define SWIGTYPE_p_double swig_types[187]
-#define SWIGTYPE_p_int swig_types[188]
-#define SWIGTYPE_p_iterator swig_types[189]
-#define SWIGTYPE_p_observer_t swig_types[190]
-#define SWIGTYPE_p_observerlist_t swig_types[191]
-#define SWIGTYPE_p_p__object swig_types[192]
-#define SWIGTYPE_p_parameter_t swig_types[193]
-#define SWIGTYPE_p_parametermap_t swig_types[194]
-#define SWIGTYPE_p_reference swig_types[195]
-#define SWIGTYPE_p_size_type swig_types[196]
-#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_double_t_t swig_types[197]
-#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t swig_types[198]
-#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[199]
-#define SWIGTYPE_p_std__allocatorT_ISample_const_p_t swig_types[200]
-#define SWIGTYPE_p_std__allocatorT_ISample_p_t swig_types[201]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[202]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[203]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[204]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[205]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[206]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[207]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[208]
-#define SWIGTYPE_p_std__invalid_argument swig_types[209]
-#define SWIGTYPE_p_std__ostream swig_types[210]
-#define SWIGTYPE_p_std__shared_ptrT_ILayerRTCoefficients_const_t swig_types[211]
-#define SWIGTYPE_p_std__shared_ptrT_INamedShared_t swig_types[212]
-#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[213]
-#define SWIGTYPE_p_std__shared_ptrT_IParameterizedShared_t swig_types[214]
-#define SWIGTYPE_p_std__shared_ptrT_ISampleBuilder_t swig_types[215]
-#define SWIGTYPE_p_std__shared_ptrT_LayerRTCoefficients_t_t swig_types[216]
-#define SWIGTYPE_p_std__shared_ptrT_ProgressHandler_t_t swig_types[217]
-#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_double_t_std__allocatorT_Geometry__BasicVector3DT_double_t_t_t swig_types[218]
-#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_std__complexT_double_t_t_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t_t swig_types[219]
-#define SWIGTYPE_p_std__vectorT_IDetector2D__EAxesUnits_std__allocatorT_IDetector2D__EAxesUnits_t_t swig_types[220]
-#define SWIGTYPE_p_std__vectorT_IFTDistribution2D_const_p_std__allocatorT_IFTDistribution2D_const_p_t_t swig_types[221]
-#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[222]
-#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[223]
-#define SWIGTYPE_p_std__vectorT_ISample_const_p_std__allocatorT_ISample_const_p_t_t swig_types[224]
-#define SWIGTYPE_p_std__vectorT_ISample_p_std__allocatorT_ISample_p_t_t swig_types[225]
-#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[226]
-#define SWIGTYPE_p_std__vectorT_RealParameterWrapper_std__allocatorT_RealParameterWrapper_t_t swig_types[227]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[228]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[229]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[230]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[231]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[232]
-#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[233]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[234]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[235]
-#define SWIGTYPE_p_value_type swig_types[236]
-static swig_type_info *swig_types[238];
-static swig_module_info swig_module = {swig_types, 237, 0, 0, 0, 0};
+#define SWIGTYPE_p_FormFactorLongRipple2Gauss swig_types[58]
+#define SWIGTYPE_p_FormFactorLongRipple2Lorentz swig_types[59]
+#define SWIGTYPE_p_FormFactorLorentz swig_types[60]
+#define SWIGTYPE_p_FormFactorPrism3 swig_types[61]
+#define SWIGTYPE_p_FormFactorPrism6 swig_types[62]
+#define SWIGTYPE_p_FormFactorPyramid swig_types[63]
+#define SWIGTYPE_p_FormFactorRipple1 swig_types[64]
+#define SWIGTYPE_p_FormFactorRipple2 swig_types[65]
+#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[66]
+#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[67]
+#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[68]
+#define SWIGTYPE_p_FormFactorTetrahedron swig_types[69]
+#define SWIGTYPE_p_FormFactorTrivial swig_types[70]
+#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[71]
+#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[72]
+#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[73]
+#define SWIGTYPE_p_FormFactorWeighted swig_types[74]
+#define SWIGTYPE_p_GISASSimulation swig_types[75]
+#define SWIGTYPE_p_Geometry__BasicVector3DT_double_t swig_types[76]
+#define SWIGTYPE_p_Geometry__BasicVector3DT_int_t swig_types[77]
+#define SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t swig_types[78]
+#define SWIGTYPE_p_Geometry__Ellipse swig_types[79]
+#define SWIGTYPE_p_Geometry__HorizontalLine swig_types[80]
+#define SWIGTYPE_p_Geometry__IShape2D swig_types[81]
+#define SWIGTYPE_p_Geometry__Line swig_types[82]
+#define SWIGTYPE_p_Geometry__Polygon swig_types[83]
+#define SWIGTYPE_p_Geometry__Rectangle swig_types[84]
+#define SWIGTYPE_p_Geometry__Transform3D swig_types[85]
+#define SWIGTYPE_p_Geometry__VerticalLine swig_types[86]
+#define SWIGTYPE_p_Histogram1D swig_types[87]
+#define SWIGTYPE_p_Histogram2D swig_types[88]
+#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[89]
+#define SWIGTYPE_p_HomogeneousMaterial swig_types[90]
+#define SWIGTYPE_p_IAbstractParticle swig_types[91]
+#define SWIGTYPE_p_IAxis swig_types[92]
+#define SWIGTYPE_p_ICloneable swig_types[93]
+#define SWIGTYPE_p_IClusteredParticles swig_types[94]
+#define SWIGTYPE_p_IComponentService swig_types[95]
+#define SWIGTYPE_p_ICompositeSample swig_types[96]
+#define SWIGTYPE_p_IDetector2D swig_types[97]
+#define SWIGTYPE_p_IDetectorResolution swig_types[98]
+#define SWIGTYPE_p_IDistribution1D swig_types[99]
+#define SWIGTYPE_p_IFTDecayFunction1D swig_types[100]
+#define SWIGTYPE_p_IFTDecayFunction2D swig_types[101]
+#define SWIGTYPE_p_IFTDistribution1D swig_types[102]
+#define SWIGTYPE_p_IFTDistribution2D swig_types[103]
+#define SWIGTYPE_p_IFormFactor swig_types[104]
+#define SWIGTYPE_p_IFormFactorBorn swig_types[105]
+#define SWIGTYPE_p_IFormFactorDecorator swig_types[106]
+#define SWIGTYPE_p_IHistogram swig_types[107]
+#define SWIGTYPE_p_IIntensityFunction swig_types[108]
+#define SWIGTYPE_p_IInterferenceFunction swig_types[109]
+#define SWIGTYPE_p_ILayerRTCoefficients swig_types[110]
+#define SWIGTYPE_p_ILayout swig_types[111]
+#define SWIGTYPE_p_IMaterial swig_types[112]
+#define SWIGTYPE_p_INamed swig_types[113]
+#define SWIGTYPE_p_INamedShared swig_types[114]
+#define SWIGTYPE_p_IObservable swig_types[115]
+#define SWIGTYPE_p_IObserver swig_types[116]
+#define SWIGTYPE_p_IParameterized swig_types[117]
+#define SWIGTYPE_p_IParameterizedShared swig_types[118]
+#define SWIGTYPE_p_IParticle swig_types[119]
+#define SWIGTYPE_p_IPixelMap swig_types[120]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[121]
+#define SWIGTYPE_p_IRotation swig_types[122]
+#define SWIGTYPE_p_IRoughness swig_types[123]
+#define SWIGTYPE_p_ISample swig_types[124]
+#define SWIGTYPE_p_ISampleBuilder swig_types[125]
+#define SWIGTYPE_p_ISampleVisitor swig_types[126]
+#define SWIGTYPE_p_ISelectionRule swig_types[127]
+#define SWIGTYPE_p_Instrument swig_types[128]
+#define SWIGTYPE_p_IntensityDataFunctions swig_types[129]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[130]
+#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[131]
+#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[132]
+#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[133]
+#define SWIGTYPE_p_InterferenceFunctionNone swig_types[134]
+#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[135]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[136]
+#define SWIGTYPE_p_KVectorContainer swig_types[137]
+#define SWIGTYPE_p_Lattice swig_types[138]
+#define SWIGTYPE_p_Lattice1DParameters swig_types[139]
+#define SWIGTYPE_p_Lattice2DParameters swig_types[140]
+#define SWIGTYPE_p_Layer swig_types[141]
+#define SWIGTYPE_p_LayerDWBASimulation swig_types[142]
+#define SWIGTYPE_p_LayerInterface swig_types[143]
+#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[144]
+#define SWIGTYPE_p_LayerRoughness swig_types[145]
+#define SWIGTYPE_p_MSG__Logger swig_types[146]
+#define SWIGTYPE_p_Mask swig_types[147]
+#define SWIGTYPE_p_MesoCrystal swig_types[148]
+#define SWIGTYPE_p_MultiLayer swig_types[149]
+#define SWIGTYPE_p_MultiLayerDWBASimulation swig_types[150]
+#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[151]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[152]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[153]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[154]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[155]
+#define SWIGTYPE_p_OutputDataT_std__complexT_double_t_t swig_types[156]
+#define SWIGTYPE_p_ParameterDistribution swig_types[157]
+#define SWIGTYPE_p_ParameterPattern swig_types[158]
+#define SWIGTYPE_p_ParameterPool swig_types[159]
+#define SWIGTYPE_p_Particle swig_types[160]
+#define SWIGTYPE_p_ParticleComposition swig_types[161]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[162]
+#define SWIGTYPE_p_ParticleDistribution swig_types[163]
+#define SWIGTYPE_p_ParticleLayout swig_types[164]
+#define SWIGTYPE_p_ProgramOptions swig_types[165]
+#define SWIGTYPE_p_RealParameterWrapper swig_types[166]
+#define SWIGTYPE_p_RectPixelMap swig_types[167]
+#define SWIGTYPE_p_RectangularDetector swig_types[168]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[169]
+#define SWIGTYPE_p_RotationEuler swig_types[170]
+#define SWIGTYPE_p_RotationX swig_types[171]
+#define SWIGTYPE_p_RotationY swig_types[172]
+#define SWIGTYPE_p_RotationZ swig_types[173]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[174]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[175]
+#define SWIGTYPE_p_Simulation swig_types[176]
+#define SWIGTYPE_p_SimulationParameters swig_types[177]
+#define SWIGTYPE_p_SpecularSimulation swig_types[178]
+#define SWIGTYPE_p_SphericalDetector swig_types[179]
+#define SWIGTYPE_p_ThreadInfo swig_types[180]
+#define SWIGTYPE_p_VariableBinAxis swig_types[181]
+#define SWIGTYPE_p_WavevectorInfo swig_types[182]
+#define SWIGTYPE_p__object swig_types[183]
+#define SWIGTYPE_p_allocator_type swig_types[184]
+#define SWIGTYPE_p_char swig_types[185]
+#define SWIGTYPE_p_const_iterator swig_types[186]
+#define SWIGTYPE_p_const_reference swig_types[187]
+#define SWIGTYPE_p_difference_type swig_types[188]
+#define SWIGTYPE_p_double swig_types[189]
+#define SWIGTYPE_p_int swig_types[190]
+#define SWIGTYPE_p_iterator swig_types[191]
+#define SWIGTYPE_p_observer_t swig_types[192]
+#define SWIGTYPE_p_observerlist_t swig_types[193]
+#define SWIGTYPE_p_p__object swig_types[194]
+#define SWIGTYPE_p_parameter_t swig_types[195]
+#define SWIGTYPE_p_parametermap_t swig_types[196]
+#define SWIGTYPE_p_reference swig_types[197]
+#define SWIGTYPE_p_size_type swig_types[198]
+#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_double_t_t swig_types[199]
+#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t swig_types[200]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[201]
+#define SWIGTYPE_p_std__allocatorT_ISample_const_p_t swig_types[202]
+#define SWIGTYPE_p_std__allocatorT_ISample_p_t swig_types[203]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[204]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[205]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[206]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[207]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[208]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[209]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[210]
+#define SWIGTYPE_p_std__invalid_argument swig_types[211]
+#define SWIGTYPE_p_std__ostream swig_types[212]
+#define SWIGTYPE_p_std__shared_ptrT_ILayerRTCoefficients_const_t swig_types[213]
+#define SWIGTYPE_p_std__shared_ptrT_INamedShared_t swig_types[214]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[215]
+#define SWIGTYPE_p_std__shared_ptrT_IParameterizedShared_t swig_types[216]
+#define SWIGTYPE_p_std__shared_ptrT_ISampleBuilder_t swig_types[217]
+#define SWIGTYPE_p_std__shared_ptrT_LayerRTCoefficients_t_t swig_types[218]
+#define SWIGTYPE_p_std__shared_ptrT_ProgressHandler_t_t swig_types[219]
+#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_double_t_std__allocatorT_Geometry__BasicVector3DT_double_t_t_t swig_types[220]
+#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_std__complexT_double_t_t_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t_t swig_types[221]
+#define SWIGTYPE_p_std__vectorT_IDetector2D__EAxesUnits_std__allocatorT_IDetector2D__EAxesUnits_t_t swig_types[222]
+#define SWIGTYPE_p_std__vectorT_IFTDistribution2D_const_p_std__allocatorT_IFTDistribution2D_const_p_t_t swig_types[223]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[224]
+#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[225]
+#define SWIGTYPE_p_std__vectorT_ISample_const_p_std__allocatorT_ISample_const_p_t_t swig_types[226]
+#define SWIGTYPE_p_std__vectorT_ISample_p_std__allocatorT_ISample_p_t_t swig_types[227]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[228]
+#define SWIGTYPE_p_std__vectorT_RealParameterWrapper_std__allocatorT_RealParameterWrapper_t_t swig_types[229]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[230]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[231]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[232]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[233]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[234]
+#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[235]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[236]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[237]
+#define SWIGTYPE_p_value_type swig_types[238]
+static swig_type_info *swig_types[240];
+static swig_module_info swig_module = {swig_types, 239, 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)
 
@@ -6228,6 +6230,8 @@ SWIGINTERN void std_vector_Sl_std_string_Sg__insert__SWIG_1(std::vector< std::st
 #include "FormFactorPyramid.h"
 #include "FormFactorRipple1.h"
 #include "FormFactorRipple2.h"
+#include "FormFactorLongRipple2Gauss.h"
+#include "FormFactorLongRipple2Lorentz.h"
 #include "FormFactorSphereGaussianRadius.h"
 #include "FormFactorSphereLogNormalRadius.h"
 #include "FormFactorSphereUniformRadius.h"
@@ -31549,6 +31553,1096 @@ bool SwigDirector_FormFactorRipple2::check_initialization() const {
 }
 
 
+SwigDirector_FormFactorLongRipple2Gauss::SwigDirector_FormFactorLongRipple2Gauss(PyObject *self, double length, double width, double height, double asymetry): FormFactorLongRipple2Gauss(length, width, height, asymetry), Swig::Director(self) {
+  SWIG_DIRECTOR_RGTR((FormFactorLongRipple2Gauss *)this, this); 
+}
+
+
+
+
+SwigDirector_FormFactorLongRipple2Gauss::~SwigDirector_FormFactorLongRipple2Gauss() {
+}
+
+FormFactorLongRipple2Gauss *SwigDirector_FormFactorLongRipple2Gauss::clone() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  FormFactorLongRipple2Gauss *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 0;
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.clone'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_FormFactorLongRipple2Gauss,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""FormFactorLongRipple2Gauss *""'");
+  }
+  c_result = reinterpret_cast< FormFactorLongRipple2Gauss * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (FormFactorLongRipple2Gauss *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::transferToCPP() {
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 1;
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.transferToCPP'");
+    }
+  }
+}
+
+
+std::string SwigDirector_FormFactorLongRipple2Gauss::addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number) const {
+  std::string c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_From_std_string(static_cast< std::string >(path));
+  swig::SwigVar_PyObject obj1;
+  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(external_pool), SWIGTYPE_p_ParameterPool,  0 );
+  swig::SwigVar_PyObject obj2;
+  obj2 = SWIG_From_int(static_cast< int >(copy_number));
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 2;
+  const char * const swig_method_name = "addParametersToExternalPool";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"addParametersToExternalPool", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.addParametersToExternalPool'");
+    }
+  }
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  if (!SWIG_IsOK(swig_ores) || !swig_optr) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+  }
+  c_result = *swig_optr;
+  if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
+  return (std::string) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::print(std::ostream &ostr) const {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&ostr), SWIGTYPE_p_std__ostream,  0 );
+  swig_set_inner("print", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 4;
+  const char * const swig_method_name = "_print";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"_print", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  swig_set_inner("print", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss._print'");
+    }
+  }
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::init_parameters() {
+  swig_set_inner("init_parameters", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 5;
+  const char * const swig_method_name = "init_parameters";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "init_parameters", NULL);
+#endif
+  swig_set_inner("init_parameters", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.init_parameters'");
+    }
+  }
+}
+
+
+ISample *SwigDirector_FormFactorLongRipple2Gauss::cloneInvertB() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  ISample *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 6;
+  const char * const swig_method_name = "cloneInvertB";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "cloneInvertB", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.cloneInvertB'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_ISample,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""ISample *""'");
+  }
+  c_result = reinterpret_cast< ISample * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (ISample *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(visitor), SWIGTYPE_p_ISampleVisitor,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 7;
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.accept'");
+    }
+  }
+}
+
+
+DWBASimulation *SwigDirector_FormFactorLongRipple2Gauss::createDWBASimulation() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  DWBASimulation *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 8;
+  const char * const swig_method_name = "createDWBASimulation";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createDWBASimulation", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.createDWBASimulation'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_DWBASimulation,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""DWBASimulation *""'");
+  }
+  c_result = reinterpret_cast< DWBASimulation * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (DWBASimulation *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::printSampleTree() {
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 9;
+  const char * const swig_method_name = "printSampleTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "printSampleTree", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.printSampleTree'");
+    }
+  }
+}
+
+
+bool SwigDirector_FormFactorLongRipple2Gauss::containsMagneticMaterial() const {
+  bool c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 10;
+  const char * const swig_method_name = "containsMagneticMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "containsMagneticMaterial", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.containsMagneticMaterial'");
+    }
+  }
+  bool swig_val;
+  int swig_res = SWIG_AsVal_bool(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""bool""'");
+  }
+  c_result = static_cast< bool >(swig_val);
+  return (bool) c_result;
+}
+
+
+std::vector< ISample const *,std::allocator< ISample const * > > SwigDirector_FormFactorLongRipple2Gauss::getChildren() const {
+  std::vector< ISample const *,std::allocator< ISample const * > > c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 11;
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.getChildren'");
+    }
+  }
+  std::vector<ISample const*,std::allocator< ISample const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
+  if (!SWIG_IsOK(swig_ores) || !swig_optr) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< ISample const *,std::allocator< ISample const * > >""'");
+  }
+  c_result = *swig_optr;
+  if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
+  return (std::vector< ISample const *,std::allocator< ISample const * > >) c_result;
+}
+
+
+size_t SwigDirector_FormFactorLongRipple2Gauss::size() const {
+  size_t c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 12;
+  const char * const swig_method_name = "size";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "size", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.size'");
+    }
+  }
+  size_t swig_val;
+  int swig_res = SWIG_AsVal_size_t(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""size_t""'");
+  }
+  c_result = static_cast< size_t >(swig_val);
+  return (size_t) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::setAmbientMaterial(IMaterial const &arg0) {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_IMaterial,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 13;
+  const char * const swig_method_name = "setAmbientMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.setAmbientMaterial'");
+    }
+  }
+}
+
+
+complex_t SwigDirector_FormFactorLongRipple2Gauss::evaluate(WavevectorInfo const &wavevectors) const {
+  complex_t c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&wavevectors), SWIGTYPE_p_WavevectorInfo,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 14;
+  const char * const swig_method_name = "evaluate";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.evaluate'");
+    }
+  }
+  std::complex<double> swig_val;
+  int swig_res = SWIG_AsVal_std_complex_Sl_double_Sg_(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""complex_t""'");
+  }
+  c_result = static_cast< complex_t >(swig_val);
+  return (complex_t) c_result;
+}
+
+
+double SwigDirector_FormFactorLongRipple2Gauss::getVolume() const {
+  double c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 15;
+  const char * const swig_method_name = "getVolume";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getVolume", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.getVolume'");
+    }
+  }
+  double swig_val;
+  int swig_res = SWIG_AsVal_double(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""double""'");
+  }
+  c_result = static_cast< double >(swig_val);
+  return (double) c_result;
+}
+
+
+double SwigDirector_FormFactorLongRipple2Gauss::getRadius() const {
+  double c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 16;
+  const char * const swig_method_name = "getRadius";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getRadius", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.getRadius'");
+    }
+  }
+  double swig_val;
+  int swig_res = SWIG_AsVal_double(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""double""'");
+  }
+  c_result = static_cast< double >(swig_val);
+  return (double) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Gauss::setSpecularInfo(ILayerRTCoefficients const *p_in_coeffs, ILayerRTCoefficients const *p_out_coeffs) {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(p_in_coeffs), SWIGTYPE_p_ILayerRTCoefficients,  0 );
+  swig::SwigVar_PyObject obj1;
+  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(p_out_coeffs), SWIGTYPE_p_ILayerRTCoefficients,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 17;
+  const char * const swig_method_name = "setSpecularInfo";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.setSpecularInfo'");
+    }
+  }
+}
+
+
+complex_t SwigDirector_FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t const &q) const {
+  complex_t c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 18;
+  const char * const swig_method_name = "evaluate_for_q";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate_for_q", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.evaluate_for_q'");
+    }
+  }
+  std::complex<double> swig_val;
+  int swig_res = SWIG_AsVal_std_complex_Sl_double_Sg_(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""complex_t""'");
+  }
+  c_result = static_cast< complex_t >(swig_val);
+  return (complex_t) c_result;
+}
+
+
+bool SwigDirector_FormFactorLongRipple2Gauss::check_initialization() const {
+  bool c_result;
+  swig_set_inner("check_initialization", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Gauss.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 19;
+  const char * const swig_method_name = "check_initialization";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "check_initialization", NULL);
+#endif
+  swig_set_inner("check_initialization", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Gauss.check_initialization'");
+    }
+  }
+  bool swig_val;
+  int swig_res = SWIG_AsVal_bool(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""bool""'");
+  }
+  c_result = static_cast< bool >(swig_val);
+  return (bool) c_result;
+}
+
+
+SwigDirector_FormFactorLongRipple2Lorentz::SwigDirector_FormFactorLongRipple2Lorentz(PyObject *self, double length, double width, double height, double asymetry): FormFactorLongRipple2Lorentz(length, width, height, asymetry), Swig::Director(self) {
+  SWIG_DIRECTOR_RGTR((FormFactorLongRipple2Lorentz *)this, this); 
+}
+
+
+
+
+SwigDirector_FormFactorLongRipple2Lorentz::~SwigDirector_FormFactorLongRipple2Lorentz() {
+}
+
+FormFactorLongRipple2Lorentz *SwigDirector_FormFactorLongRipple2Lorentz::clone() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  FormFactorLongRipple2Lorentz *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 0;
+  const char * const swig_method_name = "clone";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.clone'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_FormFactorLongRipple2Lorentz,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""FormFactorLongRipple2Lorentz *""'");
+  }
+  c_result = reinterpret_cast< FormFactorLongRipple2Lorentz * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (FormFactorLongRipple2Lorentz *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::transferToCPP() {
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 1;
+  const char * const swig_method_name = "transferToCPP";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.transferToCPP'");
+    }
+  }
+}
+
+
+std::string SwigDirector_FormFactorLongRipple2Lorentz::addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number) const {
+  std::string c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_From_std_string(static_cast< std::string >(path));
+  swig::SwigVar_PyObject obj1;
+  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(external_pool), SWIGTYPE_p_ParameterPool,  0 );
+  swig::SwigVar_PyObject obj2;
+  obj2 = SWIG_From_int(static_cast< int >(copy_number));
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 2;
+  const char * const swig_method_name = "addParametersToExternalPool";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"addParametersToExternalPool", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.addParametersToExternalPool'");
+    }
+  }
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  if (!SWIG_IsOK(swig_ores) || !swig_optr) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+  }
+  c_result = *swig_optr;
+  if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
+  return (std::string) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::print(std::ostream &ostr) const {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&ostr), SWIGTYPE_p_std__ostream,  0 );
+  swig_set_inner("print", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 4;
+  const char * const swig_method_name = "_print";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"_print", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  swig_set_inner("print", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz._print'");
+    }
+  }
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::init_parameters() {
+  swig_set_inner("init_parameters", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 5;
+  const char * const swig_method_name = "init_parameters";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "init_parameters", NULL);
+#endif
+  swig_set_inner("init_parameters", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.init_parameters'");
+    }
+  }
+}
+
+
+ISample *SwigDirector_FormFactorLongRipple2Lorentz::cloneInvertB() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  ISample *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 6;
+  const char * const swig_method_name = "cloneInvertB";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "cloneInvertB", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.cloneInvertB'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_ISample,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""ISample *""'");
+  }
+  c_result = reinterpret_cast< ISample * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (ISample *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(visitor), SWIGTYPE_p_ISampleVisitor,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 7;
+  const char * const swig_method_name = "accept";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.accept'");
+    }
+  }
+}
+
+
+DWBASimulation *SwigDirector_FormFactorLongRipple2Lorentz::createDWBASimulation() const {
+  void *swig_argp ;
+  int swig_res ;
+  swig_owntype own ;
+  
+  DWBASimulation *c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 8;
+  const char * const swig_method_name = "createDWBASimulation";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createDWBASimulation", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.createDWBASimulation'");
+    }
+  }
+  swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_DWBASimulation,  0  | SWIG_POINTER_DISOWN, &own);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""DWBASimulation *""'");
+  }
+  c_result = reinterpret_cast< DWBASimulation * >(swig_argp);
+  swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */);
+  return (DWBASimulation *) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::printSampleTree() {
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 9;
+  const char * const swig_method_name = "printSampleTree";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "printSampleTree", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.printSampleTree'");
+    }
+  }
+}
+
+
+bool SwigDirector_FormFactorLongRipple2Lorentz::containsMagneticMaterial() const {
+  bool c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 10;
+  const char * const swig_method_name = "containsMagneticMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "containsMagneticMaterial", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.containsMagneticMaterial'");
+    }
+  }
+  bool swig_val;
+  int swig_res = SWIG_AsVal_bool(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""bool""'");
+  }
+  c_result = static_cast< bool >(swig_val);
+  return (bool) c_result;
+}
+
+
+std::vector< ISample const *,std::allocator< ISample const * > > SwigDirector_FormFactorLongRipple2Lorentz::getChildren() const {
+  std::vector< ISample const *,std::allocator< ISample const * > > c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 11;
+  const char * const swig_method_name = "getChildren";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.getChildren'");
+    }
+  }
+  std::vector<ISample const*,std::allocator< ISample const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
+  if (!SWIG_IsOK(swig_ores) || !swig_optr) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< ISample const *,std::allocator< ISample const * > >""'");
+  }
+  c_result = *swig_optr;
+  if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
+  return (std::vector< ISample const *,std::allocator< ISample const * > >) c_result;
+}
+
+
+size_t SwigDirector_FormFactorLongRipple2Lorentz::size() const {
+  size_t c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 12;
+  const char * const swig_method_name = "size";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "size", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.size'");
+    }
+  }
+  size_t swig_val;
+  int swig_res = SWIG_AsVal_size_t(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""size_t""'");
+  }
+  c_result = static_cast< size_t >(swig_val);
+  return (size_t) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::setAmbientMaterial(IMaterial const &arg0) {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_IMaterial,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 13;
+  const char * const swig_method_name = "setAmbientMaterial";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.setAmbientMaterial'");
+    }
+  }
+}
+
+
+complex_t SwigDirector_FormFactorLongRipple2Lorentz::evaluate(WavevectorInfo const &wavevectors) const {
+  complex_t c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&wavevectors), SWIGTYPE_p_WavevectorInfo,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 14;
+  const char * const swig_method_name = "evaluate";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.evaluate'");
+    }
+  }
+  std::complex<double> swig_val;
+  int swig_res = SWIG_AsVal_std_complex_Sl_double_Sg_(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""complex_t""'");
+  }
+  c_result = static_cast< complex_t >(swig_val);
+  return (complex_t) c_result;
+}
+
+
+double SwigDirector_FormFactorLongRipple2Lorentz::getVolume() const {
+  double c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 15;
+  const char * const swig_method_name = "getVolume";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getVolume", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.getVolume'");
+    }
+  }
+  double swig_val;
+  int swig_res = SWIG_AsVal_double(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""double""'");
+  }
+  c_result = static_cast< double >(swig_val);
+  return (double) c_result;
+}
+
+
+double SwigDirector_FormFactorLongRipple2Lorentz::getRadius() const {
+  double c_result;
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 16;
+  const char * const swig_method_name = "getRadius";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getRadius", NULL);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.getRadius'");
+    }
+  }
+  double swig_val;
+  int swig_res = SWIG_AsVal_double(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""double""'");
+  }
+  c_result = static_cast< double >(swig_val);
+  return (double) c_result;
+}
+
+
+void SwigDirector_FormFactorLongRipple2Lorentz::setSpecularInfo(ILayerRTCoefficients const *p_in_coeffs, ILayerRTCoefficients const *p_out_coeffs) {
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(p_in_coeffs), SWIGTYPE_p_ILayerRTCoefficients,  0 );
+  swig::SwigVar_PyObject obj1;
+  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(p_out_coeffs), SWIGTYPE_p_ILayerRTCoefficients,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 17;
+  const char * const swig_method_name = "setSpecularInfo";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.setSpecularInfo'");
+    }
+  }
+}
+
+
+complex_t SwigDirector_FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t const &q) const {
+  complex_t c_result;
+  swig::SwigVar_PyObject obj0;
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t,  0 );
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 18;
+  const char * const swig_method_name = "evaluate_for_q";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate_for_q", (char *)"(O)" ,(PyObject *)obj0);
+#endif
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.evaluate_for_q'");
+    }
+  }
+  std::complex<double> swig_val;
+  int swig_res = SWIG_AsVal_std_complex_Sl_double_Sg_(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""complex_t""'");
+  }
+  c_result = static_cast< complex_t >(swig_val);
+  return (complex_t) c_result;
+}
+
+
+bool SwigDirector_FormFactorLongRipple2Lorentz::check_initialization() const {
+  bool c_result;
+  swig_set_inner("check_initialization", true);
+  if (!swig_get_self()) {
+    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call FormFactorLongRipple2Lorentz.__init__.");
+  }
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+  const size_t swig_method_index = 19;
+  const char * const swig_method_name = "check_initialization";
+  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
+#else
+  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "check_initialization", NULL);
+#endif
+  swig_set_inner("check_initialization", false);
+  if (!result) {
+    PyObject *error = PyErr_Occurred();
+    if (error) {
+      Swig::DirectorMethodException::raise("Error detected when calling 'FormFactorLongRipple2Lorentz.check_initialization'");
+    }
+  }
+  bool swig_val;
+  int swig_res = SWIG_AsVal_bool(result, &swig_val);
+  if (!SWIG_IsOK(swig_res)) {
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""bool""'");
+  }
+  c_result = static_cast< bool >(swig_val);
+  return (bool) c_result;
+}
+
+
 SwigDirector_FormFactorSphereGaussianRadius::SwigDirector_FormFactorSphereGaussianRadius(PyObject *self, double mean, double sigma): FormFactorSphereGaussianRadius(mean, sigma), Swig::Director(self) {
   SWIG_DIRECTOR_RGTR((FormFactorSphereGaussianRadius *)this, this); 
 }
@@ -114368,6 +115462,994 @@ SWIGINTERN PyObject *FormFactorRipple2_swigregister(PyObject *SWIGUNUSEDPARM(sel
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  PyObject *arg1 = (PyObject *) 0 ;
+  double arg2 ;
+  double arg3 ;
+  double arg4 ;
+  double arg5 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  double val4 ;
+  int ecode4 = 0 ;
+  double val5 ;
+  int ecode5 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  FormFactorLongRipple2Gauss *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_FormFactorLongRipple2Gauss",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
+  arg1 = obj0;
+  ecode2 = SWIG_AsVal_double(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  ecode3 = SWIG_AsVal_double(obj2, &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = static_cast< double >(val3);
+  ecode4 = SWIG_AsVal_double(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "4"" of type '" "double""'");
+  } 
+  arg4 = static_cast< double >(val4);
+  ecode5 = SWIG_AsVal_double(obj4, &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_FormFactorLongRipple2Gauss" "', argument " "5"" of type '" "double""'");
+  } 
+  arg5 = static_cast< double >(val5);
+  if ( arg1 != Py_None ) {
+    /* subclassed */
+    result = (FormFactorLongRipple2Gauss *)new SwigDirector_FormFactorLongRipple2Gauss(arg1,arg2,arg3,arg4,arg5); 
+  } else {
+    result = (FormFactorLongRipple2Gauss *)new FormFactorLongRipple2Gauss(arg2,arg3,arg4,arg5); 
+  }
+  
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_FormFactorLongRipple2Gauss",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple2Gauss" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  FormFactorLongRipple2Gauss *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_clone",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_clone" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = (FormFactorLongRipple2Gauss *)((FormFactorLongRipple2Gauss const *)arg1)->FormFactorLongRipple2Gauss::clone();
+    } else {
+      result = (FormFactorLongRipple2Gauss *)((FormFactorLongRipple2Gauss const *)arg1)->clone();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  director = SWIG_DIRECTOR_CAST(result);
+  if (director) {
+    resultobj = director->swig_get_self();
+    Py_INCREF(resultobj);
+  } else {
+    resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  }
+  if (director) {
+    SWIG_AcquirePtr(resultobj, director->swig_release_ownership(SWIG_as_voidptr(result)));
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  ISampleVisitor *arg2 = (ISampleVisitor *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Gauss_accept",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_accept" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ISampleVisitor, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Gauss_accept" "', argument " "2"" of type '" "ISampleVisitor *""'"); 
+  }
+  arg2 = reinterpret_cast< ISampleVisitor * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      ((FormFactorLongRipple2Gauss const *)arg1)->FormFactorLongRipple2Gauss::accept(arg2);
+    } else {
+      ((FormFactorLongRipple2Gauss const *)arg1)->accept(arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getRadius(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_getRadius",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getRadius" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = (double)((FormFactorLongRipple2Gauss const *)arg1)->FormFactorLongRipple2Gauss::getRadius();
+    } else {
+      result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getRadius();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_getHeight",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getHeight();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_getWidth",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getWidth();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_getLength",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getLength" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_getAsymmetry",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_getAsymmetry" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  result = (double)((FormFactorLongRipple2Gauss const *)arg1)->getAsymmetry();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  cvector_t *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  complex_t result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Gauss_evaluate_for_q",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t,  0  | 0);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Gauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const &""'"); 
+  }
+  arg2 = reinterpret_cast< cvector_t * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = ((FormFactorLongRipple2Gauss const *)arg1)->FormFactorLongRipple2Gauss::evaluate_for_q((cvector_t const &)*arg2);
+    } else {
+      result = ((FormFactorLongRipple2Gauss const *)arg1)->evaluate_for_q((cvector_t const &)*arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_check_initialization(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Gauss *darg = 0;
+  bool result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_check_initialization",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_check_initialization" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("check_initialization"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member check_initialization");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Gauss *>(arg1);
+    if (upcall) {
+      result = (bool)((SwigDirector_FormFactorLongRipple2Gauss const *)darg)->check_initializationSwigPublic();
+    } else {
+      result = (bool)((SwigDirector_FormFactorLongRipple2Gauss const *)darg)->check_initialization();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss_init_parameters(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Gauss *darg = 0;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Gauss_init_parameters",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss_init_parameters" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("init_parameters"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member init_parameters");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Gauss *>(arg1);
+    if (upcall) {
+      (darg)->init_parametersSwigPublic();
+    } else {
+      (darg)->init_parameters();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_disown_FormFactorLongRipple2Gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:disown_FormFactorLongRipple2Gauss",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "disown_FormFactorLongRipple2Gauss" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  {
+    Swig::Director *director = SWIG_DIRECTOR_CAST(arg1);
+    if (director) director->swig_disown();
+  }
+  
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Gauss__print(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Gauss *arg1 = (FormFactorLongRipple2Gauss *) 0 ;
+  std::ostream *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Gauss *darg = 0;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Gauss__print",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Gauss, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Gauss__print" "', argument " "1"" of type '" "FormFactorLongRipple2Gauss const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Gauss * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__ostream,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Gauss__print" "', argument " "2"" of type '" "std::ostream &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Gauss__print" "', argument " "2"" of type '" "std::ostream &""'"); 
+  }
+  arg2 = reinterpret_cast< std::ostream * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("print"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member print");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Gauss *>(arg1);
+    if (upcall) {
+      ((SwigDirector_FormFactorLongRipple2Gauss const *)darg)->printSwigPublic(*arg2);
+    } else {
+      ((SwigDirector_FormFactorLongRipple2Gauss const *)darg)->print(*arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
+SWIGINTERN PyObject *_wrap_new_FormFactorLongRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  PyObject *arg1 = (PyObject *) 0 ;
+  double arg2 ;
+  double arg3 ;
+  double arg4 ;
+  double arg5 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  double val4 ;
+  int ecode4 = 0 ;
+  double val5 ;
+  int ecode5 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  FormFactorLongRipple2Lorentz *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_FormFactorLongRipple2Lorentz",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
+  arg1 = obj0;
+  ecode2 = SWIG_AsVal_double(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  ecode3 = SWIG_AsVal_double(obj2, &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = static_cast< double >(val3);
+  ecode4 = SWIG_AsVal_double(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "4"" of type '" "double""'");
+  } 
+  arg4 = static_cast< double >(val4);
+  ecode5 = SWIG_AsVal_double(obj4, &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_FormFactorLongRipple2Lorentz" "', argument " "5"" of type '" "double""'");
+  } 
+  arg5 = static_cast< double >(val5);
+  if ( arg1 != Py_None ) {
+    /* subclassed */
+    result = (FormFactorLongRipple2Lorentz *)new SwigDirector_FormFactorLongRipple2Lorentz(arg1,arg2,arg3,arg4,arg5); 
+  } else {
+    result = (FormFactorLongRipple2Lorentz *)new FormFactorLongRipple2Lorentz(arg2,arg3,arg4,arg5); 
+  }
+  
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_FormFactorLongRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_FormFactorLongRipple2Lorentz",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLongRipple2Lorentz" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  FormFactorLongRipple2Lorentz *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_clone",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_clone" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = (FormFactorLongRipple2Lorentz *)((FormFactorLongRipple2Lorentz const *)arg1)->FormFactorLongRipple2Lorentz::clone();
+    } else {
+      result = (FormFactorLongRipple2Lorentz *)((FormFactorLongRipple2Lorentz const *)arg1)->clone();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  director = SWIG_DIRECTOR_CAST(result);
+  if (director) {
+    resultobj = director->swig_get_self();
+    Py_INCREF(resultobj);
+  } else {
+    resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  }
+  if (director) {
+    SWIG_AcquirePtr(resultobj, director->swig_release_ownership(SWIG_as_voidptr(result)));
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  ISampleVisitor *arg2 = (ISampleVisitor *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Lorentz_accept",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_accept" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ISampleVisitor, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Lorentz_accept" "', argument " "2"" of type '" "ISampleVisitor *""'"); 
+  }
+  arg2 = reinterpret_cast< ISampleVisitor * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      ((FormFactorLongRipple2Lorentz const *)arg1)->FormFactorLongRipple2Lorentz::accept(arg2);
+    } else {
+      ((FormFactorLongRipple2Lorentz const *)arg1)->accept(arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getRadius(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_getRadius",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getRadius" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->FormFactorLongRipple2Lorentz::getRadius();
+    } else {
+      result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getRadius();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_getHeight",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getHeight" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getHeight();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_getWidth",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getWidth" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getWidth();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_getLength",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getLength" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_getAsymmetry(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  double result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_getAsymmetry",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_getAsymmetry" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  result = (double)((FormFactorLongRipple2Lorentz const *)arg1)->getAsymmetry();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  cvector_t *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  complex_t result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Lorentz_evaluate_for_q",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t,  0  | 0);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Lorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const &""'"); 
+  }
+  arg2 = reinterpret_cast< cvector_t * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    if (upcall) {
+      result = ((FormFactorLongRipple2Lorentz const *)arg1)->FormFactorLongRipple2Lorentz::evaluate_for_q((cvector_t const &)*arg2);
+    } else {
+      result = ((FormFactorLongRipple2Lorentz const *)arg1)->evaluate_for_q((cvector_t const &)*arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_check_initialization(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Lorentz *darg = 0;
+  bool result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_check_initialization",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_check_initialization" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("check_initialization"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member check_initialization");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Lorentz *>(arg1);
+    if (upcall) {
+      result = (bool)((SwigDirector_FormFactorLongRipple2Lorentz const *)darg)->check_initializationSwigPublic();
+    } else {
+      result = (bool)((SwigDirector_FormFactorLongRipple2Lorentz const *)darg)->check_initialization();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz_init_parameters(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Lorentz *darg = 0;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FormFactorLongRipple2Lorentz_init_parameters",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz_init_parameters" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("init_parameters"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member init_parameters");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Lorentz *>(arg1);
+    if (upcall) {
+      (darg)->init_parametersSwigPublic();
+    } else {
+      (darg)->init_parameters();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_disown_FormFactorLongRipple2Lorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:disown_FormFactorLongRipple2Lorentz",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "disown_FormFactorLongRipple2Lorentz" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  {
+    Swig::Director *director = SWIG_DIRECTOR_CAST(arg1);
+    if (director) director->swig_disown();
+  }
+  
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FormFactorLongRipple2Lorentz__print(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FormFactorLongRipple2Lorentz *arg1 = (FormFactorLongRipple2Lorentz *) 0 ;
+  std::ostream *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Swig::Director *director = 0;
+  bool upcall = false;
+  SwigDirector_FormFactorLongRipple2Lorentz *darg = 0;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorLongRipple2Lorentz__print",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorLongRipple2Lorentz, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLongRipple2Lorentz__print" "', argument " "1"" of type '" "FormFactorLongRipple2Lorentz const *""'"); 
+  }
+  arg1 = reinterpret_cast< FormFactorLongRipple2Lorentz * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__ostream,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLongRipple2Lorentz__print" "', argument " "2"" of type '" "std::ostream &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLongRipple2Lorentz__print" "', argument " "2"" of type '" "std::ostream &""'"); 
+  }
+  arg2 = reinterpret_cast< std::ostream * >(argp2);
+  director = SWIG_DIRECTOR_CAST(arg1);
+  if (!director || !(director->swig_get_inner("print"))) {
+    SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member print");
+    SWIG_fail;
+  }
+  upcall = (director && (director->swig_get_self()==obj0));
+  try {
+    darg = dynamic_cast<SwigDirector_FormFactorLongRipple2Lorentz *>(arg1);
+    if (upcall) {
+      ((SwigDirector_FormFactorLongRipple2Lorentz const *)darg)->printSwigPublic(*arg2);
+    } else {
+      ((SwigDirector_FormFactorLongRipple2Lorentz const *)darg)->print(*arg2);
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_new_FormFactorSphereGaussianRadius(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   PyObject *arg1 = (PyObject *) 0 ;
@@ -168843,6 +170925,104 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"disown_FormFactorRipple2", _wrap_disown_FormFactorRipple2, METH_VARARGS, NULL},
 	 { (char *)"FormFactorRipple2__print", _wrap_FormFactorRipple2__print, METH_VARARGS, (char *)"FormFactorRipple2__print(FormFactorRipple2 self, std::ostream & ostr)"},
 	 { (char *)"FormFactorRipple2_swigregister", FormFactorRipple2_swigregister, METH_VARARGS, NULL},
+	 { (char *)"new_FormFactorLongRipple2Gauss", _wrap_new_FormFactorLongRipple2Gauss, METH_VARARGS, (char *)"new_FormFactorLongRipple2Gauss(PyObject * arg2, double length, double width, double height, double asymetry) -> FormFactorLongRipple2Gauss"},
+	 { (char *)"delete_FormFactorLongRipple2Gauss", _wrap_delete_FormFactorLongRipple2Gauss, METH_VARARGS, (char *)"delete_FormFactorLongRipple2Gauss(FormFactorLongRipple2Gauss self)"},
+	 { (char *)"FormFactorLongRipple2Gauss_clone", _wrap_FormFactorLongRipple2Gauss_clone, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Gauss_clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss\n"
+		"\n"
+		"virtual IFormFactorBorn* IFormFactorBorn::clone() const =0\n"
+		"\n"
+		"Returns a clone of this  ISample object. \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Gauss_accept", _wrap_FormFactorLongRipple2Gauss_accept, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Gauss_accept(FormFactorLongRipple2Gauss self, ISampleVisitor visitor)\n"
+		"\n"
+		"virtual void IFormFactorBorn::accept(ISampleVisitor *visitor) const\n"
+		"\n"
+		"Calls the  ISampleVisitor's visit method. \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Gauss_getRadius", _wrap_FormFactorLongRipple2Gauss_getRadius, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Gauss_getRadius(FormFactorLongRipple2Gauss self) -> double\n"
+		"\n"
+		"virtual double IFormFactor::getRadius() const =0\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"
+		""},
+	 { (char *)"FormFactorLongRipple2Gauss_getHeight", _wrap_FormFactorLongRipple2Gauss_getHeight, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_getHeight(FormFactorLongRipple2Gauss self) -> double"},
+	 { (char *)"FormFactorLongRipple2Gauss_getWidth", _wrap_FormFactorLongRipple2Gauss_getWidth, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_getWidth(FormFactorLongRipple2Gauss self) -> double"},
+	 { (char *)"FormFactorLongRipple2Gauss_getLength", _wrap_FormFactorLongRipple2Gauss_getLength, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_getLength(FormFactorLongRipple2Gauss self) -> double"},
+	 { (char *)"FormFactorLongRipple2Gauss_getAsymmetry", _wrap_FormFactorLongRipple2Gauss_getAsymmetry, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_getAsymmetry(FormFactorLongRipple2Gauss self) -> double"},
+	 { (char *)"FormFactorLongRipple2Gauss_evaluate_for_q", _wrap_FormFactorLongRipple2Gauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Gauss_evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t\n"
+		"\n"
+		"virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t &q) const =0\n"
+		"\n"
+		"evaluate scattering amplitude for complex wavevector\n"
+		"\n"
+		"Parameters:\n"
+		"-----------\n"
+		"\n"
+		"q: \n"
+		"wavevector transfer q=k_i-k_f \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Gauss_check_initialization", _wrap_FormFactorLongRipple2Gauss_check_initialization, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_check_initialization(FormFactorLongRipple2Gauss self) -> bool"},
+	 { (char *)"FormFactorLongRipple2Gauss_init_parameters", _wrap_FormFactorLongRipple2Gauss_init_parameters, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss_init_parameters(FormFactorLongRipple2Gauss self)"},
+	 { (char *)"disown_FormFactorLongRipple2Gauss", _wrap_disown_FormFactorLongRipple2Gauss, METH_VARARGS, NULL},
+	 { (char *)"FormFactorLongRipple2Gauss__print", _wrap_FormFactorLongRipple2Gauss__print, METH_VARARGS, (char *)"FormFactorLongRipple2Gauss__print(FormFactorLongRipple2Gauss self, std::ostream & ostr)"},
+	 { (char *)"FormFactorLongRipple2Gauss_swigregister", FormFactorLongRipple2Gauss_swigregister, METH_VARARGS, NULL},
+	 { (char *)"new_FormFactorLongRipple2Lorentz", _wrap_new_FormFactorLongRipple2Lorentz, METH_VARARGS, (char *)"new_FormFactorLongRipple2Lorentz(PyObject * arg2, double length, double width, double height, double asymetry) -> FormFactorLongRipple2Lorentz"},
+	 { (char *)"delete_FormFactorLongRipple2Lorentz", _wrap_delete_FormFactorLongRipple2Lorentz, METH_VARARGS, (char *)"delete_FormFactorLongRipple2Lorentz(FormFactorLongRipple2Lorentz self)"},
+	 { (char *)"FormFactorLongRipple2Lorentz_clone", _wrap_FormFactorLongRipple2Lorentz_clone, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Lorentz_clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz\n"
+		"\n"
+		"virtual IFormFactorBorn* IFormFactorBorn::clone() const =0\n"
+		"\n"
+		"Returns a clone of this  ISample object. \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Lorentz_accept", _wrap_FormFactorLongRipple2Lorentz_accept, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Lorentz_accept(FormFactorLongRipple2Lorentz self, ISampleVisitor visitor)\n"
+		"\n"
+		"virtual void IFormFactorBorn::accept(ISampleVisitor *visitor) const\n"
+		"\n"
+		"Calls the  ISampleVisitor's visit method. \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Lorentz_getRadius", _wrap_FormFactorLongRipple2Lorentz_getRadius, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Lorentz_getRadius(FormFactorLongRipple2Lorentz self) -> double\n"
+		"\n"
+		"virtual double IFormFactor::getRadius() const =0\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"
+		""},
+	 { (char *)"FormFactorLongRipple2Lorentz_getHeight", _wrap_FormFactorLongRipple2Lorentz_getHeight, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_getHeight(FormFactorLongRipple2Lorentz self) -> double"},
+	 { (char *)"FormFactorLongRipple2Lorentz_getWidth", _wrap_FormFactorLongRipple2Lorentz_getWidth, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_getWidth(FormFactorLongRipple2Lorentz self) -> double"},
+	 { (char *)"FormFactorLongRipple2Lorentz_getLength", _wrap_FormFactorLongRipple2Lorentz_getLength, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_getLength(FormFactorLongRipple2Lorentz self) -> double"},
+	 { (char *)"FormFactorLongRipple2Lorentz_getAsymmetry", _wrap_FormFactorLongRipple2Lorentz_getAsymmetry, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_getAsymmetry(FormFactorLongRipple2Lorentz self) -> double"},
+	 { (char *)"FormFactorLongRipple2Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple2Lorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
+		"FormFactorLongRipple2Lorentz_evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t\n"
+		"\n"
+		"virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t &q) const =0\n"
+		"\n"
+		"evaluate scattering amplitude for complex wavevector\n"
+		"\n"
+		"Parameters:\n"
+		"-----------\n"
+		"\n"
+		"q: \n"
+		"wavevector transfer q=k_i-k_f \n"
+		"\n"
+		""},
+	 { (char *)"FormFactorLongRipple2Lorentz_check_initialization", _wrap_FormFactorLongRipple2Lorentz_check_initialization, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_check_initialization(FormFactorLongRipple2Lorentz self) -> bool"},
+	 { (char *)"FormFactorLongRipple2Lorentz_init_parameters", _wrap_FormFactorLongRipple2Lorentz_init_parameters, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz_init_parameters(FormFactorLongRipple2Lorentz self)"},
+	 { (char *)"disown_FormFactorLongRipple2Lorentz", _wrap_disown_FormFactorLongRipple2Lorentz, METH_VARARGS, NULL},
+	 { (char *)"FormFactorLongRipple2Lorentz__print", _wrap_FormFactorLongRipple2Lorentz__print, METH_VARARGS, (char *)"FormFactorLongRipple2Lorentz__print(FormFactorLongRipple2Lorentz self, std::ostream & ostr)"},
+	 { (char *)"FormFactorLongRipple2Lorentz_swigregister", FormFactorLongRipple2Lorentz_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorSphereGaussianRadius", _wrap_new_FormFactorSphereGaussianRadius, METH_VARARGS, (char *)"\n"
 		"new_FormFactorSphereGaussianRadius(PyObject * arg2, double mean, double sigma) -> FormFactorSphereGaussianRadius\n"
 		"\n"
@@ -175344,101 +177524,107 @@ static void *_p_RotationZTo_p_IRotation(void *x, int *SWIGUNUSEDPARM(newmemory))
 static void *_p_RotationXTo_p_IRotation(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IRotation *)  ((RotationX *) x));
 }
-static void *_p_FormFactorFullSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSphere *) x));
-}
-static void *_p_FormFactorPrism3To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPrism3 *) x));
+static void *_p_FormFactorPrism6To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPrism6 *) x));
 }
-static void *_p_FormFactorRipple2To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple2 *) x));
+static void *_p_FormFactorHemiEllipsoidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorHemiEllipsoid *) x));
 }
-static void *_p_FormFactorTruncatedSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
+static void *_p_FormFactorTruncatedSpheroidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x));
 }
-static void *_p_FormFactorGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGauss *) x));
+static void *_p_FormFactorFullSpheroidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
 }
-static void *_p_FormFactorSphereGaussianRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
+static void *_p_FormFactorLongBoxGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
 }
-static void *_p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
+static void *_p_FormFactorRipple1To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple1 *) x));
 }
 static void *_p_FormFactorCrystalTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCrystal *) x));
 }
-static void *_p_FormFactorCone6To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCone6 *) x));
+static void *_p_FormFactorRipple2To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple2 *) x));
 }
-static void *_p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorDecorator *) ((FormFactorDecoratorDebyeWaller *) x));
+static void *_p_FormFactorTruncatedCubeTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedCube *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCuboctahedron *) x));
+static void *_p_FormFactorTruncatedSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
-static void *_p_FormFactorPrism6To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPrism6 *) x));
+static void *_p_FormFactorFullSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSphere *) x));
 }
-static void *_p_FormFactorTetrahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTetrahedron *) x));
+static void *_p_FormFactorCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCylinder *) x));
+}
+static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
+}
+static void *_p_FormFactorBoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorBox *) x));
 }
 static void *_p_IFormFactorDecoratorTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *)  ((IFormFactorDecorator *) x));
 }
-static void *_p_FormFactorWeightedTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *)  ((FormFactorWeighted *) x));
+static void *_p_FormFactorTetrahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTetrahedron *) x));
+}
+static void *_p_FormFactorCuboctahedronTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCuboctahedron *) x));
 }
 static void *_p_FormFactorConeTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCone *) x));
 }
-static void *_p_FormFactorAnisoPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorAnisoPyramid *) x));
-}
-static void *_p_FormFactorPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPyramid *) x));
+static void *_p_FormFactorCone6To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCone6 *) x));
 }
-static void *_p_FormFactorBoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorBox *) x));
+static void *_p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereLogNormalRadius *) x));
 }
-static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
+static void *_p_FormFactorSphereGaussianRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereGaussianRadius *) x));
 }
-static void *_p_FormFactorLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentz *) x));
+static void *_p_IFormFactorBornTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *)  ((IFormFactorBorn *) x));
 }
-static void *_p_FormFactorFullSpheroidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
+static void *_p_FormFactorTrivialTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTrivial *) x));
 }
-static void *_p_FormFactorHemiEllipsoidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorHemiEllipsoid *) x));
+static void *_p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorDecorator *) ((FormFactorDecoratorDebyeWaller *) x));
 }
-static void *_p_FormFactorLongBoxGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxGauss *) x));
+static void *_p_FormFactorLongRipple2LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
 }
-static void *_p_FormFactorTruncatedSpheroidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x));
+static void *_p_FormFactorLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
-static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x));
+static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongBoxLorentz *) x));
 }
-static void *_p_FormFactorCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCylinder *) x));
+static void *_p_FormFactorWeightedTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *)  ((FormFactorWeighted *) x));
 }
 static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x));
 }
-static void *_p_FormFactorTrivialTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTrivial *) x));
+static void *_p_FormFactorPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPyramid *) x));
 }
-static void *_p_FormFactorTruncatedCubeTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedCube *) x));
+static void *_p_FormFactorAnisoPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorAnisoPyramid *) x));
 }
-static void *_p_IFormFactorBornTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *)  ((IFormFactorBorn *) x));
+static void *_p_FormFactorPrism3To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorRipple1To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple1 *) x));
+static void *_p_FormFactorLongRipple2GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
+}
+static void *_p_FormFactorGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGauss *) x));
 }
 static void *_p_LayerRoughnessTo_p_IRoughness(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IRoughness *)  ((LayerRoughness *) x));
@@ -175590,6 +177776,9 @@ static void *_p_RotationYTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_RotationZTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(IRotation *) ((RotationZ *) x));
 }
+static void *_p_FormFactorLongRipple2GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -175602,12 +177791,12 @@ static void *_p_IFormFactorBornTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(
 static void *_p_IClusteredParticlesTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(ICompositeSample *) ((IClusteredParticles *) x));
 }
-static void *_p_IParticleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (ISample *)(ICompositeSample *)(IAbstractParticle *) ((IParticle *) x));
-}
 static void *_p_IAbstractParticleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(ICompositeSample *) ((IAbstractParticle *) x));
 }
+static void *_p_IParticleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (ISample *)(ICompositeSample *)(IAbstractParticle *) ((IParticle *) x));
+}
 static void *_p_ParticleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(ICompositeSample *)(IAbstractParticle *)(IParticle *) ((Particle *) x));
 }
@@ -175737,6 +177926,9 @@ static void *_p_IResolutionFunction2DTo_p_IParameterized(void *x, int *SWIGUNUSE
 static void *_p_FormFactorWeightedTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(IFormFactor *) ((FormFactorWeighted *) x));
 }
+static void *_p_FormFactorLongRipple2LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
@@ -175851,18 +178043,15 @@ static void *_p_Geometry__HorizontalLineTo_p_ICloneable(void *x, int *SWIGUNUSED
 static void *_p_FormFactorPrism3To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_FormFactorTetrahedronTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTetrahedron *) x));
 }
+static void *_p_FormFactorCuboctahedronTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorCuboctahedron *) x));
+}
 static void *_p_FormFactorPrism6To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPrism6 *) x));
 }
-static void *_p_SpecularSimulationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *)  ((SpecularSimulation *) x));
-}
 static void *_p_OffSpecSimulationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (Simulation *) ((OffSpecSimulation *) x));
 }
@@ -175872,6 +178061,9 @@ static void *_p_GISASSimulationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_SimulationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((Simulation *) x));
 }
+static void *_p_SpecularSimulationTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *)  ((SpecularSimulation *) x));
+}
 static void *_p_ParticleCoreShellTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(ICompositeSample *)(IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x));
 }
@@ -175914,15 +178106,18 @@ static void *_p_FormFactorTruncatedCubeTo_p_ICloneable(void *x, int *SWIGUNUSEDP
 static void *_p_RotationYTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IRotation *) ((RotationY *) x));
 }
-static void *_p_Geometry__RectangleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Rectangle *) x));
-}
 static void *_p_RotationZTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IRotation *) ((RotationZ *) x));
 }
+static void *_p_Geometry__RectangleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Rectangle *) x));
+}
 static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
+static void *_p_FormFactorLongRipple2GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
+}
 static void *_p_Geometry__VerticalLineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::VerticalLine *) x));
 }
@@ -176025,6 +178220,9 @@ static void *_p_FormFactorLongBoxLorentzTo_p_ICloneable(void *x, int *SWIGUNUSED
 static void *_p_FormFactorLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
+static void *_p_FormFactorLongRipple2LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+}
 static void *_p_InterferenceFunction2DLatticeTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IInterferenceFunction *) ((InterferenceFunction2DLattice *) x));
 }
@@ -176172,15 +178370,18 @@ static void *_p_RotationYTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_RotationZTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IRotation *) ((RotationZ *) x));
 }
+static void *_p_FormFactorLongRipple2GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_IDetectorResolutionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (IParameterized *) ((IDetectorResolution *) x));
-}
 static void *_p_IFormFactorBornTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
 }
+static void *_p_IDetectorResolutionTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *) ((IDetectorResolution *) x));
+}
 static void *_p_IClusteredParticlesTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(ICompositeSample *) ((IClusteredParticles *) x));
 }
@@ -176331,6 +178532,9 @@ static void *_p_IResolutionFunction2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FormFactorWeightedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *) ((FormFactorWeighted *) x));
 }
+static void *_p_FormFactorLongRipple2LorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLorentzTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
@@ -176400,6 +178604,9 @@ static void *_p_FormFactorTruncatedSphereTo_p_IFormFactorBorn(void *x, int *SWIG
 static void *_p_FormFactorGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorGauss *) x));
 }
+static void *_p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple2Gauss *) x));
+}
 static void *_p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorSphereGaussianRadius *) x));
 }
@@ -176439,6 +178646,9 @@ static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn(void *x, int *SWIGU
 static void *_p_FormFactorLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLorentz *) x));
 }
+static void *_p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorLongRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLongBoxGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLongBoxGauss *) x));
 }
@@ -176628,15 +178838,15 @@ static void *_p_FormFactorRipple2To_p_ISample(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_IRotationTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *)  ((IRotation *) x));
 }
+static void *_p_FormFactorFullSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
+}
 static void *_p_FormFactorTruncatedCubeTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedCube *) x));
 }
 static void *_p_FormFactorTruncatedSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
-static void *_p_FormFactorFullSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x));
-}
 static void *_p_MultiLayerTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (ICompositeSample *) ((MultiLayer *) x));
 }
@@ -176712,6 +178922,9 @@ static void *_p_FormFactorTrivialTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_FormFactorDecoratorDebyeWallerTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorDecorator *) ((FormFactorDecoratorDebyeWaller *) x));
 }
+static void *_p_FormFactorLongRipple2LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Lorentz *) x));
+}
 static void *_p_FormFactorLorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
 }
@@ -176745,6 +178958,9 @@ static void *_p_FormFactorPrism3To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_ParticleCompositionTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (ICompositeSample *)(IAbstractParticle *)(IParticle *) ((ParticleComposition *) x));
 }
+static void *_p_FormFactorLongRipple2GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
+}
 static void *_p_FormFactorGaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
@@ -176872,6 +179088,8 @@ static swig_type_info _swigt__p_FormFactorGauss = {"_p_FormFactorGauss", "FormFa
 static swig_type_info _swigt__p_FormFactorHemiEllipsoid = {"_p_FormFactorHemiEllipsoid", "FormFactorHemiEllipsoid *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLongBoxGauss = {"_p_FormFactorLongBoxGauss", "FormFactorLongBoxGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLongBoxLorentz = {"_p_FormFactorLongBoxLorentz", "FormFactorLongBoxLorentz *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorLongRipple2Gauss = {"_p_FormFactorLongRipple2Gauss", "FormFactorLongRipple2Gauss *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorLongRipple2Lorentz = {"_p_FormFactorLongRipple2Lorentz", "FormFactorLongRipple2Lorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorLorentz = {"_p_FormFactorLorentz", "FormFactorLorentz *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPrism3 = {"_p_FormFactorPrism3", "FormFactorPrism3 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPrism6 = {"_p_FormFactorPrism6", "FormFactorPrism6 *", 0, 0, (void*)0, 0};
@@ -177111,6 +179329,8 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorHemiEllipsoid,
   &_swigt__p_FormFactorLongBoxGauss,
   &_swigt__p_FormFactorLongBoxLorentz,
+  &_swigt__p_FormFactorLongRipple2Gauss,
+  &_swigt__p_FormFactorLongRipple2Lorentz,
   &_swigt__p_FormFactorLorentz,
   &_swigt__p_FormFactorPrism3,
   &_swigt__p_FormFactorPrism6,
@@ -177350,6 +179570,8 @@ static swig_cast_info _swigc__p_FormFactorGauss[] = {  {&_swigt__p_FormFactorGau
 static swig_cast_info _swigc__p_FormFactorHemiEllipsoid[] = {  {&_swigt__p_FormFactorHemiEllipsoid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLongBoxGauss[] = {  {&_swigt__p_FormFactorLongBoxGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLongBoxLorentz[] = {  {&_swigt__p_FormFactorLongBoxLorentz, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorLongRipple2Gauss[] = {  {&_swigt__p_FormFactorLongRipple2Gauss, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorLongRipple2Lorentz[] = {  {&_swigt__p_FormFactorLongRipple2Lorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorLorentz[] = {  {&_swigt__p_FormFactorLorentz, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPrism3[] = {  {&_swigt__p_FormFactorPrism3, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPrism6[] = {  {&_swigt__p_FormFactorPrism6, 0, 0, 0},{0, 0, 0, 0}};
@@ -177383,7 +179605,7 @@ static swig_cast_info _swigc__p_HomogeneousMagneticMaterial[] = {  {&_swigt__p_H
 static swig_cast_info _swigc__p_HomogeneousMaterial[] = {  {&_swigt__p_HomogeneousMaterial, 0, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_HomogeneousMaterial, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IAbstractParticle[] = {  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_IAbstractParticle, 0, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IAbstractParticle, 0, 0},{0, 0, 0, 0}};
 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_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_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_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_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_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_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_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_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_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_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_IComponentService[] = {  {&_swigt__p_IComponentService, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICompositeSample[] = {  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICompositeSample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ICompositeSample, 0, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICompositeSample, 0, 0},{0, 0, 0, 0}};
@@ -177394,8 +179616,8 @@ static swig_cast_info _swigc__p_IFTDecayFunction1D[] = {  {&_swigt__p_FTDecayFun
 static swig_cast_info _swigc__p_IFTDecayFunction2D[] = {  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IFTDecayFunction2D, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IFTDecayFunction2D, 0, 0},  {&_swigt__p_IFTDecayFunction2D, 0, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IFTDecayFunction2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDistribution1D[] = {  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_IFTDistribution1D, 0, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IFTDistribution1D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDistribution2D[] = {  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_IFTDistribution2D, 0, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IFTDistribution2D, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactor[] = {  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_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_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_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_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_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_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_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_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_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_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormFactorDecorator[] = {  {&_swigt__p_IFormFactorDecorator, 0, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactorDecorator, 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_IIntensityFunction, 0, 0, 0},{0, 0, 0, 0}};
@@ -177403,18 +179625,18 @@ static swig_cast_info _swigc__p_IInterferenceFunction[] = {  {&_swigt__p_IInterf
 static swig_cast_info _swigc__p_ILayerRTCoefficients[] = {  {&_swigt__p_ILayerRTCoefficients, 0, 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_IMaterial[] = {  {&_swigt__p_IMaterial, 0, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_IMaterial, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_IMaterial, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_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_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_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_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_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_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_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_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_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_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_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_FormFactorCone6, _p_FormFactorCone6To_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_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_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_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_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_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_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_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_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_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_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_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_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_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_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_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_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_FormFactorCone6, _p_FormFactorCone6To_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_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_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_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INamedShared[] = {  {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_INamedShared, 0, 0},  {&_swigt__p_INamedShared, 0, 0, 0},  {&_swigt__p_IParameterizedShared, _p_IParameterizedSharedTo_p_INamedShared, 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_IParameterized[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_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_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_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_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_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_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_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_FormFactorCone6, _p_FormFactorCone6To_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_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_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_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_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_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_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_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_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_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_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_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_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_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_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_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_FormFactorCone6, _p_FormFactorCone6To_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_IRoughness, _p_IRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_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_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IParameterized, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParameterizedShared[] = {  {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_IParameterizedShared, 0, 0},  {&_swigt__p_IParameterizedShared, 0, 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_IPixelMap[] = {  {&_swigt__p_IPixelMap, 0, 0, 0},  {&_swigt__p_AngularPixelMap, _p_AngularPixelMapTo_p_IPixelMap, 0, 0},  {&_swigt__p_RectPixelMap, _p_RectPixelMapTo_p_IPixelMap, 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_RotationX, _p_RotationXTo_p_IRotation, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IRoughness[] = {  {&_swigt__p_IRoughness, 0, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IRoughness, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ISample, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISampleBuilder[] = {  {&_swigt__p_ISampleBuilder, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISampleVisitor[] = {  {&_swigt__p_ISampleVisitor, 0, 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}};
@@ -177589,6 +179811,8 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorHemiEllipsoid,
   _swigc__p_FormFactorLongBoxGauss,
   _swigc__p_FormFactorLongBoxLorentz,
+  _swigc__p_FormFactorLongRipple2Gauss,
+  _swigc__p_FormFactorLongRipple2Lorentz,
   _swigc__p_FormFactorLorentz,
   _swigc__p_FormFactorPrism3,
   _swigc__p_FormFactorPrism6,
diff --git a/Core/PythonAPI/libBornAgainCore_wrap.h b/Core/PythonAPI/libBornAgainCore_wrap.h
index a6b93abd607ab461e61d5154fd42f4ed02a2966e..952bd50cf38c004d01b58950e75234ac2f7100e1 100644
--- a/Core/PythonAPI/libBornAgainCore_wrap.h
+++ b/Core/PythonAPI/libBornAgainCore_wrap.h
@@ -4204,6 +4204,144 @@ private:
 };
 
 
+class SwigDirector_FormFactorLongRipple2Gauss : public FormFactorLongRipple2Gauss, public Swig::Director {
+
+public:
+    SwigDirector_FormFactorLongRipple2Gauss(PyObject *self, double length, double width, double height, double asymetry);
+    virtual ~SwigDirector_FormFactorLongRipple2Gauss();
+    virtual FormFactorLongRipple2Gauss *clone() const;
+    virtual void transferToCPP();
+    virtual std::string addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number = -1) const;
+    virtual void print(std::ostream &ostr) const;
+    virtual void printSwigPublic(std::ostream &ostr) const {
+      IParameterized::print(ostr);
+    }
+    virtual void init_parameters();
+    virtual void init_parametersSwigPublic() {
+      FormFactorLongRipple2Gauss::init_parameters();
+    }
+    virtual ISample *cloneInvertB() const;
+    virtual void accept(ISampleVisitor *visitor) const;
+    virtual DWBASimulation *createDWBASimulation() const;
+    virtual void printSampleTree();
+    virtual bool containsMagneticMaterial() const;
+    virtual std::vector< ISample const *,std::allocator< ISample const * > > getChildren() const;
+    virtual size_t size() const;
+    virtual void setAmbientMaterial(IMaterial const &arg0);
+    virtual complex_t evaluate(WavevectorInfo const &wavevectors) const;
+    virtual double getVolume() const;
+    virtual double getRadius() const;
+    virtual void setSpecularInfo(ILayerRTCoefficients const *p_in_coeffs, ILayerRTCoefficients const *p_out_coeffs);
+    virtual complex_t evaluate_for_q(cvector_t const &q) const;
+    virtual bool check_initialization() const;
+    virtual bool check_initializationSwigPublic() const {
+      return FormFactorLongRipple2Gauss::check_initialization();
+    }
+
+/* Internal director utilities */
+public:
+    bool swig_get_inner(const char *swig_protected_method_name) const {
+      std::map<std::string, bool>::const_iterator iv = swig_inner.find(swig_protected_method_name);
+      return (iv != swig_inner.end() ? iv->second : false);
+    }
+    void swig_set_inner(const char *swig_protected_method_name, bool swig_val) const {
+      swig_inner[swig_protected_method_name] = swig_val;
+    }
+private:
+    mutable std::map<std::string, bool> swig_inner;
+
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+/* VTable implementation */
+    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
+      PyObject *method = vtable[method_index];
+      if (!method) {
+        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
+        method = PyObject_GetAttr(swig_get_self(), name);
+        if (!method) {
+          std::string msg = "Method in class FormFactorLongRipple2Gauss doesn't exist, undefined ";
+          msg += method_name;
+          Swig::DirectorMethodException::raise(msg.c_str());
+        }
+        vtable[method_index] = method;
+      }
+      return method;
+    }
+private:
+    mutable swig::SwigVar_PyObject vtable[20];
+#endif
+
+};
+
+
+class SwigDirector_FormFactorLongRipple2Lorentz : public FormFactorLongRipple2Lorentz, public Swig::Director {
+
+public:
+    SwigDirector_FormFactorLongRipple2Lorentz(PyObject *self, double length, double width, double height, double asymetry);
+    virtual ~SwigDirector_FormFactorLongRipple2Lorentz();
+    virtual FormFactorLongRipple2Lorentz *clone() const;
+    virtual void transferToCPP();
+    virtual std::string addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number = -1) const;
+    virtual void print(std::ostream &ostr) const;
+    virtual void printSwigPublic(std::ostream &ostr) const {
+      IParameterized::print(ostr);
+    }
+    virtual void init_parameters();
+    virtual void init_parametersSwigPublic() {
+      FormFactorLongRipple2Lorentz::init_parameters();
+    }
+    virtual ISample *cloneInvertB() const;
+    virtual void accept(ISampleVisitor *visitor) const;
+    virtual DWBASimulation *createDWBASimulation() const;
+    virtual void printSampleTree();
+    virtual bool containsMagneticMaterial() const;
+    virtual std::vector< ISample const *,std::allocator< ISample const * > > getChildren() const;
+    virtual size_t size() const;
+    virtual void setAmbientMaterial(IMaterial const &arg0);
+    virtual complex_t evaluate(WavevectorInfo const &wavevectors) const;
+    virtual double getVolume() const;
+    virtual double getRadius() const;
+    virtual void setSpecularInfo(ILayerRTCoefficients const *p_in_coeffs, ILayerRTCoefficients const *p_out_coeffs);
+    virtual complex_t evaluate_for_q(cvector_t const &q) const;
+    virtual bool check_initialization() const;
+    virtual bool check_initializationSwigPublic() const {
+      return FormFactorLongRipple2Lorentz::check_initialization();
+    }
+
+/* Internal director utilities */
+public:
+    bool swig_get_inner(const char *swig_protected_method_name) const {
+      std::map<std::string, bool>::const_iterator iv = swig_inner.find(swig_protected_method_name);
+      return (iv != swig_inner.end() ? iv->second : false);
+    }
+    void swig_set_inner(const char *swig_protected_method_name, bool swig_val) const {
+      swig_inner[swig_protected_method_name] = swig_val;
+    }
+private:
+    mutable std::map<std::string, bool> swig_inner;
+
+#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
+/* VTable implementation */
+    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
+      PyObject *method = vtable[method_index];
+      if (!method) {
+        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
+        method = PyObject_GetAttr(swig_get_self(), name);
+        if (!method) {
+          std::string msg = "Method in class FormFactorLongRipple2Lorentz doesn't exist, undefined ";
+          msg += method_name;
+          Swig::DirectorMethodException::raise(msg.c_str());
+        }
+        vtable[method_index] = method;
+      }
+      return method;
+    }
+private:
+    mutable swig::SwigVar_PyObject vtable[20];
+#endif
+
+};
+
+
 class SwigDirector_FormFactorSphereGaussianRadius : public FormFactorSphereGaussianRadius, public Swig::Director {
 
 public:
diff --git a/Core/Tools/inc/BornAgainNamespace.h b/Core/Tools/inc/BornAgainNamespace.h
index 2187ef0f2fe8496a131e2a7093498b2ce07d15b6..bf54a425717a734c7a6377063c2c3c2b30066db5 100644
--- a/Core/Tools/inc/BornAgainNamespace.h
+++ b/Core/Tools/inc/BornAgainNamespace.h
@@ -83,6 +83,8 @@ const std::string FFPrism6Type = "Prism6";
 const std::string FFPyramidType = "Pyramid";
 const std::string FFRipple1Type = "Ripple1";
 const std::string FFRipple2Type = "Ripple2";
+const std::string FFLongRipple2GaussType = "LongRipple2Gauss";
+const std::string FFLongRipple2LorentzType = "LongRipple2Lorentz";
 const std::string FFTetrahedronType = "Tetrahedron";
 const std::string FFTruncatedCubeType = "TruncatedCube";
 const std::string FFTruncatedSphereType = "TruncatedSphere";