From 73015c9941861993b496057ba4a10d7d5b7cd171 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Fri, 22 Sep 2023 15:26:48 +0200
Subject: [PATCH] import 1d: now also supporting alpha and 2alpha

---
 Base/Axis/Coordinate.h                        |    8 +-
 Device/IO/ImportSettings.h                    |   34 +-
 Device/IO/ReadReflectometry.cpp               |   18 +-
 GUI/View/Import/Legacy1dDialog.cpp            |   22 +-
 Wrap/Swig/libBornAgainDevice.i                |    2 +
 .../fit/specular/PolarizedSpinAsymmetry.py    |    2 +-
 .../specular/PolarizedSpinAsymmetry.py        |    2 +-
 .../fit/specular/PolarizedSpinAsymmetry.py    |    2 +-
 .../specular/PolarizedSpinAsymmetry.py        |    2 +-
 auto/Wrap/libBornAgainDevice.py               |   48 +-
 auto/Wrap/libBornAgainDevice_wrap.cpp         | 2095 ++++++++++++++---
 rawEx/specular/PolarizedSpinAsymmetry.py      |    2 +-
 12 files changed, 1810 insertions(+), 427 deletions(-)

diff --git a/Base/Axis/Coordinate.h b/Base/Axis/Coordinate.h
index 08323db8ed2..3dc6fbf3841 100644
--- a/Base/Axis/Coordinate.h
+++ b/Base/Axis/Coordinate.h
@@ -21,6 +21,10 @@
 
 class Coordinate {
 public:
+    Coordinate(const char* label)
+        : Coordinate(std::string(label))
+    {
+    }
     Coordinate(const std::string& label);
     Coordinate(std::string name, std::string unit);
 
@@ -31,8 +35,8 @@ public:
     std::string label() const;
 
 private:
-    const std::string m_name;
-    const std::string m_unit;
+    std::string m_name;
+    std::string m_unit;
 };
 
 #endif // BORNAGAIN_BASE_AXIS_COORDINATE_H
diff --git a/Device/IO/ImportSettings.h b/Device/IO/ImportSettings.h
index 245ebeafb90..07962835c02 100644
--- a/Device/IO/ImportSettings.h
+++ b/Device/IO/ImportSettings.h
@@ -15,40 +15,46 @@
 #ifndef BORNAGAIN_DEVICE_IO_IMPORTSETTINGS_H
 #define BORNAGAIN_DEVICE_IO_IMPORTSETTINGS_H
 
+#include "Base/Axis/Coordinate.h"
 #include "Wrap/WinDllMacros.h"
 #include <string>
 
