diff --git a/Core/Aggregate/FTDecay1D.cpp b/Core/Aggregate/FTDecay1D.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b016a881caac8cb2fbec1e6e93fcaf54e99d0770
--- /dev/null
+++ b/Core/Aggregate/FTDecay1D.cpp
@@ -0,0 +1,101 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Aggregate/FTDecay1D.cpp
+//! @brief     Implements class FTDistribution2DCauchy.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2018
+//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
+//
+// ************************************************************************** //
+
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Basics/MathConstants.h"
+#include "Core/Parametrization/ParameterPool.h"
+#include "Core/Parametrization/RealParameter.h"
+#include "Core/Tools/MathFunctions.h"
+#include <algorithm>
+
+IFTDecayFunction1D::IFTDecayFunction1D(double decay_length) : m_decay_length(decay_length) {}
+
+void IFTDecayFunction1D::register_decay_length()
+{
+    registerParameter("DecayLength", &m_decay_length);
+}
+
+FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
+    : IFTDecayFunction1D(decay_length)
+{
+    setName("FTDecayFunction1DCauchy");
+    register_decay_length();
+}
+
+FTDecayFunction1DCauchy* FTDecayFunction1DCauchy::clone() const
+{
+    return new FTDecayFunction1DCauchy(m_decay_length);
+}
+
+double FTDecayFunction1DCauchy::evaluate(double q) const
+{
+    double sum_sq = q * q * m_decay_length * m_decay_length;
+    return m_decay_length * 2.0 / (1.0 + sum_sq);
+}
+
+FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
+    : IFTDecayFunction1D(decay_length)
+{
+    setName("FTDecayFunction1DGauss");
+    register_decay_length();
+}
+
+FTDecayFunction1DGauss* FTDecayFunction1DGauss::clone() const
+{
+    return new FTDecayFunction1DGauss(m_decay_length);
+}
+
+double FTDecayFunction1DGauss::evaluate(double q) const
+{
+    double sum_sq = q * q * m_decay_length * m_decay_length;
+    return m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0);
+}
+
+FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
+    : IFTDecayFunction1D(decay_length)
+{
+    setName("FTDecayFunction1DTriangle");
+    register_decay_length();
+}
+
+FTDecayFunction1DTriangle* FTDecayFunction1DTriangle::clone() const
+{
+    return new FTDecayFunction1DTriangle(m_decay_length);
+}
+
+double FTDecayFunction1DTriangle::evaluate(double q) const
+{
+    double sincqw2 = MathFunctions::sinc(q * m_decay_length / 2.0);
+    return m_decay_length * sincqw2 * sincqw2;
+}
+
+FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)
+    : IFTDecayFunction1D(decay_length), m_eta(eta)
+{
+    setName("FTDecayFunction1DVoigt");
+    register_decay_length();
+    registerParameter("Eta", &m_eta);
+}
+
+FTDecayFunction1DVoigt* FTDecayFunction1DVoigt::clone() const
+{
+    return new FTDecayFunction1DVoigt(m_decay_length, m_eta);
+}
+
+double FTDecayFunction1DVoigt::evaluate(double q) const
+{
+    double sum_sq = q * q * m_decay_length * m_decay_length;
+    return m_eta * m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0)
+           + (1.0 - m_eta) * m_decay_length * 2.0 / (1.0 + sum_sq);
+}
diff --git a/Core/Aggregate/FTDecay1D.h b/Core/Aggregate/FTDecay1D.h
new file mode 100644
index 0000000000000000000000000000000000000000..49012c00bfd4cfec50f5194f322941a0a2ce2f54
--- /dev/null
+++ b/Core/Aggregate/FTDecay1D.h
@@ -0,0 +1,102 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Aggregate/FTDecay1D.h
+//! @brief     Defines classes IFTDecayFunction1D, IFTDecayFunction2D,
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2018
+//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
+//
+// ************************************************************************** //
+
+#ifndef BORNAGAIN_CORE_AGGREGATE_FTDECAY1D_H
+#define BORNAGAIN_CORE_AGGREGATE_FTDECAY1D_H
+
+#include "Core/Basics/ICloneable.h"
+#include "Core/Basics/MathConstants.h"
+#include "Core/Parametrization/INode.h"
+#include <utility>
+
+//! Interface for a one-dimensional decay function,
+//!   with evaluate(q) returning the Fourier transform,
+//!   normalized to \f$\int dq\; {\rm evaluate}(q) = 1\f$.
+//! @ingroup distribution_internal
+class BA_CORE_API_ IFTDecayFunction1D : public ICloneable, public INode
+{
+public:
+    //! Constructor of one-dimensional decay function.
+    //! @param decay_length: half-width of the distribution in nanometers
+    IFTDecayFunction1D(double decay_length);
+
+    virtual IFTDecayFunction1D* clone() const = 0;
+    virtual double evaluate(double q) const = 0;
+    double decayLength() const { return m_decay_length; }
+
+protected:
+    void register_decay_length();
+    double m_decay_length;
+};
+
+//! One-dimensional Cauchy decay function in reciprocal space;
+//! corresponds to exp(-|x|/decay_length) in real space.
+//! @ingroup decayFT
+class BA_CORE_API_ FTDecayFunction1DCauchy : public IFTDecayFunction1D
+{
+public:
+    FTDecayFunction1DCauchy(double decay_length);
+
+    FTDecayFunction1DCauchy* clone() const;
+    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
+    double evaluate(double q) const final;
+};
+
+//! One-dimensional Gauss decay function in reciprocal space;
+//! corresponds to exp[-x^2/(2*decay_length^2)] in real space.
+//! @ingroup decayFT
+class BA_CORE_API_ FTDecayFunction1DGauss : public IFTDecayFunction1D
+{
+public:
+    FTDecayFunction1DGauss(double decay_length);
+
+    FTDecayFunction1DGauss* clone() const;
+    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
+    double evaluate(double q) const final;
+};
+
+//! One-dimensional triangle decay function in reciprocal space;
+//! corresponds to 1-|x|/decay_length if |x|<decay_length (and 0 otherwise) in real space.
+//! @ingroup decayFT
+class BA_CORE_API_ FTDecayFunction1DTriangle : public IFTDecayFunction1D
+{
+public:
+    FTDecayFunction1DTriangle(double decay_length);
+
+    FTDecayFunction1DTriangle* clone() const;
+    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
+    double evaluate(double q) const final;
+};
+
+//! One-dimensional pseudo-Voigt decay function in reciprocal space;
+//! corresponds to eta*Gauss + (1-eta)*Cauchy.
+//! @ingroup decayFT
+class BA_CORE_API_ FTDecayFunction1DVoigt : public IFTDecayFunction1D
+{
+public:
+    //! Constructor of pseudo-Voigt decay function.
+    //! @param decay_length: half-width of the distribution in nanometers
+    //! @param eta: parameter [0,1] to balance between Cauchy (eta=0.0) and Gauss (eta=1.0)
+    FTDecayFunction1DVoigt(double decay_length, double eta);
+
+    FTDecayFunction1DVoigt* clone() const;
+    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
+    double evaluate(double q) const final;
+    double eEta() const { return m_eta; }
+
+private:
+    double m_eta;
+};
+
+#endif // BORNAGAIN_CORE_AGGREGATE_FTDECAY1D_H
diff --git a/Core/Aggregate/FTDecayFunctions.cpp b/Core/Aggregate/FTDecay2D.cpp
similarity index 63%
rename from Core/Aggregate/FTDecayFunctions.cpp
rename to Core/Aggregate/FTDecay2D.cpp
index 74ba783a61f13aa789eb226e23c68d8c79531ffb..6074427e39ea7720923e19ee4346981f2171616c 100644
--- a/Core/Aggregate/FTDecayFunctions.cpp
+++ b/Core/Aggregate/FTDecay2D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/FTDecayFunctions.cpp
+//! @file      Core/Aggregate/FTDecay2D.cpp
 //! @brief     Implements class FTDistribution2DCauchy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,130 +12,13 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/ParameterPool.h"
 #include "Core/Parametrization/RealParameter.h"
 #include "Core/Tools/MathFunctions.h"
 #include <algorithm>
 
-//===============1D======================
-
-IFTDecayFunction1D::IFTDecayFunction1D(double decay_length) : m_decay_length(decay_length) {}
-
-void IFTDecayFunction1D::register_decay_length()
-{
-    registerParameter("DecayLength", &m_decay_length);
-}
-
-FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
-    : IFTDecayFunction1D(decay_length)
-{
-    setName("FTDecayFunction1DCauchy");
-    register_decay_length();
-}
-
-FTDecayFunction1DCauchy* FTDecayFunction1DCauchy::clone() const
-{
-    return new FTDecayFunction1DCauchy(m_decay_length);
-}
-
-double FTDecayFunction1DCauchy::evaluate(double q) const
-{
-    double sum_sq = q * q * m_decay_length * m_decay_length;
-    return m_decay_length * 2.0 / (1.0 + sum_sq);
-}
-
-FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
-    : IFTDecayFunction1D(decay_length)
-{
-    setName("FTDecayFunction1DGauss");
-    register_decay_length();
-}
-
-FTDecayFunction1DGauss* FTDecayFunction1DGauss::clone() const
-{
-    return new FTDecayFunction1DGauss(m_decay_length);
-}
-
-double FTDecayFunction1DGauss::evaluate(double q) const
-{
-    double sum_sq = q * q * m_decay_length * m_decay_length;
-    return m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0);
-}
-
-FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
-    : IFTDecayFunction1D(decay_length)
-{
-    setName("FTDecayFunction1DTriangle");
-    register_decay_length();
-}
-
-FTDecayFunction1DTriangle* FTDecayFunction1DTriangle::clone() const
-{
-    return new FTDecayFunction1DTriangle(m_decay_length);
-}
-
-double FTDecayFunction1DTriangle::evaluate(double q) const
-{
-    double sincqw2 = MathFunctions::sinc(q * m_decay_length / 2.0);
-    return m_decay_length * sincqw2 * sincqw2;
-}
-
-FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)
-    : IFTDecayFunction1D(decay_length), m_eta(eta)
-{
-    setName("FTDecayFunction1DVoigt");
-    register_decay_length();
-    registerParameter("Eta", &m_eta);
-}
-
-FTDecayFunction1DVoigt* FTDecayFunction1DVoigt::clone() const
-{
-    return new FTDecayFunction1DVoigt(m_decay_length, m_eta);
-}
-
-double FTDecayFunction1DVoigt::evaluate(double q) const
-{
-    double sum_sq = q * q * m_decay_length * m_decay_length;
-    return m_eta * m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0)
-           + (1.0 - m_eta) * m_decay_length * 2.0 / (1.0 + sum_sq);
-}
-
-/* Commented out decay functions: see header for rationale
-FTDecayFunction1DGate::FTDecayFunction1DGate(double omega)
-    : IFTDecayFunction1D(omega)
-{
-    setName(BornAgain::FTDecayFunction1DGateType);
-    init_parameters();
-}
-
-double FTDecayFunction1DGate::evaluate(double q) const
-{
-    return 2.0*m_omega*MathFunctions::sinc(q*m_omega);
-}
-
-FTDecayFunction1DCosine::FTDecayFunction1DCosine(double omega)
-    : IFTDecayFunction1D(omega)
-{
-    setName(BornAgain::FTDecayFunction1DCosineType);
-    init_parameters();
-}
-
-double FTDecayFunction1DCosine::evaluate(double q) const
-{
-    double qw = std::abs(q*m_omega);
-    if (std::abs(qw/M_PI-1.0) < std::numeric_limits<double>::epsilon()) {
-        return m_omega/2.0;
-    }
-    else {
-        return m_omega*MathFunctions::sinc(qw)/(1.0-qw*qw/M_PI/M_PI);
-    }
-}
-*/
-
-//==============2D====================
-
 //! Constructor of two-dimensional decay function in reciprocal space.
 //! @param decay_length_x: the decay length in nanometers along x-axis of the distribution
 //! @param decay_length_y: the decay length in nanometers along y-axis of the distribution
diff --git a/Core/Aggregate/FTDecayFunctions.h b/Core/Aggregate/FTDecay2D.h
similarity index 57%
rename from Core/Aggregate/FTDecayFunctions.h
rename to Core/Aggregate/FTDecay2D.h
index aa1ce59c615888b578052938db4932cf0bd20d38..cd75497211a352e48a61dc8271eea2b3e54dcc63 100644
--- a/Core/Aggregate/FTDecayFunctions.h
+++ b/Core/Aggregate/FTDecay2D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/FTDecayFunctions.h
+//! @file      Core/Aggregate/FTDecay2D.h
 //! @brief     Defines classes IFTDecayFunction1D, IFTDecayFunction2D,
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,93 +12,14 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_FTDECAYFUNCTIONS_H
-#define BORNAGAIN_CORE_AGGREGATE_FTDECAYFUNCTIONS_H
+#ifndef BORNAGAIN_CORE_AGGREGATE_FTDECAY2D_H
+#define BORNAGAIN_CORE_AGGREGATE_FTDECAY2D_H
 
 #include "Core/Basics/ICloneable.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/INode.h"
 #include <utility>
 
-//! Interface for a one-dimensional decay function,
-//!   with evaluate(q) returning the Fourier transform,
-//!   normalized to \f$\int dq\; {\rm evaluate}(q) = 1\f$.
-//! @ingroup distribution_internal
-class BA_CORE_API_ IFTDecayFunction1D : public ICloneable, public INode
-{
-public:
-    //! Constructor of one-dimensional decay function.
-    //! @param decay_length: half-width of the distribution in nanometers
-    IFTDecayFunction1D(double decay_length);
-
-    virtual IFTDecayFunction1D* clone() const = 0;
-    virtual double evaluate(double q) const = 0;
-    double decayLength() const { return m_decay_length; }
-
-protected:
-    void register_decay_length();
-    double m_decay_length;
-};
-
-//! One-dimensional Cauchy decay function in reciprocal space;
-//! corresponds to exp(-|x|/decay_length) in real space.
-//! @ingroup decayFT
-class BA_CORE_API_ FTDecayFunction1DCauchy : public IFTDecayFunction1D
-{
-public:
-    FTDecayFunction1DCauchy(double decay_length);
-
-    FTDecayFunction1DCauchy* clone() const;
-    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
-    double evaluate(double q) const final;
-};
-
-//! One-dimensional Gauss decay function in reciprocal space;
-//! corresponds to exp[-x^2/(2*decay_length^2)] in real space.
-//! @ingroup decayFT
-class BA_CORE_API_ FTDecayFunction1DGauss : public IFTDecayFunction1D
-{
-public:
-    FTDecayFunction1DGauss(double decay_length);
-
-    FTDecayFunction1DGauss* clone() const;
-    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
-    double evaluate(double q) const final;
-};
-
-//! One-dimensional triangle decay function in reciprocal space;
-//! corresponds to 1-|x|/decay_length if |x|<decay_length (and 0 otherwise) in real space.
-//! @ingroup decayFT
-class BA_CORE_API_ FTDecayFunction1DTriangle : public IFTDecayFunction1D
-{
-public:
-    FTDecayFunction1DTriangle(double decay_length);
-
-    FTDecayFunction1DTriangle* clone() const;
-    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
-    double evaluate(double q) const final;
-};
-
-//! One-dimensional pseudo-Voigt decay function in reciprocal space;
-//! corresponds to eta*Gauss + (1-eta)*Cauchy.
-//! @ingroup decayFT
-class BA_CORE_API_ FTDecayFunction1DVoigt : public IFTDecayFunction1D
-{
-public:
-    //! Constructor of pseudo-Voigt decay function.
-    //! @param decay_length: half-width of the distribution in nanometers
-    //! @param eta: parameter [0,1] to balance between Cauchy (eta=0.0) and Gauss (eta=1.0)
-    FTDecayFunction1DVoigt(double decay_length, double eta);
-
-    FTDecayFunction1DVoigt* clone() const;
-    void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
-    double evaluate(double q) const final;
-    double eEta() const { return m_eta; }
-
-private:
-    double m_eta;
-};
-
 //! Interface for two-dimensional decay function in reciprocal space.
 //! @ingroup decayFT_internal
 class BA_CORE_API_ IFTDecayFunction2D : public ICloneable, public INode
@@ -187,4 +108,4 @@ protected:
     double m_eta;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_FTDECAYFUNCTIONS_H
+#endif // BORNAGAIN_CORE_AGGREGATE_FTDECAY2D_H
diff --git a/Core/Aggregate/InterferenceFunction1DLattice.cpp b/Core/Aggregate/InterferenceFunction1DLattice.cpp
index ed490c6d89c45b5c57c58df1a087bf31ccf1085f..f7b0a874a49f87e9929c2c456e86107f7e1fc351 100644
--- a/Core/Aggregate/InterferenceFunction1DLattice.cpp
+++ b/Core/Aggregate/InterferenceFunction1DLattice.cpp
@@ -13,7 +13,8 @@
 // ************************************************************************** //
 
 #include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Basics/Exceptions.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/RealParameter.h"
diff --git a/Core/Aggregate/InterferenceFunction2DLattice.h b/Core/Aggregate/InterferenceFunction2DLattice.h
index 5371e1545ff9c5c7bfa875121af3c6bbc975a8d2..316b2e26cd4391f50d8e032583ec30a2b772ca30 100644
--- a/Core/Aggregate/InterferenceFunction2DLattice.h
+++ b/Core/Aggregate/InterferenceFunction2DLattice.h
@@ -15,7 +15,8 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
 
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/IInterferenceFunction.h"
 #include "Core/Lattice/Lattice2D.h"
 #include "Core/Tools/Integrator.h"
