From ed0d133aadf952617461ac953fd7c4345d70108c Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Mon, 23 May 2022 18:04:24 +0200
Subject: [PATCH] narrow down -> IDetector2D

---
 GUI/Model/Device/Instrument.cpp          |   8 +-
 GUI/Model/Device/Instrument.h            |  10 +-
 GUI/Model/Model/JobFunctions.cpp         |   1 +
 Sim/Simulation/OffSpecularSimulation.cpp |   2 +-
 Sim/Simulation/OffSpecularSimulation.h   |   2 +-
 Sim/Simulation/ScatteringSimulation.cpp  |   2 +-
 Sim/Simulation/ScatteringSimulation.h    |   2 +-
 auto/Wrap/doxygenSim.i                   |   4 +-
 auto/Wrap/libBornAgainSim.py             |   6 +-
 auto/Wrap/libBornAgainSim_wrap.cpp       | 211 ++++++++++++-----------
 10 files changed, 127 insertions(+), 121 deletions(-)

diff --git a/GUI/Model/Device/Instrument.cpp b/GUI/Model/Device/Instrument.cpp
index 234f75efe6b..e3cc7cdfbae 100644
--- a/GUI/Model/Device/Instrument.cpp
+++ b/GUI/Model/Device/Instrument.cpp
@@ -14,9 +14,9 @@
 
 #include "GUI/Model/Device/Instrument.h"
 #include "Device/Beam/Beam.h"
-#include "Device/Detector/IDetector.h"
+#include "Device/Detector/IDetector2D.h"
 
