diff --git a/Core/Aggregate/InterferenceFunction1DLattice.cpp b/Core/Aggregate/InterferenceFunction1DLattice.cpp
index 4c0dc7eea323ef545b39cac479827f0162f27eb4..4b4d45a1f631c5e49fd6d7f6b5ce97dd0b3a38f6 100644
--- a/Core/Aggregate/InterferenceFunction1DLattice.cpp
+++ b/Core/Aggregate/InterferenceFunction1DLattice.cpp
@@ -15,6 +15,7 @@
 #include "Core/Aggregate/InterferenceFunction1DLattice.h"
 #include "Core/Aggregate/FTDecay1D.h"
 #include "Core/Aggregate/FTDecay2D.h"
+#include "Core/Basics/Assert.h"
 #include "Core/Basics/Exceptions.h"
 #include "Core/Basics/MathConstants.h"
 #include "Core/Parametrization/RealParameter.h"
@@ -32,18 +33,18 @@ static const int min_points = 4;
 //! @param length: lattice constant in nanometers
 //! @param xi: rotation of lattice with respect to x-axis in radians
 InterferenceFunction1DLattice::InterferenceFunction1DLattice(double length, double xi)
-    : m_lattice_params(length, xi), m_na{0}
+    : m_length(length), m_xi(xi), m_na{0}
 {
     setName("Interference1DLattice");
-    registerParameter("Length", &m_lattice_params.m_length).setUnit("nm").setNonnegative();
-    registerParameter("Xi", &m_lattice_params.m_xi).setUnit("rad");
+    registerParameter("Length", &m_length).setUnit("nm").setNonnegative();
+    registerParameter("Xi", &m_xi).setUnit("rad");
 }
 
 InterferenceFunction1DLattice::~InterferenceFunction1DLattice() {}
 
 InterferenceFunction1DLattice* InterferenceFunction1DLattice::clone() const
 {
-    auto* ret = new InterferenceFunction1DLattice(m_lattice_params.m_length, m_lattice_params.m_xi);
+    auto* ret = new InterferenceFunction1DLattice(m_length, m_xi);
     ret->m_na = m_na;
     if (mP_decay)
         ret->setDecayFunction(*mP_decay);
@@ -57,7 +58,7 @@ void InterferenceFunction1DLattice::setDecayFunction(const IFTDecayFunction1D& d
     mP_decay.reset(decay.clone());
     registerChild(mP_decay.get());
     double decay_length = mP_decay->decayLength();
-    double qa_max = m_lattice_params.m_length * nmax / decay_length / M_TWOPI;
+    double qa_max = m_length * nmax / decay_length / M_TWOPI;
     m_na = static_cast<int>(std::lround(std::abs(qa_max) + 0.5));
     m_na = std::max(m_na, min_points);
 }
@@ -69,15 +70,13 @@ std::vector<const INode*> InterferenceFunction1DLattice::getChildren() const
 
 double InterferenceFunction1DLattice::iff_without_dw(const kvector_t q) const
 {
-    if (!mP_decay)
-        throw Exceptions::NullPointerException("InterferenceFunction1DLattice::evaluate"
-                                               " -> Error! No decay function defined.");
+    ASSERT(mP_decay);
     double result = 0.0;
     double qxr = q.x();
     double qyr = q.y();
     double qx_frac;
-    double xi = m_lattice_params.m_xi;
-    double a = m_lattice_params.m_length;
+    double xi = m_xi;
+    double a = m_length;
     double a_rec = M_TWOPI / a;
 
     // rotate the q vector to xi angle
diff --git a/Core/Aggregate/InterferenceFunction1DLattice.h b/Core/Aggregate/InterferenceFunction1DLattice.h
index c036cb8abbe0a14fc69c622d20530ccaf9d8f6bb..5768877219b1af55b97df6d67ef3a8eed87cdf40 100644
--- a/Core/Aggregate/InterferenceFunction1DLattice.h
+++ b/Core/Aggregate/InterferenceFunction1DLattice.h
@@ -16,7 +16,6 @@
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
 
 #include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Lattice/Lattice1DParameters.h"
 
 class IFTDecayFunction1D;
 
@@ -35,14 +34,16 @@ public:
 
     void setDecayFunction(const IFTDecayFunction1D& decay);
 
-    Lattice1DParameters getLatticeParameters() const { return m_lattice_params; }
+    double getLength() const { return m_length; }
+    double getXi() const { return m_xi; }
 
     std::vector<const INode*> getChildren() const override final;
 
 private:
     double iff_without_dw(const kvector_t q) const override final;
 
-    Lattice1DParameters m_lattice_params;
+    double m_length;
+    double m_xi;
     std::unique_ptr<IFTDecayFunction1D> mP_decay;
     int m_na; //!< determines the number of reciprocal lattice points to use
 };
diff --git a/Core/Export/SampleToPython.cpp b/Core/Export/SampleToPython.cpp
index 14290ce792040f24325bdb4b3dbfb93133f41e74..6844f9d9827ca31621b045e0c68a21fcaabbec4f 100644
--- a/Core/Export/SampleToPython.cpp
+++ b/Core/Export/SampleToPython.cpp
@@ -375,10 +375,9 @@ std::string SampleToPython::defineInterferenceFunctions() const
             result << indent() << it->second << " = ba.InterferenceFunctionNone()\n";
         else if (auto p_lattice_1d =
                      dynamic_cast<const InterferenceFunction1DLattice*>(interference)) {
-            const Lattice1DParameters latticeParameters = p_lattice_1d->getLatticeParameters();
             result << indent() << it->second << " = ba.InterferenceFunction1DLattice("
-                   << pyfmt::printNm(latticeParameters.m_length) << ", "
-                   << pyfmt::printDegrees(latticeParameters.m_xi) << ")\n";
+                   << pyfmt::printNm(p_lattice_1d->getLength()) << ", "
+                   << pyfmt::printDegrees(p_lattice_1d->getXi()) << ")\n";
 
             auto pdf = INodeUtils::OnlyChildOfType<IFTDecayFunction1D>(*p_lattice_1d);
 
diff --git a/Core/Lattice/Lattice1DParameters.h b/Core/Lattice/Lattice1DParameters.h
deleted file mode 100644
index b1f3e542e7714e1a13804ef4ff92b0567e02c7ca..0000000000000000000000000000000000000000
--- a/Core/Lattice/Lattice1DParameters.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/Lattice/Lattice1DParameters.h
-//! @brief     Defines class Lattice1DParameters.
-//!
-//! @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_LATTICE_LATTICE1DPARAMETERS_H
-#define BORNAGAIN_CORE_LATTICE_LATTICE1DPARAMETERS_H
-
-#include "Wrap/WinDllMacros.h"
-
-//! Basic parameters of a one-dimensional lattice.
-//! @ingroup samples
-
-class BA_CORE_API_ Lattice1DParameters
-{
-public:
-    Lattice1DParameters() : m_length(0), m_xi(0) {}
-    //! @param length: Lattice constant.
-    //! @param xi: Lattice rotation angle.
-    Lattice1DParameters(double length, double xi) : m_length(length), m_xi(xi) {}
-
-    double m_length;
-    double m_xi;
-};
-
-#endif // BORNAGAIN_CORE_LATTICE_LATTICE1DPARAMETERS_H
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index fcc28c641347656f01cf76e61d33176df62b653b..8f5a52bb710ee060f063e004443492dfa85facb0 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -97,10 +97,9 @@ void addRangedDistributionToItem(SessionItem* item, const RangedDistribution& ra
 void TransformFromDomain::set1DLatticeItem(SessionItem* item,
                                            const InterferenceFunction1DLattice& sample)
 {
-    Lattice1DParameters lattice_params = sample.getLatticeParameters();
-    item->setItemValue(InterferenceFunction1DLatticeItem::P_LENGTH, lattice_params.m_length);
+    item->setItemValue(InterferenceFunction1DLatticeItem::P_LENGTH, sample.getLength());
     item->setItemValue(InterferenceFunction1DLatticeItem::P_ROTATION_ANGLE,
-                       Units::rad2deg(lattice_params.m_xi));
+                       Units::rad2deg(sample.getXi()));
 
     auto pdf = OnlyChildOfType<IFTDecayFunction1D>(sample);
     QString group_name = InterferenceFunction1DLatticeItem::P_DECAY_FUNCTION;
diff --git a/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp b/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
index 878fb0375d970c38cb1ad87ad58260d61e79a87d..77cca438bc717e5ec60024a86d64daad48009e8a 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
@@ -105,9 +105,8 @@ Lattice1DPositionBuilder::~Lattice1DPositionBuilder() = default;
 std::vector<std::vector<double>> Lattice1DPositionBuilder::generatePositionsImpl(double layer_size,
                                                                                  double) const
 {
-    auto lattice_pars = mP_iff->getLatticeParameters();
-    double length = lattice_pars.m_length;
-    double xi = lattice_pars.m_xi;
+    const double length = mP_iff->getLength();
+    const double xi = mP_iff->getXi();
 
     // Take the maximum possible integer multiple of the lattice vector required
     // for populating particles correctly within the 3D model's boundaries
diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i
index 46ecdd8db3da0aca8858e21e752e9efc6904f94d..6169cda75d9eb7b459c76cafc5173f29328ec671 100644
--- a/Wrap/swig/libBornAgainCore.i
+++ b/Wrap/swig/libBornAgainCore.i
@@ -172,7 +172,6 @@
 #include "Core/Lattice/ILatticeOrientation.h"
 #include "Core/Lattice/ISelectionRule.h"
 #include "Core/Lattice/Lattice.h"
-#include "Core/Lattice/Lattice1DParameters.h"
 #include "Core/Lattice/Lattice2D.h"
 #include "Core/Lattice/LatticeUtils.h"
 #include "Core/Mask/Ellipse.h"
@@ -493,7 +492,6 @@
 %include "Core/Lattice/ILatticeOrientation.h"
 %include "Core/Lattice/ISelectionRule.h"
 %include "Core/Lattice/Lattice.h"
-%include "Core/Lattice/Lattice1DParameters.h"
 %include "Core/Lattice/Lattice2D.h"
 %include "Core/Lattice/LatticeUtils.h"
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 8d18addbbb26a29de7d345a3b6c736b77c3fb9bd..4eb0031ccaa5fe70f02a39be8d0110ca28bca5a6 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -12291,13 +12291,13 @@ class InterferenceFunction1DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction1DLattice_setDecayFunction(self, decay)
 
-    def getLatticeParameters(self):
-        r"""
-        getLatticeParameters(InterferenceFunction1DLattice self) -> Lattice1DParameters
-        Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const
+    def getLength(self):
+        r"""getLength(InterferenceFunction1DLattice self) -> double"""
+        return _libBornAgainCore.InterferenceFunction1DLattice_getLength(self)
 
-        """
-        return _libBornAgainCore.InterferenceFunction1DLattice_getLatticeParameters(self)
+    def getXi(self):
+        r"""getXi(InterferenceFunction1DLattice self) -> double"""
+        return _libBornAgainCore.InterferenceFunction1DLattice_getXi(self)
 
     def getChildren(self):
         r"""
@@ -22581,43 +22581,6 @@ def Lattice_createBCTLattice(a, c):
     r"""Lattice_createBCTLattice(double a, double c) -> Lattice"""
     return _libBornAgainCore.Lattice_createBCTLattice(a, c)
 
-class Lattice1DParameters(object):
-    r"""
-
-
-    Basic parameters of a one-dimensional lattice.
-
-    C++ includes: Lattice1DParameters.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-    __repr__ = _swig_repr
-
-    def __init__(self, *args):
-        r"""
-        __init__(Lattice1DParameters self) -> Lattice1DParameters
-        __init__(Lattice1DParameters self, double length, double xi) -> Lattice1DParameters
-        Lattice1DParameters::Lattice1DParameters(double length, double xi)
-
-        Parameters:
-        -----------
-
-        length: 
-         Lattice constant.
-
-        xi: 
-         Lattice rotation angle. 
-
-        """
-        _libBornAgainCore.Lattice1DParameters_swiginit(self, _libBornAgainCore.new_Lattice1DParameters(*args))
-    m_length = property(_libBornAgainCore.Lattice1DParameters_m_length_get, _libBornAgainCore.Lattice1DParameters_m_length_set, doc=r"""m_length : double""")
-    m_xi = property(_libBornAgainCore.Lattice1DParameters_m_xi_get, _libBornAgainCore.Lattice1DParameters_m_xi_set, doc=r"""m_xi : double""")
-    __swig_destroy__ = _libBornAgainCore.delete_Lattice1DParameters
-
-# Register Lattice1DParameters in _libBornAgainCore:
-_libBornAgainCore.Lattice1DParameters_swigregister(Lattice1DParameters)
-
 class Lattice2D(ICloneable, INode):
     r"""Proxy of C++ Lattice2D class."""
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index d59a9769d0b380cf37348561e3ce233feccb7e24..f0ad97511eaca3c86ababed27f6357b83032c8a8 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3241,175 +3241,174 @@ namespace Swig {
 #define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[173]
 #define SWIGTYPE_p_IterationInfo swig_types[174]
 #define SWIGTYPE_p_Lattice swig_types[175]
-#define SWIGTYPE_p_Lattice1DParameters swig_types[176]
-#define SWIGTYPE_p_Lattice2D swig_types[177]
-#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[178]
-#define SWIGTYPE_p_Layer swig_types[179]
-#define SWIGTYPE_p_LayerInterface swig_types[180]
-#define SWIGTYPE_p_LayerRoughness swig_types[181]
-#define SWIGTYPE_p_Line swig_types[182]
-#define SWIGTYPE_p_LorentzFisherPeakShape swig_types[183]
-#define SWIGTYPE_p_Material swig_types[184]
-#define SWIGTYPE_p_MesoCrystal swig_types[185]
-#define SWIGTYPE_p_MillerIndex swig_types[186]
-#define SWIGTYPE_p_MillerIndexOrientation swig_types[187]
-#define SWIGTYPE_p_MultiLayer swig_types[188]
-#define SWIGTYPE_p_NodeMeta swig_types[189]
-#define SWIGTYPE_p_OffSpecSimulation swig_types[190]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[191]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[192]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[193]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[194]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[195]
-#define SWIGTYPE_p_ParaMeta swig_types[196]
-#define SWIGTYPE_p_ParameterDistribution swig_types[197]
-#define SWIGTYPE_p_ParameterPool swig_types[198]
-#define SWIGTYPE_p_ParameterSample swig_types[199]
-#define SWIGTYPE_p_Particle swig_types[200]
-#define SWIGTYPE_p_ParticleComposition swig_types[201]
-#define SWIGTYPE_p_ParticleCoreShell swig_types[202]
-#define SWIGTYPE_p_ParticleDistribution swig_types[203]
-#define SWIGTYPE_p_ParticleLayout swig_types[204]
-#define SWIGTYPE_p_ParticleLimits swig_types[205]
-#define SWIGTYPE_p_PoissonNoiseBackground swig_types[206]
-#define SWIGTYPE_p_Polygon swig_types[207]
-#define SWIGTYPE_p_PolygonPrivate swig_types[208]
-#define SWIGTYPE_p_PolygonalTopology swig_types[209]
-#define SWIGTYPE_p_PolyhedralEdge swig_types[210]
-#define SWIGTYPE_p_PolyhedralFace swig_types[211]
-#define SWIGTYPE_p_PolyhedralTopology swig_types[212]
-#define SWIGTYPE_p_ProfileBar swig_types[213]
-#define SWIGTYPE_p_ProfileRipple1 swig_types[214]
-#define SWIGTYPE_p_ProfileRipple2 swig_types[215]
-#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[216]
-#define SWIGTYPE_p_PyBuilderCallback swig_types[217]
-#define SWIGTYPE_p_PyObserverCallback swig_types[218]
-#define SWIGTYPE_p_QSpecScan swig_types[219]
-#define SWIGTYPE_p_RangedDistribution swig_types[220]
-#define SWIGTYPE_p_RangedDistributionCosine swig_types[221]
-#define SWIGTYPE_p_RangedDistributionGate swig_types[222]
-#define SWIGTYPE_p_RangedDistributionGaussian swig_types[223]
-#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[224]
-#define SWIGTYPE_p_RangedDistributionLorentz swig_types[225]
-#define SWIGTYPE_p_RealLimits swig_types[226]
-#define SWIGTYPE_p_RealParameter swig_types[227]
-#define SWIGTYPE_p_Rectangle swig_types[228]
-#define SWIGTYPE_p_RectangularDetector swig_types[229]
-#define SWIGTYPE_p_RectangularPixel swig_types[230]
-#define SWIGTYPE_p_RegionOfInterest swig_types[231]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[232]
-#define SWIGTYPE_p_RotationEuler swig_types[233]
-#define SWIGTYPE_p_RotationX swig_types[234]
-#define SWIGTYPE_p_RotationY swig_types[235]
-#define SWIGTYPE_p_RotationZ swig_types[236]
-#define SWIGTYPE_p_RoughnessModelWrap swig_types[237]
-#define SWIGTYPE_p_RoughnessModelWrap__RoughnessModel swig_types[238]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[239]
-#define SWIGTYPE_p_SampleBuilderFactory swig_types[240]
-#define SWIGTYPE_p_ScanResolution swig_types[241]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[242]
-#define SWIGTYPE_p_Simulation swig_types[243]
-#define SWIGTYPE_p_Simulation2D swig_types[244]
-#define SWIGTYPE_p_SimulationFactory swig_types[245]
-#define SWIGTYPE_p_SimulationOptions swig_types[246]
-#define SWIGTYPE_p_SimulationResult swig_types[247]
-#define SWIGTYPE_p_SlicedParticle swig_types[248]
-#define SWIGTYPE_p_SlicingEffects swig_types[249]
-#define SWIGTYPE_p_SpecularDetector1D swig_types[250]
-#define SWIGTYPE_p_SpecularSimulation swig_types[251]
-#define SWIGTYPE_p_SphericalDetector swig_types[252]
-#define SWIGTYPE_p_SphericalPixel swig_types[253]
-#define SWIGTYPE_p_SquareLattice swig_types[254]
-#define SWIGTYPE_p_ThreadInfo swig_types[255]
-#define SWIGTYPE_p_Transform3D swig_types[256]
-#define SWIGTYPE_p_VariableBinAxis swig_types[257]
-#define SWIGTYPE_p_VarianceConstantFunction swig_types[258]
-#define SWIGTYPE_p_VarianceSimFunction swig_types[259]
-#define SWIGTYPE_p_VerticalLine swig_types[260]
-#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[261]
-#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[262]
-#define SWIGTYPE_p_WavevectorInfo swig_types[263]
-#define SWIGTYPE_p_ZLimits swig_types[264]
-#define SWIGTYPE_p_allocator_type swig_types[265]
-#define SWIGTYPE_p_bool swig_types[266]
-#define SWIGTYPE_p_char swig_types[267]
-#define SWIGTYPE_p_const_iterator swig_types[268]
-#define SWIGTYPE_p_corr_matrix_t swig_types[269]
-#define SWIGTYPE_p_difference_type swig_types[270]
-#define SWIGTYPE_p_double swig_types[271]
-#define SWIGTYPE_p_first_type swig_types[272]
-#define SWIGTYPE_p_int swig_types[273]
-#define SWIGTYPE_p_iterator swig_types[274]
-#define SWIGTYPE_p_key_type swig_types[275]
-#define SWIGTYPE_p_long_long swig_types[276]
-#define SWIGTYPE_p_mapped_type swig_types[277]
-#define SWIGTYPE_p_observer_t swig_types[278]
-#define SWIGTYPE_p_p_PyObject swig_types[279]
-#define SWIGTYPE_p_parameters_t swig_types[280]
-#define SWIGTYPE_p_second_type swig_types[281]
-#define SWIGTYPE_p_short swig_types[282]
-#define SWIGTYPE_p_signed_char swig_types[283]
-#define SWIGTYPE_p_size_type swig_types[284]
-#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[285]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[286]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[287]
-#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[288]
-#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[289]
-#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[290]
-#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[291]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[292]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[293]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[294]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[295]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[296]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[297]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[298]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[299]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[300]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[301]
-#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[302]
-#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[303]
-#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[304]
-#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[305]
-#define SWIGTYPE_p_std__invalid_argument swig_types[306]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[307]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[308]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[309]
-#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[310]
-#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[311]
-#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[312]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[313]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[314]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[315]
-#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[316]
-#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[317]
-#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[318]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[319]
-#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[320]
-#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[321]
-#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[322]
-#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[323]
-#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[324]
-#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[325]
-#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[326]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[327]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[328]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[329]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[330]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[331]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[332]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[333]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[334]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[335]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[336]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[337]
-#define SWIGTYPE_p_unsigned_char swig_types[338]
-#define SWIGTYPE_p_unsigned_int swig_types[339]
-#define SWIGTYPE_p_unsigned_long_long swig_types[340]
-#define SWIGTYPE_p_unsigned_short swig_types[341]
-#define SWIGTYPE_p_value_type swig_types[342]
-static swig_type_info *swig_types[344];
-static swig_module_info swig_module = {swig_types, 343, 0, 0, 0, 0};
+#define SWIGTYPE_p_Lattice2D swig_types[176]
+#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[177]
+#define SWIGTYPE_p_Layer swig_types[178]
+#define SWIGTYPE_p_LayerInterface swig_types[179]
+#define SWIGTYPE_p_LayerRoughness swig_types[180]
+#define SWIGTYPE_p_Line swig_types[181]
+#define SWIGTYPE_p_LorentzFisherPeakShape swig_types[182]
+#define SWIGTYPE_p_Material swig_types[183]
+#define SWIGTYPE_p_MesoCrystal swig_types[184]
+#define SWIGTYPE_p_MillerIndex swig_types[185]
+#define SWIGTYPE_p_MillerIndexOrientation swig_types[186]
+#define SWIGTYPE_p_MultiLayer swig_types[187]
+#define SWIGTYPE_p_NodeMeta swig_types[188]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[189]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[190]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[191]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[192]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[193]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[194]
+#define SWIGTYPE_p_ParaMeta swig_types[195]
+#define SWIGTYPE_p_ParameterDistribution swig_types[196]
+#define SWIGTYPE_p_ParameterPool swig_types[197]
+#define SWIGTYPE_p_ParameterSample swig_types[198]
+#define SWIGTYPE_p_Particle swig_types[199]
+#define SWIGTYPE_p_ParticleComposition swig_types[200]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[201]
+#define SWIGTYPE_p_ParticleDistribution swig_types[202]
+#define SWIGTYPE_p_ParticleLayout swig_types[203]
+#define SWIGTYPE_p_ParticleLimits swig_types[204]
+#define SWIGTYPE_p_PoissonNoiseBackground swig_types[205]
+#define SWIGTYPE_p_Polygon swig_types[206]
+#define SWIGTYPE_p_PolygonPrivate swig_types[207]
+#define SWIGTYPE_p_PolygonalTopology swig_types[208]
+#define SWIGTYPE_p_PolyhedralEdge swig_types[209]
+#define SWIGTYPE_p_PolyhedralFace swig_types[210]
+#define SWIGTYPE_p_PolyhedralTopology swig_types[211]
+#define SWIGTYPE_p_ProfileBar swig_types[212]
+#define SWIGTYPE_p_ProfileRipple1 swig_types[213]
+#define SWIGTYPE_p_ProfileRipple2 swig_types[214]
+#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[215]
+#define SWIGTYPE_p_PyBuilderCallback swig_types[216]
+#define SWIGTYPE_p_PyObserverCallback swig_types[217]
+#define SWIGTYPE_p_QSpecScan swig_types[218]
+#define SWIGTYPE_p_RangedDistribution swig_types[219]
+#define SWIGTYPE_p_RangedDistributionCosine swig_types[220]
+#define SWIGTYPE_p_RangedDistributionGate swig_types[221]
+#define SWIGTYPE_p_RangedDistributionGaussian swig_types[222]
+#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[223]
+#define SWIGTYPE_p_RangedDistributionLorentz swig_types[224]
+#define SWIGTYPE_p_RealLimits swig_types[225]
+#define SWIGTYPE_p_RealParameter swig_types[226]
+#define SWIGTYPE_p_Rectangle swig_types[227]
+#define SWIGTYPE_p_RectangularDetector swig_types[228]
+#define SWIGTYPE_p_RectangularPixel swig_types[229]
+#define SWIGTYPE_p_RegionOfInterest swig_types[230]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[231]
+#define SWIGTYPE_p_RotationEuler swig_types[232]
+#define SWIGTYPE_p_RotationX swig_types[233]
+#define SWIGTYPE_p_RotationY swig_types[234]
+#define SWIGTYPE_p_RotationZ swig_types[235]
+#define SWIGTYPE_p_RoughnessModelWrap swig_types[236]
+#define SWIGTYPE_p_RoughnessModelWrap__RoughnessModel swig_types[237]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[238]
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[239]
+#define SWIGTYPE_p_ScanResolution swig_types[240]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[241]
+#define SWIGTYPE_p_Simulation swig_types[242]
+#define SWIGTYPE_p_Simulation2D swig_types[243]
+#define SWIGTYPE_p_SimulationFactory swig_types[244]
+#define SWIGTYPE_p_SimulationOptions swig_types[245]
+#define SWIGTYPE_p_SimulationResult swig_types[246]
+#define SWIGTYPE_p_SlicedParticle swig_types[247]
+#define SWIGTYPE_p_SlicingEffects swig_types[248]
+#define SWIGTYPE_p_SpecularDetector1D swig_types[249]
+#define SWIGTYPE_p_SpecularSimulation swig_types[250]
+#define SWIGTYPE_p_SphericalDetector swig_types[251]
+#define SWIGTYPE_p_SphericalPixel swig_types[252]
+#define SWIGTYPE_p_SquareLattice swig_types[253]
+#define SWIGTYPE_p_ThreadInfo swig_types[254]
+#define SWIGTYPE_p_Transform3D swig_types[255]
+#define SWIGTYPE_p_VariableBinAxis swig_types[256]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[257]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[258]
+#define SWIGTYPE_p_VerticalLine swig_types[259]
+#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[260]
+#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[261]
+#define SWIGTYPE_p_WavevectorInfo swig_types[262]
+#define SWIGTYPE_p_ZLimits swig_types[263]
+#define SWIGTYPE_p_allocator_type swig_types[264]
+#define SWIGTYPE_p_bool swig_types[265]
+#define SWIGTYPE_p_char swig_types[266]
+#define SWIGTYPE_p_const_iterator swig_types[267]
+#define SWIGTYPE_p_corr_matrix_t swig_types[268]
+#define SWIGTYPE_p_difference_type swig_types[269]
+#define SWIGTYPE_p_double swig_types[270]
+#define SWIGTYPE_p_first_type swig_types[271]
+#define SWIGTYPE_p_int swig_types[272]
+#define SWIGTYPE_p_iterator swig_types[273]
+#define SWIGTYPE_p_key_type swig_types[274]
+#define SWIGTYPE_p_long_long swig_types[275]
+#define SWIGTYPE_p_mapped_type swig_types[276]
+#define SWIGTYPE_p_observer_t swig_types[277]
+#define SWIGTYPE_p_p_PyObject swig_types[278]
+#define SWIGTYPE_p_parameters_t swig_types[279]
+#define SWIGTYPE_p_second_type swig_types[280]
+#define SWIGTYPE_p_short swig_types[281]
+#define SWIGTYPE_p_signed_char swig_types[282]
+#define SWIGTYPE_p_size_type swig_types[283]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[284]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[285]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[286]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[287]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[288]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[289]
+#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[290]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[291]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[292]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[293]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[294]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[295]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[296]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[297]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[298]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[299]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[300]
+#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[301]
+#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[302]
+#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[303]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[304]
+#define SWIGTYPE_p_std__invalid_argument swig_types[305]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[306]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[307]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[308]
+#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[309]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[310]
+#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[311]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[312]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[313]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[314]
+#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[315]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[316]
+#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[317]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[318]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[319]
+#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[320]
+#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[321]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[322]
+#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[323]
+#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[324]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[325]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[326]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[327]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[328]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[329]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[330]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[331]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[332]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[333]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[334]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[335]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[336]
+#define SWIGTYPE_p_unsigned_char swig_types[337]
+#define SWIGTYPE_p_unsigned_int swig_types[338]
+#define SWIGTYPE_p_unsigned_long_long swig_types[339]
+#define SWIGTYPE_p_unsigned_short swig_types[340]
+#define SWIGTYPE_p_value_type swig_types[341]
+static swig_type_info *swig_types[343];
+static swig_module_info swig_module = {swig_types, 342, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -6991,7 +6990,6 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Core/Lattice/ILatticeOrientation.h"
 #include "Core/Lattice/ISelectionRule.h"
 #include "Core/Lattice/Lattice.h"
-#include "Core/Lattice/Lattice1DParameters.h"
 #include "Core/Lattice/Lattice2D.h"
 #include "Core/Lattice/LatticeUtils.h"
 #include "Core/Mask/Ellipse.h"
@@ -81658,23 +81656,46 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_InterferenceFunction1DLattice_getLatticeParameters(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_InterferenceFunction1DLattice_getLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   InterferenceFunction1DLattice *arg1 = (InterferenceFunction1DLattice *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  Lattice1DParameters result;
+  double result;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_InterferenceFunction1DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFunction1DLattice_getLatticeParameters" "', argument " "1"" of type '" "InterferenceFunction1DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFunction1DLattice_getLength" "', argument " "1"" of type '" "InterferenceFunction1DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< InterferenceFunction1DLattice * >(argp1);
-  result = ((InterferenceFunction1DLattice const *)arg1)->getLatticeParameters();
-  resultobj = SWIG_NewPointerObj((new Lattice1DParameters(static_cast< const Lattice1DParameters& >(result))), SWIGTYPE_p_Lattice1DParameters, SWIG_POINTER_OWN |  0 );
+  result = (double)((InterferenceFunction1DLattice const *)arg1)->getLength();
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_InterferenceFunction1DLattice_getXi(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  InterferenceFunction1DLattice *arg1 = (InterferenceFunction1DLattice *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  double result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_InterferenceFunction1DLattice, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFunction1DLattice_getXi" "', argument " "1"" of type '" "InterferenceFunction1DLattice const *""'"); 
+  }
+  arg1 = reinterpret_cast< InterferenceFunction1DLattice * >(argp1);
+  result = (double)((InterferenceFunction1DLattice const *)arg1)->getXi();
+  resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
   return NULL;
@@ -117310,222 +117331,6 @@ SWIGINTERN PyObject *Lattice_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_Lattice1DParameters__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *result = 0 ;
-  
-  if ((nobjs < 0) || (nobjs > 0)) SWIG_fail;
-  result = (Lattice1DParameters *)new Lattice1DParameters();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Lattice1DParameters, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_Lattice1DParameters__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  double arg1 ;
-  double arg2 ;
-  double val1 ;
-  int ecode1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  Lattice1DParameters *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_Lattice1DParameters" "', 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_Lattice1DParameters" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  result = (Lattice1DParameters *)new Lattice1DParameters(arg1,arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Lattice1DParameters, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_Lattice1DParameters(PyObject *self, PyObject *args) {
-  Py_ssize_t argc;
-  PyObject *argv[3] = {
-    0
-  };
-  
-  if (!(argc = SWIG_Python_UnpackTuple(args, "new_Lattice1DParameters", 0, 2, argv))) SWIG_fail;
-  --argc;
-  if (argc == 0) {
-    return _wrap_new_Lattice1DParameters__SWIG_0(self, argc, argv);
-  }
-  if (argc == 2) {
-    int _v;
-    {
-      int res = SWIG_AsVal_double(argv[0], NULL);
-      _v = SWIG_CheckState(res);
-    }
-    if (_v) {
-      {
-        int res = SWIG_AsVal_double(argv[1], NULL);
-        _v = SWIG_CheckState(res);
-      }
-      if (_v) {
-        return _wrap_new_Lattice1DParameters__SWIG_1(self, argc, argv);
-      }
-    }
-  }
-  
-fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_Lattice1DParameters'.\n"
-    "  Possible C/C++ prototypes are:\n"
-    "    Lattice1DParameters::Lattice1DParameters()\n"
-    "    Lattice1DParameters::Lattice1DParameters(double,double)\n");
-  return 0;
-}
-
-
-SWIGINTERN PyObject *_wrap_Lattice1DParameters_m_length_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *arg1 = (Lattice1DParameters *) 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "Lattice1DParameters_m_length_set", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Lattice1DParameters, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice1DParameters_m_length_set" "', argument " "1"" of type '" "Lattice1DParameters *""'"); 
-  }
-  arg1 = reinterpret_cast< Lattice1DParameters * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Lattice1DParameters_m_length_set" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  if (arg1) (arg1)->m_length = arg2;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Lattice1DParameters_m_length_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *arg1 = (Lattice1DParameters *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Lattice1DParameters, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice1DParameters_m_length_get" "', argument " "1"" of type '" "Lattice1DParameters *""'"); 
-  }
-  arg1 = reinterpret_cast< Lattice1DParameters * >(argp1);
-  result = (double) ((arg1)->m_length);
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Lattice1DParameters_m_xi_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *arg1 = (Lattice1DParameters *) 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "Lattice1DParameters_m_xi_set", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Lattice1DParameters, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice1DParameters_m_xi_set" "', argument " "1"" of type '" "Lattice1DParameters *""'"); 
-  }
-  arg1 = reinterpret_cast< Lattice1DParameters * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Lattice1DParameters_m_xi_set" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  if (arg1) (arg1)->m_xi = arg2;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Lattice1DParameters_m_xi_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *arg1 = (Lattice1DParameters *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Lattice1DParameters, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice1DParameters_m_xi_get" "', argument " "1"" of type '" "Lattice1DParameters *""'"); 
-  }
-  arg1 = reinterpret_cast< Lattice1DParameters * >(argp1);
-  result = (double) ((arg1)->m_xi);
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_Lattice1DParameters(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Lattice1DParameters *arg1 = (Lattice1DParameters *) 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_Lattice1DParameters, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Lattice1DParameters" "', argument " "1"" of type '" "Lattice1DParameters *""'"); 
-  }
-  arg1 = reinterpret_cast< Lattice1DParameters * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *Lattice1DParameters_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Lattice1DParameters, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *Lattice1DParameters_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
 SWIGINTERN PyObject *_wrap_Lattice2D_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Lattice2D *arg1 = (Lattice2D *) 0 ;
@@ -126246,11 +126051,8 @@ static PyMethodDef SwigMethods[] = {
 		"one-dimensional decay function in reciprocal space \n"
 		"\n"
 		""},
-	 { "InterferenceFunction1DLattice_getLatticeParameters", _wrap_InterferenceFunction1DLattice_getLatticeParameters, METH_O, "\n"
-		"InterferenceFunction1DLattice_getLatticeParameters(InterferenceFunction1DLattice self) -> Lattice1DParameters\n"
-		"Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const\n"
-		"\n"
-		""},
+	 { "InterferenceFunction1DLattice_getLength", _wrap_InterferenceFunction1DLattice_getLength, METH_O, "InterferenceFunction1DLattice_getLength(InterferenceFunction1DLattice self) -> double"},
+	 { "InterferenceFunction1DLattice_getXi", _wrap_InterferenceFunction1DLattice_getXi, METH_O, "InterferenceFunction1DLattice_getXi(InterferenceFunction1DLattice self) -> double"},
 	 { "InterferenceFunction1DLattice_getChildren", _wrap_InterferenceFunction1DLattice_getChildren, METH_O, "\n"
 		"InterferenceFunction1DLattice_getChildren(InterferenceFunction1DLattice self) -> swig_dummy_type_const_inode_vector\n"
 		"std::vector< const INode * > InterferenceFunction1DLattice::getChildren() const override final\n"
@@ -132394,28 +132196,6 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "Lattice_swigregister", Lattice_swigregister, METH_O, NULL},
 	 { "Lattice_swiginit", Lattice_swiginit, METH_VARARGS, NULL},
-	 { "new_Lattice1DParameters", _wrap_new_Lattice1DParameters, METH_VARARGS, "\n"
-		"Lattice1DParameters()\n"
-		"new_Lattice1DParameters(double length, double xi) -> Lattice1DParameters\n"
-		"Lattice1DParameters::Lattice1DParameters(double length, double xi)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		" Lattice constant.\n"
-		"\n"
-		"xi: \n"
-		" Lattice rotation angle. \n"
-		"\n"
-		""},
-	 { "Lattice1DParameters_m_length_set", _wrap_Lattice1DParameters_m_length_set, METH_VARARGS, "Lattice1DParameters_m_length_set(Lattice1DParameters self, double m_length)"},
-	 { "Lattice1DParameters_m_length_get", _wrap_Lattice1DParameters_m_length_get, METH_O, "Lattice1DParameters_m_length_get(Lattice1DParameters self) -> double"},
-	 { "Lattice1DParameters_m_xi_set", _wrap_Lattice1DParameters_m_xi_set, METH_VARARGS, "Lattice1DParameters_m_xi_set(Lattice1DParameters self, double m_xi)"},
-	 { "Lattice1DParameters_m_xi_get", _wrap_Lattice1DParameters_m_xi_get, METH_O, "Lattice1DParameters_m_xi_get(Lattice1DParameters self) -> double"},
-	 { "delete_Lattice1DParameters", _wrap_delete_Lattice1DParameters, METH_O, "delete_Lattice1DParameters(Lattice1DParameters self)"},
-	 { "Lattice1DParameters_swigregister", Lattice1DParameters_swigregister, METH_O, NULL},
-	 { "Lattice1DParameters_swiginit", Lattice1DParameters_swiginit, METH_VARARGS, NULL},
 	 { "Lattice2D_clone", _wrap_Lattice2D_clone, METH_O, "\n"
 		"Lattice2D_clone(Lattice2D self) -> Lattice2D\n"
 		"Lattice2D* Lattice2D::clone() const =0\n"
@@ -135153,7 +134933,6 @@ static swig_type_info _swigt__p_IsotropicGaussPeakShape = {"_p_IsotropicGaussPea
 static swig_type_info _swigt__p_IsotropicLorentzPeakShape = {"_p_IsotropicLorentzPeakShape", "IsotropicLorentzPeakShape *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IterationInfo = {"_p_IterationInfo", "IterationInfo *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice = {"_p_Lattice", "Lattice *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Lattice1DParameters = {"_p_Lattice1DParameters", "Lattice1DParameters *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice2D = {"_p_Lattice2D", "Lattice2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice2D__ReciprocalBases = {"_p_Lattice2D__ReciprocalBases", "Lattice2D::ReciprocalBases *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Layer = {"_p_Layer", "Layer *", 0, 0, (void*)0, 0};
@@ -135498,7 +135277,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_IsotropicLorentzPeakShape,
   &_swigt__p_IterationInfo,
   &_swigt__p_Lattice,
-  &_swigt__p_Lattice1DParameters,
   &_swigt__p_Lattice2D,
   &_swigt__p_Lattice2D__ReciprocalBases,
   &_swigt__p_Layer,
@@ -135843,7 +135621,6 @@ static swig_cast_info _swigc__p_IsotropicGaussPeakShape[] = {  {&_swigt__p_Isotr
 static swig_cast_info _swigc__p_IsotropicLorentzPeakShape[] = {  {&_swigt__p_IsotropicLorentzPeakShape, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IterationInfo[] = {  {&_swigt__p_IterationInfo, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice[] = {  {&_swigt__p_Lattice, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Lattice1DParameters[] = {  {&_swigt__p_Lattice1DParameters, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice2D[] = {  {&_swigt__p_Lattice2D, 0, 0, 0},  {&_swigt__p_BasicLattice, _p_BasicLatticeTo_p_Lattice2D, 0, 0},  {&_swigt__p_SquareLattice, _p_SquareLatticeTo_p_Lattice2D, 0, 0},  {&_swigt__p_HexagonalLattice, _p_HexagonalLatticeTo_p_Lattice2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice2D__ReciprocalBases[] = {  {&_swigt__p_Lattice2D__ReciprocalBases, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Layer[] = {  {&_swigt__p_Layer, 0, 0, 0},{0, 0, 0, 0}};
@@ -136188,7 +135965,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_IsotropicLorentzPeakShape,
   _swigc__p_IterationInfo,
   _swigc__p_Lattice,
-  _swigc__p_Lattice1DParameters,
   _swigc__p_Lattice2D,
   _swigc__p_Lattice2D__ReciprocalBases,
   _swigc__p_Layer,