diff --git a/Core/Basics/Units.h b/Core/Basics/Units.h
index 566a5534986c5b5f724718746192ded831e775a3..f6228b127424327e44da6aa3a4a1c2b0346b7b23 100644
--- a/Core/Basics/Units.h
+++ b/Core/Basics/Units.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_UNITS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_UNITS_H
+#ifndef BORNAGAIN_CORE_BASICS_UNITS_H
+#define BORNAGAIN_CORE_BASICS_UNITS_H
 
 //! Constants and functions for physical unit conversions.
 
@@ -61,4 +61,4 @@ static constexpr double gauss = 1e-4;
 
 } // namespace Units
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_UNITS_H
+#endif // BORNAGAIN_CORE_BASICS_UNITS_H
diff --git a/Core/Detector/IDetector2D.cpp b/Core/Detector/IDetector2D.cpp
index 1ff076ca95bb52637b60ea8c415b1cf06dc85a88..e8fd4d7502c022936b34fd1eb1987061f7d07e7f 100644
--- a/Core/Detector/IDetector2D.cpp
+++ b/Core/Detector/IDetector2D.cpp
@@ -13,13 +13,13 @@
 // ************************************************************************** //
 
 #include "Core/Detector/IDetector2D.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/DetectorContext.h"
 #include "Core/Detector/DetectorFunctions.h"
 #include "Core/Detector/RegionOfInterest.h"
 #include "Core/Detector/SimulationArea.h"
 #include "Core/Mask/InfinitePlane.h"
-#include "Core/Basics/Units.h"
 #include "Core/SimulationElement/SimulationElement.h"
 
 IDetector2D::IDetector2D() = default;
diff --git a/Core/Detector/RectangularDetector.cpp b/Core/Detector/RectangularDetector.cpp
index 642d0bdd028fcb0f013c8f98c3a3d05867c2f503..40b0cee3e397f9feff156fc0684a594a46e7fd39 100644
--- a/Core/Detector/RectangularDetector.cpp
+++ b/Core/Detector/RectangularDetector.cpp
@@ -14,10 +14,10 @@
 
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/IDetectorResolution.h"
 #include "Core/Detector/RegionOfInterest.h"
-#include "Core/Basics/Units.h"
 #include "Core/SimulationElement/SimulationElement.h"
 
 RectangularDetector::RectangularDetector(size_t nxbins, double width, size_t nybins, double height)
diff --git a/Core/Detector/SphericalDetector.cpp b/Core/Detector/SphericalDetector.cpp
index 9657f1b441d4dfb78bc7ea7ae75c5a13fb1866e7..4da863e750649f46e932a1a2e7c9e0bc8576ac87 100644
--- a/Core/Detector/SphericalDetector.cpp
+++ b/Core/Detector/SphericalDetector.cpp
@@ -14,10 +14,10 @@
 
 #include "Core/Detector/SphericalDetector.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/IPixel.h"
 #include "Core/Detector/IDetectorResolution.h"
-#include "Core/Basics/Units.h"
 #include "Core/SimulationElement/SimulationElement.h"
 
 SphericalDetector::SphericalDetector()
diff --git a/Core/Intensity/SimpleUnitConverters.cpp b/Core/Intensity/SimpleUnitConverters.cpp
index 4fe3fbf769c398ee6e81132e98f8fcd5365b9e62..770ede0fbcf49d2574c08a50bef8f6f1dbe36c13 100644
--- a/Core/Intensity/SimpleUnitConverters.cpp
+++ b/Core/Intensity/SimpleUnitConverters.cpp
@@ -17,13 +17,13 @@
 #include <stdexcept>
 
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/Detector/RegionOfInterest.h"
 #include "Core/Detector/SphericalDetector.h"
 #include "Core/Intensity/AxisNames.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