-enum QUnit { over_nm, over_angstrom };
-
 //! This parameterization can be set interactively by GUI users.
 //! Therefore, exceptionally, indices are counting from 1, not  from 0.
 
 struct ImportSettings1D {
-    ImportSettings1D(std::string _prefix, std::string _skip, size_t __Q, size_t __R,
-                     size_t __sR = 0, size_t __dQ = 0, size_t __lambda = 0, QUnit _unit = over_nm,
+    ImportSettings1D(Coordinate _xCoord, std::string _prefix, std::string _skip, size_t __Q,
+                     size_t __R, size_t __sR = 0, size_t __dQ = 0, size_t __lambda = 0,
                      bool _sort = true, bool _rm_neg = true, bool _rm_dup = true)
-        : headerPrefix(_prefix)
+        : xCoord(_xCoord)
+        , headerPrefix(_prefix)
         , linesToSkip(_skip)
         , col_Q(__Q)
         , col_R(__R)
         , col_sR(__sR)
         , col_dQ(__dQ)
         , col_lambda(__lambda)
-        , qUnit(_unit)
         , sort(_sort)
         , rm_negative(_rm_neg)
         , rm_duplications(_rm_dup)
     {
     }
+    ImportSettings1D(const char* _xCoord, std::string _prefix, std::string _skip, size_t __Q,
+                     size_t __R, size_t __sR = 0, size_t __dQ = 0, size_t __lambda = 0,
+                     bool _sort = true, bool _rm_neg = true, bool _rm_dup = true)
+        : ImportSettings1D(Coordinate(_xCoord), _prefix, _skip, __Q, __R, __sR, __dQ, __lambda,
+                           _sort, _rm_neg, _rm_dup)
+    {
+    }
 
-    std::string headerPrefix; //!< prefix of header lines (usually a single character like "#")
-    std::string linesToSkip;  //!< pattern denoting line to skip (i.e. '1,10-12,42')
-    size_t col_Q;             //!< column number of Q (counting from 1!)
-    size_t col_R;             //!< column number of R
-    size_t col_sR = 0;        //!< column number of sigma R, or 0
-    size_t col_dQ = 0;        //!< column number of delta Q, or 0
-    size_t col_lambda = 0;    //!< column number of wavelength, or 0
-    QUnit qUnit = over_nm;
+    Coordinate xCoord;
+    std::string headerPrefix;    //!< prefix of header lines (usually a single character like "#")
+    std::string linesToSkip;     //!< pattern denoting line to skip (i.e. '1,10-12,42')
+    size_t col_Q;                //!< column number of Q (counting from 1!)
+    size_t col_R;                //!< column number of R
+    size_t col_sR = 0;           //!< column number of sigma R, or 0
+    size_t col_dQ = 0;           //!< column number of delta Q, or 0
+    size_t col_lambda = 0;       //!< column number of wavelength, or 0
     bool sort = true;            //!< sort lines by argument
     bool rm_negative = true;     //!< discard lines with negative arguments
     bool rm_duplications = true; //!< discard lines with duplicated arguments
diff --git a/Device/IO/ReadReflectometry.cpp b/Device/IO/ReadReflectometry.cpp
index ff7151ef2d7..3678d9bd378 100644
--- a/Device/IO/ReadReflectometry.cpp
+++ b/Device/IO/ReadReflectometry.cpp
@@ -27,6 +27,7 @@ using Base::String::split;
 using Base::String::to_double;
 using Base::String::to_int;
 using Base::String::trim;
+using std::numbers::pi;
 
 Datafield* Util::RW::readReflectometryTable(std::istream& s, const ImportSettings1D& p)
 {
@@ -64,7 +65,19 @@ Datafield* Util::RW::readReflectometryTable(std::istream& s, const ImportSetting
     std::vector<double> RVec;
     std::vector<double> sRVec;
 
-    const double fac = p.qUnit == QUnit::over_angstrom ? 0.1 : 1.;
+    double fac = 1.;
+    Coordinate outCoord = p.xCoord;
+    if (p.xCoord.unit() == "1/angstrom") {
+        fac = 0.1;
+        outCoord = {p.xCoord.name(), "1/nm"};
+    } else if (p.xCoord.unit() == "deg") {
+        fac = pi / 180.;
+        outCoord = {p.xCoord.name(), "rad"};
+    }
+    if (p.xCoord.name() == "2alpha") {
+        fac *= 0.5;
+        outCoord = {"alpha", p.xCoord.unit()};
+    }
     for (const auto& row : rowsVec) {
         const double arg = fac * row[arg_index];
 
@@ -81,7 +94,8 @@ Datafield* Util::RW::readReflectometryTable(std::istream& s, const ImportSetting
             sRVec.push_back(row[p.col_sR - 1]);
     }
 
-    return new Datafield(std::vector<const Scale*>{newListScan("q (1/nm)", QVec)}, RVec, sRVec);
+    return new Datafield(std::vector<const Scale*>{newListScan(outCoord.label(), QVec)}, RVec,
+                         sRVec);
 }
 
 Datafield* Util::RW::readMotofit(std::istream& s)
diff --git a/GUI/View/Import/Legacy1dDialog.cpp b/GUI/View/Import/Legacy1dDialog.cpp
index 4d447612d3e..8fe5fd3b558 100644
--- a/GUI/View/Import/Legacy1dDialog.cpp
+++ b/GUI/View/Import/Legacy1dDialog.cpp
@@ -26,7 +26,7 @@
 #include <QVBoxLayout>
 #include <QtGui>
 
-ImportSettings1D Legacy1dDialog::Msettings = {"#", "", 1, 2, 0, 0, 0};
+ImportSettings1D Legacy1dDialog::Msettings("q (1/nm)", "#", "", 1, 2);
 
 Legacy1dDialog::Legacy1dDialog(QWidget* parent, QString fname)
     : QDialog(parent)
@@ -111,13 +111,23 @@ Legacy1dDialog::Legacy1dDialog(QWidget* parent, QString fname)
     connect(headerPrefixEdit, &QLineEdit::textEdited,
             [&p = Msettings](const QString& text) { p.headerPrefix = text.toStdString(); });
 
+    const std::vector<std::string> qCoords{"q (1/nm)",    "q(1/angstrom)", "alpha (rad)",
+                                           "alpha (deg)", "2alpha (rad)",  "2alpha (deg)"};
     auto qUnitCombo = new QComboBox;
-    form211->addRow("Q given in units of:", qUnitCombo);
-    qUnitCombo->addItem("1/nm");
-    qUnitCombo->addItem("1/Å");
-    qUnitCombo->setCurrentIndex((int)Msettings.qUnit);
+    form211->addRow("Ordinate given as:", qUnitCombo);
+    qUnitCombo->addItem("q (1/nm)");
+    qUnitCombo->addItem("q (1/Å)");
+    qUnitCombo->addItem("α (rad)");
+    qUnitCombo->addItem("α (deg)");
+    qUnitCombo->addItem("2α (rad)");
+    qUnitCombo->addItem("2α (deg)");
+    for (int i = 0; i < qUnitCombo->count(); ++i)
+        if (Msettings.xCoord == qCoords[i]) {
+            qUnitCombo->setCurrentIndex(i);
+            break;
+        }
     connect(qUnitCombo, &QComboBox::currentIndexChanged,
-            [&p = Msettings](int i) { p.qUnit = (QUnit)i; });
+            [&p = Msettings, qCoords](int i) { p.xCoord = qCoords[i]; });
 
     auto sortCheckbox = new QCheckBox;
     sortCheckbox->setChecked(Msettings.sort);
diff --git a/Wrap/Swig/libBornAgainDevice.i b/Wrap/Swig/libBornAgainDevice.i
index 78bb21c673f..00f17c0afc0 100644
--- a/Wrap/Swig/libBornAgainDevice.i
+++ b/Wrap/Swig/libBornAgainDevice.i
@@ -50,6 +50,8 @@
 %include "fromBase.i"
 %include "fromParam.i"
 
+%include "Base/Axis/Coordinate.h" // required by ImportSettings
+
 %include "Device/Data/DataUtil.h"
 %include "Device/Data/Datafield.h"
 %include "Device/Data/DataUtil.h"
diff --git a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
index 02b8a45b568..91f3571438b 100755
--- a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
@@ -175,7 +175,7 @@ def plotSpinAsymmetry(data_pp, data_mm, q, r_pp, r_mm):
 ####################################################################
 
 def load_data(fname):
-    flags = ba.ImportSettings1D("#", "", 1, 2, 3, 4)
+    flags = ba.ImportSettings1D("q (1/nm)", "#", "", 1, 2, 3, 4)
     return ba.readData1D(fname, ba.csv1D, flags)
 
 ####################################################################
diff --git a/auto/Examples/specular/PolarizedSpinAsymmetry.py b/auto/Examples/specular/PolarizedSpinAsymmetry.py
index 02b8a45b568..91f3571438b 100755
--- a/auto/Examples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/specular/PolarizedSpinAsymmetry.py
@@ -175,7 +175,7 @@ def plotSpinAsymmetry(data_pp, data_mm, q, r_pp, r_mm):
 ####################################################################
 
 def load_data(fname):
-    flags = ba.ImportSettings1D("#", "", 1, 2, 3, 4)
+    flags = ba.ImportSettings1D("q (1/nm)", "#", "", 1, 2, 3, 4)
     return ba.readData1D(fname, ba.csv1D, flags)
 
 ####################################################################
diff --git a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
index d41fc7bd268..0123529d57f 100755
--- a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
@@ -175,7 +175,7 @@ def plotSpinAsymmetry(data_pp, data_mm, q, r_pp, r_mm):
 ####################################################################
 
 def load_data(fname):
-    flags = ba.ImportSettings1D("#", "", 1, 2, 3, 4)
+    flags = ba.ImportSettings1D("q (1/nm)", "#", "", 1, 2, 3, 4)
     return ba.readData1D(fname, ba.csv1D, flags)
 
 ####################################################################
diff --git a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
index d41fc7bd268..0123529d57f 100755
--- a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
@@ -175,7 +175,7 @@ def plotSpinAsymmetry(data_pp, data_mm, q, r_pp, r_mm):
 ####################################################################
 
 def load_data(fname):
-    flags = ba.ImportSettings1D("#", "", 1, 2, 3, 4)
+    flags = ba.ImportSettings1D("q (1/nm)", "#", "", 1, 2, 3, 4)
     return ba.readData1D(fname, ba.csv1D, flags)
 
 ####################################################################
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index accb8d77c7a..f4e5ae4d3f5 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -2033,6 +2033,39 @@ class vector_R3(object):
 # Register vector_R3 in _libBornAgainDevice:
 _libBornAgainDevice.vector_R3_swigregister(vector_R3)
 import libBornAgainParam
+class Coordinate(object):
+    r"""Proxy of C++ Coordinate 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__(Coordinate self, char const * label) -> Coordinate
+        __init__(Coordinate self, std::string const & label) -> Coordinate
+        __init__(Coordinate self, std::string name, std::string unit) -> Coordinate
+        """
+        _libBornAgainDevice.Coordinate_swiginit(self, _libBornAgainDevice.new_Coordinate(*args))
+
+    def __eq__(self, other):
+        r"""__eq__(Coordinate self, Coordinate other) -> bool"""
+        return _libBornAgainDevice.Coordinate___eq__(self, other)
+
+    def name(self):
+        r"""name(Coordinate self) -> std::string const &"""
+        return _libBornAgainDevice.Coordinate_name(self)
+
+    def unit(self):
+        r"""unit(Coordinate self) -> std::string const &"""
+        return _libBornAgainDevice.Coordinate_unit(self)
+
+    def label(self):
+        r"""label(Coordinate self) -> std::string"""
+        return _libBornAgainDevice.Coordinate_label(self)
+    __swig_destroy__ = _libBornAgainDevice.delete_Coordinate
+
+# Register Coordinate in _libBornAgainDevice:
+_libBornAgainDevice.Coordinate_swigregister(Coordinate)
 
 def invertAxis(axis, original):
     r"""invertAxis(int axis, vdouble2d_t original) -> vdouble2d_t"""
@@ -2919,19 +2952,19 @@ def meanRelativeDifference(dat, ref):
 def checkRelativeDifference(dat, ref, threshold):
     r"""checkRelativeDifference(vdouble1d_t dat, vdouble1d_t ref, double threshold) -> bool"""
     return _libBornAgainDevice.checkRelativeDifference(dat, ref, threshold)
-over_nm = _libBornAgainDevice.over_nm
-
-over_angstrom = _libBornAgainDevice.over_angstrom
-
 class ImportSettings1D(object):
     r"""Proxy of C++ ImportSettings1D 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, _prefix, _skip, __Q, __R, __sR=0, __dQ=0, __lambda=0, _unit=over_nm, _sort=True, _rm_neg=True, _rm_dup=True):
-        r"""__init__(ImportSettings1D self, std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, QUnit _unit=over_nm, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True) -> ImportSettings1D"""
-        _libBornAgainDevice.ImportSettings1D_swiginit(self, _libBornAgainDevice.new_ImportSettings1D(_prefix, _skip, __Q, __R, __sR, __dQ, __lambda, _unit, _sort, _rm_neg, _rm_dup))
+    def __init__(self, *args):
+        r"""
+        __init__(ImportSettings1D self, Coordinate _xCoord, std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True) -> ImportSettings1D
+        __init__(ImportSettings1D self, char const * _xCoord, std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True) -> ImportSettings1D
+        """
+        _libBornAgainDevice.ImportSettings1D_swiginit(self, _libBornAgainDevice.new_ImportSettings1D(*args))
+    xCoord = property(_libBornAgainDevice.ImportSettings1D_xCoord_get, _libBornAgainDevice.ImportSettings1D_xCoord_set, doc=r"""xCoord : Coordinate""")
     headerPrefix = property(_libBornAgainDevice.ImportSettings1D_headerPrefix_get, _libBornAgainDevice.ImportSettings1D_headerPrefix_set, doc=r"""headerPrefix : std::string""")
     linesToSkip = property(_libBornAgainDevice.ImportSettings1D_linesToSkip_get, _libBornAgainDevice.ImportSettings1D_linesToSkip_set, doc=r"""linesToSkip : std::string""")
     col_Q = property(_libBornAgainDevice.ImportSettings1D_col_Q_get, _libBornAgainDevice.ImportSettings1D_col_Q_set, doc=r"""col_Q : size_t""")
@@ -2939,7 +2972,6 @@ class ImportSettings1D(object):
     col_sR = property(_libBornAgainDevice.ImportSettings1D_col_sR_get, _libBornAgainDevice.ImportSettings1D_col_sR_set, doc=r"""col_sR : size_t""")
     col_dQ = property(_libBornAgainDevice.ImportSettings1D_col_dQ_get, _libBornAgainDevice.ImportSettings1D_col_dQ_set, doc=r"""col_dQ : size_t""")
     col_lambda = property(_libBornAgainDevice.ImportSettings1D_col_lambda_get, _libBornAgainDevice.ImportSettings1D_col_lambda_set, doc=r"""col_lambda : size_t""")
-    qUnit = property(_libBornAgainDevice.ImportSettings1D_qUnit_get, _libBornAgainDevice.ImportSettings1D_qUnit_set, doc=r"""qUnit : QUnit""")
     sort = property(_libBornAgainDevice.ImportSettings1D_sort_get, _libBornAgainDevice.ImportSettings1D_sort_set, doc=r"""sort : bool""")
     rm_negative = property(_libBornAgainDevice.ImportSettings1D_rm_negative_get, _libBornAgainDevice.ImportSettings1D_rm_negative_set, doc=r"""rm_negative : bool""")
     rm_duplications = property(_libBornAgainDevice.ImportSettings1D_rm_duplications_get, _libBornAgainDevice.ImportSettings1D_rm_duplications_set, doc=r"""rm_duplications : bool""")
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index f02b47528cd..64935fb7a47 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -3388,93 +3388,94 @@ namespace Swig {
 
 #define SWIGTYPE_p_Beam swig_types[0]
 #define SWIGTYPE_p_Bin1D swig_types[1]
-#define SWIGTYPE_p_Datafield swig_types[2]
-#define SWIGTYPE_p_DetectorMask swig_types[3]
-#define SWIGTYPE_p_Ellipse swig_types[4]
-#define SWIGTYPE_p_FlatDetector swig_types[5]
-#define SWIGTYPE_p_FootprintGauss swig_types[6]
-#define SWIGTYPE_p_FootprintSquare swig_types[7]
-#define SWIGTYPE_p_Frame swig_types[8]
-#define SWIGTYPE_p_HorizontalLine swig_types[9]
-#define SWIGTYPE_p_ICloneable swig_types[10]
-#define SWIGTYPE_p_IDetector swig_types[11]
-#define SWIGTYPE_p_IDetectorResolution swig_types[12]
-#define SWIGTYPE_p_IFootprint swig_types[13]
-#define SWIGTYPE_p_INode swig_types[14]
-#define SWIGTYPE_p_IPixel swig_types[15]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[16]
-#define SWIGTYPE_p_IShape2D swig_types[17]
-#define SWIGTYPE_p_ImportSettings1D swig_types[18]
-#define SWIGTYPE_p_Line swig_types[19]
-#define SWIGTYPE_p_MaskPattern swig_types[20]
-#define SWIGTYPE_p_OffspecDetector swig_types[21]
-#define SWIGTYPE_p_PolFilter swig_types[22]
-#define SWIGTYPE_p_Polygon swig_types[23]
-#define SWIGTYPE_p_PolygonPrivate swig_types[24]
-#define SWIGTYPE_p_Rectangle swig_types[25]
-#define SWIGTYPE_p_RectangularPixel swig_types[26]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[27]
-#define SWIGTYPE_p_Rotation3DT_double_t swig_types[28]
-#define SWIGTYPE_p_Scale swig_types[29]
-#define SWIGTYPE_p_SphericalDetector swig_types[30]
-#define SWIGTYPE_p_Vec3T_double_t swig_types[31]
-#define SWIGTYPE_p_Vec3T_int_t swig_types[32]
-#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[33]
-#define SWIGTYPE_p_VerticalLine swig_types[34]
-#define SWIGTYPE_p_allocator_type swig_types[35]
-#define SWIGTYPE_p_char swig_types[36]
-#define SWIGTYPE_p_const_iterator swig_types[37]
-#define SWIGTYPE_p_corr_matrix_t swig_types[38]
-#define SWIGTYPE_p_difference_type swig_types[39]
-#define SWIGTYPE_p_first_type swig_types[40]
-#define SWIGTYPE_p_int swig_types[41]
-#define SWIGTYPE_p_iterator swig_types[42]
-#define SWIGTYPE_p_key_type swig_types[43]
-#define SWIGTYPE_p_long_long swig_types[44]
-#define SWIGTYPE_p_mapped_type swig_types[45]
-#define SWIGTYPE_p_p_PyObject swig_types[46]
-#define SWIGTYPE_p_parameters_t swig_types[47]
-#define SWIGTYPE_p_second_type swig_types[48]
-#define SWIGTYPE_p_short swig_types[49]
-#define SWIGTYPE_p_signed_char swig_types[50]
-#define SWIGTYPE_p_size_type swig_types[51]
-#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[52]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[53]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[54]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[55]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[56]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[57]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[58]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[59]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[60]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[61]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[62]
-#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[63]
-#define SWIGTYPE_p_std__invalid_argument swig_types[64]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[65]
-#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[66]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[67]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[68]
-#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[69]
-#define SWIGTYPE_p_std__vectorT_Scale_const_p_std__allocatorT_Scale_const_p_t_t swig_types[70]
-#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[71]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[72]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[73]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[74]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[75]
-#define SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_std__allocatorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_t_t swig_types[76]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[77]
-#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[78]
-#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[79]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[80]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[81]
-#define SWIGTYPE_p_unsigned_char swig_types[82]
-#define SWIGTYPE_p_unsigned_int swig_types[83]
-#define SWIGTYPE_p_unsigned_long_long swig_types[84]
-#define SWIGTYPE_p_unsigned_short swig_types[85]
-#define SWIGTYPE_p_value_type swig_types[86]
-static swig_type_info *swig_types[88];
-static swig_module_info swig_module = {swig_types, 87, 0, 0, 0, 0};
+#define SWIGTYPE_p_Coordinate swig_types[2]
+#define SWIGTYPE_p_Datafield swig_types[3]
+#define SWIGTYPE_p_DetectorMask swig_types[4]
+#define SWIGTYPE_p_Ellipse swig_types[5]
+#define SWIGTYPE_p_FlatDetector swig_types[6]
+#define SWIGTYPE_p_FootprintGauss swig_types[7]
+#define SWIGTYPE_p_FootprintSquare swig_types[8]
+#define SWIGTYPE_p_Frame swig_types[9]
+#define SWIGTYPE_p_HorizontalLine swig_types[10]
+#define SWIGTYPE_p_ICloneable swig_types[11]
+#define SWIGTYPE_p_IDetector swig_types[12]
+#define SWIGTYPE_p_IDetectorResolution swig_types[13]
+#define SWIGTYPE_p_IFootprint swig_types[14]
+#define SWIGTYPE_p_INode swig_types[15]
+#define SWIGTYPE_p_IPixel swig_types[16]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[17]
+#define SWIGTYPE_p_IShape2D swig_types[18]
+#define SWIGTYPE_p_ImportSettings1D swig_types[19]
+#define SWIGTYPE_p_Line swig_types[20]
+#define SWIGTYPE_p_MaskPattern swig_types[21]
+#define SWIGTYPE_p_OffspecDetector swig_types[22]
+#define SWIGTYPE_p_PolFilter swig_types[23]
+#define SWIGTYPE_p_Polygon swig_types[24]
+#define SWIGTYPE_p_PolygonPrivate swig_types[25]
+#define SWIGTYPE_p_Rectangle swig_types[26]
+#define SWIGTYPE_p_RectangularPixel swig_types[27]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[28]
+#define SWIGTYPE_p_Rotation3DT_double_t swig_types[29]
+#define SWIGTYPE_p_Scale swig_types[30]
+#define SWIGTYPE_p_SphericalDetector swig_types[31]
+#define SWIGTYPE_p_Vec3T_double_t swig_types[32]
+#define SWIGTYPE_p_Vec3T_int_t swig_types[33]
+#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[34]
+#define SWIGTYPE_p_VerticalLine swig_types[35]
+#define SWIGTYPE_p_allocator_type swig_types[36]
+#define SWIGTYPE_p_char swig_types[37]
+#define SWIGTYPE_p_const_iterator swig_types[38]
+#define SWIGTYPE_p_corr_matrix_t swig_types[39]
+#define SWIGTYPE_p_difference_type swig_types[40]
+#define SWIGTYPE_p_first_type swig_types[41]
+#define SWIGTYPE_p_int swig_types[42]
+#define SWIGTYPE_p_iterator swig_types[43]
+#define SWIGTYPE_p_key_type swig_types[44]
+#define SWIGTYPE_p_long_long swig_types[45]
+#define SWIGTYPE_p_mapped_type swig_types[46]
+#define SWIGTYPE_p_p_PyObject swig_types[47]
+#define SWIGTYPE_p_parameters_t swig_types[48]
+#define SWIGTYPE_p_second_type swig_types[49]
+#define SWIGTYPE_p_short swig_types[50]
+#define SWIGTYPE_p_signed_char swig_types[51]
+#define SWIGTYPE_p_size_type swig_types[52]
+#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[53]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[54]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[55]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[56]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[57]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[58]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[59]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[60]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[61]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[62]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[63]
+#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[64]
+#define SWIGTYPE_p_std__invalid_argument swig_types[65]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[66]
+#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[67]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[68]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[69]
+#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[70]
+#define SWIGTYPE_p_std__vectorT_Scale_const_p_std__allocatorT_Scale_const_p_t_t swig_types[71]
+#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[72]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[73]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[74]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[75]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[76]
+#define SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_std__allocatorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_t_t swig_types[77]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[78]
+#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[79]
+#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[80]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[81]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[82]
+#define SWIGTYPE_p_unsigned_char swig_types[83]
+#define SWIGTYPE_p_unsigned_int swig_types[84]
+#define SWIGTYPE_p_unsigned_long_long swig_types[85]
+#define SWIGTYPE_p_unsigned_short swig_types[86]
+#define SWIGTYPE_p_value_type swig_types[87]
+static swig_type_info *swig_types[89];
+static swig_module_info swig_module = {swig_types, 88, 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)
 
@@ -7146,6 +7147,9 @@ SWIGINTERN std::vector< Vec3< double > >::iterator std_vector_Sl_Vec3_Sl_double_
 SWIGINTERN std::vector< Vec3< double > >::iterator std_vector_Sl_Vec3_Sl_double_Sg__Sg__insert__SWIG_0(std::vector< Vec3< double > > *self,std::vector< Vec3< double > >::iterator pos,std::vector< Vec3< double > >::value_type const &x){ return self->insert(pos, x); }
 SWIGINTERN void std_vector_Sl_Vec3_Sl_double_Sg__Sg__insert__SWIG_1(std::vector< Vec3< double > > *self,std::vector< Vec3< double > >::iterator pos,std::vector< Vec3< double > >::size_type n,std::vector< Vec3< double > >::value_type const &x){ self->insert(pos, n, x); }
 
+
+
+
 #include <memory>
 
 
@@ -28377,6 +28381,355 @@ SWIGINTERN PyObject *vector_R3_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject
   return SWIG_Python_InitShadowInstance(args);
 }
 
+SWIGINTERN PyObject *_wrap_new_Coordinate__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  Coordinate *result = 0 ;
+  
+  if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Coordinate" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
+  {
+    try {
+      result = (Coordinate *)new Coordinate((char const *)arg1);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Coordinate, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  return resultobj;
+fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_Coordinate__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  std::string *arg1 = 0 ;
+  int res1 = SWIG_OLDOBJ ;
+  Coordinate *result = 0 ;
+  
+  if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
+  {
+    std::string *ptr = (std::string *)0;
+    res1 = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Coordinate" "', argument " "1"" of type '" "std::string const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Coordinate" "', argument " "1"" of type '" "std::string const &""'"); 
+    }
+    arg1 = ptr;
+  }
+  {
+    try {
+      result = (Coordinate *)new Coordinate((std::string const &)*arg1);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Coordinate, SWIG_POINTER_NEW |  0 );
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_Coordinate__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  std::string arg1 ;
+  std::string arg2 ;
+  Coordinate *result = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_Coordinate" "', argument " "1"" of type '" "std::string""'"); 
+    }
+    arg1 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_Coordinate" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    try {
+      result = (Coordinate *)new Coordinate(arg1,arg2);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Coordinate, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_Coordinate(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[3] = {
+    0
+  };
+  
+  if (!(argc = SWIG_Python_UnpackTuple(args, "new_Coordinate", 0, 2, argv))) SWIG_fail;
+  --argc;
+  if (argc == 1) {
+    int _v = 0;
+    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      return _wrap_new_Coordinate__SWIG_1(self, argc, argv);
+    }
+  }
+  if (argc == 1) {
+    int _v = 0;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      return _wrap_new_Coordinate__SWIG_0(self, argc, argv);
+    }
+  }
+  if (argc == 2) {
+    int _v = 0;
+    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_new_Coordinate__SWIG_2(self, argc, argv);
+      }
+    }
+  }
+  
+fail:
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_Coordinate'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    Coordinate::Coordinate(char const *)\n"
+    "    Coordinate::Coordinate(std::string const &)\n"
+    "    Coordinate::Coordinate(std::string,std::string)\n");
+  return 0;
+}
+
+
+SWIGINTERN PyObject *_wrap_Coordinate___eq__(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  Coordinate *arg1 = (Coordinate *) 0 ;
+  Coordinate *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject *swig_obj[2] ;
+  bool result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "Coordinate___eq__", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Coordinate, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Coordinate___eq__" "', argument " "1"" of type '" "Coordinate const *""'"); 
+  }
+  arg1 = reinterpret_cast< Coordinate * >(argp1);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Coordinate,  0  | 0);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Coordinate___eq__" "', argument " "2"" of type '" "Coordinate const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Coordinate___eq__" "', argument " "2"" of type '" "Coordinate const &""'"); 
+  }
+  arg2 = reinterpret_cast< Coordinate * >(argp2);
+  {
+    try {
+      result = (bool)((Coordinate const *)arg1)->operator ==((Coordinate const &)*arg2);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  PyErr_Clear();
+  Py_INCREF(Py_NotImplemented);
+  return Py_NotImplemented;
+}
+
+
+SWIGINTERN PyObject *_wrap_Coordinate_name(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  Coordinate *arg1 = (Coordinate *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  std::string *result = 0 ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Coordinate, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Coordinate_name" "', argument " "1"" of type '" "Coordinate const *""'"); 
+  }
+  arg1 = reinterpret_cast< Coordinate * >(argp1);
+  {
+    try {
+      result = (std::string *) &((Coordinate const *)arg1)->name();
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_From_std_string(static_cast< std::string >(*result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Coordinate_unit(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  Coordinate *arg1 = (Coordinate *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  std::string *result = 0 ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Coordinate, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Coordinate_unit" "', argument " "1"" of type '" "Coordinate const *""'"); 
+  }
+  arg1 = reinterpret_cast< Coordinate * >(argp1);
+  {
+    try {
+      result = (std::string *) &((Coordinate const *)arg1)->unit();
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_From_std_string(static_cast< std::string >(*result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Coordinate_label(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  Coordinate *arg1 = (Coordinate *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  std::string result;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Coordinate, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Coordinate_label" "', argument " "1"" of type '" "Coordinate const *""'"); 
+  }
+  arg1 = reinterpret_cast< Coordinate * >(argp1);
+  {
+    try {
+      result = ((Coordinate const *)arg1)->label();
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_From_std_string(static_cast< std::string >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_Coordinate(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  Coordinate *arg1 = (Coordinate *) 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_Coordinate, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Coordinate" "', argument " "1"" of type '" "Coordinate *""'"); 
+  }
+  arg1 = reinterpret_cast< Coordinate * >(argp1);
+  {
+    try {
+      delete arg1;
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *Coordinate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_Coordinate, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
+SWIGINTERN PyObject *Coordinate_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
+}
+
 SWIGINTERN PyObject *_wrap_invertAxis(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   int arg1 ;
@@ -39977,19 +40330,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  SwigValueWrapper< Coordinate > arg1 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
   size_t arg7 ;
-  QUnit arg8 ;
+  size_t arg8 ;
   bool arg9 ;
   bool arg10 ;
   bool arg11 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  void *argp1 ;
+  int res1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -39998,7 +40351,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_0(PyObject *self, Py_ssize
   int ecode6 = 0 ;
   size_t val7 ;
   int ecode7 = 0 ;
-  int val8 ;
+  size_t val8 ;
   int ecode8 = 0 ;
   bool val9 ;
   int ecode9 = 0 ;
@@ -40010,13 +40363,17 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_0(PyObject *self, Py_ssize
   
   if ((nobjs < 11) || (nobjs > 11)) SWIG_fail;
   {
-    std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
-    if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
     }
-    arg1 = *ptr;
-    if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
@@ -40027,11 +40384,15 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_0(PyObject *self, Py_ssize
     arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40052,11 +40413,11 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_0(PyObject *self, Py_ssize
     SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
   } 
   arg7 = static_cast< size_t >(val7);
-  ecode8 = SWIG_AsVal_int(swig_obj[7], &val8);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
   if (!SWIG_IsOK(ecode8)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "QUnit""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
   } 
-  arg8 = static_cast< QUnit >(val8);
+  arg8 = static_cast< size_t >(val8);
   ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
   if (!SWIG_IsOK(ecode9)) {
     SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
@@ -40092,18 +40453,18 @@ fail:
 
 SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  SwigValueWrapper< Coordinate > arg1 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
   size_t arg7 ;
-  QUnit arg8 ;
+  size_t arg8 ;
   bool arg9 ;
   bool arg10 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  void *argp1 ;
+  int res1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40112,7 +40473,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
   int ecode6 = 0 ;
   size_t val7 ;
   int ecode7 = 0 ;
-  int val8 ;
+  size_t val8 ;
   int ecode8 = 0 ;
   bool val9 ;
   int ecode9 = 0 ;
@@ -40121,15 +40482,131 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 10) || (nobjs > 10)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  ecode7 = SWIG_AsVal_size_t(swig_obj[6], &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
+  } 
+  arg7 = static_cast< size_t >(val7);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
+  } 
+  arg8 = static_cast< size_t >(val8);
+  ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
+  } 
+  arg9 = static_cast< bool >(val9);
+  ecode10 = SWIG_AsVal_bool(swig_obj[9], &val10);
+  if (!SWIG_IsOK(ecode10)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "new_ImportSettings1D" "', argument " "10"" of type '" "bool""'");
+  } 
+  arg10 = static_cast< bool >(val10);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  SwigValueWrapper< Coordinate > arg1 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  size_t arg7 ;
+  size_t arg8 ;
+  bool arg9 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  size_t val7 ;
+  int ecode7 = 0 ;
+  size_t val8 ;
+  int ecode8 = 0 ;
+  bool val9 ;
+  int ecode9 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 9) || (nobjs > 9)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
   {
     std::string *ptr = (std::string *)0;
     int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
@@ -40139,11 +40616,584 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
     arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
   } 
-  arg3 = static_cast< size_t >(val3);
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  ecode7 = SWIG_AsVal_size_t(swig_obj[6], &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
+  } 
+  arg7 = static_cast< size_t >(val7);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
+  } 
+  arg8 = static_cast< size_t >(val8);
+  ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
+  } 
+  arg9 = static_cast< bool >(val9);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  SwigValueWrapper< Coordinate > arg1 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  size_t arg7 ;
+  size_t arg8 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  size_t val7 ;
+  int ecode7 = 0 ;
+  size_t val8 ;
+  int ecode8 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 8) || (nobjs > 8)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  ecode7 = SWIG_AsVal_size_t(swig_obj[6], &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
+  } 
+  arg7 = static_cast< size_t >(val7);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
+  } 
+  arg8 = static_cast< size_t >(val8);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_4(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  SwigValueWrapper< Coordinate > arg1 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  size_t arg7 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  size_t val7 ;
+  int ecode7 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 7) || (nobjs > 7)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  ecode7 = SWIG_AsVal_size_t(swig_obj[6], &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
+  } 
+  arg7 = static_cast< size_t >(val7);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_5(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  SwigValueWrapper< Coordinate > arg1 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 6) || (nobjs > 6)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_6(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  SwigValueWrapper< Coordinate > arg1 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 5) || (nobjs > 5)) SWIG_fail;
+  {
+    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Coordinate,  0  | 0);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'"); 
+    }  
+    if (!argp1) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "Coordinate""'");
+    } else {
+      Coordinate * temp = reinterpret_cast< Coordinate * >(argp1);
+      arg1 = *temp;
+      if (SWIG_IsNewObj(res1)) delete temp;
+    }
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_7(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  char *arg1 = (char *) 0 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  size_t arg7 ;
+  size_t arg8 ;
+  bool arg9 ;
+  bool arg10 ;
+  bool arg11 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  size_t val7 ;
+  int ecode7 = 0 ;
+  size_t val8 ;
+  int ecode8 = 0 ;
+  bool val9 ;
+  int ecode9 = 0 ;
+  bool val10 ;
+  int ecode10 = 0 ;
+  bool val11 ;
+  int ecode11 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 11) || (nobjs > 11)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_size_t(swig_obj[4], &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_ImportSettings1D" "', argument " "5"" of type '" "size_t""'");
+  } 
+  arg5 = static_cast< size_t >(val5);
+  ecode6 = SWIG_AsVal_size_t(swig_obj[5], &val6);
+  if (!SWIG_IsOK(ecode6)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_ImportSettings1D" "', argument " "6"" of type '" "size_t""'");
+  } 
+  arg6 = static_cast< size_t >(val6);
+  ecode7 = SWIG_AsVal_size_t(swig_obj[6], &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
+  } 
+  arg7 = static_cast< size_t >(val7);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
+  } 
+  arg8 = static_cast< size_t >(val8);
+  ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
+  } 
+  arg9 = static_cast< bool >(val9);
+  ecode10 = SWIG_AsVal_bool(swig_obj[9], &val10);
+  if (!SWIG_IsOK(ecode10)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "new_ImportSettings1D" "', argument " "10"" of type '" "bool""'");
+  } 
+  arg10 = static_cast< bool >(val10);
+  ecode11 = SWIG_AsVal_bool(swig_obj[10], &val11);
+  if (!SWIG_IsOK(ecode11)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "new_ImportSettings1D" "', argument " "11"" of type '" "bool""'");
+  } 
+  arg11 = static_cast< bool >(val11);
+  {
+    try {
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
+    } catch (const std::exception& ex) {
+      // message shown in the Python interpreter
+      const std::string msg {
+        "BornAgain C++ Exception: " + std::string(ex.what())
+      };
+      SWIG_exception(SWIG_RuntimeError, msg.c_str());
+    }
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  return resultobj;
+fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_8(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  char *arg1 = (char *) 0 ;
+  std::string arg2 ;
+  std::string arg3 ;
+  size_t arg4 ;
+  size_t arg5 ;
+  size_t arg6 ;
+  size_t arg7 ;
+  size_t arg8 ;
+  bool arg9 ;
+  bool arg10 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  size_t val5 ;
+  int ecode5 = 0 ;
+  size_t val6 ;
+  int ecode6 = 0 ;
+  size_t val7 ;
+  int ecode7 = 0 ;
+  size_t val8 ;
+  int ecode8 = 0 ;
+  bool val9 ;
+  int ecode9 = 0 ;
+  bool val10 ;
+  int ecode10 = 0 ;
+  ImportSettings1D *result = 0 ;
+  
+  if ((nobjs < 10) || (nobjs > 10)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+    }
+    arg2 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
+  {
+    std::string *ptr = (std::string *)0;
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
+    if (!SWIG_IsOK(res) || !ptr) {
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
+    }
+    arg3 = *ptr;
+    if (SWIG_IsNewObj(res)) delete ptr;
+  }
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40164,11 +41214,11 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
     SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
   } 
   arg7 = static_cast< size_t >(val7);
-  ecode8 = SWIG_AsVal_int(swig_obj[7], &val8);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
   if (!SWIG_IsOK(ecode8)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "QUnit""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
   } 
-  arg8 = static_cast< QUnit >(val8);
+  arg8 = static_cast< size_t >(val8);
   ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
   if (!SWIG_IsOK(ecode9)) {
     SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
@@ -40181,7 +41231,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
   arg10 = static_cast< bool >(val10);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40191,25 +41241,28 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_1(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_9(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  char *arg1 = (char *) 0 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
   size_t arg7 ;
-  QUnit arg8 ;
+  size_t arg8 ;
   bool arg9 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40218,36 +41271,36 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize
   int ecode6 = 0 ;
   size_t val7 ;
   int ecode7 = 0 ;
-  int val8 ;
+  size_t val8 ;
   int ecode8 = 0 ;
   bool val9 ;
   int ecode9 = 0 ;
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 9) || (nobjs > 9)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
     }
-    arg2 = *ptr;
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40268,11 +41321,11 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize
     SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
   } 
   arg7 = static_cast< size_t >(val7);
-  ecode8 = SWIG_AsVal_int(swig_obj[7], &val8);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
   if (!SWIG_IsOK(ecode8)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "QUnit""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
   } 
-  arg8 = static_cast< QUnit >(val8);
+  arg8 = static_cast< size_t >(val8);
   ecode9 = SWIG_AsVal_bool(swig_obj[8], &val9);
   if (!SWIG_IsOK(ecode9)) {
     SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "new_ImportSettings1D" "', argument " "9"" of type '" "bool""'");
@@ -40280,7 +41333,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize
   arg9 = static_cast< bool >(val9);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40290,24 +41343,27 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_2(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_10(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  char *arg1 = (char *) 0 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
   size_t arg7 ;
-  QUnit arg8 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  size_t arg8 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40316,34 +41372,34 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_3(PyObject *self, Py_ssize
   int ecode6 = 0 ;
   size_t val7 ;
   int ecode7 = 0 ;
-  int val8 ;
+  size_t val8 ;
   int ecode8 = 0 ;
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 8) || (nobjs > 8)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
     }
-    arg2 = *ptr;
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40364,14 +41420,14 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_3(PyObject *self, Py_ssize
     SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_ImportSettings1D" "', argument " "7"" of type '" "size_t""'");
   } 
   arg7 = static_cast< size_t >(val7);
-  ecode8 = SWIG_AsVal_int(swig_obj[7], &val8);
+  ecode8 = SWIG_AsVal_size_t(swig_obj[7], &val8);
   if (!SWIG_IsOK(ecode8)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "QUnit""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "new_ImportSettings1D" "', argument " "8"" of type '" "size_t""'");
   } 
-  arg8 = static_cast< QUnit >(val8);
+  arg8 = static_cast< size_t >(val8);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40381,23 +41437,26 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_3(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_4(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_11(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  char *arg1 = (char *) 0 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
   size_t arg7 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40409,29 +41468,29 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_4(PyObject *self, Py_ssize
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 7) || (nobjs > 7)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
     }
-    arg2 = *ptr;
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40454,7 +41513,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_4(PyObject *self, Py_ssize
   arg7 = static_cast< size_t >(val7);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40464,22 +41523,25 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_4(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_5(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_12(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  char *arg1 = (char *) 0 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
   size_t arg6 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40489,29 +41551,29 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_5(PyObject *self, Py_ssize
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 6) || (nobjs > 6)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
     }
-    arg2 = *ptr;
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40529,7 +41591,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_5(PyObject *self, Py_ssize
   arg6 = static_cast< size_t >(val6);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5,arg6);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5,arg6);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40539,21 +41601,24 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_5(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_6(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_13(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
-  std::string arg1 ;
+  char *arg1 = (char *) 0 ;
   std::string arg2 ;
-  size_t arg3 ;
+  std::string arg3 ;
   size_t arg4 ;
   size_t arg5 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
   size_t val4 ;
   int ecode4 = 0 ;
   size_t val5 ;
@@ -40561,29 +41626,29 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_6(PyObject *self, Py_ssize
   ImportSettings1D *result = 0 ;
   
   if ((nobjs < 5) || (nobjs > 5)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(swig_obj[0], &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = reinterpret_cast< char * >(buf1);
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
     }
-    arg1 = *ptr;
+    arg2 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
   {
     std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
+    int res = SWIG_AsPtr_std_string(swig_obj[2], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "std::string""'"); 
     }
-    arg2 = *ptr;
+    arg3 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
   ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
@@ -40596,66 +41661,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_6(PyObject *self, Py_ssize
   arg5 = static_cast< size_t >(val5);
   {
     try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4,arg5);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_7(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  std::string arg1 ;
-  std::string arg2 ;
-  size_t arg3 ;
-  size_t arg4 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
-  size_t val4 ;
-  int ecode4 = 0 ;
-  ImportSettings1D *result = 0 ;
-  
-  if ((nobjs < 4) || (nobjs > 4)) SWIG_fail;
-  {
-    std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
-    if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "1"" of type '" "std::string""'"); 
-    }
-    arg1 = *ptr;
-    if (SWIG_IsNewObj(res)) delete ptr;
-  }
-  {
-    std::string *ptr = (std::string *)0;
-    int res = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
-    if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_ImportSettings1D" "', argument " "2"" of type '" "std::string""'"); 
-    }
-    arg2 = *ptr;
-    if (SWIG_IsNewObj(res)) delete ptr;
-  }
-  ecode3 = SWIG_AsVal_size_t(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_ImportSettings1D" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = static_cast< size_t >(val3);
-  ecode4 = SWIG_AsVal_size_t(swig_obj[3], &val4);
-  if (!SWIG_IsOK(ecode4)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_ImportSettings1D" "', argument " "4"" of type '" "size_t""'");
-  } 
-  arg4 = static_cast< size_t >(val4);
-  {
-    try {
-      result = (ImportSettings1D *)new ImportSettings1D(arg1,arg2,arg3,arg4);
+      result = (ImportSettings1D *)new ImportSettings1D((char const *)arg1,arg2,arg3,arg4,arg5);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -40665,8 +41671,10 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D__SWIG_7(PyObject *self, Py_ssize
     }
   }
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ImportSettings1D, SWIG_POINTER_NEW |  0 );
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return resultobj;
 fail:
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
   return NULL;
 }
 
@@ -40679,25 +41687,29 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
   
   if (!(argc = SWIG_Python_UnpackTuple(args, "new_ImportSettings1D", 0, 11, argv))) SWIG_fail;
   --argc;
-  if (argc == 4) {
+  if (argc == 5) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
-        }
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
             _v = SWIG_CheckState(res);
           }
           if (_v) {
-            return _wrap_new_ImportSettings1D__SWIG_7(self, argc, argv);
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              return _wrap_new_ImportSettings1D__SWIG_6(self, argc, argv);
+            }
           }
         }
       }
@@ -40705,16 +41717,14 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
   }
   if (argc == 5) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
-        }
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40726,7 +41736,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
               _v = SWIG_CheckState(res);
             }
             if (_v) {
-              return _wrap_new_ImportSettings1D__SWIG_6(self, argc, argv);
+              return _wrap_new_ImportSettings1D__SWIG_13(self, argc, argv);
             }
           }
         }
@@ -40735,16 +41745,14 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
   }
   if (argc == 6) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
-        }
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40769,18 +41777,50 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
-  if (argc == 7) {
+  if (argc == 6) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                return _wrap_new_ImportSettings1D__SWIG_12(self, argc, argv);
+              }
+            }
+          }
         }
+      }
+    }
+  }
+  if (argc == 7) {
+    int _v = 0;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40811,18 +41851,56 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
-  if (argc == 8) {
+  if (argc == 7) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_size_t(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  return _wrap_new_ImportSettings1D__SWIG_11(self, argc, argv);
+                }
+              }
+            }
+          }
         }
+      }
+    }
+  }
+  if (argc == 8) {
+    int _v = 0;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40845,7 +41923,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
                 }
                 if (_v) {
                   {
-                    int res = SWIG_AsVal_int(argv[7], NULL);
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
                     _v = SWIG_CheckState(res);
                   }
                   if (_v) {
@@ -40859,18 +41937,62 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
-  if (argc == 9) {
+  if (argc == 8) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_size_t(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    return _wrap_new_ImportSettings1D__SWIG_10(self, argc, argv);
+                  }
+                }
+              }
+            }
+          }
         }
+      }
+    }
+  }
+  if (argc == 9) {
+    int _v = 0;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40893,7 +42015,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
                 }
                 if (_v) {
                   {
-                    int res = SWIG_AsVal_int(argv[7], NULL);
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
                     _v = SWIG_CheckState(res);
                   }
                   if (_v) {
@@ -40913,18 +42035,68 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
-  if (argc == 10) {
+  if (argc == 9) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_size_t(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_bool(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      return _wrap_new_ImportSettings1D__SWIG_9(self, argc, argv);
+                    }
+                  }
+                }
+              }
+            }
+          }
         }
+      }
+    }
+  }
+  if (argc == 10) {
+    int _v = 0;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -40947,7 +42119,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
                 }
                 if (_v) {
                   {
-                    int res = SWIG_AsVal_int(argv[7], NULL);
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
                     _v = SWIG_CheckState(res);
                   }
                   if (_v) {
@@ -40973,18 +42145,74 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
-  if (argc == 11) {
+  if (argc == 10) {
     int _v = 0;
-    int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
       _v = SWIG_CheckState(res);
       if (_v) {
-        {
-          int res = SWIG_AsVal_size_t(argv[2], NULL);
-          _v = SWIG_CheckState(res);
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_size_t(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_bool(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      {
+                        int res = SWIG_AsVal_bool(argv[9], NULL);
+                        _v = SWIG_CheckState(res);
+                      }
+                      if (_v) {
+                        return _wrap_new_ImportSettings1D__SWIG_8(self, argc, argv);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
         }
+      }
+    }
+  }
+  if (argc == 11) {
+    int _v = 0;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Coordinate, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -41007,7 +42235,7 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
                 }
                 if (_v) {
                   {
-                    int res = SWIG_AsVal_int(argv[7], NULL);
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
                     _v = SWIG_CheckState(res);
                   }
                   if (_v) {
@@ -41039,22 +42267,144 @@ SWIGINTERN PyObject *_wrap_new_ImportSettings1D(PyObject *self, PyObject *args)
       }
     }
   }
+  if (argc == 11) {
+    int _v = 0;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_AsPtr_std_string(argv[2], (std::string**)(0));
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_size_t(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              {
+                int res = SWIG_AsVal_size_t(argv[5], NULL);
+                _v = SWIG_CheckState(res);
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_size_t(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_size_t(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_bool(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      {
+                        int res = SWIG_AsVal_bool(argv[9], NULL);
+                        _v = SWIG_CheckState(res);
+                      }
+                      if (_v) {
+                        {
+                          int res = SWIG_AsVal_bool(argv[10], NULL);
+                          _v = SWIG_CheckState(res);
+                        }
+                        if (_v) {
+                          return _wrap_new_ImportSettings1D__SWIG_7(self, argc, argv);
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
   
 fail:
   SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_ImportSettings1D'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t,size_t,QUnit,bool,bool,bool)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t,size_t,QUnit,bool,bool)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t,size_t,QUnit,bool)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t,size_t,QUnit)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t,size_t)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t,size_t)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t,size_t)\n"
-    "    ImportSettings1D::ImportSettings1D(std::string,std::string,size_t,size_t)\n");
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool,bool,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(Coordinate,std::string,std::string,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool,bool,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t,size_t,size_t,bool)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t,size_t)\n"
+    "    ImportSettings1D::ImportSettings1D(char const *,std::string,std::string,size_t,size_t)\n");
   return 0;
 }
 
 
+SWIGINTERN PyObject *_wrap_ImportSettings1D_xCoord_set(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
+  Coordinate *arg2 = (Coordinate *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject *swig_obj[2] ;
+  
+  if (!SWIG_Python_UnpackTuple(args, "ImportSettings1D_xCoord_set", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ImportSettings1D, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImportSettings1D_xCoord_set" "', argument " "1"" of type '" "ImportSettings1D *""'"); 
+  }
+  arg1 = reinterpret_cast< ImportSettings1D * >(argp1);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_Coordinate, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ImportSettings1D_xCoord_set" "', argument " "2"" of type '" "Coordinate *""'"); 
+  }
+  arg2 = reinterpret_cast< Coordinate * >(argp2);
+  if (arg1) (arg1)->xCoord = *arg2;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ImportSettings1D_xCoord_get(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  Coordinate *result = 0 ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ImportSettings1D, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImportSettings1D_xCoord_get" "', argument " "1"" of type '" "ImportSettings1D *""'"); 
+  }
+  arg1 = reinterpret_cast< ImportSettings1D * >(argp1);
+  result = (Coordinate *)& ((arg1)->xCoord);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Coordinate, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_ImportSettings1D_headerPrefix_set(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
@@ -41433,58 +42783,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ImportSettings1D_qUnit_set(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
-  QUnit arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "ImportSettings1D_qUnit_set", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ImportSettings1D, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImportSettings1D_qUnit_set" "', argument " "1"" of type '" "ImportSettings1D *""'"); 
-  }
-  arg1 = reinterpret_cast< ImportSettings1D * >(argp1);
-  ecode2 = SWIG_AsVal_int(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImportSettings1D_qUnit_set" "', argument " "2"" of type '" "QUnit""'");
-  } 
-  arg2 = static_cast< QUnit >(val2);
-  if (arg1) (arg1)->qUnit = arg2;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ImportSettings1D_qUnit_get(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  QUnit result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ImportSettings1D, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImportSettings1D_qUnit_get" "', argument " "1"" of type '" "ImportSettings1D *""'"); 
-  }
-  arg1 = reinterpret_cast< ImportSettings1D * >(argp1);
-  result = (QUnit) ((arg1)->qUnit);
-  resultobj = SWIG_From_int(static_cast< int >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_ImportSettings1D_sort_set(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   ImportSettings1D *arg1 = (ImportSettings1D *) 0 ;
@@ -42805,6 +44103,18 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_vector_R3", _wrap_delete_vector_R3, METH_O, "delete_vector_R3(vector_R3 self)"},
 	 { "vector_R3_swigregister", vector_R3_swigregister, METH_O, NULL},
 	 { "vector_R3_swiginit", vector_R3_swiginit, METH_VARARGS, NULL},
+	 { "new_Coordinate", _wrap_new_Coordinate, METH_VARARGS, "\n"
+		"Coordinate(char const * label)\n"
+		"Coordinate(std::string const & label)\n"
+		"new_Coordinate(std::string name, std::string unit) -> Coordinate\n"
+		""},
+	 { "Coordinate___eq__", _wrap_Coordinate___eq__, METH_VARARGS, "Coordinate___eq__(Coordinate self, Coordinate other) -> bool"},
+	 { "Coordinate_name", _wrap_Coordinate_name, METH_O, "Coordinate_name(Coordinate self) -> std::string const &"},
+	 { "Coordinate_unit", _wrap_Coordinate_unit, METH_O, "Coordinate_unit(Coordinate self) -> std::string const &"},
+	 { "Coordinate_label", _wrap_Coordinate_label, METH_O, "Coordinate_label(Coordinate self) -> std::string"},
+	 { "delete_Coordinate", _wrap_delete_Coordinate, METH_O, "delete_Coordinate(Coordinate self)"},
+	 { "Coordinate_swigregister", Coordinate_swigregister, METH_O, NULL},
+	 { "Coordinate_swiginit", Coordinate_swiginit, METH_VARARGS, NULL},
 	 { "invertAxis", _wrap_invertAxis, METH_VARARGS, "invertAxis(int axis, vdouble2d_t original) -> vdouble2d_t"},
 	 { "transpose", _wrap_transpose, METH_O, "transpose(vdouble2d_t original) -> vdouble2d_t"},
 	 { "create2DArrayfromDatafield", _wrap_create2DArrayfromDatafield, METH_O, "create2DArrayfromDatafield(Datafield data) -> vdouble2d_t"},
@@ -43091,7 +44401,12 @@ static PyMethodDef SwigMethods[] = {
 	 { "relativeDifferenceField", _wrap_relativeDifferenceField, METH_VARARGS, "relativeDifferenceField(Datafield dat, Datafield ref) -> Datafield"},
 	 { "meanRelativeDifference", _wrap_meanRelativeDifference, METH_VARARGS, "meanRelativeDifference(Datafield dat, Datafield ref) -> double"},
 	 { "checkRelativeDifference", _wrap_checkRelativeDifference, METH_VARARGS, "checkRelativeDifference(vdouble1d_t dat, vdouble1d_t ref, double threshold) -> bool"},
-	 { "new_ImportSettings1D", _wrap_new_ImportSettings1D, METH_VARARGS, "ImportSettings1D(std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, QUnit _unit=over_nm, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True)"},
+	 { "new_ImportSettings1D", _wrap_new_ImportSettings1D, METH_VARARGS, "\n"
+		"ImportSettings1D(Coordinate _xCoord, std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True)\n"
+		"ImportSettings1D(char const * _xCoord, std::string _prefix, std::string _skip, size_t __Q, size_t __R, size_t __sR=0, size_t __dQ=0, size_t __lambda=0, bool _sort=True, bool _rm_neg=True, bool _rm_dup=True)\n"
+		""},
+	 { "ImportSettings1D_xCoord_set", _wrap_ImportSettings1D_xCoord_set, METH_VARARGS, "ImportSettings1D_xCoord_set(ImportSettings1D self, Coordinate xCoord)"},
+	 { "ImportSettings1D_xCoord_get", _wrap_ImportSettings1D_xCoord_get, METH_O, "ImportSettings1D_xCoord_get(ImportSettings1D self) -> Coordinate"},
 	 { "ImportSettings1D_headerPrefix_set", _wrap_ImportSettings1D_headerPrefix_set, METH_VARARGS, "ImportSettings1D_headerPrefix_set(ImportSettings1D self, std::string const & headerPrefix)"},
 	 { "ImportSettings1D_headerPrefix_get", _wrap_ImportSettings1D_headerPrefix_get, METH_O, "ImportSettings1D_headerPrefix_get(ImportSettings1D self) -> std::string const &"},
 	 { "ImportSettings1D_linesToSkip_set", _wrap_ImportSettings1D_linesToSkip_set, METH_VARARGS, "ImportSettings1D_linesToSkip_set(ImportSettings1D self, std::string const & linesToSkip)"},
@@ -43106,8 +44421,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "ImportSettings1D_col_dQ_get", _wrap_ImportSettings1D_col_dQ_get, METH_O, "ImportSettings1D_col_dQ_get(ImportSettings1D self) -> size_t"},
 	 { "ImportSettings1D_col_lambda_set", _wrap_ImportSettings1D_col_lambda_set, METH_VARARGS, "ImportSettings1D_col_lambda_set(ImportSettings1D self, size_t col_lambda)"},
 	 { "ImportSettings1D_col_lambda_get", _wrap_ImportSettings1D_col_lambda_get, METH_O, "ImportSettings1D_col_lambda_get(ImportSettings1D self) -> size_t"},
-	 { "ImportSettings1D_qUnit_set", _wrap_ImportSettings1D_qUnit_set, METH_VARARGS, "ImportSettings1D_qUnit_set(ImportSettings1D self, QUnit qUnit)"},
-	 { "ImportSettings1D_qUnit_get", _wrap_ImportSettings1D_qUnit_get, METH_O, "ImportSettings1D_qUnit_get(ImportSettings1D self) -> QUnit"},
 	 { "ImportSettings1D_sort_set", _wrap_ImportSettings1D_sort_set, METH_VARARGS, "ImportSettings1D_sort_set(ImportSettings1D self, bool sort)"},
 	 { "ImportSettings1D_sort_get", _wrap_ImportSettings1D_sort_get, METH_O, "ImportSettings1D_sort_get(ImportSettings1D self) -> bool"},
 	 { "ImportSettings1D_rm_negative_set", _wrap_ImportSettings1D_rm_negative_set, METH_VARARGS, "ImportSettings1D_rm_negative_set(ImportSettings1D self, bool rm_negative)"},
@@ -43252,6 +44565,7 @@ static void *_p_VerticalLineTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory
 }
 static swig_type_info _swigt__p_Beam = {"_p_Beam", "Beam *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Bin1D = {"_p_Bin1D", "Bin1D *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Coordinate = {"_p_Coordinate", "Coordinate *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Datafield = {"_p_Datafield", "Datafield *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_DetectorMask = {"_p_DetectorMask", "DetectorMask *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Ellipse = {"_p_Ellipse", "Ellipse *", 0, 0, (void*)0, 0};
@@ -43341,6 +44655,7 @@ static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_Beam,
   &_swigt__p_Bin1D,
+  &_swigt__p_Coordinate,
   &_swigt__p_Datafield,
   &_swigt__p_DetectorMask,
   &_swigt__p_Ellipse,
@@ -43430,6 +44745,7 @@ static swig_type_info *swig_type_initial[] = {
 
 static swig_cast_info _swigc__p_Beam[] = {  {&_swigt__p_Beam, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Bin1D[] = {  {&_swigt__p_Bin1D, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Coordinate[] = {  {&_swigt__p_Coordinate, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Datafield[] = {  {&_swigt__p_Datafield, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_DetectorMask[] = {  {&_swigt__p_DetectorMask, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Ellipse[] = {  {&_swigt__p_Ellipse, 0, 0, 0},{0, 0, 0, 0}};
@@ -43519,6 +44835,7 @@ static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0,
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_Beam,
   _swigc__p_Bin1D,
+  _swigc__p_Coordinate,
   _swigc__p_Datafield,
   _swigc__p_DetectorMask,
   _swigc__p_Ellipse,
@@ -44083,8 +45400,6 @@ SWIG_init(void) {
   SWIG_Python_SetConstant(d, "FlatDetector_X",SWIG_From_int(static_cast< int >(FlatDetector::X)));
   SWIG_Python_SetConstant(d, "FlatDetector_T",SWIG_From_int(static_cast< int >(FlatDetector::T)));
   SWIG_Python_SetConstant(d, "FlatDetector_R",SWIG_From_int(static_cast< int >(FlatDetector::R)));
-  SWIG_Python_SetConstant(d, "over_nm",SWIG_From_int(static_cast< int >(over_nm)));
-  SWIG_Python_SetConstant(d, "over_angstrom",SWIG_From_int(static_cast< int >(over_angstrom)));
   SWIG_Python_SetConstant(d, "unknown1D",SWIG_From_int(static_cast< int >(IO::unknown1D)));
   SWIG_Python_SetConstant(d, "csv1D",SWIG_From_int(static_cast< int >(IO::csv1D)));
   SWIG_Python_SetConstant(d, "bornagain1D",SWIG_From_int(static_cast< int >(IO::bornagain1D)));
diff --git a/rawEx/specular/PolarizedSpinAsymmetry.py b/rawEx/specular/PolarizedSpinAsymmetry.py
index c3f6c0b2e36..9378c689fd1 100755
--- a/rawEx/specular/PolarizedSpinAsymmetry.py
+++ b/rawEx/specular/PolarizedSpinAsymmetry.py
@@ -175,7 +175,7 @@ def plotSpinAsymmetry(data_pp, data_mm, q, r_pp, r_mm):
 ####################################################################
 
 def load_data(fname):
-    flags = ba.ImportSettings1D("#", "", 1, 2, 3, 4)
+    flags = ba.ImportSettings1D("q (1/nm)", "#", "", 1, 2, 3, 4)
     return ba.readData1D(fname, ba.csv1D, flags)
 
 ####################################################################
-- 
GitLab