-Instrument::Instrument(const Beam& beam, const IDetector& detector)
+Instrument::Instrument(const Beam& beam, const IDetector2D& detector)
     : m_beam(beam.clone())
     , m_detector(detector.clone())
 {
@@ -24,12 +24,12 @@ Instrument::Instrument(const Beam& beam, const IDetector& detector)
 
 Instrument::~Instrument() = default;
 
-const IDetector* Instrument::getDetector() const
+const IDetector2D* Instrument::getDetector() const
 {
     return m_detector.get();
 }
 
-const IDetector& Instrument::detector() const
+const IDetector2D& Instrument::detector() const
 {
     return *m_detector;
 }
diff --git a/GUI/Model/Device/Instrument.h b/GUI/Model/Device/Instrument.h
index 85daa6f3009..3f21d567079 100644
--- a/GUI/Model/Device/Instrument.h
+++ b/GUI/Model/Device/Instrument.h
@@ -19,23 +19,23 @@
 #include <memory>
 
 class Beam;
-class IDetector;
+class IDetector2D;
 
 //! Assembles beam, detector and their relative positions with respect to the sample.
 
 class Instrument {
 public:
-    Instrument(const Beam& beam, const IDetector& detector);
+    Instrument(const Beam& beam, const IDetector2D& detector);
     ~Instrument();
 
     const Beam& beam() const { return *m_beam; }
 
-    const IDetector* getDetector() const;
-    const IDetector& detector() const;
+    const IDetector2D* getDetector() const;
+    const IDetector2D& detector() const;
 
 protected:
     std::unique_ptr<Beam> m_beam;
-    std::unique_ptr<IDetector> m_detector;
+    std::unique_ptr<IDetector2D> m_detector;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_DEVICE_INSTRUMENT_H
diff --git a/GUI/Model/Model/JobFunctions.cpp b/GUI/Model/Model/JobFunctions.cpp
index b1d42c592c1..211f6918783 100644
--- a/GUI/Model/Model/JobFunctions.cpp
+++ b/GUI/Model/Model/JobFunctions.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/Model/Model/JobFunctions.h"
 #include "Base/Util/Assert.h"
+#include "Device/Detector/IDetector2D.h"
 #include "GUI/Model/Device/Instrument.h"
 #include "GUI/Model/Data/Data1DViewItem.h"
 #include "GUI/Model/Data/DataPropertyContainer.h"
diff --git a/Sim/Simulation/OffSpecularSimulation.cpp b/Sim/Simulation/OffSpecularSimulation.cpp
index f7312166ce9..41a2e46ed9c 100644
--- a/Sim/Simulation/OffSpecularSimulation.cpp
+++ b/Sim/Simulation/OffSpecularSimulation.cpp
@@ -26,7 +26,7 @@
 #include "Resample/Element/DiffuseElement.h"
 
 OffSpecularSimulation::OffSpecularSimulation(const Beam& beam, const MultiLayer& sample,
-                                             const IDetector& detector)
+                                             const IDetector2D& detector)
     : ISimulation2D(beam, sample, detector)
 {
 }
diff --git a/Sim/Simulation/OffSpecularSimulation.h b/Sim/Simulation/OffSpecularSimulation.h
index 52c5f2ff096..11c6cdc2342 100644
--- a/Sim/Simulation/OffSpecularSimulation.h
+++ b/Sim/Simulation/OffSpecularSimulation.h
@@ -30,7 +30,7 @@ class Powerfield;
 
 class OffSpecularSimulation : public ISimulation2D {
 public:
-    OffSpecularSimulation(const Beam& beam, const MultiLayer& sample, const IDetector& detector);
+    OffSpecularSimulation(const Beam& beam, const MultiLayer& sample, const IDetector2D& detector);
     OffSpecularSimulation();
     ~OffSpecularSimulation() override = default;
 
diff --git a/Sim/Simulation/ScatteringSimulation.cpp b/Sim/Simulation/ScatteringSimulation.cpp
index b36774368e2..b7db5d553e0 100644
--- a/Sim/Simulation/ScatteringSimulation.cpp
+++ b/Sim/Simulation/ScatteringSimulation.cpp
@@ -20,7 +20,7 @@
 #include "Resample/Element/DiffuseElement.h"
 
 ScatteringSimulation::ScatteringSimulation(const Beam& beam, const MultiLayer& sample,
-                                           const IDetector& detector)
+                                           const IDetector2D& detector)
     : ISimulation2D(beam, sample, detector)
 {
 }
diff --git a/Sim/Simulation/ScatteringSimulation.h b/Sim/Simulation/ScatteringSimulation.h
index 28bdfff03ae..7f20b83afe3 100644
--- a/Sim/Simulation/ScatteringSimulation.h
+++ b/Sim/Simulation/ScatteringSimulation.h
@@ -27,7 +27,7 @@ class MultiLayer;
 
 class ScatteringSimulation : public ISimulation2D {
 public:
-    ScatteringSimulation(const Beam& beam, const MultiLayer& sample, const IDetector& detector);
+    ScatteringSimulation(const Beam& beam, const MultiLayer& sample, const IDetector2D& detector);
     ~ScatteringSimulation() override = default;
 
     std::string className() const final { return "ScatteringSimulation"; }
diff --git a/auto/Wrap/doxygenSim.i b/auto/Wrap/doxygenSim.i
index 5fdb58a7a84..0820f5320a9 100644
--- a/auto/Wrap/doxygenSim.i
+++ b/auto/Wrap/doxygenSim.i
@@ -1285,7 +1285,7 @@ Holds an instrument and sample model. Computes reflected and scattered intensity
 C++ includes: OffSpecularSimulation.h
 ";
 
-%feature("docstring")  OffSpecularSimulation::OffSpecularSimulation "OffSpecularSimulation::OffSpecularSimulation(const Beam &beam, const MultiLayer &sample, const IDetector &detector)
+%feature("docstring")  OffSpecularSimulation::OffSpecularSimulation "OffSpecularSimulation::OffSpecularSimulation(const Beam &beam, const MultiLayer &sample, const IDetector2D &detector)
 ";
 
 %feature("docstring")  OffSpecularSimulation::OffSpecularSimulation "OffSpecularSimulation::OffSpecularSimulation()
@@ -1738,7 +1738,7 @@ Holds an instrument and sample model. Computes the scattered intensity as functi
 C++ includes: ScatteringSimulation.h
 ";
 
-%feature("docstring")  ScatteringSimulation::ScatteringSimulation "ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector &detector)
+%feature("docstring")  ScatteringSimulation::ScatteringSimulation "ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector2D &detector)
 ";
 
 %feature("docstring")  ScatteringSimulation::~ScatteringSimulation "ScatteringSimulation::~ScatteringSimulation() override=default
diff --git a/auto/Wrap/libBornAgainSim.py b/auto/Wrap/libBornAgainSim.py
index ae32d166b45..ce499f33a2c 100644
--- a/auto/Wrap/libBornAgainSim.py
+++ b/auto/Wrap/libBornAgainSim.py
@@ -3536,8 +3536,8 @@ class ScatteringSimulation(ISimulation2D):
 
     def __init__(self, beam, sample, detector):
         r"""
-        __init__(ScatteringSimulation self, Beam const & beam, MultiLayer const & sample, IDetector const & detector) -> ScatteringSimulation
-        ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector &detector)
+        __init__(ScatteringSimulation self, Beam const & beam, MultiLayer const & sample, IDetector2D const & detector) -> ScatteringSimulation
+        ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector2D &detector)
 
         """
         _libBornAgainSim.ScatteringSimulation_swiginit(self, _libBornAgainSim.new_ScatteringSimulation(beam, sample, detector))
@@ -3742,7 +3742,7 @@ class OffSpecularSimulation(ISimulation2D):
 
     def __init__(self, *args):
         r"""
-        __init__(OffSpecularSimulation self, Beam const & beam, MultiLayer const & sample, IDetector const & detector) -> OffSpecularSimulation
+        __init__(OffSpecularSimulation self, Beam const & beam, MultiLayer const & sample, IDetector2D const & detector) -> OffSpecularSimulation
         __init__(OffSpecularSimulation self) -> OffSpecularSimulation
         OffSpecularSimulation::OffSpecularSimulation()
 
diff --git a/auto/Wrap/libBornAgainSim_wrap.cpp b/auto/Wrap/libBornAgainSim_wrap.cpp
index d915e53885f..66ab5bbcf56 100644
--- a/auto/Wrap/libBornAgainSim_wrap.cpp
+++ b/auto/Wrap/libBornAgainSim_wrap.cpp
@@ -3109,92 +3109,93 @@ namespace Swig {
 #define SWIGTYPE_p_IChiSquaredModule swig_types[9]
 #define SWIGTYPE_p_ICloneable swig_types[10]
 #define SWIGTYPE_p_IDetector swig_types[11]
-#define SWIGTYPE_p_IDistribution1D swig_types[12]
-#define SWIGTYPE_p_IFootprintFactor swig_types[13]
-#define SWIGTYPE_p_IIntensityFunction swig_types[14]
-#define SWIGTYPE_p_INode swig_types[15]
-#define SWIGTYPE_p_IRangedDistribution swig_types[16]
-#define SWIGTYPE_p_ISampleNode swig_types[17]
-#define SWIGTYPE_p_IShape2D swig_types[18]
-#define SWIGTYPE_p_ISimulation swig_types[19]
-#define SWIGTYPE_p_ISimulation2D swig_types[20]
-#define SWIGTYPE_p_ISpecularScan swig_types[21]
-#define SWIGTYPE_p_IVarianceFunction swig_types[22]
-#define SWIGTYPE_p_IntensityFunctionLog swig_types[23]
-#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[24]
-#define SWIGTYPE_p_IterationInfo swig_types[25]
-#define SWIGTYPE_p_MultiLayer swig_types[26]
-#define SWIGTYPE_p_OffSpecularSimulation swig_types[27]
-#define SWIGTYPE_p_ParameterDistribution swig_types[28]
-#define SWIGTYPE_p_PoissonBackground swig_types[29]
-#define SWIGTYPE_p_PyBuilderCallback swig_types[30]
-#define SWIGTYPE_p_PyObserverCallback swig_types[31]
-#define SWIGTYPE_p_QzScan swig_types[32]
-#define SWIGTYPE_p_RealLimits swig_types[33]
-#define SWIGTYPE_p_ScanResolution swig_types[34]
-#define SWIGTYPE_p_ScatteringSimulation swig_types[35]
-#define SWIGTYPE_p_SimulationOptions swig_types[36]
-#define SWIGTYPE_p_SimulationResult swig_types[37]
-#define SWIGTYPE_p_SpecularSimulation swig_types[38]
-#define SWIGTYPE_p_VarianceConstantFunction swig_types[39]
-#define SWIGTYPE_p_VarianceSimFunction swig_types[40]
-#define SWIGTYPE_p_Vec3T_double_t swig_types[41]
-#define SWIGTYPE_p_Vec3T_int_t swig_types[42]
-#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[43]
-#define SWIGTYPE_p_allocator_type swig_types[44]
-#define SWIGTYPE_p_char swig_types[45]
-#define SWIGTYPE_p_difference_type swig_types[46]
-#define SWIGTYPE_p_first_type swig_types[47]
-#define SWIGTYPE_p_int swig_types[48]
-#define SWIGTYPE_p_key_type swig_types[49]
-#define SWIGTYPE_p_long_long swig_types[50]
-#define SWIGTYPE_p_mapped_type swig_types[51]
-#define SWIGTYPE_p_mumufit__MinimizerResult swig_types[52]
-#define SWIGTYPE_p_mumufit__Parameters swig_types[53]
-#define SWIGTYPE_p_p_PyObject swig_types[54]
-#define SWIGTYPE_p_second_type swig_types[55]
-#define SWIGTYPE_p_short swig_types[56]
-#define SWIGTYPE_p_signed_char swig_types[57]
-#define SWIGTYPE_p_size_type swig_types[58]
-#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[59]
-#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[60]
-#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[61]
-#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[62]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[63]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[64]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[65]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[66]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[67]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[68]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[69]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[70]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[71]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[72]
-#define SWIGTYPE_p_std__invalid_argument swig_types[73]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[74]
-#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[75]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[76]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[77]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[78]
-#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[79]
-#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[80]
-#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[81]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[82]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[83]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[84]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[85]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[86]
-#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[87]
-#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[88]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[89]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[90]
-#define SWIGTYPE_p_unsigned_char swig_types[91]
-#define SWIGTYPE_p_unsigned_int swig_types[92]
-#define SWIGTYPE_p_unsigned_long_long swig_types[93]
-#define SWIGTYPE_p_unsigned_short swig_types[94]
-#define SWIGTYPE_p_value_type swig_types[95]
-static swig_type_info *swig_types[97];
-static swig_module_info swig_module = {swig_types, 96, 0, 0, 0, 0};
+#define SWIGTYPE_p_IDetector2D swig_types[12]
+#define SWIGTYPE_p_IDistribution1D swig_types[13]
+#define SWIGTYPE_p_IFootprintFactor swig_types[14]
+#define SWIGTYPE_p_IIntensityFunction swig_types[15]
+#define SWIGTYPE_p_INode swig_types[16]
+#define SWIGTYPE_p_IRangedDistribution swig_types[17]
+#define SWIGTYPE_p_ISampleNode swig_types[18]
+#define SWIGTYPE_p_IShape2D swig_types[19]
+#define SWIGTYPE_p_ISimulation swig_types[20]
+#define SWIGTYPE_p_ISimulation2D swig_types[21]
+#define SWIGTYPE_p_ISpecularScan swig_types[22]
+#define SWIGTYPE_p_IVarianceFunction swig_types[23]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[24]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[25]
+#define SWIGTYPE_p_IterationInfo swig_types[26]
+#define SWIGTYPE_p_MultiLayer swig_types[27]
+#define SWIGTYPE_p_OffSpecularSimulation swig_types[28]
+#define SWIGTYPE_p_ParameterDistribution swig_types[29]
+#define SWIGTYPE_p_PoissonBackground swig_types[30]
+#define SWIGTYPE_p_PyBuilderCallback swig_types[31]
+#define SWIGTYPE_p_PyObserverCallback swig_types[32]
+#define SWIGTYPE_p_QzScan swig_types[33]
+#define SWIGTYPE_p_RealLimits swig_types[34]
+#define SWIGTYPE_p_ScanResolution swig_types[35]
+#define SWIGTYPE_p_ScatteringSimulation swig_types[36]
+#define SWIGTYPE_p_SimulationOptions swig_types[37]
+#define SWIGTYPE_p_SimulationResult swig_types[38]
+#define SWIGTYPE_p_SpecularSimulation swig_types[39]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[40]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[41]
+#define SWIGTYPE_p_Vec3T_double_t swig_types[42]
+#define SWIGTYPE_p_Vec3T_int_t swig_types[43]
+#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[44]
+#define SWIGTYPE_p_allocator_type swig_types[45]
+#define SWIGTYPE_p_char swig_types[46]
+#define SWIGTYPE_p_difference_type swig_types[47]
+#define SWIGTYPE_p_first_type swig_types[48]
+#define SWIGTYPE_p_int swig_types[49]
+#define SWIGTYPE_p_key_type swig_types[50]
+#define SWIGTYPE_p_long_long swig_types[51]
+#define SWIGTYPE_p_mapped_type swig_types[52]
+#define SWIGTYPE_p_mumufit__MinimizerResult swig_types[53]
+#define SWIGTYPE_p_mumufit__Parameters swig_types[54]
+#define SWIGTYPE_p_p_PyObject swig_types[55]
+#define SWIGTYPE_p_second_type swig_types[56]
+#define SWIGTYPE_p_short swig_types[57]
+#define SWIGTYPE_p_signed_char swig_types[58]
+#define SWIGTYPE_p_size_type swig_types[59]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[60]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[61]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[62]
+#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[63]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[64]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[65]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[66]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[67]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[68]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[69]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[70]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[71]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[72]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[73]
+#define SWIGTYPE_p_std__invalid_argument swig_types[74]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[75]
+#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[76]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[77]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[78]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[79]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[80]
+#define SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t swig_types[81]
+#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[82]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[83]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[84]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[85]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[86]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[87]
+#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[88]
+#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[89]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[90]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[91]
+#define SWIGTYPE_p_unsigned_char swig_types[92]
+#define SWIGTYPE_p_unsigned_int swig_types[93]
+#define SWIGTYPE_p_unsigned_long_long swig_types[94]
+#define SWIGTYPE_p_unsigned_short swig_types[95]
+#define SWIGTYPE_p_value_type swig_types[96]
+static swig_type_info *swig_types[98];
+static swig_module_info swig_module = {swig_types, 97, 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)
 
@@ -38010,7 +38011,7 @@ SWIGINTERN PyObject *_wrap_new_ScatteringSimulation(PyObject *SWIGUNUSEDPARM(sel
   PyObject *resultobj = 0;
   Beam *arg1 = 0 ;
   MultiLayer *arg2 = 0 ;
-  IDetector *arg3 = 0 ;
+  IDetector2D *arg3 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -38037,15 +38038,15 @@ SWIGINTERN PyObject *_wrap_new_ScatteringSimulation(PyObject *SWIGUNUSEDPARM(sel
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ScatteringSimulation" "', argument " "2"" of type '" "MultiLayer const &""'"); 
   }
   arg2 = reinterpret_cast< MultiLayer * >(argp2);
-  res3 = SWIG_ConvertPtr(swig_obj[2], &argp3, SWIGTYPE_p_IDetector,  0  | 0);
+  res3 = SWIG_ConvertPtr(swig_obj[2], &argp3, SWIGTYPE_p_IDetector2D,  0  | 0);
   if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_ScatteringSimulation" "', argument " "3"" of type '" "IDetector const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_ScatteringSimulation" "', argument " "3"" of type '" "IDetector2D const &""'"); 
   }
   if (!argp3) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ScatteringSimulation" "', argument " "3"" of type '" "IDetector const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ScatteringSimulation" "', argument " "3"" of type '" "IDetector2D const &""'"); 
   }
-  arg3 = reinterpret_cast< IDetector * >(argp3);
-  result = (ScatteringSimulation *)new ScatteringSimulation((Beam const &)*arg1,(MultiLayer const &)*arg2,(IDetector const &)*arg3);
+  arg3 = reinterpret_cast< IDetector2D * >(argp3);
+  result = (ScatteringSimulation *)new ScatteringSimulation((Beam const &)*arg1,(MultiLayer const &)*arg2,(IDetector2D const &)*arg3);
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScatteringSimulation, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
@@ -38744,7 +38745,7 @@ SWIGINTERN PyObject *_wrap_new_OffSpecularSimulation__SWIG_0(PyObject *SWIGUNUSE
   PyObject *resultobj = 0;
   Beam *arg1 = 0 ;
   MultiLayer *arg2 = 0 ;
-  IDetector *arg3 = 0 ;
+  IDetector2D *arg3 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -38770,15 +38771,15 @@ SWIGINTERN PyObject *_wrap_new_OffSpecularSimulation__SWIG_0(PyObject *SWIGUNUSE
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_OffSpecularSimulation" "', argument " "2"" of type '" "MultiLayer const &""'"); 
   }
   arg2 = reinterpret_cast< MultiLayer * >(argp2);
-  res3 = SWIG_ConvertPtr(swig_obj[2], &argp3, SWIGTYPE_p_IDetector,  0  | 0);
+  res3 = SWIG_ConvertPtr(swig_obj[2], &argp3, SWIGTYPE_p_IDetector2D,  0  | 0);
   if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_OffSpecularSimulation" "', argument " "3"" of type '" "IDetector const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_OffSpecularSimulation" "', argument " "3"" of type '" "IDetector2D const &""'"); 
   }
   if (!argp3) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_OffSpecularSimulation" "', argument " "3"" of type '" "IDetector const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_OffSpecularSimulation" "', argument " "3"" of type '" "IDetector2D const &""'"); 
   }
-  arg3 = reinterpret_cast< IDetector * >(argp3);
-  result = (OffSpecularSimulation *)new OffSpecularSimulation((Beam const &)*arg1,(MultiLayer const &)*arg2,(IDetector const &)*arg3);
+  arg3 = reinterpret_cast< IDetector2D * >(argp3);
+  result = (OffSpecularSimulation *)new OffSpecularSimulation((Beam const &)*arg1,(MultiLayer const &)*arg2,(IDetector2D const &)*arg3);
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_OffSpecularSimulation, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
@@ -38818,7 +38819,7 @@ SWIGINTERN PyObject *_wrap_new_OffSpecularSimulation(PyObject *self, PyObject *a
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_MultiLayer, SWIG_POINTER_NO_NULL | 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IDetector, SWIG_POINTER_NO_NULL | 0);
+        int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IDetector2D, SWIG_POINTER_NO_NULL | 0);
         _v = SWIG_CheckState(res);
         if (_v) {
           return _wrap_new_OffSpecularSimulation__SWIG_0(self, argc, argv);
@@ -38830,7 +38831,7 @@ SWIGINTERN PyObject *_wrap_new_OffSpecularSimulation(PyObject *self, PyObject *a
 fail:
   SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_OffSpecularSimulation'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    OffSpecularSimulation::OffSpecularSimulation(Beam const &,MultiLayer const &,IDetector const &)\n"
+    "    OffSpecularSimulation::OffSpecularSimulation(Beam const &,MultiLayer const &,IDetector2D const &)\n"
     "    OffSpecularSimulation::OffSpecularSimulation()\n");
   return 0;
 }
@@ -41915,8 +41916,8 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "ISimulation2D_swigregister", ISimulation2D_swigregister, METH_O, NULL},
 	 { "new_ScatteringSimulation", _wrap_new_ScatteringSimulation, METH_VARARGS, "\n"
-		"new_ScatteringSimulation(Beam const & beam, MultiLayer const & sample, IDetector const & detector) -> ScatteringSimulation\n"
-		"ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector &detector)\n"
+		"new_ScatteringSimulation(Beam const & beam, MultiLayer const & sample, IDetector2D const & detector) -> ScatteringSimulation\n"
+		"ScatteringSimulation::ScatteringSimulation(const Beam &beam, const MultiLayer &sample, const IDetector2D &detector)\n"
 		"\n"
 		""},
 	 { "delete_ScatteringSimulation", _wrap_delete_ScatteringSimulation, METH_O, "\n"
@@ -42037,7 +42038,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "SpecularSimulation_swigregister", SpecularSimulation_swigregister, METH_O, NULL},
 	 { "SpecularSimulation_swiginit", SpecularSimulation_swiginit, METH_VARARGS, NULL},
 	 { "new_OffSpecularSimulation", _wrap_new_OffSpecularSimulation, METH_VARARGS, "\n"
-		"OffSpecularSimulation(Beam const & beam, MultiLayer const & sample, IDetector const & detector)\n"
+		"OffSpecularSimulation(Beam const & beam, MultiLayer const & sample, IDetector2D const & detector)\n"
 		"new_OffSpecularSimulation() -> OffSpecularSimulation\n"
 		"OffSpecularSimulation::OffSpecularSimulation()\n"
 		"\n"
@@ -42481,6 +42482,7 @@ static swig_type_info _swigt__p_IChiSquaredModule = {"_p_IChiSquaredModule", "IC
 static swig_type_info _swigt__p_ICloneable = {"_p_ICloneable", "ICloneable *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ISampleNode = {"_p_ISampleNode", 0, 0, 0, 0, 0};
 static swig_type_info _swigt__p_IDetector = {"_p_IDetector", "IDetector *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_IDetector2D = {"_p_IDetector2D", "IDetector2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IDistribution1D = {"_p_IDistribution1D", "IDistribution1D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IFootprintFactor = {"_p_IFootprintFactor", "IFootprintFactor *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IIntensityFunction = {"_p_IIntensityFunction", "IIntensityFunction *", 0, 0, (void*)0, 0};
@@ -42578,6 +42580,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_IChiSquaredModule,
   &_swigt__p_ICloneable,
   &_swigt__p_IDetector,
+  &_swigt__p_IDetector2D,
   &_swigt__p_IDistribution1D,
   &_swigt__p_IFootprintFactor,
   &_swigt__p_IIntensityFunction,
@@ -42677,6 +42680,7 @@ static swig_cast_info _swigc__p_IChiSquaredModule[] = {  {&_swigt__p_IChiSquared
 static swig_cast_info _swigc__p_ISampleNode[] = {{&_swigt__p_ISampleNode, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_QzScan, _p_QzScanTo_p_ICloneable, 0, 0},  {&_swigt__p_AlphaScan, _p_AlphaScanTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonBackground, _p_PoissonBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector[] = {  {&_swigt__p_IDetector, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDistribution1D[] = {  {&_swigt__p_IDistribution1D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFootprintFactor[] = {  {&_swigt__p_IFootprintFactor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IIntensityFunction[] = {  {&_swigt__p_IntensityFunctionSqrt, _p_IntensityFunctionSqrtTo_p_IIntensityFunction, 0, 0},  {&_swigt__p_IIntensityFunction, 0, 0, 0},  {&_swigt__p_IntensityFunctionLog, _p_IntensityFunctionLogTo_p_IIntensityFunction, 0, 0},{0, 0, 0, 0}};
@@ -42774,6 +42778,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_IChiSquaredModule,
   _swigc__p_ICloneable,
   _swigc__p_IDetector,
+  _swigc__p_IDetector2D,
   _swigc__p_IDistribution1D,
   _swigc__p_IFootprintFactor,
   _swigc__p_IIntensityFunction,
-- 
GitLab