-#include "Core/Basics/Units.h"
 
 namespace
 {
diff --git a/Core/Intensity/UnitConverter1D.cpp b/Core/Intensity/UnitConverter1D.cpp
index 745eb2bf4ddfbcc6a57fd23bc5f2c398e111ecd7..6470d7d99f133044ded2e69635b02ab59a42ec60 100644
--- a/Core/Intensity/UnitConverter1D.cpp
+++ b/Core/Intensity/UnitConverter1D.cpp
@@ -14,6 +14,7 @@
 
 #include "Core/Intensity/UnitConverter1D.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/PointwiseAxis.h"
@@ -21,7 +22,6 @@
 #include "Core/Instrument/QSpecScan.h"
 #include "Core/Intensity/AxisNames.h"
 #include "Core/Intensity/OutputData.h"
-#include "Core/Basics/Units.h"
 
 namespace
 {
diff --git a/Core/Material/MaterialFactoryFuncs.cpp b/Core/Material/MaterialFactoryFuncs.cpp
index ba414b5a4db0ac3beef0cd4a1bbe96e5ded3c207..e44145942d96be1a28aa50c725baa3f6437d2466 100644
--- a/Core/Material/MaterialFactoryFuncs.cpp
+++ b/Core/Material/MaterialFactoryFuncs.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "Core/Material/MaterialFactoryFuncs.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialBySLDImpl.h"
 #include "Core/Material/MaterialUtils.h"
 #include "Core/Material/RefractiveMaterialImpl.h"
-#include "Core/Basics/Units.h"
 #include <functional>
 
 Material HomogeneousMaterial(const std::string& name, complex_t refractive_index,
diff --git a/Core/Multilayer/KzComputation.cpp b/Core/Multilayer/KzComputation.cpp
index 789bec056b73a160728c7f69261382bd3eb436b5..f998cac554e53ec13a73e83a4d379a1ff081db1c 100644
--- a/Core/Multilayer/KzComputation.cpp
+++ b/Core/Multilayer/KzComputation.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "Core/Multilayer/KzComputation.h"
+#include "Core/Basics/Units.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Multilayer/Slice.h"
-#include "Core/Basics/Units.h"
 
 namespace
 {
diff --git a/Core/Parametrization/INodeVisitor.h b/Core/Parametrization/INodeVisitor.h
index 27d663be569215a47ec015bb6caf9f8b42ae63f5..0c0c27db623328f1beafa41d506f82d64970c7de 100644
--- a/Core/Parametrization/INodeVisitor.h
+++ b/Core/Parametrization/INodeVisitor.h
@@ -51,12 +51,12 @@ class FormFactorDot;
 class FormFactorEllipsoidalCylinder;
 class FormFactorFullSphere;
 class FormFactorFullSpheroid;
-class FormFactorGauss;
+class FormFactorGaussSphere;
 class FormFactorHemiEllipsoid;
 class FormFactorIcosahedron;
 class FormFactorLongBoxGauss;
 class FormFactorLongBoxLorentz;
-class FormFactorLorentz;
+class FormFactorLorentzSphere;
 class FormFactorPrism3;
 class FormFactorPrism6;
 class FormFactorPyramid;
@@ -189,12 +189,12 @@ public:
     virtual void visit(const FormFactorEllipsoidalCylinder*) {}
     virtual void visit(const FormFactorFullSphere*) {}
     virtual void visit(const FormFactorFullSpheroid*) {}
-    virtual void visit(const FormFactorGauss*) {}
+    virtual void visit(const FormFactorGaussSphere*) {}
     virtual void visit(const FormFactorHemiEllipsoid*) {}
     virtual void visit(const FormFactorIcosahedron*) {}
     virtual void visit(const FormFactorLongBoxGauss*) {}
     virtual void visit(const FormFactorLongBoxLorentz*) {}
-    virtual void visit(const FormFactorLorentz*) {}
+    virtual void visit(const FormFactorLorentzSphere*) {}
     virtual void visit(const FormFactorPrism3*) {}
     virtual void visit(const FormFactorPrism6*) {}
     virtual void visit(const FormFactorPyramid*) {}
diff --git a/Core/Particle/HomogeneousRegion.cpp b/Core/Particle/HomogeneousRegion.cpp
index e9f99cdab368ab5f864179040ee3f893c0bb418d..9ccd816e261e9f898bc3089565b82f93d8c913d3 100644
--- a/Core/Particle/HomogeneousRegion.cpp
+++ b/Core/Particle/HomogeneousRegion.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "Core/Particle/HomogeneousRegion.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialBySLDImpl.h"
 #include "Core/Material/MaterialUtils.h"
 #include "Core/Material/RefractiveMaterialImpl.h"
-#include "Core/Basics/Units.h"
 #include <functional>
 
 namespace
diff --git a/Core/PyIO/PythonFormatting.cpp b/Core/PyIO/PythonFormatting.cpp
index d91c9ed83a989fc84a863392732210352dd86357..52bb5c0711c656457cf6a50a097c561370728330 100644
--- a/Core/PyIO/PythonFormatting.cpp
+++ b/Core/PyIO/PythonFormatting.cpp
@@ -14,6 +14,7 @@
 
 #include "Core/PyIO/PythonFormatting.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/PointwiseAxis.h"
 #include "Core/Mask/Ellipse.h"
@@ -26,7 +27,6 @@
 #include "Core/Parametrization/ParameterDistribution.h"
 #include "Core/Parametrization/ParameterPool.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Tools/PyFmt.h"
 #include "Fit/TestEngine/Numeric.h"
 #include "Fit/Tools/StringUtils.h"
diff --git a/Core/SoftParticle/FormFactorGauss.cpp b/Core/SoftParticle/FormFactorGauss.cpp
index dca2dd74ba7ed3d64835cdc56e10052e7029d8a1..a32fccb0751d35d1ef16d800b44e5e9c78ef6a46 100644
--- a/Core/SoftParticle/FormFactorGauss.cpp
+++ b/Core/SoftParticle/FormFactorGauss.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/SoftParticle/FormFactorGauss.cpp
-//! @brief     Implements class FormFactorGauss.
+//! @brief     Implements class FormFactorGaussSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,26 +12,28 @@
 //
 // ************************************************************************** //
 
-#include "Core/SoftParticle/FormFactorGauss.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/RealParameter.h"
 #include "Core/Shapes/Box.h"
+#include "Core/SoftParticle/FormFactorGauss.h"
 #include <limits>
 
-FormFactorGauss::FormFactorGauss(double length) : FormFactorGauss(length, length) {}
+FormFactorGaussSphere::FormFactorGaussSphere(double length) : FormFactorGaussSphere(length, length)
+{
+}
 
-FormFactorGauss::FormFactorGauss(double width, double height)
+FormFactorGaussSphere::FormFactorGaussSphere(double width, double height)
 {
     m_width = width;
     m_height = height;
-    setName("FormFactorGauss");
+    setName("FormFactorGaussSphere");
     registerParameter("Width", &m_width).setUnit("nm").setNonnegative();
     registerParameter("Height", &m_height).setUnit("nm").setNonnegative();
     m_max_ql = std::sqrt(-4 * M_PI * std::log(std::numeric_limits<double>::min()) / 3);
     onChange();
 }
 
-complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const
+complex_t FormFactorGaussSphere::evaluate_for_q(cvector_t q) const
 {
     complex_t qzHdiv2 = m_height * q.z() / 2.0;
     double qzh = q.z().real() * m_height;
@@ -48,7 +50,7 @@ complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const
            * std::exp(-(qxr * qxr + qyr * qyr + qzh * qzh) / 4.0 / M_PI);
 }
 
-void FormFactorGauss::onChange()
+void FormFactorGaussSphere::onChange()
 {
     mP_shape.reset(new Box(m_width, m_width, m_height));
 }
diff --git a/Core/SoftParticle/FormFactorGauss.h b/Core/SoftParticle/FormFactorGauss.h
index def40689305504ef339386a6723d87afcbfc6303..c8c531a985ba60a8c4b5dfd42f5b5b541bce31c1 100644
--- a/Core/SoftParticle/FormFactorGauss.h
+++ b/Core/SoftParticle/FormFactorGauss.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/SoftParticle/FormFactorGauss.h
-//! @brief     Defines class FormFactorGauss.
+//! @brief     Defines class FormFactorGaussSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -20,13 +20,16 @@
 //! The form factor of a gaussian.
 //! @ingroup softParticle
 
-class BA_CORE_API_ FormFactorGauss : public IFormFactorBorn
+class BA_CORE_API_ FormFactorGaussSphere : public IFormFactorBorn
 {
 public:
-    FormFactorGauss(double length);
-    FormFactorGauss(double width, double height);
+    FormFactorGaussSphere(double length);
+    FormFactorGaussSphere(double width, double height);
 
-    FormFactorGauss* clone() const override final { return new FormFactorGauss(m_width, m_height); }
+    FormFactorGaussSphere* clone() const override final
+    {
+        return new FormFactorGaussSphere(m_width, m_height);
+    }
     void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
 
     double getWidth() const { return m_width; }
diff --git a/Core/SoftParticle/FormFactorLorentz.cpp b/Core/SoftParticle/FormFactorLorentz.cpp
index 503babb84dcacc7f91ff90b558c9b460782fdb54..4505b33aac9b6a7489f0924add3787467efc47e8 100644
--- a/Core/SoftParticle/FormFactorLorentz.cpp
+++ b/Core/SoftParticle/FormFactorLorentz.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/SoftParticle/FormFactorLorentz.cpp
-//! @brief     Implements class FormFactorLorentz.
+//! @brief     Implements class FormFactorLorentzSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,30 +12,30 @@
 //
 // ************************************************************************** //
 
-#include "Core/SoftParticle/FormFactorLorentz.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/RealParameter.h"
 #include "Core/Shapes/Box.h"
+#include "Core/SoftParticle/FormFactorLorentz.h"
 #include "Fit/Tools/RealLimits.h"
 
-FormFactorLorentz::FormFactorLorentz(double width, double height)
+FormFactorLorentzSphere::FormFactorLorentzSphere(double width, double height)
 {
     m_width = width;
     m_height = height;
     initialize();
 }
 
-FormFactorLorentz::FormFactorLorentz(double length) : m_width{length}, m_height{length}
+FormFactorLorentzSphere::FormFactorLorentzSphere(double length) : m_width{length}, m_height{length}
 {
     initialize();
 }
 
-double FormFactorLorentz::radialExtension() const
+double FormFactorLorentzSphere::radialExtension() const
 {
     return m_width / 2.0;
 }
 
-complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const
+complex_t FormFactorLorentzSphere::evaluate_for_q(cvector_t q) const
 {
     static const double sigma2 = 4.0 * std::pow(M_PI, 2.0 / 3.0);
     double R = m_width;
@@ -50,14 +50,14 @@ complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const
     return result;
 }
 
-void FormFactorLorentz::onChange()
+void FormFactorLorentzSphere::onChange()
 {
     mP_shape.reset(new Box(m_width, m_width, m_height));
 }
 
-void FormFactorLorentz::initialize()
+void FormFactorLorentzSphere::initialize()
 {
-    setName("FormFactorLorentz");
+    setName("FormFactorLorentzSphere");
     registerParameter("Width", &m_width).setUnit("nm").setNonnegative();
     registerParameter("Height", &m_height).setUnit("nm").setNonnegative();
     onChange();
diff --git a/Core/SoftParticle/FormFactorLorentz.h b/Core/SoftParticle/FormFactorLorentz.h
index 00e09d842b48507f1129e6a10453c43df0455b94..82d6af7ad5c69f297338b2e45adc25c1c5385ea2 100644
--- a/Core/SoftParticle/FormFactorLorentz.h
+++ b/Core/SoftParticle/FormFactorLorentz.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      Core/SoftParticle/FormFactorLorentz.h
-//! @brief     Defines class FormFactorLorentz.
+//! @brief     Defines class FormFactorLorentzSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -20,15 +20,15 @@
 //! The form factor of a lorentzian.
 //! @ingroup softParticle
 
-class BA_CORE_API_ FormFactorLorentz : public IFormFactorBorn
+class BA_CORE_API_ FormFactorLorentzSphere : public IFormFactorBorn
 {
 public:
-    FormFactorLorentz(double length);
-    FormFactorLorentz(double width, double height);
+    FormFactorLorentzSphere(double length);
+    FormFactorLorentzSphere(double width, double height);
 
-    FormFactorLorentz* clone() const override final
+    FormFactorLorentzSphere* clone() const override final
     {
-        return new FormFactorLorentz(m_width, m_height);
+        return new FormFactorLorentzSphere(m_width, m_height);
     }
     void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
 
diff --git a/Core/StandardSamples/BoxCompositionBuilder.cpp b/Core/StandardSamples/BoxCompositionBuilder.cpp
index 051c252b5ea29d9c321a9536a6537e573e01d5b2..f45c59bac596c2a802956765c1bc63a3404f056c 100644
--- a/Core/StandardSamples/BoxCompositionBuilder.cpp
+++ b/Core/StandardSamples/BoxCompositionBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/BoxCompositionBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleComposition.h"
 
diff --git a/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp b/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
index 76749c2d4c4e22fdc197df060879c3718901f1e8..9029b1b098030335a48316fe813d9e282cfe8c2d 100644
--- a/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
+++ b/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
@@ -15,12 +15,12 @@
 #include "Core/StandardSamples/BoxesSquareLatticeBuilder.h"
 #include "Core/Aggregate/InterferenceFunction2DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 // -----------------------------------------------------------------------------
diff --git a/Core/StandardSamples/CoreShellParticleBuilder.cpp b/Core/StandardSamples/CoreShellParticleBuilder.cpp
index 324880fac1e29f2d6d8ef6dcef2014fc0cdee657..b4fcd61124d15f9092456f8595d2ffea1e20ace2 100644
--- a/Core/StandardSamples/CoreShellParticleBuilder.cpp
+++ b/Core/StandardSamples/CoreShellParticleBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/CoreShellParticleBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleCoreShell.h"
 
diff --git a/Core/StandardSamples/CustomMorphologyBuilder.cpp b/Core/StandardSamples/CustomMorphologyBuilder.cpp
index f48a9dfd41e875abbd61a186408009bc52d8c526..23c17484477fadf83ec9f43d92c59b35e4617224 100644
--- a/Core/StandardSamples/CustomMorphologyBuilder.cpp
+++ b/Core/StandardSamples/CustomMorphologyBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/CustomMorphologyBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 MultiLayer* CustomMorphologyBuilder::buildSample() const
diff --git a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
index 19f576f22464a4baa9cb59be8f5f35cf4e2afeb7..7680ab6234d6aa56554fc1aa94b0424bc5636474 100644
--- a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
+++ b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/CylindersAndPrismsBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/HardParticle/FormFactorPrism3.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 CylindersAndPrismsBuilder::CylindersAndPrismsBuilder() {}
diff --git a/Core/StandardSamples/CylindersBuilder.cpp b/Core/StandardSamples/CylindersBuilder.cpp
index b03e74c0b01a24944cdb4a836d45f21cf2b2b7b0..b9c3920569257454b17fef09b29a94b190f1d758 100644
--- a/Core/StandardSamples/CylindersBuilder.cpp
+++ b/Core/StandardSamples/CylindersBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/CylindersBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerInterface.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Scattering/Rotations.h"
 
diff --git a/Core/StandardSamples/LatticeBuilder.cpp b/Core/StandardSamples/LatticeBuilder.cpp
index 8b7664925d345e7a789fc04e634803372b7251fe..9d4b865f3984d17ecb7d0a2470acc1ecb6e0a353 100644
--- a/Core/StandardSamples/LatticeBuilder.cpp
+++ b/Core/StandardSamples/LatticeBuilder.cpp
@@ -13,15 +13,16 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/LatticeBuilder.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/InterferenceFunction1DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 Lattice1DBuilder::Lattice1DBuilder()
diff --git a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
index 0625bcf1cffe8aee3ba96de80ee6f780d5cde464..d4818cae1dacb3c3cedcac671258e013a6088434 100644
--- a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
+++ b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
@@ -15,13 +15,13 @@
 #include "Core/StandardSamples/LayersWithAbsorptionBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Basics/Exceptions.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerInterface.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/StandardSamples/SampleComponents.h"
 #include "Core/includeIncludes/FormFactors.h"
diff --git a/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp b/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
index 30d1c6ea3b32c77b16861f2189be46ba205efeea..32f7be998efb860097013f30fdc26304949595d2 100644
--- a/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
+++ b/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
@@ -14,10 +14,10 @@
 
 #include "Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/includeIncludes/FormFactors.h"
 
diff --git a/Core/StandardSamples/MagneticLayersBuilder.cpp b/Core/StandardSamples/MagneticLayersBuilder.cpp
index 339211a5079f380fe971ffde1bebad13d8a006da..98b1da61268722d4395457afe50d0499ac50ea36 100644
--- a/Core/StandardSamples/MagneticLayersBuilder.cpp
+++ b/Core/StandardSamples/MagneticLayersBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/MagneticLayersBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 MagneticSubstrateZeroFieldBuilder::MagneticSubstrateZeroFieldBuilder()
diff --git a/Core/StandardSamples/MagneticParticlesBuilder.cpp b/Core/StandardSamples/MagneticParticlesBuilder.cpp
index 76743c1dd22e4ba5a9e4f0e4dc99d4a30c55326c..9d1f849c7f11e2ffed4c59422a1f98baffdc3f7f 100644
--- a/Core/StandardSamples/MagneticParticlesBuilder.cpp
+++ b/Core/StandardSamples/MagneticParticlesBuilder.cpp
@@ -14,6 +14,7 @@
 
 #include "Core/StandardSamples/MagneticParticlesBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
@@ -22,7 +23,6 @@
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 // ----------------------------------------------------------------------------
diff --git a/Core/StandardSamples/MesoCrystalBuilder.cpp b/Core/StandardSamples/MesoCrystalBuilder.cpp
index c6610dff391eaac71bf27a4f4c1bbef2947e2b52..1ac8d319c17bac211e2b194f6c60822a32005067 100644
--- a/Core/StandardSamples/MesoCrystalBuilder.cpp
+++ b/Core/StandardSamples/MesoCrystalBuilder.cpp
@@ -15,6 +15,7 @@
 #include "Core/StandardSamples/MesoCrystalBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Lattice/ISelectionRule.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
@@ -23,7 +24,6 @@
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Crystal.h"
 #include "Core/Particle/MesoCrystal.h"
 #include "Core/Particle/Particle.h"
diff --git a/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp b/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
index a8254bff798c5332109fd64b03467df71275b353..0054ce3bfd8c7a3d719395d688d607cf9bb98e58 100644
--- a/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
+++ b/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
@@ -13,12 +13,12 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 
 MultiLayerWithNCRoughnessBuilder::MultiLayerWithNCRoughnessBuilder() {}
 
diff --git a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
index 6936f975976b6a6cd616f6d6aa06a5ec744eec4d..a9141f201a7dd55c0645163b3c10fb9f9709adde 100644
--- a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
+++ b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
@@ -13,12 +13,12 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/MultiLayerWithRoughnessBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 
 MultiLayerWithRoughnessBuilder::MultiLayerWithRoughnessBuilder()
     : m_thicknessA(2.5 * Units::nanometer), m_thicknessB(5.0 * Units::nanometer),
diff --git a/Core/StandardSamples/MultipleLayoutBuilder.cpp b/Core/StandardSamples/MultipleLayoutBuilder.cpp
index 322b696ce96a748a6f8a92610b91379c402b5db8..75da8a73ead04cb6f3f18231ef0cfca03816e00a 100644
--- a/Core/StandardSamples/MultipleLayoutBuilder.cpp
+++ b/Core/StandardSamples/MultipleLayoutBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/MultipleLayoutBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/HardParticle/FormFactorPrism3.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 MultipleLayoutBuilder::MultipleLayoutBuilder()
diff --git a/Core/StandardSamples/ParaCrystalBuilder.cpp b/Core/StandardSamples/ParaCrystalBuilder.cpp
index 1d4612a5571b09e9dd2adce657160a709ee7cd52..bba146921ec3b2c6c4426ca2d57ffe55f7ee39d6 100644
--- a/Core/StandardSamples/ParaCrystalBuilder.cpp
+++ b/Core/StandardSamples/ParaCrystalBuilder.cpp
@@ -16,12 +16,12 @@
 #include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
 #include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/StandardSamples/SampleComponents.h"
 
diff --git a/Core/StandardSamples/ParticleCompositionBuilder.cpp b/Core/StandardSamples/ParticleCompositionBuilder.cpp
index 974b22a608896f8394819fc8a9035af1af995000..414a3f865987839829af0449ad725539bd49591d 100644
--- a/Core/StandardSamples/ParticleCompositionBuilder.cpp
+++ b/Core/StandardSamples/ParticleCompositionBuilder.cpp
@@ -15,12 +15,12 @@
 #include "Core/StandardSamples/ParticleCompositionBuilder.h"
 #include "Core/Aggregate/InterferenceFunction2DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleComposition.h"
 
diff --git a/Core/StandardSamples/ParticleDistributionsBuilder.cpp b/Core/StandardSamples/ParticleDistributionsBuilder.cpp
index 0d4672029d48ec60ab6a2cb93b68a131535560a8..8c901bd74b22f9e65c906432d401ba02ef5947ab 100644
--- a/Core/StandardSamples/ParticleDistributionsBuilder.cpp
+++ b/Core/StandardSamples/ParticleDistributionsBuilder.cpp
@@ -14,6 +14,7 @@
 
 #include "Core/StandardSamples/ParticleDistributionsBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/HardParticle/FormFactorCone.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
@@ -26,7 +27,6 @@
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/ParameterSample.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleDistribution.h"
 
diff --git a/Core/StandardSamples/ParticleInTheAirBuilder.cpp b/Core/StandardSamples/ParticleInTheAirBuilder.cpp
index c21dc87b251c649b420b00753bd8cbb60a3d1da0..ce9a01515610e8e3cb782145cd71ae539bd5348e 100644
--- a/Core/StandardSamples/ParticleInTheAirBuilder.cpp
+++ b/Core/StandardSamples/ParticleInTheAirBuilder.cpp
@@ -15,11 +15,11 @@
 #include "Core/StandardSamples/ParticleInTheAirBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Basics/Exceptions.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/StandardSamples/SampleComponents.h"
 #include "Core/includeIncludes/FormFactors.h"
diff --git a/Core/StandardSamples/PercusYevickBuilder.cpp b/Core/StandardSamples/PercusYevickBuilder.cpp
index 8f5d313148e27e17465550f180699e99b3eb85d9..135bceffb3b56730071249bbd106bb4aa9dc7443 100644
--- a/Core/StandardSamples/PercusYevickBuilder.cpp
+++ b/Core/StandardSamples/PercusYevickBuilder.cpp
@@ -15,11 +15,11 @@
 #include "Core/StandardSamples/PercusYevickBuilder.h"
 #include "Core/Aggregate/InterferenceFunctionHardDisk.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 HardDiskBuilder::HardDiskBuilder()
diff --git a/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp b/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
index 8cf850de226a87e424fb65dde856d59e279b9d9a..6ede574f1d238a8703a76ddd56e9e650628a5730 100644
--- a/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
+++ b/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/PlainMultiLayerBySLDBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 
 PlainMultiLayerBySLDBuilder::PlainMultiLayerBySLDBuilder(int n_layers)
     : m_number_of_layers(n_layers), m_si{2.0704e-06, 2.3726e-11}, m_ti{-1.9493e-06, 9.6013e-10},
diff --git a/Core/StandardSamples/ResonatorBuilder.cpp b/Core/StandardSamples/ResonatorBuilder.cpp
index fe92714bca746769b6c20127bee7295fac5861f6..fe36edd08dddcb6b8a6135d27b4297a2cf6b077e 100644
--- a/Core/StandardSamples/ResonatorBuilder.cpp
+++ b/Core/StandardSamples/ResonatorBuilder.cpp
@@ -13,11 +13,11 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/ResonatorBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include <memory>
 
 ResonatorBuilder::ResonatorBuilder() : IMultiLayerBuilder(), m_l_ti(13.0 * Units::nm)
diff --git a/Core/StandardSamples/RipplesBuilder.cpp b/Core/StandardSamples/RipplesBuilder.cpp
index e3e9c567babc849c961364aae2eefde9521d7de9..c8c818494dca98bf0669a80fa8478fec6b52286d 100644
--- a/Core/StandardSamples/RipplesBuilder.cpp
+++ b/Core/StandardSamples/RipplesBuilder.cpp
@@ -15,13 +15,13 @@
 #include "Core/StandardSamples/RipplesBuilder.h"
 #include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorRipple1.h"
 #include "Core/HardParticle/FormFactorRipple2.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 CosineRippleBuilder::CosineRippleBuilder() {}
diff --git a/Core/StandardSamples/RotatedPyramidsBuilder.cpp b/Core/StandardSamples/RotatedPyramidsBuilder.cpp
index 74052e84da0622c9d575a9a091fe065d67b91ff7..94c9d231162387de4c228a1d0858f55f9546823d 100644
--- a/Core/StandardSamples/RotatedPyramidsBuilder.cpp
+++ b/Core/StandardSamples/RotatedPyramidsBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/RotatedPyramidsBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorPyramid.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 RotatedPyramidsBuilder::RotatedPyramidsBuilder()
diff --git a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
index 5d8b60f901d5dde7ac548b718b669f67be7d7ce3..41238350e374944e3c5c99187801a8aa8bcc77ac 100644
--- a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
+++ b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
@@ -15,6 +15,7 @@
 #include "Core/StandardSamples/SizeDistributionModelsBuilder.h"
 #include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
@@ -22,7 +23,6 @@
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleDistribution.h"
 
diff --git a/Core/StandardSamples/SlicedCylindersBuilder.cpp b/Core/StandardSamples/SlicedCylindersBuilder.cpp
index 1d822a721e0b2a8bbd1aabb074be5dd93d794271..241125887f767945379ee2106e4d783bee273704 100644
--- a/Core/StandardSamples/SlicedCylindersBuilder.cpp
+++ b/Core/StandardSamples/SlicedCylindersBuilder.cpp
@@ -15,11 +15,11 @@
 #include "Core/StandardSamples/SlicedCylindersBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 namespace
diff --git a/Core/StandardSamples/SlicedParticleBuilder.cpp b/Core/StandardSamples/SlicedParticleBuilder.cpp
index 56919673382cbad7f7e915bb1181a7c67d2f1e3b..f6c5ee0612fb993825cff1d83f3f939f8a491789 100644
--- a/Core/StandardSamples/SlicedParticleBuilder.cpp
+++ b/Core/StandardSamples/SlicedParticleBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/SlicedParticleBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/HardParticle/FormFactorTruncatedSphere.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleComposition.h"
 #include "Core/Vector/Transform3D.h"
diff --git a/Core/StandardSamples/StandardSimulations.cpp b/Core/StandardSamples/StandardSimulations.cpp
index d6c3555a74065fa4876e8bdb3788edf724785a6d..e10c0909e36718056590311f9a3cc4ef4c011e57 100644
--- a/Core/StandardSamples/StandardSimulations.cpp
+++ b/Core/StandardSamples/StandardSimulations.cpp
@@ -13,6 +13,7 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/StandardSimulations.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
 #include "Core/Binning/FixedBinAxis.h"
@@ -31,7 +32,6 @@
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RangedDistributions.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecSimulation.h"
diff --git a/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp b/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
index ba8cf1bedbab3d45d54221dd007644786adc7a47..5b540dd74116273ccde520e4401b0227f18cb4c0 100644
--- a/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
+++ b/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
@@ -13,11 +13,11 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/ThickAbsorptiveSampleBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 
 ThickAbsorptiveSampleBuilder::ThickAbsorptiveSampleBuilder() : IMultiLayerBuilder() {}
 
diff --git a/Core/StandardSamples/TransformationsBuilder.cpp b/Core/StandardSamples/TransformationsBuilder.cpp
index 6b049df144033f2cad110862ecb3a948a17fc5da..aebd9cd156214793843c3c27177d716836a2d252 100644
--- a/Core/StandardSamples/TransformationsBuilder.cpp
+++ b/Core/StandardSamples/TransformationsBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/TransformationsBuilder.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorBox.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 
 MultiLayer* TransformBoxBuilder::buildSample() const
diff --git a/Core/StandardSamples/TwoDimLatticeBuilder.cpp b/Core/StandardSamples/TwoDimLatticeBuilder.cpp
index 9ce5d6378ed1f1356b501098239e0dd02c8f45a1..595368cb0057fa9a98b5fdfdc50af8e8094d3200 100644
--- a/Core/StandardSamples/TwoDimLatticeBuilder.cpp
+++ b/Core/StandardSamples/TwoDimLatticeBuilder.cpp
@@ -17,12 +17,12 @@
 #include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
 #include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleComposition.h"
 
diff --git a/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp b/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
index c0b49e0d26de422b7094a0d4d14e630ebabbeeac..c0e66bb83189d931ea343e1021b3c69fc4dd158f 100644
--- a/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
+++ b/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
@@ -13,12 +13,12 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/TwoLayerRoughnessBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 
 TwoLayerRoughnessBuilder::TwoLayerRoughnessBuilder()
     : m_sigma(1.0 * Units::nanometer), m_hurst(0.3), m_lateralCorrLength(5.0 * Units::nanometer)
diff --git a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
index bece1847f600788d6698cb14b48bb74fe57adb21..02c15212ec6f994f6b592b12642bbeaddcc0e957 100644
--- a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
+++ b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
@@ -14,6 +14,7 @@
 // ********************************************************************************************** //
 
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/HardParticle/FormFactorPrism3.h"
 #include "Core/InputOutput/IntensityDataIOFactory.h"
@@ -21,7 +22,6 @@
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/Simulation.h"
diff --git a/GUI/coregui/Models/BeamDistributionItem.cpp b/GUI/coregui/Models/BeamDistributionItem.cpp
index d82928fecab5dc8ef94c8c189db41b1a42fc0844..16e8915295f7c9786d5628b58c4f2850328bf36c 100644
--- a/GUI/coregui/Models/BeamDistributionItem.cpp
+++ b/GUI/coregui/Models/BeamDistributionItem.cpp
@@ -14,9 +14,9 @@
 
 #include "GUI/coregui/Models/BeamDistributionItem.h"
 #include "Core/Basics/Assert.h"
+#include "Core/Basics/Units.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterDistribution.h"
-#include "Core/Basics/Units.h"
 #include "GUI/coregui/Models/GroupItem.h"
 #include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/RealLimitsItems.h"
diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp
index 8a4ce5d9e3c21f5cdb1ea644e0fad3e2442f2053..aadb6f938d38f209520e5dd19c7c5c7b37c3e322 100644
--- a/GUI/coregui/Models/BeamItems.cpp
+++ b/GUI/coregui/Models/BeamItems.cpp
@@ -14,9 +14,9 @@
 
 #include "GUI/coregui/Models/BeamItems.h"
 #include "Core/Basics/Assert.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/IAxis.h"
-#include "Core/Basics/Units.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/BeamAngleItems.h"
 #include "GUI/coregui/Models/BeamDistributionItem.h"
diff --git a/GUI/coregui/Models/DepthProbeInstrumentItem.cpp b/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
index cfd43707555b9ac0ff4f8dc136071d3eb5d0e78f..0711f75a8882277c53f039c2db8584472d35ddc9 100644
--- a/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
+++ b/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/DepthProbeInstrumentItem.h"
-#include "Core/Intensity/SimpleUnitConverters.h"
 #include "Core/Basics/Units.h"
+#include "Core/Intensity/SimpleUnitConverters.h"
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/BeamDistributionItem.h"
diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp
index f01ff8b5eaf30c55e5d74dc24b42834c2d74ffcf..9a35e8f74bbeb0aa7da620c775a5e5a48419d011 100644
--- a/GUI/coregui/Models/DomainObjectBuilder.cpp
+++ b/GUI/coregui/Models/DomainObjectBuilder.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/DomainObjectBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Detector/IDetector2D.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
 #include "Core/Intensity/UnitConverter1D.h"
-#include "Core/Basics/Units.h"
 #include "Core/Simulation/UnitConverterUtils.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/BeamItems.h"
diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp
index 3184332b4518e4d3b613febfbc1fb09dcbb9f7af..dc11ed2a1513dcf78e2d9a591ef0ab22ea947b44 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.cpp
+++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp
@@ -13,11 +13,11 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/DomainSimulationBuilder.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/IFootprintFactor.h"
 #include "Core/Computation/IBackground.h"
 #include "Core/Instrument/AngularSpecScan.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecSimulation.h"
diff --git a/GUI/coregui/Models/FTDecayFunctionItems.h b/GUI/coregui/Models/FTDecayFunctionItems.h
index aefd1f300a3c46396f86fa837f3c8580aa31f905..dd82cc53b8e745710ad2dbaaca60d408804624a8 100644
--- a/GUI/coregui/Models/FTDecayFunctionItems.h
+++ b/GUI/coregui/Models/FTDecayFunctionItems.h
@@ -15,7 +15,8 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_FTDECAYFUNCTIONITEMS_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_FTDECAYFUNCTIONITEMS_H
 
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "GUI/coregui/Models/SessionItem.h"
 
 class BA_CORE_API_ FTDecayFunction1DItem : public SessionItem
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index 622db11ffcf1fbeec87b11725c32e1ac2b4f48d1..9780f1d6539137ebe790a40f74ae2346b6a84fe2 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -14,11 +14,11 @@
 
 #include "GUI/coregui/Models/GUIDomainSampleVisitor.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/Material.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Crystal.h"
 #include "Core/Particle/MesoCrystal.h"
 #include "Core/Particle/Particle.h"
diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp
index e0e0b1b330cb85b4d3243409622b0678aab1395b..74e195973a4520727b3f843f9f1f42f818dd33f9 100644
--- a/GUI/coregui/Models/GUIObjectBuilder.cpp
+++ b/GUI/coregui/Models/GUIObjectBuilder.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
-#include "Core/Multilayer/MultiLayer.h"
 #include "Core/Basics/Units.h"
+#include "Core/Multilayer/MultiLayer.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecSimulation.h"
 #include "Core/Simulation/Simulation.h"
diff --git a/GUI/coregui/Models/InterferenceFunctionItems.cpp b/GUI/coregui/Models/InterferenceFunctionItems.cpp
index c58f97c7588acc91413d676bcd3784fafa433515..bb8b733a55e5c659807b6fa5dcf17d59255ef394 100644
--- a/GUI/coregui/Models/InterferenceFunctionItems.cpp
+++ b/GUI/coregui/Models/InterferenceFunctionItems.cpp
@@ -13,7 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/FTDistributions2D.h"
 #include "Core/Basics/Units.h"
 #include "Core/includeIncludes/InterferenceFunctions.h"
diff --git a/GUI/coregui/Models/Lattice2DItems.cpp b/GUI/coregui/Models/Lattice2DItems.cpp
index c260e5767894b9001603849f3b9047cf6dfdf9fd..8a29236c8ed7116df9545806ea174333544a1df6 100644
--- a/GUI/coregui/Models/Lattice2DItems.cpp
+++ b/GUI/coregui/Models/Lattice2DItems.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/Lattice2DItems.h"
-#include "Core/Lattice/Lattice2D.h"
 #include "Core/Basics/Units.h"
+#include "Core/Lattice/Lattice2D.h"
 
 namespace
 {
diff --git a/GUI/coregui/Models/ParticleDistributionItem.cpp b/GUI/coregui/Models/ParticleDistributionItem.cpp
index c1812a051ae14e9fd0b52c262c89401f5c88d78a..131cf152a4cdf924b080fc2adcd3f5cd5660dea3 100644
--- a/GUI/coregui/Models/ParticleDistributionItem.cpp
+++ b/GUI/coregui/Models/ParticleDistributionItem.cpp
@@ -13,9 +13,9 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/ParticleDistributionItem.h"
+#include "Core/Basics/Units.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterUtils.h"
-#include "Core/Basics/Units.h"
 #include "GUI/coregui/Models/ComboProperty.h"
 #include "GUI/coregui/Models/DistributionItems.h"
 #include "GUI/coregui/Models/ParameterTreeUtils.h"
diff --git a/GUI/coregui/Models/SphericalDetectorItem.cpp b/GUI/coregui/Models/SphericalDetectorItem.cpp
index 8b786315a713ac2bf780422b55405b1eb7023c18..06221cb40074d613f04c216db25759dbbb43f5cd 100644
--- a/GUI/coregui/Models/SphericalDetectorItem.cpp
+++ b/GUI/coregui/Models/SphericalDetectorItem.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/SphericalDetectorItem.h"
-#include "Core/Detector/SphericalDetector.h"
 #include "Core/Basics/Units.h"
+#include "Core/Detector/SphericalDetector.h"
 #include "GUI/coregui/Models/AxesItems.h"
 
 const QString SphericalDetectorItem::P_PHI_AXIS = "Phi axis";
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index 97b03b5647d0ed7b41f7eb7683803ac8004b69fd..fcc28c641347656f01cf76e61d33176df62b653b 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -15,6 +15,7 @@
 #include "GUI/coregui/Models/TransformFromDomain.h"
 #include "Core/Aggregate/FTDistributions1D.h"
 #include "Core/Aggregate/FTDistributions2D.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
@@ -40,7 +41,6 @@
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RangedDistributions.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleDistribution.h"
 #include "Core/Simulation/GISASSimulation.h"
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index 822140b40ee09daf3ef065db2b57915886283170..7ec3667d43cb222ca27302eba8d8412eff719951 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -13,12 +13,12 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/TransformToDomain.h"
+#include "Core/Basics/Units.h"
 #include "Core/Detector/ScanResolution.h"
 #include "Core/Instrument/AngularSpecScan.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RangedDistributions.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/MesoCrystal.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleCoreShell.h"
diff --git a/Tests/Functional/Core/Fitting/AdjustMinimizerPlan.cpp b/Tests/Functional/Core/Fitting/AdjustMinimizerPlan.cpp
index bfd4cf329183975b0746c3c003dce83a02978b13..062ac7ef305356f313851184d70c94b6769ee1fb 100644
--- a/Tests/Functional/Core/Fitting/AdjustMinimizerPlan.cpp
+++ b/Tests/Functional/Core/Fitting/AdjustMinimizerPlan.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "Tests/Functional/Core/Fitting/AdjustMinimizerPlan.h"
-#include "Core/Fitting/FitObjective.h"
 #include "Core/Basics/Units.h"
+#include "Core/Fitting/FitObjective.h"
 #include "Fit/Kernel/KernelTypes.h"
 #include "Fit/Kernel/Minimizer.h"
 #include "Fit/Kernel/Parameters.h"
diff --git a/Tests/Functional/Core/Fitting/PlanCases.cpp b/Tests/Functional/Core/Fitting/PlanCases.cpp
index 2cf93c9df1fcd481d9d6525fc945e433e770685f..d548f47e64870d06bbb56338df3245af1be08eba 100644
--- a/Tests/Functional/Core/Fitting/PlanCases.cpp
+++ b/Tests/Functional/Core/Fitting/PlanCases.cpp
@@ -13,9 +13,11 @@
 // ************************************************************************** //
 
 #include "Tests/Functional/Core/Fitting/PlanCases.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/InterferenceFunction2DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/Fitting/FitObjective.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
@@ -23,7 +25,6 @@
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Fit/Kernel/Parameters.h"
diff --git a/Tests/Performance/Core/Mesocrystal.cpp b/Tests/Performance/Core/Mesocrystal.cpp
index dd2a04b1a6cd0259efa279cc9b2a6e5fec2bf891..646524a0b194533177c16d6f34fa01b24fd43af1 100644
--- a/Tests/Performance/Core/Mesocrystal.cpp
+++ b/Tests/Performance/Core/Mesocrystal.cpp
@@ -14,6 +14,7 @@
 
 #include "Core/Particle/MesoCrystal.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/HardParticle/FormFactorCylinder.h"
 #include "Core/Lattice/ISelectionRule.h"
@@ -24,7 +25,6 @@
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Crystal.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleComposition.h"
diff --git a/Tests/Performance/Core/Threading.cpp b/Tests/Performance/Core/Threading.cpp
index ac5f84ae729d2ff173d41ebe2ee31bca490375ae..c592c187035a0f35649b84db654accabdb14179e 100644
--- a/Tests/Performance/Core/Threading.cpp
+++ b/Tests/Performance/Core/Threading.cpp
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
+#include "Core/Basics/Units.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
-#include "Core/Basics/Units.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/StandardSamples/CylindersBuilder.h"
 #include "Core/StandardSamples/ParaCrystalBuilder.h"
diff --git a/Tests/Performance/Core/ThreadingComponents.cpp b/Tests/Performance/Core/ThreadingComponents.cpp
index bf67d192b7d54015e2fe0235ba494c7a27e1472a..919447107ff64fb1fa50efadc0d994e1bb86dba9 100644
--- a/Tests/Performance/Core/ThreadingComponents.cpp
+++ b/Tests/Performance/Core/ThreadingComponents.cpp
@@ -15,6 +15,7 @@
 #include "Tests/Performance/Core/ThreadingComponents.h"
 #include "Core/Aggregate/InterferenceFunction2DLattice.h"
 #include "Core/Aggregate/ParticleLayout.h"
+#include "Core/Basics/Units.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/Mask/Rectangle.h"
@@ -23,7 +24,6 @@
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Particle/ParticleDistribution.h"
 #include "Core/Simulation/GISASSimulation.h"
diff --git a/Tests/UnitTests/Core/Axes/ConstKBinAxisTest.cpp b/Tests/UnitTests/Core/Axes/ConstKBinAxisTest.cpp
index 32c7b14813c4228ad15dbbe26d1639110d3bea88..84b190aae0903b381dfcc021ba72fafb0ed67d72 100644
--- a/Tests/UnitTests/Core/Axes/ConstKBinAxisTest.cpp
+++ b/Tests/UnitTests/Core/Axes/ConstKBinAxisTest.cpp
@@ -1,6 +1,6 @@
 #include "Core/Binning/ConstKBinAxis.h"
-#include "Core/InputOutput/DataFormatUtils.h"
 #include "Core/Basics/Units.h"
+#include "Core/InputOutput/DataFormatUtils.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <vector>
 
diff --git a/Tests/UnitTests/Core/Axes/DepthProbeConverterTest.cpp b/Tests/UnitTests/Core/Axes/DepthProbeConverterTest.cpp
index 4a8eedf696efe04fc88b5cc55abc6d0549bf3451..4c8ede54ac1b81eb3cbaf6ad8021e01250a6aa22 100644
--- a/Tests/UnitTests/Core/Axes/DepthProbeConverterTest.cpp
+++ b/Tests/UnitTests/Core/Axes/DepthProbeConverterTest.cpp
@@ -1,8 +1,8 @@
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class DepthProbeConverterTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Axes/UnitConverter1DTest.cpp b/Tests/UnitTests/Core/Axes/UnitConverter1DTest.cpp
index c59f87fc6f54fd7d4efaaf0a8a57a352545aae92..c838601bc6a685a3d2be484426e983dd8bd18930 100644
--- a/Tests/UnitTests/Core/Axes/UnitConverter1DTest.cpp
+++ b/Tests/UnitTests/Core/Axes/UnitConverter1DTest.cpp
@@ -1,12 +1,12 @@
 #include "Core/Intensity/UnitConverter1D.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/PointwiseAxis.h"
 #include "Core/Binning/VariableBinAxis.h"
 #include "Core/Instrument/QSpecScan.h"
 #include "Core/Intensity/OutputData.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class UnitConverter1DTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Detector/OffSpecularConverterTest.cpp b/Tests/UnitTests/Core/Detector/OffSpecularConverterTest.cpp
index c3a467f46e72f0980ec615725e204f986f0a15f3..c7e38bb39eb6eeb4398494a9469a9300b024a5b5 100644
--- a/Tests/UnitTests/Core/Detector/OffSpecularConverterTest.cpp
+++ b/Tests/UnitTests/Core/Detector/OffSpecularConverterTest.cpp
@@ -1,7 +1,7 @@
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/SphericalDetector.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
-#include "Core/Basics/Units.h"
 #include "Core/Vector/Vectors3D.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Detector/RectangularConverterTest.cpp b/Tests/UnitTests/Core/Detector/RectangularConverterTest.cpp
index db95abed5a8b858bbd969d5d39e18bce18d03617..5160565c65169c8b3352845332d5afcdababea37 100644
--- a/Tests/UnitTests/Core/Detector/RectangularConverterTest.cpp
+++ b/Tests/UnitTests/Core/Detector/RectangularConverterTest.cpp
@@ -1,7 +1,7 @@
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
-#include "Core/Basics/Units.h"
 #include "Core/Vector/Vectors3D.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <cmath>
diff --git a/Tests/UnitTests/Core/Detector/SpecularDetector1DTest.cpp b/Tests/UnitTests/Core/Detector/SpecularDetector1DTest.cpp
index 4e007be47b8aee2e0b37fe851d1508ea806382f0..454809a9a0718f5e8de8a278f376f47cd8290c78 100644
--- a/Tests/UnitTests/Core/Detector/SpecularDetector1DTest.cpp
+++ b/Tests/UnitTests/Core/Detector/SpecularDetector1DTest.cpp
@@ -1,9 +1,9 @@
 #include "Core/Detector/SpecularDetector1D.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Detector/SimulationArea.h"
 #include "Core/Intensity/OutputData.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
 
diff --git a/Tests/UnitTests/Core/Detector/SphericalConverterTest.cpp b/Tests/UnitTests/Core/Detector/SphericalConverterTest.cpp
index 8c4819bbba262f7b3ee677fd5cea5a5e65318ddc..7936775161ee162342bac74ae50df1dbdb44670c 100644
--- a/Tests/UnitTests/Core/Detector/SphericalConverterTest.cpp
+++ b/Tests/UnitTests/Core/Detector/SphericalConverterTest.cpp
@@ -1,7 +1,7 @@
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Detector/SphericalDetector.h"
 #include "Core/Intensity/SimpleUnitConverters.h"
-#include "Core/Basics/Units.h"
 #include "Core/Vector/Vectors3D.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Detector/SphericalDetectorTest.cpp b/Tests/UnitTests/Core/Detector/SphericalDetectorTest.cpp
index d3dc96a8e397ae2636b42dc3138378a922b93e40..9245c1f1b194b93ddb1afd66133318f1bfef6488 100644
--- a/Tests/UnitTests/Core/Detector/SphericalDetectorTest.cpp
+++ b/Tests/UnitTests/Core/Detector/SphericalDetectorTest.cpp
@@ -1,5 +1,6 @@
 #include "Core/Detector/SphericalDetector.h"
 #include "Core/Basics/Exceptions.h"
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Detector/ConvolutionDetectorResolution.h"
@@ -10,7 +11,6 @@
 #include "Core/Intensity/OutputData.h"
 #include "Core/Mask/Polygon.h"
 #include "Core/Mask/Rectangle.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
 
diff --git a/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.cpp b/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.cpp
index 588e72a4098b3df04eb4c2b2a1a628b7c9d36b1a..121215debe794eba666bfec3d9d6928f3cec2978 100644
--- a/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.cpp
+++ b/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.cpp
@@ -1,9 +1,9 @@
 #include "Core/PyIO/PythonFormatting.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/PointwiseAxis.h"
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterDistribution.h"
-#include "Core/Basics/Units.h"
 #include "Core/Tools/PyFmt.h"
 #include "Fit/Tools/RealLimits.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Fitting/FittingTestHelper.h b/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
index 4ed6a07d8e63f05ac0277f007e996e9e0b143267..32e8786857d7b44e6c38a4007aa060a9df58aa0d 100644
--- a/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
+++ b/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
@@ -1,11 +1,11 @@
 #ifndef BORNAGAIN_TESTS_UNITTESTS_CORE_FITTING_FITTINGTESTHELPER_H
 #define BORNAGAIN_TESTS_UNITTESTS_CORE_FITTING_FITTINGTESTHELPER_H
 
+#include "Core/Basics/Units.h"
 #include "Core/Intensity/OutputData.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
-#include "Core/Basics/Units.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Fit/Kernel/Parameters.h"
 #include <memory>
diff --git a/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp b/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
index 33c37093e6caa7cb71ac948303aedc6677ee06aa..3893faf024a7704a8bbd7f34a426c0abc459f7f9 100644
--- a/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
@@ -1,5 +1,6 @@
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Intensity/Histogram2D.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
@@ -9,7 +10,6 @@
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class DepthProbeSimulationTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp b/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
index 729b1c80045ae3d1ad24525813135d45c11b799c..f45211bad6bcbe07cc4597379ef73101f0790d52 100644
--- a/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
@@ -1,10 +1,10 @@
 #include "Core/Multilayer/KzComputation.h"
+#include "Core/Basics/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Parametrization/SimulationOptions.h"
-#include "Core/Basics/Units.h"
 #include "Core/StandardSamples/PlainMultiLayerBySLDBuilder.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
index 41a8d819696555876e7d1c990b423e8315b4d89b..b37193b03b3f34582c7405ef9d77a17426cef8ce 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
@@ -1,3 +1,4 @@
+#include "Core/Basics/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
@@ -5,7 +6,6 @@
 #include "Core/Multilayer/SpecularMagneticOldStrategy.h"
 #include "Core/Multilayer/SpecularScalarTanhStrategy.h"
 #include "Core/Parametrization/SimulationOptions.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class SpecularMagneticTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest_v2.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest_v2.cpp
index 6fe0f9235daed0966630b501585378ad41b68a7d..efdb65b1d7026d670cd6dfee84ca5fa3d736f11a 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest_v2.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest_v2.cpp
@@ -1,3 +1,4 @@
+#include "Core/Basics/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
@@ -5,7 +6,6 @@
 #include "Core/Multilayer/SpecularMagneticStrategy.h"
 #include "Core/Multilayer/SpecularScalarTanhStrategy.h"
 #include "Core/Parametrization/SimulationOptions.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 constexpr double eps = 1e-10;
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
index faeb9569f6dbbbe6bb70da9d4ac632ccdb58629c..30fac9e79458ef85bb6295569f1545b01936e17c 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
@@ -1,6 +1,7 @@
 #include "Core/Simulation/SpecularSimulation.h"
 #include "Core/Basics/Exceptions.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/VariableBinAxis.h"
 #include "Core/Instrument/AngularSpecScan.h"
@@ -13,7 +14,6 @@
 #include "Core/Parametrization/Distributions.h"
 #include "Core/Parametrization/ParameterPattern.h"
 #include "Core/Parametrization/RealParameter.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <iostream>
 
diff --git a/Tests/UnitTests/Core/Other/BeamFootprintTest.cpp b/Tests/UnitTests/Core/Other/BeamFootprintTest.cpp
index c0ca70dfe96f75473598626102959c81da234fa2..8206fc0e3ed386d1d42fc21d6c7366647a05c81f 100644
--- a/Tests/UnitTests/Core/Other/BeamFootprintTest.cpp
+++ b/Tests/UnitTests/Core/Other/BeamFootprintTest.cpp
@@ -1,7 +1,7 @@
+#include "Core/Basics/Units.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 #include <limits>
diff --git a/Tests/UnitTests/Core/Other/MaterialTest.cpp b/Tests/UnitTests/Core/Other/MaterialTest.cpp
index 42d00ea4efe07973ea76b778cd86911c3e1c3cf0..d5cdd6dc2100ce432b13860e1bcacd0f93044a14 100644
--- a/Tests/UnitTests/Core/Other/MaterialTest.cpp
+++ b/Tests/UnitTests/Core/Other/MaterialTest.cpp
@@ -1,7 +1,7 @@
 #include "Core/Basics/Exceptions.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialBySLDImpl.h"
 #include "Core/Material/RefractiveMaterialImpl.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/HomogeneousRegion.h"
 #include "Core/Scattering/Rotations.h"
 #include "Core/Vector/WavevectorInfo.h"
diff --git a/Tests/UnitTests/Core/Other/Shape2DTest.cpp b/Tests/UnitTests/Core/Other/Shape2DTest.cpp
index f74b0fd682a4503f8180057e018df9f9ad6bfd1d..afa641be23e7cdd8a76f643fa7a99ab813427a40 100644
--- a/Tests/UnitTests/Core/Other/Shape2DTest.cpp
+++ b/Tests/UnitTests/Core/Other/Shape2DTest.cpp
@@ -1,9 +1,9 @@
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/Bin.h"
 #include "Core/Mask/Ellipse.h"
 #include "Core/Mask/Line.h"
 #include "Core/Mask/Rectangle.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
 
diff --git a/Tests/UnitTests/Core/Sample/LayerTest.cpp b/Tests/UnitTests/Core/Sample/LayerTest.cpp
index 8b695e8d781482dee95880015faab67b54177f9c..14f1cb0eca08600503ec24f4a5310dfd7b1bea74 100644
--- a/Tests/UnitTests/Core/Sample/LayerTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LayerTest.cpp
@@ -1,7 +1,7 @@
 #include "Core/Multilayer/Layer.h"
 #include "Core/Aggregate/ParticleLayout.h"
-#include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Basics/Units.h"
+#include "Core/Material/MaterialFactoryFuncs.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class LayerTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
index 7c4f95d9d4315a28ee20356f55ca8e592e0104f1..bcbbe118e507dad4666cfbffa60feddd2a4ab549 100644
--- a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
+++ b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
@@ -1,12 +1,12 @@
 #include "Core/Multilayer/MultiLayer.h"
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Multilayer/Layer.h"
 #include "Core/Multilayer/LayerInterface.h"
 #include "Core/Multilayer/LayerRoughness.h"
 #include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 using MultiLayerUtils::LayerBottomInterface;
diff --git a/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp b/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
index aaa93ea8c03742994dbed1b93222788df2a32383..359a2b2168f93b04e7c7f097fc067a0a5e716e8c 100644
--- a/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
@@ -1,7 +1,7 @@
 #include "Core/Particle/ParticleCoreShell.h"
 #include "Core/Basics/MathConstants.h"
-#include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Basics/Units.h"
+#include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Particle/Particle.h"
 #include "Core/Scattering/Rotations.h"
 #include "Core/includeIncludes/HardParticles.h"
diff --git a/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp b/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
index 04c70b12c98b44f8d337076c3c3b9b7e2af2c6b6..d8a6c317030e6fa943241ecc3eecebdd823821c1 100644
--- a/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
@@ -1,7 +1,7 @@
 #include "Core/Particle/ParticleDistribution.h"
+#include "Core/Basics/Units.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
 #include "Core/Parametrization/Distributions.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/Particle.h"
 #include "Core/includeIncludes/FormFactors.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp b/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
index dccf51d840b147920d0dc959f248eb3b55bb98a3..d8416bb26157f8c4b8728c8db3511065c80bfc47 100644
--- a/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
@@ -1,9 +1,9 @@
 #include "Core/Aggregate/ParticleLayout.h"
 #include "Core/Aggregate/InterferenceFunction1DLattice.h"
 #include "Core/Aggregate/InterferenceFunctionNone.h"
+#include "Core/Basics/Units.h"
 #include "Core/Export/INodeUtils.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
-#include "Core/Basics/Units.h"
 #include "Core/Particle/IAbstractParticle.h"
 #include "Core/Particle/Particle.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Sample/ParticleTest.cpp b/Tests/UnitTests/Core/Sample/ParticleTest.cpp
index 888470d4e4b160f3099ebe5cf86a8f497dd0d624..6b4aec1e2a5d5acf086088c1a84a26e7c85922c7 100644
--- a/Tests/UnitTests/Core/Sample/ParticleTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleTest.cpp
@@ -1,8 +1,8 @@
 #include "Core/Particle/Particle.h"
 #include "Core/Basics/MathConstants.h"
+#include "Core/Basics/Units.h"
 #include "Core/HardParticle/FormFactorFullSphere.h"
 #include "Core/Material/MaterialFactoryFuncs.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class ParticleTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp b/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp
index c41d95c56d23aeff08660f7e9b295683831c5a57..2ecc57eb1f75b2258bc4f9a3e39cc1ebe6d80c87 100644
--- a/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp
+++ b/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp
@@ -1,7 +1,7 @@
 #include "Core/SimulationElement/SimulationElement.h"
+#include "Core/Basics/Units.h"
 #include "Core/Binning/Bin.h"
 #include "Core/Detector/SphericalDetector.h"
-#include "Core/Basics/Units.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
 
diff --git a/Tests/UnitTests/GUI/TestAxesItems.cpp b/Tests/UnitTests/GUI/TestAxesItems.cpp
index 714fb858a66248330b8f9be7b793986982903e3f..d6f97f55a8106827a76472ec7251432a319d82d9 100644
--- a/Tests/UnitTests/GUI/TestAxesItems.cpp
+++ b/Tests/UnitTests/GUI/TestAxesItems.cpp
@@ -1,6 +1,6 @@
+#include "Core/Basics/Units.h"
 #include "Core/Binning/FixedBinAxis.h"
 #include "Core/Binning/VariableBinAxis.h"
-#include "Core/Basics/Units.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/PropertyItem.h"
 #include "GUI/coregui/Models/TransformFromDomain.h"
diff --git a/Tests/UnitTests/GUI/TestDetectorItems.cpp b/Tests/UnitTests/GUI/TestDetectorItems.cpp
index fecd2d5ec72d04ca2903bf0e7ebdbe8b21aa2da0..635ca04952a95073220f520b3162731c687f661b 100644
--- a/Tests/UnitTests/GUI/TestDetectorItems.cpp
+++ b/Tests/UnitTests/GUI/TestDetectorItems.cpp
@@ -1,7 +1,7 @@
+#include "Core/Basics/Units.h"
 #include "Core/Detector/ConvolutionDetectorResolution.h"
 #include "Core/Detector/IDetector2D.h"
 #include "Core/Detector/ResolutionFunction2DGaussian.h"
-#include "Core/Basics/Units.h"
 #include "GUI/coregui/Models/ComboProperty.h"
 #include "GUI/coregui/Models/DetectorItems.h"
 #include "GUI/coregui/Models/InstrumentItems.h"
diff --git a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
index c15def21a63a1448c14a96326327aba5c2ad11fb..f4bacb4348de400b5a661f01e652e17e467a6610 100644
--- a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
+++ b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
@@ -1,5 +1,5 @@
-#include "Core/Parametrization/ParameterPool.h"
 #include "Core/Basics/Units.h"
+#include "Core/Parametrization/ParameterPool.h"
 #include "Core/includeIncludes/FormFactors.h"
 #include "Core/includeIncludes/InterferenceFunctions.h"
 #include "GUI/coregui/Models/FormFactorItems.h"
diff --git a/Tests/UnitTests/GUI/TestParaCrystalItems.cpp b/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
index 8b0bb2ac22f2dcb535b6b08fdca3081b173d22b7..1e2f04f8ef6095de71a18f41185303add45064ec 100644
--- a/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
+++ b/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
@@ -1,7 +1,7 @@
 #include "Core/Aggregate/FTDistributions2D.h"
 #include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-#include "Core/Lattice/Lattice2D.h"
 #include "Core/Basics/Units.h"
+#include "Core/Lattice/Lattice2D.h"
 #include "GUI/coregui/Models/FTDistributionItems.h"
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/Lattice2DItems.h"
diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i
index 47c31a2eecc9108033e289377c38fd7378971505..a2fa2c0a65accf4dcdc35326c559836d67d37a1d 100644
--- a/Wrap/swig/libBornAgainCore.i
+++ b/Wrap/swig/libBornAgainCore.i
@@ -74,7 +74,8 @@
 
 %{
 #include "BAVersion.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/FTDistributions1D.h"
 #include "Core/Aggregate/FTDistributions2D.h"
 #include "Core/Aggregate/IInterferenceFunction.h"
@@ -370,10 +371,12 @@
 %include "Core/Particle/ParticleCoreShell.h"
 %include "Core/Particle/ParticleDistribution.h"
 
-%include "Core/Aggregate/FTDecayFunctions.h"
+%include "Core/Aggregate/FTDecay1D.h"
+%include "Core/Aggregate/FTDecay2D.h"
 %include "Core/Aggregate/FTDistributions1D.h"
 %include "Core/Aggregate/FTDistributions2D.h"
-%include "Core/Aggregate/FTDecayFunctions.h"
+%include "Core/Aggregate/FTDecay1D.h"
+%include "Core/Aggregate/FTDecay2D.h"
 %include "Core/Aggregate/IInterferenceFunction.h"
 %include "Core/Aggregate/ILayout.h"
 %include "Core/Aggregate/IPeakShape.h"
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index a20ef70f7d0c0ce6d642b881304f0c996d5d034b..4b8e895cc6156f17e21da64982a6eddacc31bc83 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -6286,12 +6286,12 @@ class INodeVisitor(object):
         visit(INodeVisitor self, FormFactorEllipsoidalCylinder arg2)
         visit(INodeVisitor self, FormFactorFullSphere arg2)
         visit(INodeVisitor self, FormFactorFullSpheroid arg2)
-        visit(INodeVisitor self, FormFactorGauss arg2)
+        visit(INodeVisitor self, FormFactorGaussSphere arg2)
         visit(INodeVisitor self, FormFactorHemiEllipsoid arg2)
         visit(INodeVisitor self, FormFactorIcosahedron arg2)
         visit(INodeVisitor self, FormFactorLongBoxGauss arg2)
         visit(INodeVisitor self, FormFactorLongBoxLorentz arg2)
-        visit(INodeVisitor self, FormFactorLorentz arg2)
+        visit(INodeVisitor self, FormFactorLorentzSphere arg2)
         visit(INodeVisitor self, FormFactorPrism3 arg2)
         visit(INodeVisitor self, FormFactorPrism6 arg2)
         visit(INodeVisitor self, FormFactorPyramid arg2)
@@ -17747,169 +17747,135 @@ class FormFactorDebyeBueche(IFormFactorBorn):
 # Register FormFactorDebyeBueche in _libBornAgainCore:
 _libBornAgainCore.FormFactorDebyeBueche_swigregister(FormFactorDebyeBueche)
 
-class FormFactorGauss(IFormFactorBorn):
-    r"""
-
-
-    The form factor of a gaussian.
-
-    C++ includes: FormFactorGauss.h
-
-    """
+class FormFactorGaussSphere(IFormFactorBorn):
+    r"""Proxy of C++ FormFactorGaussSphere class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, *args):
         r"""
-        __init__(FormFactorGauss self, double length) -> FormFactorGauss
-        __init__(FormFactorGauss self, double width, double height) -> FormFactorGauss
-        FormFactorGauss::FormFactorGauss(double width, double height)
-
+        __init__(FormFactorGaussSphere self, double length) -> FormFactorGaussSphere
+        __init__(FormFactorGaussSphere self, double width, double height) -> FormFactorGaussSphere
         """
-        _libBornAgainCore.FormFactorGauss_swiginit(self, _libBornAgainCore.new_FormFactorGauss(*args))
+        _libBornAgainCore.FormFactorGaussSphere_swiginit(self, _libBornAgainCore.new_FormFactorGaussSphere(*args))
 
     def clone(self):
         r"""
-        clone(FormFactorGauss self) -> FormFactorGauss
-        FormFactorGauss* FormFactorGauss::clone() const override final
+        clone(FormFactorGaussSphere self) -> FormFactorGaussSphere
+        IFormFactorBorn* IFormFactorBorn::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorGauss_clone(self)
+        return _libBornAgainCore.FormFactorGaussSphere_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorGauss self, INodeVisitor visitor)
-        void FormFactorGauss::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorGaussSphere self, INodeVisitor visitor)
+        virtual void INode::accept(INodeVisitor *visitor) const =0
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorGauss_accept(self, visitor)
+        return _libBornAgainCore.FormFactorGaussSphere_accept(self, visitor)
 
     def getWidth(self):
-        r"""
-        getWidth(FormFactorGauss self) -> double
-        double FormFactorGauss::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorGauss_getWidth(self)
+        r"""getWidth(FormFactorGaussSphere self) -> double"""
+        return _libBornAgainCore.FormFactorGaussSphere_getWidth(self)
 
     def getHeight(self):
-        r"""
-        getHeight(FormFactorGauss self) -> double
-        double FormFactorGauss::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorGauss_getHeight(self)
+        r"""getHeight(FormFactorGaussSphere self) -> double"""
+        return _libBornAgainCore.FormFactorGaussSphere_getHeight(self)
 
     def radialExtension(self):
         r"""
-        radialExtension(FormFactorGauss self) -> double
-        double FormFactorGauss::radialExtension() const override final
+        radialExtension(FormFactorGaussSphere self) -> double
+        virtual double IFormFactor::radialExtension() 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.FormFactorGauss_radialExtension(self)
+        return _libBornAgainCore.FormFactorGaussSphere_radialExtension(self)
 
     def evaluate_for_q(self, q):
         r"""
-        evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t
-        complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const override final
+        evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t
+        virtual complex_t IFormFactorBorn::evaluate_for_q(cvector_t q) const =0
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
-        return _libBornAgainCore.FormFactorGauss_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorGauss
+        return _libBornAgainCore.FormFactorGaussSphere_evaluate_for_q(self, q)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorGaussSphere
 
-# Register FormFactorGauss in _libBornAgainCore:
-_libBornAgainCore.FormFactorGauss_swigregister(FormFactorGauss)
+# Register FormFactorGaussSphere in _libBornAgainCore:
+_libBornAgainCore.FormFactorGaussSphere_swigregister(FormFactorGaussSphere)
 
-class FormFactorLorentz(IFormFactorBorn):
-    r"""
-
-
-    The form factor of a lorentzian.
-
-    C++ includes: FormFactorLorentz.h
-
-    """
+class FormFactorLorentzSphere(IFormFactorBorn):
+    r"""Proxy of C++ FormFactorLorentzSphere class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, *args):
         r"""
-        __init__(FormFactorLorentz self, double length) -> FormFactorLorentz
-        __init__(FormFactorLorentz self, double width, double height) -> FormFactorLorentz
-        FormFactorLorentz::FormFactorLorentz(double width, double height)
-
+        __init__(FormFactorLorentzSphere self, double length) -> FormFactorLorentzSphere
+        __init__(FormFactorLorentzSphere self, double width, double height) -> FormFactorLorentzSphere
         """
-        _libBornAgainCore.FormFactorLorentz_swiginit(self, _libBornAgainCore.new_FormFactorLorentz(*args))
+        _libBornAgainCore.FormFactorLorentzSphere_swiginit(self, _libBornAgainCore.new_FormFactorLorentzSphere(*args))
 
     def clone(self):
         r"""
-        clone(FormFactorLorentz self) -> FormFactorLorentz
-        FormFactorLorentz* FormFactorLorentz::clone() const override final
+        clone(FormFactorLorentzSphere self) -> FormFactorLorentzSphere
+        IFormFactorBorn* IFormFactorBorn::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
         """
-        return _libBornAgainCore.FormFactorLorentz_clone(self)
+        return _libBornAgainCore.FormFactorLorentzSphere_clone(self)
 
     def accept(self, visitor):
         r"""
-        accept(FormFactorLorentz self, INodeVisitor visitor)
-        void FormFactorLorentz::accept(INodeVisitor *visitor) const override final
+        accept(FormFactorLorentzSphere self, INodeVisitor visitor)
+        virtual void INode::accept(INodeVisitor *visitor) const =0
 
         Calls the  INodeVisitor's visit method. 
 
         """
-        return _libBornAgainCore.FormFactorLorentz_accept(self, visitor)
+        return _libBornAgainCore.FormFactorLorentzSphere_accept(self, visitor)
 
     def getWidth(self):
-        r"""
-        getWidth(FormFactorLorentz self) -> double
-        double FormFactorLorentz::getWidth() const
-
-        """
-        return _libBornAgainCore.FormFactorLorentz_getWidth(self)
+        r"""getWidth(FormFactorLorentzSphere self) -> double"""
+        return _libBornAgainCore.FormFactorLorentzSphere_getWidth(self)
 
     def getHeight(self):
-        r"""
-        getHeight(FormFactorLorentz self) -> double
-        double FormFactorLorentz::getHeight() const
-
-        """
-        return _libBornAgainCore.FormFactorLorentz_getHeight(self)
+        r"""getHeight(FormFactorLorentzSphere self) -> double"""
+        return _libBornAgainCore.FormFactorLorentzSphere_getHeight(self)
 
     def radialExtension(self):
         r"""
-        radialExtension(FormFactorLorentz self) -> double
-        double FormFactorLorentz::radialExtension() const override final
+        radialExtension(FormFactorLorentzSphere self) -> double
+        virtual double IFormFactor::radialExtension() 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.FormFactorLorentz_radialExtension(self)
+        return _libBornAgainCore.FormFactorLorentzSphere_radialExtension(self)
 
     def evaluate_for_q(self, q):
         r"""
-        evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t
-        complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const override final
+        evaluate_for_q(FormFactorLorentzSphere self, cvector_t q) -> complex_t
+        virtual complex_t IFormFactorBorn::evaluate_for_q(cvector_t q) const =0
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
-        return _libBornAgainCore.FormFactorLorentz_evaluate_for_q(self, q)
-    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLorentz
+        return _libBornAgainCore.FormFactorLorentzSphere_evaluate_for_q(self, q)
+    __swig_destroy__ = _libBornAgainCore.delete_FormFactorLorentzSphere
 
-# Register FormFactorLorentz in _libBornAgainCore:
-_libBornAgainCore.FormFactorLorentz_swigregister(FormFactorLorentz)
+# Register FormFactorLorentzSphere in _libBornAgainCore:
+_libBornAgainCore.FormFactorLorentzSphere_swigregister(FormFactorLorentzSphere)
 
 class FormFactorOrnsteinZernike(IFormFactorBorn):
     r"""
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index d8422edd14a3adfaf09351bfd904f3fb82ea0c11..b30ab91d1d5d4ea9bf96207ee76f2f4cdf0479d1 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3144,13 +3144,13 @@ namespace Swig {
 #define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[76]
 #define SWIGTYPE_p_FormFactorFullSphere swig_types[77]
 #define SWIGTYPE_p_FormFactorFullSpheroid swig_types[78]
-#define SWIGTYPE_p_FormFactorGauss swig_types[79]
+#define SWIGTYPE_p_FormFactorGaussSphere swig_types[79]
 #define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[80]
 #define SWIGTYPE_p_FormFactorHollowSphere swig_types[81]
 #define SWIGTYPE_p_FormFactorIcosahedron swig_types[82]
 #define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[83]
 #define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[84]
-#define SWIGTYPE_p_FormFactorLorentz swig_types[85]
+#define SWIGTYPE_p_FormFactorLorentzSphere swig_types[85]
 #define SWIGTYPE_p_FormFactorOrnsteinZernike swig_types[86]
 #define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[87]
 #define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[88]
@@ -6894,7 +6894,8 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 
 
 #include "BAVersion.h"
-#include "Core/Aggregate/FTDecayFunctions.h"
+#include "Core/Aggregate/FTDecay1D.h"
+#include "Core/Aggregate/FTDecay2D.h"
 #include "Core/Aggregate/FTDistributions1D.h"
 #include "Core/Aggregate/FTDistributions2D.h"
 #include "Core/Aggregate/IInterferenceFunction.h"
@@ -55293,7 +55294,7 @@ fail:
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_34(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
-  FormFactorGauss *arg2 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg2 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -55305,12 +55306,12 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_34(PyObject *SWIGUNUSEDPARM(
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
   }
   arg1 = reinterpret_cast< INodeVisitor * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg2 = reinterpret_cast< FormFactorGauss * >(argp2);
-  (arg1)->visit((FormFactorGauss const *)arg2);
+  arg2 = reinterpret_cast< FormFactorGaussSphere * >(argp2);
+  (arg1)->visit((FormFactorGaussSphere const *)arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -55433,7 +55434,7 @@ fail:
 SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_39(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   INodeVisitor *arg1 = (INodeVisitor *) 0 ;
-  FormFactorLorentz *arg2 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg2 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -55445,12 +55446,12 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit__SWIG_39(PyObject *SWIGUNUSEDPARM(
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INodeVisitor_visit" "', argument " "1"" of type '" "INodeVisitor *""'"); 
   }
   arg1 = reinterpret_cast< INodeVisitor * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INodeVisitor_visit" "', argument " "2"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg2 = reinterpret_cast< FormFactorLorentz * >(argp2);
-  (arg1)->visit((FormFactorLorentz const *)arg2);
+  arg2 = reinterpret_cast< FormFactorLorentzSphere * >(argp2);
+  (arg1)->visit((FormFactorLorentzSphere const *)arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -58357,7 +58358,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorGauss, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorGaussSphere, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_34(self, argc, argv);
@@ -58427,7 +58428,7 @@ SWIGINTERN PyObject *_wrap_INodeVisitor_visit(PyObject *self, PyObject *args) {
     _v = SWIG_CheckState(res);
     if (_v) {
       void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLorentz, 0);
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FormFactorLorentzSphere, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_INodeVisitor_visit__SWIG_39(self, argc, argv);
@@ -59676,12 +59677,12 @@ fail:
     "    INodeVisitor::visit(FormFactorEllipsoidalCylinder const *)\n"
     "    INodeVisitor::visit(FormFactorFullSphere const *)\n"
     "    INodeVisitor::visit(FormFactorFullSpheroid const *)\n"
-    "    INodeVisitor::visit(FormFactorGauss const *)\n"
+    "    INodeVisitor::visit(FormFactorGaussSphere const *)\n"
     "    INodeVisitor::visit(FormFactorHemiEllipsoid const *)\n"
     "    INodeVisitor::visit(FormFactorIcosahedron const *)\n"
     "    INodeVisitor::visit(FormFactorLongBoxGauss const *)\n"
     "    INodeVisitor::visit(FormFactorLongBoxLorentz const *)\n"
-    "    INodeVisitor::visit(FormFactorLorentz const *)\n"
+    "    INodeVisitor::visit(FormFactorLorentzSphere const *)\n"
     "    INodeVisitor::visit(FormFactorPrism3 const *)\n"
     "    INodeVisitor::visit(FormFactorPrism6 const *)\n"
     "    INodeVisitor::visit(FormFactorPyramid const *)\n"
@@ -98815,28 +98816,28 @@ SWIGINTERN PyObject *FormFactorDebyeBueche_swiginit(PyObject *SWIGUNUSEDPARM(sel
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorGauss__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorGaussSphere__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double val1 ;
   int ecode1 = 0 ;
-  FormFactorGauss *result = 0 ;
+  FormFactorGaussSphere *result = 0 ;
   
   if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorGauss" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorGaussSphere" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
-  result = (FormFactorGauss *)new FormFactorGauss(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGauss, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorGaussSphere *)new FormFactorGaussSphere(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGaussSphere, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorGauss__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorGaussSphere__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -98844,34 +98845,34 @@ SWIGINTERN PyObject *_wrap_new_FormFactorGauss__SWIG_1(PyObject *SWIGUNUSEDPARM(
   int ecode1 = 0 ;
   double val2 ;
   int ecode2 = 0 ;
-  FormFactorGauss *result = 0 ;
+  FormFactorGaussSphere *result = 0 ;
   
   if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorGauss" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorGaussSphere" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorGauss" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorGaussSphere" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
-  result = (FormFactorGauss *)new FormFactorGauss(arg1,arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGauss, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorGaussSphere *)new FormFactorGaussSphere(arg1,arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGaussSphere, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorGauss(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorGaussSphere(PyObject *self, PyObject *args) {
   Py_ssize_t argc;
   PyObject *argv[3] = {
     0
   };
   
-  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorGauss", 0, 2, argv))) SWIG_fail;
+  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorGaussSphere", 0, 2, argv))) SWIG_fail;
   --argc;
   if (argc == 1) {
     int _v;
@@ -98880,7 +98881,7 @@ SWIGINTERN PyObject *_wrap_new_FormFactorGauss(PyObject *self, PyObject *args) {
       _v = SWIG_CheckState(res);
     }
     if (_v) {
-      return _wrap_new_FormFactorGauss__SWIG_0(self, argc, argv);
+      return _wrap_new_FormFactorGaussSphere__SWIG_0(self, argc, argv);
     }
   }
   if (argc == 2) {
@@ -98895,46 +98896,46 @@ SWIGINTERN PyObject *_wrap_new_FormFactorGauss(PyObject *self, PyObject *args) {
         _v = SWIG_CheckState(res);
       }
       if (_v) {
-        return _wrap_new_FormFactorGauss__SWIG_1(self, argc, argv);
+        return _wrap_new_FormFactorGaussSphere__SWIG_1(self, argc, argv);
       }
     }
   }
   
 fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorGauss'.\n"
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorGaussSphere'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    FormFactorGauss::FormFactorGauss(double)\n"
-    "    FormFactorGauss::FormFactorGauss(double,double)\n");
+    "    FormFactorGaussSphere::FormFactorGaussSphere(double)\n"
+    "    FormFactorGaussSphere::FormFactorGaussSphere(double,double)\n");
   return 0;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorGauss *result = 0 ;
+  FormFactorGaussSphere *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_clone" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_clone" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
-  result = (FormFactorGauss *)((FormFactorGauss const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
+  result = (FormFactorGaussSphere *)((FormFactorGaussSphere const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -98942,18 +98943,18 @@ SWIGINTERN PyObject *_wrap_FormFactorGauss_accept(PyObject *SWIGUNUSEDPARM(self)
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorGauss_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorGaussSphere_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_accept" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_accept" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorGauss_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorGaussSphere_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
   arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorGauss const *)arg1)->accept(arg2);
+  ((FormFactorGaussSphere const *)arg1)->accept(arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -98961,9 +98962,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -98971,12 +98972,12 @@ SWIGINTERN PyObject *_wrap_FormFactorGauss_getWidth(PyObject *SWIGUNUSEDPARM(sel
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_getWidth" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_getWidth" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
-  result = (double)((FormFactorGauss const *)arg1)->getWidth();
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
+  result = (double)((FormFactorGaussSphere const *)arg1)->getWidth();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -98984,9 +98985,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -98994,12 +98995,12 @@ SWIGINTERN PyObject *_wrap_FormFactorGauss_getHeight(PyObject *SWIGUNUSEDPARM(se
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_getHeight" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_getHeight" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
-  result = (double)((FormFactorGauss const *)arg1)->getHeight();
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
+  result = (double)((FormFactorGaussSphere const *)arg1)->getHeight();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -99007,9 +99008,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -99017,12 +99018,12 @@ SWIGINTERN PyObject *_wrap_FormFactorGauss_radialExtension(PyObject *SWIGUNUSEDP
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_radialExtension" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_radialExtension" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
-  result = (double)((FormFactorGauss const *)arg1)->radialExtension();
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
+  result = (double)((FormFactorGaussSphere const *)arg1)->radialExtension();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -99030,9 +99031,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorGauss_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorGaussSphere_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   cvector_t arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -99041,26 +99042,26 @@ SWIGINTERN PyObject *_wrap_FormFactorGauss_evaluate_for_q(PyObject *SWIGUNUSEDPA
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorGauss_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorGaussSphere_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGauss_evaluate_for_q" "', argument " "1"" of type '" "FormFactorGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorGaussSphere_evaluate_for_q" "', argument " "1"" of type '" "FormFactorGaussSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorGauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorGaussSphere_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorGauss_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorGaussSphere_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
     } else {
       cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((FormFactorGauss const *)arg1)->evaluate_for_q(arg2);
+  result = ((FormFactorGaussSphere const *)arg1)->evaluate_for_q(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -99068,20 +99069,20 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_FormFactorGauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorGaussSphere(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorGauss *arg1 = (FormFactorGauss *) 0 ;
+  FormFactorGaussSphere *arg1 = (FormFactorGaussSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGauss, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorGaussSphere, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorGauss" "', argument " "1"" of type '" "FormFactorGauss *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorGaussSphere" "', argument " "1"" of type '" "FormFactorGaussSphere *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorGauss * >(argp1);
+  arg1 = reinterpret_cast< FormFactorGaussSphere * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -99090,39 +99091,39 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorGaussSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorGauss, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorGaussSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorGauss_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorGaussSphere_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLorentz__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorLorentzSphere__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double val1 ;
   int ecode1 = 0 ;
-  FormFactorLorentz *result = 0 ;
+  FormFactorLorentzSphere *result = 0 ;
   
   if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLorentz" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLorentzSphere" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
-  result = (FormFactorLorentz *)new FormFactorLorentz(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentz, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorLorentzSphere *)new FormFactorLorentzSphere(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentzSphere, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLorentz__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorLorentzSphere__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -99130,34 +99131,34 @@ SWIGINTERN PyObject *_wrap_new_FormFactorLorentz__SWIG_1(PyObject *SWIGUNUSEDPAR
   int ecode1 = 0 ;
   double val2 ;
   int ecode2 = 0 ;
-  FormFactorLorentz *result = 0 ;
+  FormFactorLorentzSphere *result = 0 ;
   
   if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLorentz" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorLorentzSphere" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLorentz" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorLorentzSphere" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
-  result = (FormFactorLorentz *)new FormFactorLorentz(arg1,arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentz, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorLorentzSphere *)new FormFactorLorentzSphere(arg1,arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentzSphere, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorLorentz(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorLorentzSphere(PyObject *self, PyObject *args) {
   Py_ssize_t argc;
   PyObject *argv[3] = {
     0
   };
   
-  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorLorentz", 0, 2, argv))) SWIG_fail;
+  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorLorentzSphere", 0, 2, argv))) SWIG_fail;
   --argc;
   if (argc == 1) {
     int _v;
@@ -99166,7 +99167,7 @@ SWIGINTERN PyObject *_wrap_new_FormFactorLorentz(PyObject *self, PyObject *args)
       _v = SWIG_CheckState(res);
     }
     if (_v) {
-      return _wrap_new_FormFactorLorentz__SWIG_0(self, argc, argv);
+      return _wrap_new_FormFactorLorentzSphere__SWIG_0(self, argc, argv);
     }
   }
   if (argc == 2) {
@@ -99181,46 +99182,46 @@ SWIGINTERN PyObject *_wrap_new_FormFactorLorentz(PyObject *self, PyObject *args)
         _v = SWIG_CheckState(res);
       }
       if (_v) {
-        return _wrap_new_FormFactorLorentz__SWIG_1(self, argc, argv);
+        return _wrap_new_FormFactorLorentzSphere__SWIG_1(self, argc, argv);
       }
     }
   }
   
 fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorLorentz'.\n"
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorLorentzSphere'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    FormFactorLorentz::FormFactorLorentz(double)\n"
-    "    FormFactorLorentz::FormFactorLorentz(double,double)\n");
+    "    FormFactorLorentzSphere::FormFactorLorentzSphere(double)\n"
+    "    FormFactorLorentzSphere::FormFactorLorentzSphere(double,double)\n");
   return 0;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorLorentz *result = 0 ;
+  FormFactorLorentzSphere *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_clone" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_clone" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
-  result = (FormFactorLorentz *)((FormFactorLorentz const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
+  result = (FormFactorLorentzSphere *)((FormFactorLorentzSphere const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_accept(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   INodeVisitor *arg2 = (INodeVisitor *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -99228,18 +99229,18 @@ SWIGINTERN PyObject *_wrap_FormFactorLorentz_accept(PyObject *SWIGUNUSEDPARM(sel
   int res2 = 0 ;
   PyObject *swig_obj[2] ;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLorentz_accept", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorLorentzSphere_accept", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_accept" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_accept" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_INodeVisitor, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLorentz_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLorentzSphere_accept" "', argument " "2"" of type '" "INodeVisitor *""'"); 
   }
   arg2 = reinterpret_cast< INodeVisitor * >(argp2);
-  ((FormFactorLorentz const *)arg1)->accept(arg2);
+  ((FormFactorLorentzSphere const *)arg1)->accept(arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -99247,9 +99248,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_getWidth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -99257,12 +99258,12 @@ SWIGINTERN PyObject *_wrap_FormFactorLorentz_getWidth(PyObject *SWIGUNUSEDPARM(s
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_getWidth" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_getWidth" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
-  result = (double)((FormFactorLorentz const *)arg1)->getWidth();
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
+  result = (double)((FormFactorLorentzSphere const *)arg1)->getWidth();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -99270,9 +99271,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_getHeight(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -99280,12 +99281,12 @@ SWIGINTERN PyObject *_wrap_FormFactorLorentz_getHeight(PyObject *SWIGUNUSEDPARM(
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_getHeight" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_getHeight" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
-  result = (double)((FormFactorLorentz const *)arg1)->getHeight();
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
+  result = (double)((FormFactorLorentzSphere const *)arg1)->getHeight();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -99293,9 +99294,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_radialExtension(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -99303,12 +99304,12 @@ SWIGINTERN PyObject *_wrap_FormFactorLorentz_radialExtension(PyObject *SWIGUNUSE
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_radialExtension" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_radialExtension" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
-  result = (double)((FormFactorLorentz const *)arg1)->radialExtension();
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
+  result = (double)((FormFactorLorentzSphere const *)arg1)->radialExtension();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -99316,9 +99317,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorLorentz_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorLorentzSphere_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   cvector_t arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -99327,26 +99328,26 @@ SWIGINTERN PyObject *_wrap_FormFactorLorentz_evaluate_for_q(PyObject *SWIGUNUSED
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "FormFactorLorentz_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "FormFactorLorentzSphere_evaluate_for_q", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentz_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorLorentzSphere_evaluate_for_q" "', argument " "1"" of type '" "FormFactorLorentzSphere const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorLorentzSphere_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLorentz_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorLorentzSphere_evaluate_for_q" "', argument " "2"" of type '" "cvector_t""'");
     } else {
       cvector_t * temp = reinterpret_cast< cvector_t * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((FormFactorLorentz const *)arg1)->evaluate_for_q(arg2);
+  result = ((FormFactorLorentzSphere const *)arg1)->evaluate_for_q(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -99354,20 +99355,20 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_FormFactorLorentz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorLorentzSphere(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorLorentz *arg1 = (FormFactorLorentz *) 0 ;
+  FormFactorLorentzSphere *arg1 = (FormFactorLorentzSphere *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentz, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorLorentzSphere, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLorentz" "', argument " "1"" of type '" "FormFactorLorentz *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorLorentzSphere" "', argument " "1"" of type '" "FormFactorLorentzSphere *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorLorentz * >(argp1);
+  arg1 = reinterpret_cast< FormFactorLorentzSphere * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -99376,14 +99377,14 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorLorentzSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLorentz, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLorentzSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorLorentz_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorLorentzSphere_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
@@ -125029,12 +125030,12 @@ static PyMethodDef SwigMethods[] = {
 		"INodeVisitor_visit(INodeVisitor self, FormFactorEllipsoidalCylinder arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorFullSphere arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorFullSpheroid arg2)\n"
-		"INodeVisitor_visit(INodeVisitor self, FormFactorGauss arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorGaussSphere arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorHemiEllipsoid arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorIcosahedron arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorLongBoxGauss arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorLongBoxLorentz arg2)\n"
-		"INodeVisitor_visit(INodeVisitor self, FormFactorLorentz arg2)\n"
+		"INodeVisitor_visit(INodeVisitor self, FormFactorLorentzSphere arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPrism3 arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPrism6 arg2)\n"
 		"INodeVisitor_visit(INodeVisitor self, FormFactorPyramid arg2)\n"
@@ -131893,100 +131894,80 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_FormFactorDebyeBueche", _wrap_delete_FormFactorDebyeBueche, METH_O, "delete_FormFactorDebyeBueche(FormFactorDebyeBueche self)"},
 	 { "FormFactorDebyeBueche_swigregister", FormFactorDebyeBueche_swigregister, METH_O, NULL},
 	 { "FormFactorDebyeBueche_swiginit", FormFactorDebyeBueche_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorGauss", _wrap_new_FormFactorGauss, METH_VARARGS, "\n"
-		"FormFactorGauss(double length)\n"
-		"new_FormFactorGauss(double width, double height) -> FormFactorGauss\n"
-		"FormFactorGauss::FormFactorGauss(double width, double height)\n"
-		"\n"
+	 { "new_FormFactorGaussSphere", _wrap_new_FormFactorGaussSphere, METH_VARARGS, "\n"
+		"FormFactorGaussSphere(double length)\n"
+		"new_FormFactorGaussSphere(double width, double height) -> FormFactorGaussSphere\n"
 		""},
-	 { "FormFactorGauss_clone", _wrap_FormFactorGauss_clone, METH_O, "\n"
-		"FormFactorGauss_clone(FormFactorGauss self) -> FormFactorGauss\n"
-		"FormFactorGauss* FormFactorGauss::clone() const override final\n"
+	 { "FormFactorGaussSphere_clone", _wrap_FormFactorGaussSphere_clone, METH_O, "\n"
+		"FormFactorGaussSphere_clone(FormFactorGaussSphere self) -> FormFactorGaussSphere\n"
+		"IFormFactorBorn* IFormFactorBorn::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorGauss_accept", _wrap_FormFactorGauss_accept, METH_VARARGS, "\n"
-		"FormFactorGauss_accept(FormFactorGauss self, INodeVisitor visitor)\n"
-		"void FormFactorGauss::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorGaussSphere_accept", _wrap_FormFactorGaussSphere_accept, METH_VARARGS, "\n"
+		"FormFactorGaussSphere_accept(FormFactorGaussSphere self, INodeVisitor visitor)\n"
+		"virtual void INode::accept(INodeVisitor *visitor) const =0\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorGauss_getWidth", _wrap_FormFactorGauss_getWidth, METH_O, "\n"
-		"FormFactorGauss_getWidth(FormFactorGauss self) -> double\n"
-		"double FormFactorGauss::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorGauss_getHeight", _wrap_FormFactorGauss_getHeight, METH_O, "\n"
-		"FormFactorGauss_getHeight(FormFactorGauss self) -> double\n"
-		"double FormFactorGauss::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorGauss_radialExtension", _wrap_FormFactorGauss_radialExtension, METH_O, "\n"
-		"FormFactorGauss_radialExtension(FormFactorGauss self) -> double\n"
-		"double FormFactorGauss::radialExtension() const override final\n"
+	 { "FormFactorGaussSphere_getWidth", _wrap_FormFactorGaussSphere_getWidth, METH_O, "FormFactorGaussSphere_getWidth(FormFactorGaussSphere self) -> double"},
+	 { "FormFactorGaussSphere_getHeight", _wrap_FormFactorGaussSphere_getHeight, METH_O, "FormFactorGaussSphere_getHeight(FormFactorGaussSphere self) -> double"},
+	 { "FormFactorGaussSphere_radialExtension", _wrap_FormFactorGaussSphere_radialExtension, METH_O, "\n"
+		"FormFactorGaussSphere_radialExtension(FormFactorGaussSphere self) -> double\n"
+		"virtual double IFormFactor::radialExtension() 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"
 		""},
-	 { "FormFactorGauss_evaluate_for_q", _wrap_FormFactorGauss_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorGauss_evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const override final\n"
+	 { "FormFactorGaussSphere_evaluate_for_q", _wrap_FormFactorGaussSphere_evaluate_for_q, METH_VARARGS, "\n"
+		"FormFactorGaussSphere_evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t\n"
+		"virtual complex_t IFormFactorBorn::evaluate_for_q(cvector_t q) const =0\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
-	 { "delete_FormFactorGauss", _wrap_delete_FormFactorGauss, METH_O, "delete_FormFactorGauss(FormFactorGauss self)"},
-	 { "FormFactorGauss_swigregister", FormFactorGauss_swigregister, METH_O, NULL},
-	 { "FormFactorGauss_swiginit", FormFactorGauss_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorLorentz", _wrap_new_FormFactorLorentz, METH_VARARGS, "\n"
-		"FormFactorLorentz(double length)\n"
-		"new_FormFactorLorentz(double width, double height) -> FormFactorLorentz\n"
-		"FormFactorLorentz::FormFactorLorentz(double width, double height)\n"
-		"\n"
+	 { "delete_FormFactorGaussSphere", _wrap_delete_FormFactorGaussSphere, METH_O, "delete_FormFactorGaussSphere(FormFactorGaussSphere self)"},
+	 { "FormFactorGaussSphere_swigregister", FormFactorGaussSphere_swigregister, METH_O, NULL},
+	 { "FormFactorGaussSphere_swiginit", FormFactorGaussSphere_swiginit, METH_VARARGS, NULL},
+	 { "new_FormFactorLorentzSphere", _wrap_new_FormFactorLorentzSphere, METH_VARARGS, "\n"
+		"FormFactorLorentzSphere(double length)\n"
+		"new_FormFactorLorentzSphere(double width, double height) -> FormFactorLorentzSphere\n"
 		""},
-	 { "FormFactorLorentz_clone", _wrap_FormFactorLorentz_clone, METH_O, "\n"
-		"FormFactorLorentz_clone(FormFactorLorentz self) -> FormFactorLorentz\n"
-		"FormFactorLorentz* FormFactorLorentz::clone() const override final\n"
+	 { "FormFactorLorentzSphere_clone", _wrap_FormFactorLorentzSphere_clone, METH_O, "\n"
+		"FormFactorLorentzSphere_clone(FormFactorLorentzSphere self) -> FormFactorLorentzSphere\n"
+		"IFormFactorBorn* IFormFactorBorn::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
 		""},
-	 { "FormFactorLorentz_accept", _wrap_FormFactorLorentz_accept, METH_VARARGS, "\n"
-		"FormFactorLorentz_accept(FormFactorLorentz self, INodeVisitor visitor)\n"
-		"void FormFactorLorentz::accept(INodeVisitor *visitor) const override final\n"
+	 { "FormFactorLorentzSphere_accept", _wrap_FormFactorLorentzSphere_accept, METH_VARARGS, "\n"
+		"FormFactorLorentzSphere_accept(FormFactorLorentzSphere self, INodeVisitor visitor)\n"
+		"virtual void INode::accept(INodeVisitor *visitor) const =0\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
 		""},
-	 { "FormFactorLorentz_getWidth", _wrap_FormFactorLorentz_getWidth, METH_O, "\n"
-		"FormFactorLorentz_getWidth(FormFactorLorentz self) -> double\n"
-		"double FormFactorLorentz::getWidth() const\n"
-		"\n"
-		""},
-	 { "FormFactorLorentz_getHeight", _wrap_FormFactorLorentz_getHeight, METH_O, "\n"
-		"FormFactorLorentz_getHeight(FormFactorLorentz self) -> double\n"
-		"double FormFactorLorentz::getHeight() const\n"
-		"\n"
-		""},
-	 { "FormFactorLorentz_radialExtension", _wrap_FormFactorLorentz_radialExtension, METH_O, "\n"
-		"FormFactorLorentz_radialExtension(FormFactorLorentz self) -> double\n"
-		"double FormFactorLorentz::radialExtension() const override final\n"
+	 { "FormFactorLorentzSphere_getWidth", _wrap_FormFactorLorentzSphere_getWidth, METH_O, "FormFactorLorentzSphere_getWidth(FormFactorLorentzSphere self) -> double"},
+	 { "FormFactorLorentzSphere_getHeight", _wrap_FormFactorLorentzSphere_getHeight, METH_O, "FormFactorLorentzSphere_getHeight(FormFactorLorentzSphere self) -> double"},
+	 { "FormFactorLorentzSphere_radialExtension", _wrap_FormFactorLorentzSphere_radialExtension, METH_O, "\n"
+		"FormFactorLorentzSphere_radialExtension(FormFactorLorentzSphere self) -> double\n"
+		"virtual double IFormFactor::radialExtension() 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"
 		""},
-	 { "FormFactorLorentz_evaluate_for_q", _wrap_FormFactorLorentz_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorLorentz_evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const override final\n"
+	 { "FormFactorLorentzSphere_evaluate_for_q", _wrap_FormFactorLorentzSphere_evaluate_for_q, METH_VARARGS, "\n"
+		"FormFactorLorentzSphere_evaluate_for_q(FormFactorLorentzSphere self, cvector_t q) -> complex_t\n"
+		"virtual complex_t IFormFactorBorn::evaluate_for_q(cvector_t q) const =0\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
-	 { "delete_FormFactorLorentz", _wrap_delete_FormFactorLorentz, METH_O, "delete_FormFactorLorentz(FormFactorLorentz self)"},
-	 { "FormFactorLorentz_swigregister", FormFactorLorentz_swigregister, METH_O, NULL},
-	 { "FormFactorLorentz_swiginit", FormFactorLorentz_swiginit, METH_VARARGS, NULL},
+	 { "delete_FormFactorLorentzSphere", _wrap_delete_FormFactorLorentzSphere, METH_O, "delete_FormFactorLorentzSphere(FormFactorLorentzSphere self)"},
+	 { "FormFactorLorentzSphere_swigregister", FormFactorLorentzSphere_swigregister, METH_O, NULL},
+	 { "FormFactorLorentzSphere_swiginit", FormFactorLorentzSphere_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorOrnsteinZernike", _wrap_new_FormFactorOrnsteinZernike, METH_VARARGS, "\n"
 		"new_FormFactorOrnsteinZernike(double I0, double xi_xy, double xi_z) -> FormFactorOrnsteinZernike\n"
 		"FormFactorOrnsteinZernike::FormFactorOrnsteinZernike(double I0, double xi_xy, double xi_z)\n"
@@ -135353,6 +135334,9 @@ static void *_p_FormFactorFullSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSE
 static void *_p_FormFactorTruncatedSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorTruncatedSphere *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorLorentzSphere *) x));
+}
 static void *_p_FormFactorRipple1GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
@@ -135395,6 +135379,9 @@ static void *_p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn(void *x, int
 static void *_p_FormFactorHollowSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorHollowSphere *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorBorn *)  ((FormFactorGaussSphere *) x));
+}
 static void *_p_FormFactorDotTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorDot *) x));
 }
@@ -135410,9 +135397,6 @@ static void *_p_FormFactorRipple1LorentzTo_p_IFormFactorBorn(void *x, int *SWIGU
 static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((FormFactorLongBoxLorentz *) x));
 }
-static void *_p_FormFactorLorentzTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorLorentz *) x));
-}
 static void *_p_ProfileBarTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *)  ((ProfileBar *) x));
 }
@@ -135428,9 +135412,6 @@ static void *_p_FormFactorPrism3To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPAR
 static void *_p_FormFactorRipple2GaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorBorn *) (ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorBorn *)  ((FormFactorGauss *) x));
-}
 static void *_p_VariableBinAxisTo_p_IAxis(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IAxis *)  ((VariableBinAxis *) x));
 }
@@ -135695,9 +135676,6 @@ static void *_p_FootprintGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_FormFactorDotTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorDot *) x));
 }
-static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
-}
 static void *_p_FormFactorRipple2GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
@@ -135725,6 +135703,9 @@ static void *_p_ScanResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_IDetectorResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IDetectorResolution *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentzSphere *) x));
+}
 static void *_p_FormFactorTruncatedSphereTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
@@ -135764,6 +135745,9 @@ static void *_p_AngularSpecScanTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_QSpecScanTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISpecularScan *) ((QSpecScan *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGaussSphere *) x));
+}
 static void *_p_FormFactorHollowSphereTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHollowSphere *) x));
 }
@@ -135917,9 +135901,6 @@ static void *_p_FormFactorPrism3To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorHemiEllipsoidTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHemiEllipsoid *) x));
 }
-static void *_p_FormFactorLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
-}
 static void *_p_FormFactorRipple2LorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
 }
@@ -136196,6 +136177,9 @@ static void *_p_FormFactorFullSphereTo_p_IParameterized(void *x, int *SWIGUNUSED
 static void *_p_FormFactorTruncatedSphereTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentzSphere *) x));
+}
 static void *_p_IFormFactorTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *) ((IFormFactor *) x));
 }
@@ -136271,9 +136255,6 @@ static void *_p_RotationZTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorRipple2GaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorGaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
-}
 static void *_p_IFormFactorBornTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
 }
@@ -136427,6 +136408,9 @@ static void *_p_IFTDecayFunction2DTo_p_IParameterized(void *x, int *SWIGUNUSEDPA
 static void *_p_FormFactorHollowSphereTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHollowSphere *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGaussSphere *) x));
+}
 static void *_p_Simulation2DTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(Simulation *) ((Simulation2D *) x));
 }
@@ -136466,9 +136450,6 @@ static void *_p_FormFactorRipple1LorentzTo_p_IParameterized(void *x, int *SWIGUN
 static void *_p_FormFactorRipple2LorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
 }
-static void *_p_FormFactorLorentzTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IParameterized *) (INode *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
-}
 static void *_p_LatticeTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IParameterized *) (INode *) ((Lattice *) x));
 }
@@ -136547,6 +136528,9 @@ static void *_p_FormFactorTruncatedCubeTo_p_IFormFactor(void *x, int *SWIGUNUSED
 static void *_p_FormFactorTruncatedSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentzSphere *) x));
+}
 static void *_p_FormFactorRipple1GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple1 *) ((FormFactorRipple1Gauss *) x));
 }
@@ -136595,6 +136579,9 @@ static void *_p_IFormFactorBornTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_FormFactorHollowSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorHollowSphere *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGaussSphere *) x));
+}
 static void *_p_FormFactorDotTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorDot *) x));
 }
@@ -136613,9 +136600,6 @@ static void *_p_FormFactorWeightedTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(
 static void *_p_FormFactorRipple2LorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
 }
-static void *_p_FormFactorLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLorentz *) x));
-}
 static void *_p_ProfileBarTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *) ((ProfileBar *) x));
 }
@@ -136631,9 +136615,6 @@ static void *_p_FormFactorPrism3To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FormFactorRipple2GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactor *) (IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorGauss *) x));
-}
 static void *_p_SampleBuilderFactoryTo_p_IFactoryT_std__string_IMultiLayerBuilder_t(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFactory< std::string,IMultiLayerBuilder > *)  ((SampleBuilderFactory *) x));
 }
@@ -136724,6 +136705,9 @@ static void *_p_FormFactorFullSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_FormFactorTruncatedSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentzSphere *) x));
+}
 static void *_p_IFormFactorTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *)  ((IFormFactor *) x));
 }
@@ -136772,9 +136756,6 @@ static void *_p_RotationZTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_FormFactorRipple2GaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorGaussTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
-}
 static void *_p_IFormFactorBornTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((IFormFactorBorn *) x));
 }
@@ -136859,6 +136840,9 @@ static void *_p_InterferenceFunction2DParaCrystalTo_p_ISample(void *x, int *SWIG
 static void *_p_FormFactorHollowSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorHollowSphere *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorGaussSphere *) x));
+}
 static void *_p_FormFactorWeightedTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *) ((FormFactorWeighted *) x));
 }
@@ -136889,9 +136873,6 @@ static void *_p_InterferenceFunction3DLatticeTo_p_ISample(void *x, int *SWIGUNUS
 static void *_p_FormFactorRipple2LorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
 }
-static void *_p_FormFactorLorentzTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
-}
 static void *_p_RotationEulerTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISample *) (IRotation *) ((RotationEuler *) x));
 }
@@ -137042,6 +137023,9 @@ static void *_p_FormFactorFullSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_FormFactorTruncatedSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x));
 }
+static void *_p_FormFactorLorentzSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentzSphere *) x));
+}
 static void *_p_IFormFactorTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *) ((IFormFactor *) x));
 }
@@ -137117,9 +137101,6 @@ static void *_p_RotationZTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_FormFactorRipple2GaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Gauss *) x));
 }
-static void *_p_FormFactorGaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
-}
 static void *_p_IFormFactorBornTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
 }
@@ -137270,6 +137251,9 @@ static void *_p_IFTDecayFunction2DTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorHollowSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHollowSphere *) x));
 }
+static void *_p_FormFactorGaussSphereTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGaussSphere *) x));
+}
 static void *_p_Simulation2DTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (Simulation *) ((Simulation2D *) x));
 }
@@ -137309,9 +137293,6 @@ static void *_p_FormFactorRipple1LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(
 static void *_p_FormFactorRipple2LorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(ProfileRipple2 *) ((FormFactorRipple2Lorentz *) x));
 }
-static void *_p_FormFactorLorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLorentz *) x));
-}
 static void *_p_LatticeTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *)  ((Lattice *) x));
 }
@@ -137589,13 +137570,13 @@ static swig_type_info _swigt__p_FormFactorDot = {"_p_FormFactorDot", "FormFactor
 static swig_type_info _swigt__p_FormFactorEllipsoidalCylinder = {"_p_FormFactorEllipsoidalCylinder", "FormFactorEllipsoidalCylinder *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorFullSphere = {"_p_FormFactorFullSphere", "FormFactorFullSphere *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorFullSpheroid = {"_p_FormFactorFullSpheroid", "FormFactorFullSpheroid *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorGauss = {"_p_FormFactorGauss", "FormFactorGauss *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorGaussSphere = {"_p_FormFactorGaussSphere", "FormFactorGaussSphere *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorHemiEllipsoid = {"_p_FormFactorHemiEllipsoid", "FormFactorHemiEllipsoid *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorHollowSphere = {"_p_FormFactorHollowSphere", "FormFactorHollowSphere *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorIcosahedron = {"_p_FormFactorIcosahedron", "FormFactorIcosahedron *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_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_FormFactorLorentz = {"_p_FormFactorLorentz", "FormFactorLorentz *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorLorentzSphere = {"_p_FormFactorLorentzSphere", "FormFactorLorentzSphere *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorOrnsteinZernike = {"_p_FormFactorOrnsteinZernike", "FormFactorOrnsteinZernike *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPolygonalPrism = {"_p_FormFactorPolygonalPrism", "FormFactorPolygonalPrism *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorPolygonalSurface = {"_p_FormFactorPolygonalSurface", "FormFactorPolygonalSurface *", 0, 0, (void*)0, 0};
@@ -137935,13 +137916,13 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorEllipsoidalCylinder,
   &_swigt__p_FormFactorFullSphere,
   &_swigt__p_FormFactorFullSpheroid,
-  &_swigt__p_FormFactorGauss,
+  &_swigt__p_FormFactorGaussSphere,
   &_swigt__p_FormFactorHemiEllipsoid,
   &_swigt__p_FormFactorHollowSphere,
   &_swigt__p_FormFactorIcosahedron,
   &_swigt__p_FormFactorLongBoxGauss,
   &_swigt__p_FormFactorLongBoxLorentz,
-  &_swigt__p_FormFactorLorentz,
+  &_swigt__p_FormFactorLorentzSphere,
   &_swigt__p_FormFactorOrnsteinZernike,
   &_swigt__p_FormFactorPolygonalPrism,
   &_swigt__p_FormFactorPolygonalSurface,
@@ -138281,13 +138262,13 @@ static swig_cast_info _swigc__p_FormFactorDot[] = {  {&_swigt__p_FormFactorDot,
 static swig_cast_info _swigc__p_FormFactorEllipsoidalCylinder[] = {  {&_swigt__p_FormFactorEllipsoidalCylinder, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorFullSphere[] = {  {&_swigt__p_FormFactorFullSphere, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorFullSpheroid[] = {  {&_swigt__p_FormFactorFullSpheroid, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorGauss[] = {  {&_swigt__p_FormFactorGauss, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorGaussSphere[] = {  {&_swigt__p_FormFactorGaussSphere, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorHemiEllipsoid[] = {  {&_swigt__p_FormFactorHemiEllipsoid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorHollowSphere[] = {  {&_swigt__p_FormFactorHollowSphere, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorIcosahedron[] = {  {&_swigt__p_FormFactorIcosahedron, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_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_FormFactorLorentz[] = {  {&_swigt__p_FormFactorLorentz, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorLorentzSphere[] = {  {&_swigt__p_FormFactorLorentzSphere, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorOrnsteinZernike[] = {  {&_swigt__p_FormFactorOrnsteinZernike, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPolygonalPrism[] = {  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_FormFactorPolygonalPrism, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_FormFactorPolygonalPrism, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, 0, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_FormFactorPolygonalPrism, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorPolygonalSurface[] = {  {&_swigt__p_FormFactorPolygonalSurface, 0, 0, 0},{0, 0, 0, 0}};
@@ -138318,7 +138299,7 @@ static swig_cast_info _swigc__p_IAbstractParticle[] = {  {&_swigt__p_ParticleCom
 static swig_cast_info _swigc__p_IAxis[] = {  {&_swigt__p_IAxis, 0, 0, 0},  {&_swigt__p_VariableBinAxis, _p_VariableBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_ConstKBinAxis, _p_ConstKBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_CustomBinAxis, _p_CustomBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_FixedBinAxis, _p_FixedBinAxisTo_p_IAxis, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IBackground[] = {  {&_swigt__p_IBackground, 0, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IBackground, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IBackground, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IChiSquaredModule[] = {  {&_swigt__p_IChiSquaredModule, 0, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_IChiSquaredModule, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGate, _p_RangedDistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_IUnitConverter, _p_IUnitConverterTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistribution, _p_RangedDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGaussian, _p_RangedDistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionCosine, _p_RangedDistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLogNormal, _p_RangedDistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLorentz, _p_RangedDistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGate, _p_RangedDistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_IUnitConverter, _p_IUnitConverterTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistribution, _p_RangedDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_ICloneable, 0, 0},  {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionGaussian, _p_RangedDistributionGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionCosine, _p_RangedDistributionCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLogNormal, _p_RangedDistributionLogNormalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_RangedDistributionLorentz, _p_RangedDistributionLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IClusteredParticles[] = {  {&_swigt__p_IClusteredParticles, 0, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IClusteredParticles, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector[] = {  {&_swigt__p_IDetector, 0, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IDetector, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
@@ -138331,8 +138312,8 @@ static swig_cast_info _swigc__p_IFTDistribution2D[] = {  {&_swigt__p_FTDistribut
 static swig_cast_info _swigc__p_IFactoryT_std__string_IMultiLayerBuilder_t[] = {  {&_swigt__p_IFactoryT_std__string_IMultiLayerBuilder_t, 0, 0, 0},  {&_swigt__p_SampleBuilderFactory, _p_SampleBuilderFactoryTo_p_IFactoryT_std__string_IMultiLayerBuilder_t, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFactoryT_std__string_Simulation_t[] = {  {&_swigt__p_SimulationFactory, _p_SimulationFactoryTo_p_IFactoryT_std__string_Simulation_t, 0, 0},  {&_swigt__p_IFactoryT_std__string_Simulation_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFootprintFactor[] = {  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IFootprintFactor, 0, 0},  {&_swigt__p_IFootprintFactor, 0, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IFootprintFactor, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactor[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactor[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactor, 0, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactorBorn[] = {  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_IFormFactorBorn, 0, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormFactorDecorator[] = {  {&_swigt__p_IFormFactorDecorator, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IHistogram[] = {  {&_swigt__p_IHistogram, 0, 0, 0},  {&_swigt__p_Histogram2D, _p_Histogram2DTo_p_IHistogram, 0, 0},  {&_swigt__p_Histogram1D, _p_Histogram1DTo_p_IHistogram, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IIntensityFunction[] = {  {&_swigt__p_IntensityFunctionSqrt, _p_IntensityFunctionSqrtTo_p_IIntensityFunction, 0, 0},  {&_swigt__p_IIntensityFunction, 0, 0, 0},  {&_swigt__p_IntensityFunctionLog, _p_IntensityFunctionLogTo_p_IIntensityFunction, 0, 0},{0, 0, 0, 0}};
@@ -138341,18 +138322,18 @@ static swig_cast_info _swigc__p_IInterferenceFunction[] = {  {&_swigt__p_Interfe
 static swig_cast_info _swigc__p_ILatticeOrientation[] = {  {&_swigt__p_ILatticeOrientation, 0, 0, 0},  {&_swigt__p_MillerIndexOrientation, _p_MillerIndexOrientationTo_p_ILatticeOrientation, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ILayout[] = {  {&_swigt__p_ILayout, 0, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ILayout, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMultiLayerBuilder[] = {  {&_swigt__p_IMultiLayerBuilder, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INode, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INode, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_INode, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INode, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INode, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INode, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INode, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INode, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INode, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INode, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INode, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_INode, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INode, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INode, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_INode, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_INode, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INode, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_INode, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INode, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INode, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_INode, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INode, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_INode, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INode, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_INode, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INode, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INode, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_INode, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INode, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_INode, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INode, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INodeVisitor[] = {  {&_swigt__p_INodeVisitor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObservable[] = {  {&_swigt__p_IObservable, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObserver[] = {  {&_swigt__p_IObserver, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParameterT_double_t[] = {  {&_swigt__p_IParameterT_double_t, 0, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_IParameterT_double_t, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IParameterized[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IParameterized, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_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_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_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_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IParameterized, 0, 0},  {&_swigt__p_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_IFootprintFactor, _p_IFootprintFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_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_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0},  {&_swigt__p_IParameterized, 0, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IParameterized, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_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_IBackground, _p_IBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_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_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0},  {&_swigt__p_DistributionTrapezoid, _p_DistributionTrapezoidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_DepthProbeSimulation, _p_DepthProbeSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IParameterized, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_IParameterized, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_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_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_IParameterized, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_IParameterized, 0, 0},  {&_swigt__p_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_IFootprintFactor, _p_IFootprintFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_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_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_IParameterized, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0},  {&_swigt__p_IParameterized, 0, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_IParameterized, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0},  {&_swigt__p_Simulation2D, _p_Simulation2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0},  {&_swigt__p_Lattice, _p_LatticeTo_p_IParameterized, 0, 0},  {&_swigt__p_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_IParticle[] = {  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParticle, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParticle, 0, 0},  {&_swigt__p_IParticle, 0, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParticle, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParticle, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPeakShape[] = {  {&_swigt__p_IPeakShape, 0, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_IPeakShape, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPixel[] = {  {&_swigt__p_RectangularPixel, _p_RectangularPixelTo_p_IPixel, 0, 0},  {&_swigt__p_SphericalPixel, _p_SphericalPixelTo_p_IPixel, 0, 0},  {&_swigt__p_IPixel, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IResolutionFunction2D[] = {  {&_swigt__p_IResolutionFunction2D, 0, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IResolutionFunction2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IRotation[] = {  {&_swigt__p_RotationY, _p_RotationYTo_p_IRotation, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IRotation, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IRotation, 0, 0},  {&_swigt__p_IRotation, 0, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IRotation, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IRotation, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_ISample, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ISample, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ISample, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ISample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Box, _p_FormFactorRipple2BoxTo_p_ISample, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesFisherGaussPeakShape, _p_VonMisesFisherGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_VonMisesGaussPeakShape, _p_VonMisesGaussPeakShapeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDebyeBueche, _p_FormFactorDebyeBuecheTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_ProfileBar, _p_ProfileBarTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentzSphere, _p_FormFactorLorentzSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionHardDisk, _p_InterferenceFunctionHardDiskTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Box, _p_FormFactorRipple1BoxTo_p_ISample, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Gauss, _p_FormFactorRipple2GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionTwin, _p_InterferenceFunctionTwinTo_p_ISample, 0, 0},  {&_swigt__p_ProfileRipple1, _p_ProfileRipple1To_p_ISample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_ProfileRipple2, _p_ProfileRipple2To_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Gauss, _p_FormFactorRipple1GaussTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorOrnsteinZernike, _p_FormFactorOrnsteinZernikeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDot, _p_FormFactorDotTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2Lorentz, _p_FormFactorRipple2LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1Lorentz, _p_FormFactorRipple1LorentzTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DSuperLattice, _p_InterferenceFunction2DSuperLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction3DLattice, _p_InterferenceFunction3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite2DLattice, _p_InterferenceFunctionFinite2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionFinite3DLattice, _p_InterferenceFunctionFinite3DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISelectionRule[] = {  {&_swigt__p_ISelectionRule, 0, 0, 0},  {&_swigt__p_SimpleSelectionRule, _p_SimpleSelectionRuleTo_p_ISelectionRule, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IShape2D[] = {  {&_swigt__p_Polygon, _p_PolygonTo_p_IShape2D, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_IShape2D, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_IShape2D, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_IShape2D, 0, 0},  {&_swigt__p_IShape2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISpecularScan[] = {  {&_swigt__p_AngularSpecScan, _p_AngularSpecScanTo_p_ISpecularScan, 0, 0},  {&_swigt__p_QSpecScan, _p_QSpecScanTo_p_ISpecularScan, 0, 0},  {&_swigt__p_ISpecularScan, 0, 0, 0},{0, 0, 0, 0}};
@@ -138627,13 +138608,13 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorEllipsoidalCylinder,
   _swigc__p_FormFactorFullSphere,
   _swigc__p_FormFactorFullSpheroid,
-  _swigc__p_FormFactorGauss,
+  _swigc__p_FormFactorGaussSphere,
   _swigc__p_FormFactorHemiEllipsoid,
   _swigc__p_FormFactorHollowSphere,
   _swigc__p_FormFactorIcosahedron,
   _swigc__p_FormFactorLongBoxGauss,
   _swigc__p_FormFactorLongBoxLorentz,
-  _swigc__p_FormFactorLorentz,
+  _swigc__p_FormFactorLorentzSphere,
   _swigc__p_FormFactorOrnsteinZernike,
   _swigc__p_FormFactorPolygonalPrism,
   _swigc__p_FormFactorPolygonalSurface,