From a1fdf679020d70e66b6022ce701a759496fa6186 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (l)" <j.wuttke@fz-juelich.de>
Date: Sun, 20 Nov 2016 09:04:48 +0100
Subject: [PATCH] rm namespace Geometry (no clear reason why just these classes
 were in a namespace)

---
 Core/Export/ExportToPython.cpp                |    2 +-
 Core/Export/PythonFormatting.cpp              |   18 +-
 Core/Export/PythonFormatting.h                |    6 +-
 Core/Instrument/DetectorMask.cpp              |    6 +-
 Core/Instrument/DetectorMask.h                |    6 +-
 Core/Instrument/IDetector2D.cpp               |    4 +-
 Core/Instrument/IDetector2D.h                 |   10 +-
 Core/Instrument/RegionOfInterest.cpp          |    2 +-
 Core/Instrument/RegionOfInterest.h            |   16 +-
 Core/Mask/Ellipse.cpp                         |    6 +-
 Core/Mask/Ellipse.h                           |   11 +-
 Core/Mask/IShape2D.h                          |    6 -
 Core/Mask/InfinitePlane.h                     |    6 +-
 Core/Mask/Line.cpp                            |    4 -
 Core/Mask/Line.h                              |   12 +-
 Core/Mask/Polygon.cpp                         |    6 +-
 Core/Mask/Polygon.h                           |    6 +-
 Core/Mask/Rectangle.cpp                       |    6 +-
 Core/Mask/Rectangle.h                         |    6 +-
 Core/Simulation/GISASSimulation.cpp           |    2 +-
 Core/Simulation/GISASSimulation.h             |    2 +-
 Core/StandardSamples/StandardSimulations.cpp  |   22 +-
 GUI/coregui/Models/MaskItems.cpp              |   26 +-
 GUI/coregui/Models/MaskItems.h                |   20 +-
 GUI/coregui/Models/TransformFromDomain.cpp    |   14 +-
 GUI/coregui/Models/TransformToDomain.cpp      |    2 +-
 .../MaskWidgets/MaskResultsPresenter.cpp      |    2 +-
 Tests/Functional/Fit/RectDetectorFitTest.cpp  |    2 +-
 Tests/UnitTests/Core/3/DetectorMaskTest.h     |    8 +-
 Tests/UnitTests/Core/3/PolygonTest.h          |   16 +-
 Tests/UnitTests/Core/3/SimulationAreaTest.h   |   14 +-
 .../UnitTests/Core/3/SphericalDetectorTest.h  |    6 +-
 Tests/UnitTests/Core/4/Shape2DTest.h          |   20 +-
 auto/Wrap/libBornAgainCore.py                 |  299 +---
 auto/Wrap/libBornAgainCore_wrap.cpp           | 1475 ++++++++---------
 35 files changed, 807 insertions(+), 1262 deletions(-)

diff --git a/Core/Export/ExportToPython.cpp b/Core/Export/ExportToPython.cpp
index 6ad033b3805..226ce083539 100644
--- a/Core/Export/ExportToPython.cpp
+++ b/Core/Export/ExportToPython.cpp
@@ -761,7 +761,7 @@ std::string ExportToPython::defineMasks(const GISASSimulation* simulation) const
         result << "\n";
         for(size_t i_mask=0; i_mask<detectorMask->numberOfMasks(); ++i_mask) {
             bool mask_value(false);
-            const Geometry::IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
+            const IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
             result << representShape2D(indent(), shape, mask_value, printFunc(detector));
         }
         result << "\n";
diff --git a/Core/Export/PythonFormatting.cpp b/Core/Export/PythonFormatting.cpp
index cecb9f1bc85..3de39023464 100644
--- a/Core/Export/PythonFormatting.cpp
+++ b/Core/Export/PythonFormatting.cpp
@@ -59,13 +59,13 @@ namespace PythonFormatting {
 
 //! Returns fixed Python code snippet that defines the function "runSimulation".
 
-std::string representShape2D(const std::string& indent, const Geometry::IShape2D* ishape,
+std::string representShape2D(const std::string& indent, const IShape2D* ishape,
                              bool mask_value, std::function<std::string(double)> printValueFunc)
 {
     std::ostringstream result;
     result << std::setprecision(12);
 
-    if (const Geometry::Polygon* shape = dynamic_cast<const Geometry::Polygon*>(ishape)) {
+    if (const Polygon* shape = dynamic_cast<const Polygon*>(ishape)) {
         std::vector<double> xpos, ypos;
         shape->getPoints(xpos, ypos);
         result << indent << "points = [";
@@ -78,10 +78,10 @@ std::string representShape2D(const std::string& indent, const Geometry::IShape2D
         result << indent << "simulation.addMask(" <<
             "ba.Polygon(points), " << printBool(mask_value) << ")\n";
 
-    } else if(dynamic_cast<const Geometry::InfinitePlane*>(ishape)) {
+    } else if(dynamic_cast<const InfinitePlane*>(ishape)) {
         result << indent << "simulation.maskAll()\n";
 
-    } else if(const Geometry::Ellipse* shape = dynamic_cast<const Geometry::Ellipse*>(ishape)) {
+    } else if(const Ellipse* shape = dynamic_cast<const Ellipse*>(ishape)) {
         result << indent << "simulation.addMask(";
         result << "ba.Ellipse("
                << printValueFunc(shape->getCenterX()) << ", "
@@ -92,7 +92,7 @@ std::string representShape2D(const std::string& indent, const Geometry::IShape2D
         result << "), " << printBool(mask_value) << ")\n";
     }
 
-    else if(const Geometry::Rectangle* shape = dynamic_cast<const Geometry::Rectangle*>(ishape)) {
+    else if(const Rectangle* shape = dynamic_cast<const Rectangle*>(ishape)) {
         result << indent << "simulation.addMask(";
         result << "ba.Rectangle("
                << printValueFunc(shape->getXlow()) << ", "
@@ -102,16 +102,16 @@ std::string representShape2D(const std::string& indent, const Geometry::IShape2D
                << printBool(mask_value) << ")\n";
     }
 
-    else if(const Geometry::VerticalLine* shape =
-            dynamic_cast<const Geometry::VerticalLine*>(ishape)) {
+    else if(const VerticalLine* shape =
+            dynamic_cast<const VerticalLine*>(ishape)) {
         result << indent << "simulation.addMask(";
         result << "ba.VerticalLine("
                << printValueFunc(shape->getXpos()) << "), "
                << printBool(mask_value) << ")\n";
     }
 
-    else if(const Geometry::HorizontalLine* shape =
-            dynamic_cast<const Geometry::HorizontalLine*>(ishape)) {
+    else if(const HorizontalLine* shape =
+            dynamic_cast<const HorizontalLine*>(ishape)) {
         result << indent << "simulation.addMask(";
         result << "ba.HorizontalLine("
                << printValueFunc(shape->getYpos()) << "), "
diff --git a/Core/Export/PythonFormatting.h b/Core/Export/PythonFormatting.h
index 8ca449b9b78..a0dfc026e92 100644
--- a/Core/Export/PythonFormatting.h
+++ b/Core/Export/PythonFormatting.h
@@ -20,12 +20,10 @@
 #include <string>
 #include <functional>
 
-namespace Geometry {
-    class IShape2D;
-}
 class GISASSimulation;
 class IDistribution1D;
 class IParameterized;
+class IShape2D;
 class RealParameter;
 
 //! Utility functions for writing Python code snippets.
@@ -34,7 +32,7 @@ namespace PythonFormatting {
     BA_CORE_API_ std::string simulationToPython(GISASSimulation* simulation);
 
     BA_CORE_API_ std::string representShape2D(const std::string& indent,
-                                              const Geometry::IShape2D* ishape,
+                                              const IShape2D* ishape,
                                               bool mask_value,
                                               std::function<std::string(double)> printValueFunc);
     BA_CORE_API_ std::string printBool(double value);
diff --git a/Core/Instrument/DetectorMask.cpp b/Core/Instrument/DetectorMask.cpp
index a5cd51ceeae..02875ac21ca 100644
--- a/Core/Instrument/DetectorMask.cpp
+++ b/Core/Instrument/DetectorMask.cpp
@@ -44,7 +44,7 @@ DetectorMask& DetectorMask::operator=(const DetectorMask& other)
     return *this;
 }
 
-void DetectorMask::addMask(const Geometry::IShape2D& shape, bool mask_value)
+void DetectorMask::addMask(const IShape2D& shape, bool mask_value)
 {
     m_shapes.push_back(shape.clone());
     m_mask_of_shape.push_back(mask_value);
@@ -117,7 +117,7 @@ size_t DetectorMask::numberOfMasks() const
     return m_shapes.size();
 }
 
-const Geometry::IShape2D* DetectorMask::getMaskShape(size_t mask_index, bool& mask_value) const
+const IShape2D* DetectorMask::getMaskShape(size_t mask_index, bool& mask_value) const
 {
     if(mask_index >= numberOfMasks())
         return nullptr;
@@ -138,7 +138,7 @@ void DetectorMask::process_masks()
         // setting mask to the data starting from last shape added
         bool is_masked(false);
         for(size_t i_shape=m_shapes.size(); i_shape>0; --i_shape) {
-            const Geometry::IShape2D* shape = m_shapes[i_shape-1];
+            const IShape2D* shape = m_shapes[i_shape-1];
             if(shape->contains(binx, biny)) {
                 if(m_mask_of_shape[i_shape-1])
                     is_masked = true;
diff --git a/Core/Instrument/DetectorMask.h b/Core/Instrument/DetectorMask.h
index 8e4f2808fce..16a896cb08e 100644
--- a/Core/Instrument/DetectorMask.h
+++ b/Core/Instrument/DetectorMask.h
@@ -37,7 +37,7 @@ public:
     //! The value "true" means that the area will be excluded from the analysis.
     //! @param shape The shape of mask.
     //! @param mask_value The value of mask
-    void addMask(const Geometry::IShape2D& shape, bool mask_value);
+    void addMask(const IShape2D& shape, bool mask_value);
 
     //! Init the map of masks for the given detector plane
     void initMaskData(const IDetector2D& detector);
@@ -60,12 +60,12 @@ public:
 
     size_t numberOfMasks() const;
 
-    const Geometry::IShape2D* getMaskShape(size_t mask_index, bool& mask_value) const;
+    const IShape2D* getMaskShape(size_t mask_index, bool& mask_value) const;
 
 private:
     void process_masks();
 
-    SafePointerVector<Geometry::IShape2D> m_shapes;
+    SafePointerVector<IShape2D> m_shapes;
     std::vector<bool> m_mask_of_shape;
     OutputData<bool> m_mask_data;
     int m_number_of_masked_channels;
diff --git a/Core/Instrument/IDetector2D.cpp b/Core/Instrument/IDetector2D.cpp
index 9860b60556c..4365dbbbcaf 100644
--- a/Core/Instrument/IDetector2D.cpp
+++ b/Core/Instrument/IDetector2D.cpp
@@ -161,7 +161,7 @@ void IDetector2D::removeMasks()
     m_detector_mask.removeMasks();
 }
 
-void IDetector2D::addMask(const Geometry::IShape2D &shape, bool mask_value)
+void IDetector2D::addMask(const IShape2D &shape, bool mask_value)
 {
     m_detector_mask.addMask(shape, mask_value);
     m_detector_mask.initMaskData(*this);
@@ -171,7 +171,7 @@ void IDetector2D::maskAll()
 {
     if(m_axes.size() != 2) return;
     m_detector_mask.removeMasks();
-    addMask(Geometry::InfinitePlane(), true);
+    addMask(InfinitePlane(), true);
 }
 
 const DetectorMask *IDetector2D::getDetectorMask() const
diff --git a/Core/Instrument/IDetector2D.h b/Core/Instrument/IDetector2D.h
index 323d338dad2..9a94c33f2ea 100644
--- a/Core/Instrument/IDetector2D.h
+++ b/Core/Instrument/IDetector2D.h
@@ -25,15 +25,13 @@
 
 template<class T> class OutputData;
 class Beam;
+class DetectionProperties;
 class IAxis;
 class IDetectorResolution;
 class IPixelMap;
-class SimulationElement;
-class DetectionProperties;
+class IShape2D;
 class RegionOfInterest;
-namespace Geometry {
-    class IShape2D;
-}
+class SimulationElement;
 
 //! @class IDetector
 //! @ingroup simulation
@@ -88,7 +86,7 @@ public:
     //! has priority.
     //! @param shape The shape of mask (Rectangle, Polygon, Line, Ellipse)
     //! @param mask_value The value of mask
-    void addMask(const Geometry::IShape2D& shape, bool mask_value = true);
+    void addMask(const IShape2D& shape, bool mask_value = true);
 
     //! Put the mask for all detector channels (i.e. exclude whole detector from the analysis)
     void maskAll();
diff --git a/Core/Instrument/RegionOfInterest.cpp b/Core/Instrument/RegionOfInterest.cpp
index 8e09de37f9b..5bdd940b0f0 100644
--- a/Core/Instrument/RegionOfInterest.cpp
+++ b/Core/Instrument/RegionOfInterest.cpp
@@ -38,7 +38,7 @@ RegionOfInterest::RegionOfInterest(const OutputData<double> &data,
 }
 
 RegionOfInterest::RegionOfInterest(double xlow, double ylow, double xup, double yup)
-    : m_rectangle(new Geometry::Rectangle(xlow, ylow, xup, yup))
+    : m_rectangle(new Rectangle(xlow, ylow, xup, yup))
     , m_ax1(0)
     , m_ay1(0)
     , m_ax2(0)
diff --git a/Core/Instrument/RegionOfInterest.h b/Core/Instrument/RegionOfInterest.h
index ede1e007a14..003eb555990 100644
--- a/Core/Instrument/RegionOfInterest.h
+++ b/Core/Instrument/RegionOfInterest.h
@@ -20,7 +20,7 @@
 #include <memory>
 #include <vector>
 
-namespace Geometry { class Rectangle; }
+class Rectangle;
 class IDetector2D;
 class IAxis;
 template<class T> class OutputData;
@@ -33,11 +33,11 @@ class BA_CORE_API_ RegionOfInterest : public ICloneable
 public:
     RegionOfInterest(const IDetector2D& detector,
                      double xlow, double ylow, double xup, double yup);
-    RegionOfInterest(const OutputData<double> &data,
+    RegionOfInterest(const OutputData<double>& data,
                      double xlow, double ylow, double xup, double yup);
 
     RegionOfInterest& operator=(const RegionOfInterest &other) = delete;
-    RegionOfInterest *clone() const;
+    RegionOfInterest* clone() const;
     ~RegionOfInterest();
 
     double getXlow() const;
@@ -63,14 +63,14 @@ public:
 
 private:
     RegionOfInterest(double xlow, double ylow, double xup, double yup);
-    RegionOfInterest(const RegionOfInterest &other);
+    RegionOfInterest(const RegionOfInterest& other);
 
     size_t xcoord(size_t index, const std::vector<size_t> &dims) const;
     size_t ycoord(size_t index, const std::vector<size_t> &dims) const;
 
-    void initFrom(const IAxis &x_axis, const IAxis &y_axis);
+    void initFrom(const IAxis& x_axis, const IAxis& y_axis);
 
-    std::unique_ptr<Geometry::Rectangle> m_rectangle;
+    std::unique_ptr<Rectangle> m_rectangle;
     //!< Number of bins on detector axes corresponding to roi-rectanle.
     size_t m_ax1, m_ay1, m_ax2, m_ay2;
     //!< Detector global index corresponding to the lower left corner of ROI
@@ -80,13 +80,13 @@ private:
 };
 
 inline
-size_t RegionOfInterest::xcoord(size_t index, const std::vector<size_t> &dims) const
+size_t RegionOfInterest::xcoord(size_t index, const std::vector<size_t>& dims) const
 {
     return index/dims[1] % dims[0];
 }
 
 inline
-size_t RegionOfInterest::ycoord(size_t index, const std::vector<size_t> &dims) const
+size_t RegionOfInterest::ycoord(size_t index, const std::vector<size_t>& dims) const
 {
     return index % dims[1];
 }
diff --git a/Core/Mask/Ellipse.cpp b/Core/Mask/Ellipse.cpp
index 3a6d1c6e49a..a7eb39b607f 100644
--- a/Core/Mask/Ellipse.cpp
+++ b/Core/Mask/Ellipse.cpp
@@ -17,8 +17,6 @@
 #include "Bin.h"
 #include "Exceptions.h"
 
-namespace Geometry {
-
 //! @param xcenter x-coordinate of Ellipse's center
 //! @param ycenter y-coordinate of Ellipse's center
 //! @param xradius Radius along x-axis
@@ -48,9 +46,7 @@ bool Ellipse::contains(double x, double y) const
 
 //! Returns true if area defined by two bins is inside or on border of ellipse;
 //! more precisely, if mid point of two bins satisfy this condition.
-bool Ellipse::contains(const Bin1D &binx, const Bin1D &biny) const
+bool Ellipse::contains(const Bin1D& binx, const Bin1D& biny) const
 {
     return contains(binx.getMidPoint(), biny.getMidPoint());
 }
-
-} // namespace Geometry
diff --git a/Core/Mask/Ellipse.h b/Core/Mask/Ellipse.h
index b47cbf30e2b..845c3cb7bd0 100644
--- a/Core/Mask/Ellipse.h
+++ b/Core/Mask/Ellipse.h
@@ -18,19 +18,16 @@
 
 #include "IShape2D.h"
 
-namespace Geometry {
-
-//! @class Ellipse
+//! Ellipse shape.
 //! @ingroup tools
-//! @brief Ellipse shape
 
 class  BA_CORE_API_ Ellipse : public IShape2D {
 public:
     Ellipse(double xcenter, double ycenter, double xradius, double yradius, double theta = 0.0);
-    Ellipse *clone() const { return new Ellipse(m_xc, m_yc, m_xr, m_yr, m_theta); }
+    Ellipse* clone() const { return new Ellipse(m_xc, m_yc, m_xr, m_yr, m_theta); }
 
     bool contains(double x, double y) const;
-    bool contains(const Bin1D &binx, const Bin1D &biny) const;
+    bool contains(const Bin1D& binx, const Bin1D& biny) const;
 
     double getCenterX() const { return m_xc; }
     double getCenterY() const { return m_yc; }
@@ -42,6 +39,4 @@ private:
     double m_xc, m_yc, m_xr, m_yr, m_theta;
 };
 
-} // namespace Geometry
-
 #endif // ELLIPSE_H
diff --git a/Core/Mask/IShape2D.h b/Core/Mask/IShape2D.h
index 81c689dff3b..a7734b5bdc0 100644
--- a/Core/Mask/IShape2D.h
+++ b/Core/Mask/IShape2D.h
@@ -22,10 +22,6 @@
 
 struct Bin1D;
 
-//! Geometric shapes, used for detector masks.
-
-namespace Geometry {
-
 //! Basic class for all shapes in 2D.
 //! @ingroup tools
 
@@ -48,6 +44,4 @@ protected:
     virtual void print(std::ostream& ostr) const { ostr << getName(); }
 };
 
-} // namespace Geometry
-
 #endif // ISHAPE2D_H
diff --git a/Core/Mask/InfinitePlane.h b/Core/Mask/InfinitePlane.h
index 653aa504c56..046695a240c 100644
--- a/Core/Mask/InfinitePlane.h
+++ b/Core/Mask/InfinitePlane.h
@@ -18,20 +18,16 @@
 
 #include "IShape2D.h"
 
-namespace Geometry {
-
 //! The infinite plane is used for masking everything once and forever.
 //! @ingroup tools
 
 class BA_CORE_API_ InfinitePlane : public IShape2D {
 public:
     InfinitePlane() : IShape2D("InfinitePlane") {}
-    InfinitePlane *clone() const { return new InfinitePlane(); }
+    InfinitePlane* clone() const { return new InfinitePlane(); }
 
     bool contains(double, double) const { return true; }
     bool contains(const Bin1D&, const Bin1D&) const { return true; }
 };
 
-} // namespace Geometry
-
 #endif // INFINITEPLANE_H
diff --git a/Core/Mask/Line.cpp b/Core/Mask/Line.cpp
index 5ca4ae9a9f1..994ecc1dd28 100644
--- a/Core/Mask/Line.cpp
+++ b/Core/Mask/Line.cpp
@@ -28,8 +28,6 @@ typedef model::d2::point_xy<double> point_t;
 typedef model::box<point_t> box_t;
 typedef model::linestring<point_t> line_t;
 
-namespace Geometry {
-
 Line::Line(double x1, double y1, double x2, double y2)
     : IShape2D("Line"), m_x1(x1), m_y1(y1), m_x2(x2), m_y2(y2)
 {}
@@ -100,5 +98,3 @@ bool HorizontalLine::contains(const Bin1D& /*binx*/, const Bin1D& biny) const
 {
     return m_y>=biny.m_lower && m_y <= biny.m_upper;
 }
-
-} // namespace Geometry
diff --git a/Core/Mask/Line.h b/Core/Mask/Line.h
index c3c88b20f94..3accddd2ff7 100644
--- a/Core/Mask/Line.h
+++ b/Core/Mask/Line.h
@@ -18,15 +18,13 @@
 
 #include "IShape2D.h"
 
-namespace Geometry {
-
 //! A line segment.
 //! @ingroup mask
 
 class  BA_CORE_API_ Line : public IShape2D {
 public:
     Line(double x1, double y1, double x2, double y2);
-    Line *clone() const { return new Line(m_x1, m_y1, m_x2, m_y2); }
+    Line* clone() const { return new Line(m_x1, m_y1, m_x2, m_y2); }
 
     bool contains(double x, double y) const;
     bool contains(const Bin1D &binx, const Bin1D &biny) const;
@@ -42,10 +40,10 @@ private:
 class BA_CORE_API_ VerticalLine : public IShape2D {
 public:
     VerticalLine(double x);
-    VerticalLine *clone() const { return new VerticalLine(m_x); }
+    VerticalLine* clone() const { return new VerticalLine(m_x); }
 
     bool contains(double x, double y) const;
-    bool contains(const Bin1D &binx, const Bin1D &biny) const;
+    bool contains(const Bin1D& binx, const Bin1D& biny) const;
 
     double getXpos() const { return m_x; }
 
@@ -63,7 +61,7 @@ public:
     HorizontalLine *clone() const { return new HorizontalLine(m_y); }
 
     bool contains(double x, double y) const;
-    bool contains(const Bin1D &binx, const Bin1D &biny) const;
+    bool contains(const Bin1D& binx, const Bin1D& biny) const;
 
     double getYpos() const { return m_y; }
 
@@ -71,6 +69,4 @@ private:
     double m_y;
 };
 
-} // namespace Geometry
-
 #endif // LINE_H
diff --git a/Core/Mask/Polygon.cpp b/Core/Mask/Polygon.cpp
index cbb28587491..be4d75ffb77 100644
--- a/Core/Mask/Polygon.cpp
+++ b/Core/Mask/Polygon.cpp
@@ -24,8 +24,6 @@ GCC_DIAG_ON(unused-parameter)
 
 using namespace boost::geometry;
 
-namespace Geometry {
-
 //! The private data for polygons to hide boost dependency from the header
 class PolygonPrivate {
 public:
@@ -110,7 +108,7 @@ bool Polygon::contains(double x, double y) const
     return covered_by(PolygonPrivate::point_t(x, y), m_d->polygon); // including borders
 }
 
-bool Polygon::contains(const Bin1D &binx, const Bin1D &biny) const
+bool Polygon::contains(const Bin1D& binx, const Bin1D& biny) const
 {
     return contains(binx.getMidPoint(), biny.getMidPoint());
 }
@@ -129,5 +127,3 @@ void Polygon::print(std::ostream &ostr) const
 {
     ostr << wkt<PolygonPrivate::polygon_t>(m_d->polygon);
 }
-
-} // namespace Geometry
diff --git a/Core/Mask/Polygon.h b/Core/Mask/Polygon.h
index c307b512993..a4920f06ce3 100644
--- a/Core/Mask/Polygon.h
+++ b/Core/Mask/Polygon.h
@@ -19,8 +19,6 @@
 #include "IShape2D.h"
 #include <vector>
 
-namespace Geometry {
-
 class PolygonPrivate;
 
 //! A polygon in 2D space.
@@ -41,7 +39,7 @@ public:
     virtual Polygon* clone() const { return new Polygon(m_d); }
 
     virtual bool contains(double x, double y) const;
-    virtual bool contains(const Bin1D &binx, const Bin1D &biny) const;
+    virtual bool contains(const Bin1D& binx, const Bin1D& biny) const;
 
     double getArea() const;
 
@@ -54,6 +52,4 @@ private:
     PolygonPrivate* m_d;
 };
 
-} // namespace Geometry
-
 #endif // POLYGON_H
diff --git a/Core/Mask/Rectangle.cpp b/Core/Mask/Rectangle.cpp
index eae931583d2..f03c732135d 100644
--- a/Core/Mask/Rectangle.cpp
+++ b/Core/Mask/Rectangle.cpp
@@ -17,8 +17,6 @@
 #include "Bin.h"
 #include "Exceptions.h"
 
-namespace Geometry {
-
 //! @param xlow x-coordinate of lower left corner
 //! @param ylow y-coordinate of lower left corner
 //! @param xup x-coordinate of upper right corner
@@ -49,7 +47,7 @@ bool Rectangle::contains(double x, double y) const
     return x <= m_xup && x >= m_xlow && y <= m_yup && y >= m_ylow;
 }
 
-bool Rectangle::contains(const Bin1D &binx, const Bin1D &biny) const
+bool Rectangle::contains(const Bin1D& binx, const Bin1D& biny) const
 {
     return contains(binx.getMidPoint(), biny.getMidPoint());
 }
@@ -58,5 +56,3 @@ double Rectangle::getArea() const
 {
     return (m_xup-m_xlow)*(m_yup-m_ylow);
 }
-
-} // namespace Geometry
diff --git a/Core/Mask/Rectangle.h b/Core/Mask/Rectangle.h
index 123bf6b4d26..063bc018ebd 100644
--- a/Core/Mask/Rectangle.h
+++ b/Core/Mask/Rectangle.h
@@ -18,8 +18,6 @@
 
 #include "IShape2D.h"
 
-namespace Geometry {
-
 //! The rectangle shape having its axis aligned to the (non-rotated) coordinate system.
 //! @ingroup mask
 
@@ -29,7 +27,7 @@ public:
     Rectangle* clone() const { return new Rectangle(m_xlow, m_ylow, m_xup, m_yup); }
 
     bool contains(double x, double y) const;
-    bool contains(const Bin1D &binx, const Bin1D &biny) const;
+    bool contains(const Bin1D& binx, const Bin1D& biny) const;
 
     double getArea() const;
 
@@ -42,6 +40,4 @@ private:
     double m_xlow, m_ylow, m_xup, m_yup;
 };
 
-} // namespace Geometry
-
 #endif // RECTANGLE_H
diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp
index c5f9c318d6b..ba38c3d8cc4 100644
--- a/Core/Simulation/GISASSimulation.cpp
+++ b/Core/Simulation/GISASSimulation.cpp
@@ -120,7 +120,7 @@ void GISASSimulation::removeMasks()
     m_instrument.getDetector()->removeMasks();
 }
 
-void GISASSimulation::addMask(const Geometry::IShape2D& shape, bool mask_value)
+void GISASSimulation::addMask(const IShape2D& shape, bool mask_value)
 {
     m_instrument.getDetector()->addMask(shape, mask_value);
 }
diff --git a/Core/Simulation/GISASSimulation.h b/Core/Simulation/GISASSimulation.h
index 6573f1d0d0f..f6c832319e5 100644
--- a/Core/Simulation/GISASSimulation.h
+++ b/Core/Simulation/GISASSimulation.h
@@ -74,7 +74,7 @@ public:
     //! has priority.
     //! @param shape The shape of mask (Rectangle, Polygon, Line, Ellipse)
     //! @param mask_value The value of mask
-    void addMask(const Geometry::IShape2D& shape, bool mask_value = true);
+    void addMask(const IShape2D& shape, bool mask_value = true);
 
     //! Put the mask for all detector channels (i.e. exclude whole detector from the analysis)
     void maskAll();
diff --git a/Core/StandardSamples/StandardSimulations.cpp b/Core/StandardSamples/StandardSimulations.cpp
index 0dc44d84cb4..801aa329242 100644
--- a/Core/StandardSamples/StandardSimulations.cpp
+++ b/Core/StandardSamples/StandardSimulations.cpp
@@ -131,22 +131,22 @@ GISASSimulation* StandardSimulations::GISASWithMasks()
     result->maskAll();
     // pacman
     const double deg = Units::degree;
-    result->addMask(Geometry::Ellipse(0.0*deg, 1.0*deg, 0.5*deg, 0.5*deg), false);
-    result->addMask(Geometry::Ellipse(0.11*deg, 1.25*deg, 0.05*deg, 0.05*deg), true);
+    result->addMask(Ellipse(0.0*deg, 1.0*deg, 0.5*deg, 0.5*deg), false);
+    result->addMask(Ellipse(0.11*deg, 1.25*deg, 0.05*deg, 0.05*deg), true);
 
     std::vector<std::vector<double> >  points = {
         {0.0*deg, 1.0*deg}, {0.5*deg, 1.2*deg}, {0.5*deg, 0.8*deg}, {0.0*deg, 1.0*deg}
     };
-    result->addMask(Geometry::Polygon(points), true);
+    result->addMask(Polygon(points), true);
 
-    result->addMask(Geometry::Rectangle(0.45*deg, 0.95*deg, 0.55*deg, 1.05*deg), false);
-    result->addMask(Geometry::Rectangle(0.61*deg, 0.95*deg, 0.71*deg, 1.05*deg), false);
-    result->addMask(Geometry::Rectangle(0.75*deg, 0.95*deg, 0.85*deg, 1.05*deg), false);
+    result->addMask(Rectangle(0.45*deg, 0.95*deg, 0.55*deg, 1.05*deg), false);
+    result->addMask(Rectangle(0.61*deg, 0.95*deg, 0.71*deg, 1.05*deg), false);
+    result->addMask(Rectangle(0.75*deg, 0.95*deg, 0.85*deg, 1.05*deg), false);
 
     // more masks
-    result->addMask(Geometry::Ellipse(-0.5*deg, 1.5*deg, 0.3*deg, 0.1*deg, 45.*deg), false);
-    result->addMask(Geometry::VerticalLine(-0.6*deg), true);
-    result->addMask(Geometry::HorizontalLine(0.3*deg), false);
+    result->addMask(Ellipse(-0.5*deg, 1.5*deg, 0.3*deg, 0.1*deg, 45.*deg), false);
+    result->addMask(VerticalLine(-0.6*deg), true);
+    result->addMask(HorizontalLine(0.3*deg), false);
 
     return result;
 }
@@ -299,7 +299,7 @@ GISASSimulation *StandardSimulations::SphericalDetWithRoi() {
                                 30, 0.0 * Units::degree, 3.0 * Units::degree);
   result->setBeamParameters(1.0 * Units::angstrom, 0.2 * Units::degree,
                             0.0 * Units::degree);
-  result->addMask(Geometry::Rectangle(-0.5 * Units::degree, 0.3 * Units::degree,
+  result->addMask(Rectangle(-0.5 * Units::degree, 0.3 * Units::degree,
                                       -0.2 * Units::degree,
                                       0.6 * Units::degree));
   result->setRegionOfInterest(-1.5 * Units::degree, 0.25 * Units::degree,
@@ -312,7 +312,7 @@ GISASSimulation *StandardSimulations::SphericalDetWithRoi() {
 GISASSimulation* StandardSimulations::RectDetWithRoi()
 {
     GISASSimulation* result = RectDetectorPerpToDirectBeam();
-    result->addMask(Geometry::Rectangle(3.0, 4.0, 5.0, 7.0));
+    result->addMask(Rectangle(3.0, 4.0, 5.0, 7.0));
     result->setRegionOfInterest(2.0, 3.0, 18.0, 15.0);
     return result;
 }
diff --git a/GUI/coregui/Models/MaskItems.cpp b/GUI/coregui/Models/MaskItems.cpp
index cdef7c38845..c207725dc30 100644
--- a/GUI/coregui/Models/MaskItems.cpp
+++ b/GUI/coregui/Models/MaskItems.cpp
@@ -46,7 +46,7 @@ MaskItem::MaskItem(const QString &name)
     addProperty(P_MASK_VALUE, true);
 }
 
-std::unique_ptr<Geometry::IShape2D> MaskItem::createShape(double scale) const
+std::unique_ptr<IShape2D> MaskItem::createShape(double scale) const
 {
     Q_UNUSED(scale);
     throw GUIHelpers::Error("MaskItem::createShape() -> Not implemented.");
@@ -69,13 +69,13 @@ RectangleItem::RectangleItem(const QString &modelType)
     addProperty(P_YUP, 0.0)->setLimits(RealLimits::limitless());
 }
 
-std::unique_ptr<Geometry::IShape2D> RectangleItem::createShape(double scale) const
+std::unique_ptr<IShape2D> RectangleItem::createShape(double scale) const
 {
     double xlow = scale*getItemValue(P_XLOW).toDouble();
     double ylow = scale*getItemValue(P_YLOW).toDouble();
     double xup = scale*getItemValue(P_XUP).toDouble();
     double yup = scale*getItemValue(P_YUP).toDouble();
-    return GUIHelpers::make_unique<Geometry::Rectangle>(xlow, ylow, xup, yup);
+    return GUIHelpers::make_unique<Rectangle>(xlow, ylow, xup, yup);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -113,14 +113,14 @@ PolygonItem::PolygonItem()
     addProperty(P_ISCLOSED, false)->setVisible(false);
 }
 
-std::unique_ptr<Geometry::IShape2D> PolygonItem::createShape(double scale) const
+std::unique_ptr<IShape2D> PolygonItem::createShape(double scale) const
 {
     std::vector<double> x,y;
     foreach(SessionItem *item, this->getChildrenOfType(Constants::PolygonPointType)) {
         x.push_back(scale*item->getItemValue(PolygonPointItem::P_POSX).toDouble());
         y.push_back(scale*item->getItemValue(PolygonPointItem::P_POSY).toDouble());
     }
-    return GUIHelpers::make_unique<Geometry::Polygon>(x, y);
+    return GUIHelpers::make_unique<Polygon>(x, y);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -133,9 +133,9 @@ VerticalLineItem::VerticalLineItem()
     addProperty(P_POSX, 0.0)->setLimits(RealLimits::limitless());
 }
 
-std::unique_ptr<Geometry::IShape2D> VerticalLineItem::createShape(double scale) const
+std::unique_ptr<IShape2D> VerticalLineItem::createShape(double scale) const
 {
-    return GUIHelpers::make_unique<Geometry::VerticalLine>(
+    return GUIHelpers::make_unique<VerticalLine>(
                 scale*getItemValue(VerticalLineItem::P_POSX).toDouble());
 }
 
@@ -149,9 +149,9 @@ HorizontalLineItem::HorizontalLineItem()
     addProperty(P_POSY, 0.0)->setLimits(RealLimits::limitless());
 }
 
-std::unique_ptr<Geometry::IShape2D> HorizontalLineItem::createShape(double scale) const
+std::unique_ptr<IShape2D> HorizontalLineItem::createShape(double scale) const
 {
-    return GUIHelpers::make_unique<Geometry::HorizontalLine>(
+    return GUIHelpers::make_unique<HorizontalLine>(
                 scale*getItemValue(HorizontalLineItem::P_POSY).toDouble());
 }
 
@@ -174,7 +174,7 @@ EllipseItem::EllipseItem()
     addProperty(P_ANGLE, 0.0)->setLimits(RealLimits::limitless());
 }
 
-std::unique_ptr<Geometry::IShape2D> EllipseItem::createShape(double scale) const
+std::unique_ptr<IShape2D> EllipseItem::createShape(double scale) const
 {
     double xcenter = scale*getItemValue(EllipseItem::P_XCENTER).toDouble();
     double ycenter = scale*getItemValue(EllipseItem::P_YCENTER).toDouble();
@@ -182,7 +182,7 @@ std::unique_ptr<Geometry::IShape2D> EllipseItem::createShape(double scale) const
     double yradius = scale*getItemValue(EllipseItem::P_YRADIUS).toDouble();
     double angle = scale*getItemValue(EllipseItem::P_ANGLE).toDouble();
 
-    return GUIHelpers::make_unique<Geometry::Ellipse>(xcenter, ycenter, xradius, yradius, angle);
+    return GUIHelpers::make_unique<Ellipse>(xcenter, ycenter, xradius, yradius, angle);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -194,9 +194,9 @@ MaskAllItem::MaskAllItem()
     getItem(MaskItem::P_MASK_VALUE)->setEnabled(false);
 }
 
-std::unique_ptr<Geometry::IShape2D> MaskAllItem::createShape(double scale) const
+std::unique_ptr<IShape2D> MaskAllItem::createShape(double scale) const
 {
     Q_UNUSED(scale);
-    return GUIHelpers::make_unique<Geometry::InfinitePlane>();
+    return GUIHelpers::make_unique<InfinitePlane>();
 }
 
diff --git a/GUI/coregui/Models/MaskItems.h b/GUI/coregui/Models/MaskItems.h
index 8c36e2a25a4..6243716ed0b 100644
--- a/GUI/coregui/Models/MaskItems.h
+++ b/GUI/coregui/Models/MaskItems.h
@@ -19,9 +19,7 @@
 
 #include "SessionItem.h"
 
-namespace Geometry {
 class IShape2D;
-}
 
 //! Container holding various masks as children
 
@@ -38,8 +36,8 @@ class BA_CORE_API_ MaskItem : public SessionItem
 {
 public:
     static const QString P_MASK_VALUE;
-    explicit MaskItem(const QString &name);
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale = 1.0) const;
+    explicit MaskItem(const QString& name);
+    virtual std::unique_ptr<IShape2D> createShape(double scale = 1.0) const;
 };
 
 class BA_CORE_API_ RectangleItem : public MaskItem
@@ -49,8 +47,8 @@ public:
     static const QString P_YLOW;
     static const QString P_XUP;
     static const QString P_YUP;
-    explicit RectangleItem(const QString &modelType = Constants::RectangleMaskType);
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    explicit RectangleItem(const QString& modelType = Constants::RectangleMaskType);
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 class BA_CORE_API_ RegionOfInterestItem : public RectangleItem
@@ -75,7 +73,7 @@ class BA_CORE_API_ PolygonItem : public MaskItem
 public:
     static const QString P_ISCLOSED;
     PolygonItem();
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 class BA_CORE_API_ VerticalLineItem : public MaskItem
@@ -84,7 +82,7 @@ class BA_CORE_API_ VerticalLineItem : public MaskItem
 public:
     static const QString P_POSX;
     VerticalLineItem();
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 class BA_CORE_API_ HorizontalLineItem : public MaskItem
@@ -93,7 +91,7 @@ class BA_CORE_API_ HorizontalLineItem : public MaskItem
 public:
     static const QString P_POSY;
     HorizontalLineItem();
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 class BA_CORE_API_ EllipseItem : public MaskItem
@@ -106,14 +104,14 @@ public:
     static const QString P_YRADIUS;
     static const QString P_ANGLE;
     EllipseItem();
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 class BA_CORE_API_ MaskAllItem : public MaskItem
 {
 public:
     MaskAllItem();
-    virtual std::unique_ptr<Geometry::IShape2D> createShape(double scale) const;
+    virtual std::unique_ptr<IShape2D> createShape(double scale) const;
 };
 
 #endif // MASKITEMS_H
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index 610c76739d5..2239d1b55de 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -445,8 +445,8 @@ void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, const GIS
         detectorItem->insertItem(-1, containerItem);
         for(size_t i_mask=0; i_mask<detectorMask->numberOfMasks(); ++i_mask) {
             bool mask_value(false);
-            const Geometry::IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
-            if(const Geometry::Ellipse* ellipse = dynamic_cast<const Geometry::Ellipse*>(shape)) {
+            const IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
+            if(const Ellipse* ellipse = dynamic_cast<const Ellipse*>(shape)) {
                 EllipseItem* ellipseItem = new EllipseItem();
                 ellipseItem->setItemValue(EllipseItem::P_XCENTER, scale*ellipse->getCenterX());
                 ellipseItem->setItemValue(EllipseItem::P_YCENTER, scale*ellipse->getCenterY());
@@ -457,7 +457,7 @@ void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, const GIS
                 containerItem->insertItem(0, ellipseItem);
 
             }
-            else if(const Geometry::Rectangle* rectangle = dynamic_cast<const Geometry::Rectangle*>(shape)) {
+            else if(const Rectangle* rectangle = dynamic_cast<const Rectangle*>(shape)) {
                 RectangleItem* rectangleItem = new RectangleItem();
                 rectangleItem->setItemValue(RectangleItem::P_XLOW, scale*rectangle->getXlow());
                 rectangleItem->setItemValue(RectangleItem::P_YLOW, scale*rectangle->getYlow());
@@ -467,7 +467,7 @@ void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, const GIS
                 containerItem->insertItem(0, rectangleItem);
 
             }
-            else if(const Geometry::Polygon* polygon = dynamic_cast<const Geometry::Polygon*>(shape)) {
+            else if(const Polygon* polygon = dynamic_cast<const Polygon*>(shape)) {
                 PolygonItem* polygonItem = new PolygonItem();
                 std::vector<double> xpos, ypos;
                 polygon->getPoints(xpos, ypos);
@@ -483,19 +483,19 @@ void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, const GIS
 
                 containerItem->insertItem(0, polygonItem);
             }
-            else if(const Geometry::VerticalLine* vline = dynamic_cast<const Geometry::VerticalLine*>(shape)) {
+            else if(const VerticalLine* vline = dynamic_cast<const VerticalLine*>(shape)) {
                 VerticalLineItem* lineItem = new VerticalLineItem();
                 lineItem->setItemValue(VerticalLineItem::P_POSX, scale*vline->getXpos());
                 lineItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
                 containerItem->insertItem(0, lineItem);
             }
-            else if(const Geometry::HorizontalLine* hline = dynamic_cast<const Geometry::HorizontalLine*>(shape)) {
+            else if(const HorizontalLine* hline = dynamic_cast<const HorizontalLine*>(shape)) {
                 HorizontalLineItem* lineItem = new HorizontalLineItem();
                 lineItem->setItemValue(HorizontalLineItem::P_POSY, scale*hline->getYpos());
                 lineItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
                 containerItem->insertItem(0, lineItem);
             }
-            else if(const Geometry::InfinitePlane* plane = dynamic_cast<const Geometry::InfinitePlane*>(shape)) {
+            else if(const InfinitePlane* plane = dynamic_cast<const InfinitePlane*>(shape)) {
                 Q_UNUSED(plane);
                 MaskAllItem* planeItem = new MaskAllItem();
                 planeItem->setItemValue(MaskItem::P_MASK_VALUE, mask_value);
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index e9413d72f72..ebbe8674349 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -351,7 +351,7 @@ void TransformToDomain::initInstrumentFromDetectorItem(const SessionItem& detect
                     instrument->getDetector()->setRegionOfInterest(xlow, ylow, xup, yup);
 
                 } else {
-                    std::unique_ptr<Geometry::IShape2D > shape(maskItem->createShape(scale));
+                    std::unique_ptr<IShape2D > shape(maskItem->createShape(scale));
                     bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
                     instrument->getDetector()->addMask(*shape, mask_value);
                 }
diff --git a/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp b/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
index 4d1305dae11..cdd488d5c5a 100644
--- a/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
+++ b/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
@@ -104,7 +104,7 @@ OutputData<double> *MaskResultsPresenter::createMaskPresentation() const
                 roi.reset(new RegionOfInterest(*m_intensityDataItem->getOutputData(),
                                                xlow, ylow, xup, yup));
             } else {
-                std::unique_ptr<Geometry::IShape2D > shape(maskItem->createShape());
+                std::unique_ptr<IShape2D > shape(maskItem->createShape());
                 bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
                 detectorMask.addMask(*shape.get(), mask_value);
             }
diff --git a/Tests/Functional/Fit/RectDetectorFitTest.cpp b/Tests/Functional/Fit/RectDetectorFitTest.cpp
index eaa76329b2e..25784d1d1b8 100644
--- a/Tests/Functional/Fit/RectDetectorFitTest.cpp
+++ b/Tests/Functional/Fit/RectDetectorFitTest.cpp
@@ -38,7 +38,7 @@ std::unique_ptr<GISASSimulation> RectDetectorFitTest::createSimulation()
     result->setBeamParameters(1.0*Units::angstrom, 0.2*Units::degree, 0.0*Units::degree);
     result->setDetector(detector);
     result->setRegionOfInterest(6.0, 6.0, 14.0, 12.0);
-    result->addMask(Geometry::Rectangle(8.0, 8.0, 10.0, 10.0), true);
+    result->addMask(Rectangle(8.0, 8.0, 10.0, 10.0), true);
 
     return result;
 }
diff --git a/Tests/UnitTests/Core/3/DetectorMaskTest.h b/Tests/UnitTests/Core/3/DetectorMaskTest.h
index 0d7915f257a..315dd5aacad 100644
--- a/Tests/UnitTests/Core/3/DetectorMaskTest.h
+++ b/Tests/UnitTests/Core/3/DetectorMaskTest.h
@@ -41,7 +41,7 @@ TEST_F(DetectorMaskTest, AddMask)
 
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 
     SphericalDetector detector;
     detector.addAxis(FixedBinAxis("x-axis", 12, -4.0, 8.0));
@@ -77,7 +77,7 @@ TEST_F(DetectorMaskTest, AddMask)
     // adding third mask
     x = {5.0, 5.0, 8.0, 8.0, 5.0};
     y = {2.0, 4.0, 4.0, 2.0, 2.0};
-    Geometry::Polygon polygon2(x, y);
+    Polygon polygon2(x, y);
     detectorMask.addMask(polygon2, true);
     detectorMask.initMaskData(detector);
     for(size_t index=0; index<detectorMask.getMaskData()->getAllocatedSize(); ++index) {
@@ -106,7 +106,7 @@ TEST_F(DetectorMaskTest, AssignmentOperator)
 
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 
     SphericalDetector detector;
     detector.addAxis(FixedBinAxis("x-axis", 12, -4.0, 8.0));
@@ -140,7 +140,7 @@ TEST_F(DetectorMaskTest, CopyConstructor)
 
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 
     SphericalDetector detector;
     detector.addAxis(FixedBinAxis("x-axis", 12, -4.0, 8.0));
diff --git a/Tests/UnitTests/Core/3/PolygonTest.h b/Tests/UnitTests/Core/3/PolygonTest.h
index a5edbcc5a54..2fe0d84da40 100644
--- a/Tests/UnitTests/Core/3/PolygonTest.h
+++ b/Tests/UnitTests/Core/3/PolygonTest.h
@@ -15,7 +15,7 @@ TEST_F(PolygonTest, SimpleRectangle)
     // simple closed rectangle
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
     EXPECT_DOUBLE_EQ(32.0, polygon.getArea());
     EXPECT_TRUE(polygon.contains(0.0, 0.0));
     EXPECT_TRUE(polygon.contains(4.0, 2.0));
@@ -27,7 +27,7 @@ TEST_F(PolygonTest, SimpleRectangle)
     // unclosed rectangle (should be closed automatically)
     x = {4.0, -4.0, -4.0, 4.0};
     y = {2.0, 2.0, -2.0, -2.0};
-    Geometry::Polygon polygon2(x, y);
+    Polygon polygon2(x, y);
     EXPECT_DOUBLE_EQ(32.0, polygon2.getArea());
     EXPECT_TRUE(polygon2.contains(0.0, 0.0));
     EXPECT_TRUE(polygon2.contains(4.0, 2.0));
@@ -49,7 +49,7 @@ TEST_F(PolygonTest, SandWatchShape)
 {
     std::vector<double> x = {2.0, -2.0, 2.0, -2.0, 2.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 //    std::cout << polygon << std::endl;
 
     // for some reason area calculation doesn't work for boost's polygon of such shape
@@ -70,7 +70,7 @@ TEST_F(PolygonTest, ContainsBin)
     // simple closed rectangle
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 
     Bin1D binx1(3.5, 4.5);
     Bin1D biny1(1.5, 2.5);
@@ -86,9 +86,9 @@ TEST_F(PolygonTest, Clone)
 {
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
 
-    std::unique_ptr<Geometry::Polygon > clone(polygon.clone());
+    std::unique_ptr<Polygon > clone(polygon.clone());
     EXPECT_DOUBLE_EQ(32.0, clone->getArea());
     EXPECT_TRUE(clone->contains(0.0, 0.0));
     EXPECT_TRUE(clone->contains(4.0, 2.0));
@@ -110,7 +110,7 @@ TEST_F(PolygonTest, ConstructFrom2DArray)
         points.push_back(p);
     }
 
-    Geometry::Polygon polygon(points);
+    Polygon polygon(points);
     EXPECT_DOUBLE_EQ(32.0, polygon.getArea());
     EXPECT_TRUE(polygon.contains(0.0, 0.0));
     EXPECT_TRUE(polygon.contains(4.0, 2.0));
@@ -127,7 +127,7 @@ TEST_F(PolygonTest, ConstructFrom2DArray)
 
 //    std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
 //    std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
-//    Geometry::Polygon polygon(x, y);
+//    Polygon polygon(x, y);
 
 //    polygon.getPoints(xpos, ypos);
 //    for(size_t i=0; i<xpos.size(); ++i) {
diff --git a/Tests/UnitTests/Core/3/SimulationAreaTest.h b/Tests/UnitTests/Core/3/SimulationAreaTest.h
index 8871681b078..577afd0668c 100644
--- a/Tests/UnitTests/Core/3/SimulationAreaTest.h
+++ b/Tests/UnitTests/Core/3/SimulationAreaTest.h
@@ -86,8 +86,8 @@ TEST_F(SimulationAreaTest, detectorIteration)
 TEST_F(SimulationAreaTest, maskedIteration)
 {
     SphericalDetector detector(5, -1.0, 4.0, 4, 0.0, 4.0);
-    detector.addMask(Geometry::Rectangle(0.1, 1.1, 2.9, 2.9), true);
-    detector.addMask(Geometry::Rectangle(3.1, 3.1, 3.9, 3.9), true);
+    detector.addMask(Rectangle(0.1, 1.1, 2.9, 2.9), true);
+    detector.addMask(Rectangle(3.1, 3.1, 3.9, 3.9), true);
     SimulationArea area(&detector);
 
     std::vector<int> expectedIndexes = {0, 1, 2, 3, 4, 7, 8, 11, 12, 15, 16, 17, 18};
@@ -107,8 +107,8 @@ TEST_F(SimulationAreaTest, maskedIteration)
 TEST_F(SimulationAreaTest, maskedCornerIteration)
 {
     SphericalDetector detector(5, -1.0, 4.0, 4, 0.0, 4.0);
-    detector.addMask(Geometry::Rectangle(-0.9, 0.1, -0.1, 0.9), true);
-    detector.addMask(Geometry::Rectangle(3.1, 3.1, 3.9, 3.9), true);
+    detector.addMask(Rectangle(-0.9, 0.1, -0.1, 0.9), true);
+    detector.addMask(Rectangle(3.1, 3.1, 3.9, 3.9), true);
     SimulationArea area(&detector);
 
     std::vector<int> expectedIndexes
@@ -130,7 +130,7 @@ TEST_F(SimulationAreaTest, maskedCornerIteration)
 TEST_F(SimulationAreaTest, allMaskedIteration)
 {
     SphericalDetector detector(5, -1.0, 4.0, 4, 0.0, 4.0);
-    detector.addMask(Geometry::Rectangle(-0.9, 0.1, 3.9, 3.9), true);
+    detector.addMask(Rectangle(-0.9, 0.1, 3.9, 3.9), true);
     SimulationArea area(&detector);
 
     std::vector<int> indexes;
@@ -149,7 +149,7 @@ TEST_F(SimulationAreaTest, maskAndRoiIteration)
 {
     SphericalDetector detector(5, -1.0, 4.0, 4, 0.0, 4.0);
     detector.setRegionOfInterest(0.1, 1.1, 2.9, 3.9);
-    detector.addMask(Geometry::Rectangle(-0.9, 0.1, 0.9, 1.9), true);
+    detector.addMask(Rectangle(-0.9, 0.1, 0.9, 1.9), true);
     SimulationArea area(&detector);
 
     std::vector<int> expectedRoiIndexes = {1, 2, 3, 4, 5, 6, 7, 8};
@@ -177,7 +177,7 @@ TEST_F(SimulationAreaTest, indexInRoi)
 {
     SphericalDetector detector(5, -1.0, 4.0, 4, 0.0, 4.0);
     detector.setRegionOfInterest(0.1, 1.1, 2.9, 3.9);
-    detector.addMask(Geometry::Rectangle(-0.9, 0.1, 0.9, 1.9), true);
+    detector.addMask(Rectangle(-0.9, 0.1, 0.9, 1.9), true);
     SimulationArea area(&detector);
 
     std::vector<int> expectedIndexes = {1, 2, 3, 4, 5, 6, 7, 8};
diff --git a/Tests/UnitTests/Core/3/SphericalDetectorTest.h b/Tests/UnitTests/Core/3/SphericalDetectorTest.h
index 20f91e6a5a8..0bb602689a9 100644
--- a/Tests/UnitTests/Core/3/SphericalDetectorTest.h
+++ b/Tests/UnitTests/Core/3/SphericalDetectorTest.h
@@ -284,7 +284,7 @@ TEST_F(SphericalDetectorTest, MaskOfDetector)
     std::vector<double> x = {4.0, -4.0, -4.0, 4.0, 4.0};
     std::vector<double> y = {2.0, 2.0, -2.0, -2.0, 2.0};
 
-    Geometry::Polygon polygon(x, y);
+    Polygon polygon(x, y);
     detector.addMask(polygon, true);
 
     const OutputData<bool> *mask = detector.getDetectorMask()->getMaskData();
@@ -332,8 +332,8 @@ TEST_F(SphericalDetectorTest, Clone)
     SphericalDetector detector(6, -1.0*Units::deg, 5.0*Units::deg,
                                4, 0.0*Units::deg, 4.0*Units::deg);
     detector.setRegionOfInterest(0.1*Units::deg, 1.1*Units::deg, 3.0*Units::deg, 2.9*Units::deg);
-    detector.addMask(Geometry::Rectangle(-0.9*Units::deg, 0.1*Units::deg, 0.9*Units::deg, 1.9*Units::deg), true);
-    detector.addMask(Geometry::Rectangle(3.1*Units::deg, 2.1*Units::deg, 4.9*Units::deg, 3.9*Units::deg), true);
+    detector.addMask(Rectangle(-0.9*Units::deg, 0.1*Units::deg, 0.9*Units::deg, 1.9*Units::deg), true);
+    detector.addMask(Rectangle(3.1*Units::deg, 2.1*Units::deg, 4.9*Units::deg, 3.9*Units::deg), true);
     detector.setDetectorResolution(new ConvolutionDetectorResolution(
             new ResolutionFunction2DGaussian(1,1)));
 
diff --git a/Tests/UnitTests/Core/4/Shape2DTest.h b/Tests/UnitTests/Core/4/Shape2DTest.h
index 7e0b2cef1b9..b7465ceff71 100644
--- a/Tests/UnitTests/Core/4/Shape2DTest.h
+++ b/Tests/UnitTests/Core/4/Shape2DTest.h
@@ -15,7 +15,7 @@ public:
 
 TEST_F(Shape2DTest, Rectangle)
 {
-    Geometry::Rectangle rect(-4.0, -2.0, 4.0, 2.0);
+    Rectangle rect(-4.0, -2.0, 4.0, 2.0);
     EXPECT_DOUBLE_EQ(32.0, rect.getArea());
     EXPECT_TRUE(rect.contains(0.0, 0.0));
     EXPECT_TRUE(rect.contains(4.0, 2.0));
@@ -32,7 +32,7 @@ TEST_F(Shape2DTest, Rectangle)
     Bin1D biny2(1.5, 2.6);
     EXPECT_FALSE(rect.contains(binx2, biny2));
 
-    std::unique_ptr<Geometry::Rectangle> clone(rect.clone());
+    std::unique_ptr<Rectangle> clone(rect.clone());
     EXPECT_DOUBLE_EQ(32.0, clone->getArea());
     EXPECT_TRUE(clone->contains(0.0, 0.0));
     EXPECT_TRUE(clone->contains(4.0, 2.0));
@@ -46,7 +46,7 @@ TEST_F(Shape2DTest, Rectangle)
 
 TEST_F(Shape2DTest, Ellipse)
 {
-    Geometry::Ellipse ellipse(10.0, 1.0, 8.0, 4.0);
+    Ellipse ellipse(10.0, 1.0, 8.0, 4.0);
     EXPECT_TRUE(ellipse.contains(10.0, 1.0));
     EXPECT_TRUE(ellipse.contains(18.0, 1.0));
     EXPECT_FALSE(ellipse.contains(18.01, 1.0));
@@ -57,12 +57,12 @@ TEST_F(Shape2DTest, Ellipse)
     EXPECT_FALSE(ellipse.contains(4.0, -2.0));
     EXPECT_TRUE(ellipse.contains(6.0, -2.0));
 
-    Geometry::Ellipse ellipse2(10.0, 1.0, 8.0, 4.0, 45.0*Units::degree);
+    Ellipse ellipse2(10.0, 1.0, 8.0, 4.0, 45.0*Units::degree);
     EXPECT_TRUE(ellipse2.contains(10.0, 1.0));
     EXPECT_FALSE(ellipse2.contains(15.0, 0.0));
     EXPECT_TRUE(ellipse2.contains(7.0, 3.0));
 
-    std::unique_ptr<Geometry::Ellipse> clone(ellipse2.clone());
+    std::unique_ptr<Ellipse> clone(ellipse2.clone());
     EXPECT_TRUE(clone->contains(10.0, 1.0));
     EXPECT_FALSE(clone->contains(15.0, 0.0));
     EXPECT_TRUE(clone->contains(7.0, 3.0));
@@ -70,24 +70,24 @@ TEST_F(Shape2DTest, Ellipse)
 
 TEST_F(Shape2DTest, Line)
 {
-    Geometry::Line line(0.0, 0.0, 1.0, 0.0);
+    Line line(0.0, 0.0, 1.0, 0.0);
     EXPECT_TRUE(line.contains(0.0, 0.0));
     EXPECT_TRUE(line.contains(0.5, 0.0));
     EXPECT_TRUE(line.contains(1.0, 0.0));
     EXPECT_FALSE(line.contains(1.01, 0.0));
 
-    Geometry::Line line2(0.0, 0.0, 1.0, 1.0);
+    Line line2(0.0, 0.0, 1.0, 1.0);
     EXPECT_TRUE(line2.contains(Bin1D(0.5, 1.0),Bin1D(0.0, 0.5)));
     EXPECT_FALSE(line2.contains(Bin1D(0.51, 1.0),Bin1D(0.0, 0.49)));
 
-    std::unique_ptr<Geometry::Line> clone(line2.clone());
+    std::unique_ptr<Line> clone(line2.clone());
     EXPECT_TRUE(clone->contains(Bin1D(0.5, 1.0),Bin1D(0.0, 0.5)));
     EXPECT_FALSE(clone->contains(Bin1D(0.51, 1.0),Bin1D(0.0, 0.49)));
 }
 
 TEST_F(Shape2DTest, VerticalLine)
 {
-    Geometry::VerticalLine line(1.0);
+    VerticalLine line(1.0);
     EXPECT_TRUE(line.contains(1.0, 0.0));
     EXPECT_FALSE(line.contains(1.01, 0.0));
 
@@ -97,7 +97,7 @@ TEST_F(Shape2DTest, VerticalLine)
 
 TEST_F(Shape2DTest, HorizontalLine)
 {
-    Geometry::HorizontalLine line(1.0);
+    HorizontalLine line(1.0);
     EXPECT_TRUE(line.contains(0.0, 1.0));
     EXPECT_FALSE(line.contains(0.0, 1.01));
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index e27975be68f..926c5447d05 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -3739,14 +3739,7 @@ CustomBinAxis_swigregister = _libBornAgainCore.CustomBinAxis_swigregister
 CustomBinAxis_swigregister(CustomBinAxis)
 
 class IShape2D(ICloneable, INamed):
-    """
-
-
-    Basic class for all shapes in 2D.
-
-    C++ includes: IShape2D.h
-
-    """
+    """Proxy of C++ IShape2D class."""
 
     __swig_setmethods__ = {}
     for _s in [ICloneable, INamed]:
@@ -3765,7 +3758,7 @@ class IShape2D(ICloneable, INamed):
         """
         clone(IShape2D self) -> IShape2D
 
-        virtual IShape2D* Geometry::IShape2D::clone() const =0
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.IShape2D_clone(self)
@@ -3775,11 +3768,6 @@ class IShape2D(ICloneable, INamed):
         """
         contains(IShape2D self, double x, double y) -> bool
         contains(IShape2D self, Bin1D binx, Bin1D biny) -> bool
-
-        virtual bool Geometry::IShape2D::contains(const Bin1D &binx, const Bin1D &biny) const =0
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.IShape2D_contains(self, *args)
 
@@ -8142,14 +8130,7 @@ DetectorMask_swigregister = _libBornAgainCore.DetectorMask_swigregister
 DetectorMask_swigregister(DetectorMask)
 
 class Ellipse(IShape2D):
-    """
-
-
-    Ellipse shape.
-
-    C++ includes: Ellipse.h
-
-    """
+    """Proxy of C++ Ellipse class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -8163,29 +8144,8 @@ class Ellipse(IShape2D):
 
     def __init__(self, xcenter, ycenter, xradius, yradius, theta=0.0):
         """
-        __init__(Geometry::Ellipse self, double xcenter, double ycenter, double xradius, double yradius, double theta=0.0) -> Ellipse
-        __init__(Geometry::Ellipse self, double xcenter, double ycenter, double xradius, double yradius) -> Ellipse
-
-        Geometry::Ellipse::Ellipse(double xcenter, double ycenter, double xradius, double yradius, double theta=0.0)
-
-        Parameters:
-        -----------
-
-        xcenter: 
-        x-coordinate of  Ellipse's center
-
-        ycenter: 
-        y-coordinate of  Ellipse's center
-
-        xradius: 
-        Radius along x-axis
-
-        yradius: 
-        Radius along y-axis
-
-        theta: 
-        Angle of  Ellipse rotation in radians 
-
+        __init__(Ellipse self, double xcenter, double ycenter, double xradius, double yradius, double theta=0.0) -> Ellipse
+        __init__(Ellipse self, double xcenter, double ycenter, double xradius, double yradius) -> Ellipse
         """
         this = _libBornAgainCore.new_Ellipse(xcenter, ycenter, xradius, yradius, theta)
         try:
@@ -8197,7 +8157,7 @@ class Ellipse(IShape2D):
         """
         clone(Ellipse self) -> Ellipse
 
-        Ellipse* Geometry::Ellipse::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.Ellipse_clone(self)
@@ -8207,62 +8167,32 @@ class Ellipse(IShape2D):
         """
         contains(Ellipse self, double x, double y) -> bool
         contains(Ellipse self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::Ellipse::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of ellipse; more precisely, if mid point of two bins satisfy this condition. 
-
         """
         return _libBornAgainCore.Ellipse_contains(self, *args)
 
 
     def getCenterX(self):
-        """
-        getCenterX(Ellipse self) -> double
-
-        double Geometry::Ellipse::getCenterX() const
-
-        """
+        """getCenterX(Ellipse self) -> double"""
         return _libBornAgainCore.Ellipse_getCenterX(self)
 
 
     def getCenterY(self):
-        """
-        getCenterY(Ellipse self) -> double
-
-        double Geometry::Ellipse::getCenterY() const
-
-        """
+        """getCenterY(Ellipse self) -> double"""
         return _libBornAgainCore.Ellipse_getCenterY(self)
 
 
     def getRadiusX(self):
-        """
-        getRadiusX(Ellipse self) -> double
-
-        double Geometry::Ellipse::getRadiusX() const
-
-        """
+        """getRadiusX(Ellipse self) -> double"""
         return _libBornAgainCore.Ellipse_getRadiusX(self)
 
 
     def getRadiusY(self):
-        """
-        getRadiusY(Ellipse self) -> double
-
-        double Geometry::Ellipse::getRadiusY() const
-
-        """
+        """getRadiusY(Ellipse self) -> double"""
         return _libBornAgainCore.Ellipse_getRadiusY(self)
 
 
     def getTheta(self):
-        """
-        getTheta(Ellipse self) -> double
-
-        double Geometry::Ellipse::getTheta() const
-
-        """
+        """getTheta(Ellipse self) -> double"""
         return _libBornAgainCore.Ellipse_getTheta(self)
 
     __swig_destroy__ = _libBornAgainCore.delete_Ellipse
@@ -20675,14 +20605,7 @@ LayerRoughness_swigregister = _libBornAgainCore.LayerRoughness_swigregister
 LayerRoughness_swigregister(LayerRoughness)
 
 class Line(IShape2D):
-    """
-
-
-    A line segment.
-
-    C++ includes: Line.h
-
-    """
+    """Proxy of C++ Line class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -20695,12 +20618,7 @@ class Line(IShape2D):
     __repr__ = _swig_repr
 
     def __init__(self, x1, y1, x2, y2):
-        """
-        __init__(Geometry::Line self, double x1, double y1, double x2, double y2) -> Line
-
-        Geometry::Line::Line(double x1, double y1, double x2, double y2)
-
-        """
+        """__init__(Line self, double x1, double y1, double x2, double y2) -> Line"""
         this = _libBornAgainCore.new_Line(x1, y1, x2, y2)
         try:
             self.this.append(this)
@@ -20711,7 +20629,7 @@ class Line(IShape2D):
         """
         clone(Line self) -> Line
 
-        Line* Geometry::Line::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.Line_clone(self)
@@ -20721,11 +20639,6 @@ class Line(IShape2D):
         """
         contains(Line self, double x, double y) -> bool
         contains(Line self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::Line::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.Line_contains(self, *args)
 
@@ -20735,14 +20648,7 @@ Line_swigregister = _libBornAgainCore.Line_swigregister
 Line_swigregister(Line)
 
 class VerticalLine(IShape2D):
-    """
-
-
-    An infinite vertical line.
-
-    C++ includes: Line.h
-
-    """
+    """Proxy of C++ VerticalLine class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -20755,18 +20661,7 @@ class VerticalLine(IShape2D):
     __repr__ = _swig_repr
 
     def __init__(self, x):
-        """
-        __init__(Geometry::VerticalLine self, double x) -> VerticalLine
-
-        Geometry::VerticalLine::VerticalLine(double x)
-
-        Parameters:
-        -----------
-
-        x: 
-        The value at which it crosses x-axes 
-
-        """
+        """__init__(VerticalLine self, double x) -> VerticalLine"""
         this = _libBornAgainCore.new_VerticalLine(x)
         try:
             self.this.append(this)
@@ -20777,7 +20672,7 @@ class VerticalLine(IShape2D):
         """
         clone(VerticalLine self) -> VerticalLine
 
-        VerticalLine* Geometry::VerticalLine::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.VerticalLine_clone(self)
@@ -20787,22 +20682,12 @@ class VerticalLine(IShape2D):
         """
         contains(VerticalLine self, double x, double y) -> bool
         contains(VerticalLine self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::VerticalLine::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.VerticalLine_contains(self, *args)
 
 
     def getXpos(self):
-        """
-        getXpos(VerticalLine self) -> double
-
-        double Geometry::VerticalLine::getXpos() const
-
-        """
+        """getXpos(VerticalLine self) -> double"""
         return _libBornAgainCore.VerticalLine_getXpos(self)
 
     __swig_destroy__ = _libBornAgainCore.delete_VerticalLine
@@ -20811,14 +20696,7 @@ VerticalLine_swigregister = _libBornAgainCore.VerticalLine_swigregister
 VerticalLine_swigregister(VerticalLine)
 
 class HorizontalLine(IShape2D):
-    """
-
-
-    An infinite horizontal line.
-
-    C++ includes: Line.h
-
-    """
+    """Proxy of C++ HorizontalLine class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -20831,18 +20709,7 @@ class HorizontalLine(IShape2D):
     __repr__ = _swig_repr
 
     def __init__(self, y):
-        """
-        __init__(Geometry::HorizontalLine self, double y) -> HorizontalLine
-
-        Geometry::HorizontalLine::HorizontalLine(double y)
-
-        Parameters:
-        -----------
-
-        y: 
-        The value at which it crosses y-axes 
-
-        """
+        """__init__(HorizontalLine self, double y) -> HorizontalLine"""
         this = _libBornAgainCore.new_HorizontalLine(y)
         try:
             self.this.append(this)
@@ -20853,7 +20720,7 @@ class HorizontalLine(IShape2D):
         """
         clone(HorizontalLine self) -> HorizontalLine
 
-        HorizontalLine* Geometry::HorizontalLine::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.HorizontalLine_clone(self)
@@ -20863,22 +20730,12 @@ class HorizontalLine(IShape2D):
         """
         contains(HorizontalLine self, double x, double y) -> bool
         contains(HorizontalLine self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::HorizontalLine::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.HorizontalLine_contains(self, *args)
 
 
     def getYpos(self):
-        """
-        getYpos(HorizontalLine self) -> double
-
-        double Geometry::HorizontalLine::getYpos() const
-
-        """
+        """getYpos(HorizontalLine self) -> double"""
         return _libBornAgainCore.HorizontalLine_getYpos(self)
 
     __swig_destroy__ = _libBornAgainCore.delete_HorizontalLine
@@ -23242,14 +23099,7 @@ ParticleLayout_swigregister = _libBornAgainCore.ParticleLayout_swigregister
 ParticleLayout_swigregister(ParticleLayout)
 
 class Polygon(IShape2D):
-    """
-
-
-    A polygon in 2D space.Polygon defined by two arrays with x and y coordinates of points. Sizes of arrays should coincide. If polygon is unclosed (the last point doesn't repeat the first one), it will be closed automatically.
-
-    C++ includes: Polygon.h
-
-    """
+    """Proxy of C++ Polygon class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -23263,12 +23113,9 @@ class Polygon(IShape2D):
 
     def __init__(self, *args):
         """
-        __init__(Geometry::Polygon self, vdouble1d_t x, vdouble1d_t y) -> Polygon
-        __init__(Geometry::Polygon self, vdouble2d_t points) -> Polygon
-        __init__(Geometry::Polygon self, Geometry::PolygonPrivate const * d) -> Polygon
-
-        Geometry::Polygon::Polygon(const PolygonPrivate *d)
-
+        __init__(Polygon self, vdouble1d_t x, vdouble1d_t y) -> Polygon
+        __init__(Polygon self, vdouble2d_t points) -> Polygon
+        __init__(Polygon self, PolygonPrivate const * d) -> Polygon
         """
         this = _libBornAgainCore.new_Polygon(*args)
         try:
@@ -23282,7 +23129,7 @@ class Polygon(IShape2D):
         """
         clone(Polygon self) -> Polygon
 
-        virtual Polygon* Geometry::Polygon::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.Polygon_clone(self)
@@ -23292,32 +23139,17 @@ class Polygon(IShape2D):
         """
         contains(Polygon self, double x, double y) -> bool
         contains(Polygon self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::Polygon::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.Polygon_contains(self, *args)
 
 
     def getArea(self):
-        """
-        getArea(Polygon self) -> double
-
-        double Geometry::Polygon::getArea() const
-
-        """
+        """getArea(Polygon self) -> double"""
         return _libBornAgainCore.Polygon_getArea(self)
 
 
     def getPoints(self, xpos, ypos):
-        """
-        getPoints(Polygon self, vdouble1d_t xpos, vdouble1d_t ypos)
-
-        void Geometry::Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const
-
-        """
+        """getPoints(Polygon self, vdouble1d_t xpos, vdouble1d_t ypos)"""
         return _libBornAgainCore.Polygon_getPoints(self, xpos, ypos)
 
 Polygon_swigregister = _libBornAgainCore.Polygon_swigregister
@@ -23473,14 +23305,7 @@ RealParameter_swigregister = _libBornAgainCore.RealParameter_swigregister
 RealParameter_swigregister(RealParameter)
 
 class Rectangle(IShape2D):
-    """
-
-
-    The rectangle shape having its axis aligned to the (non-rotated) coordinate system.
-
-    C++ includes: Rectangle.h
-
-    """
+    """Proxy of C++ Rectangle class."""
 
     __swig_setmethods__ = {}
     for _s in [IShape2D]:
@@ -23493,27 +23318,7 @@ class Rectangle(IShape2D):
     __repr__ = _swig_repr
 
     def __init__(self, xlow, ylow, xup, yup):
-        """
-        __init__(Geometry::Rectangle self, double xlow, double ylow, double xup, double yup) -> Rectangle
-
-        Geometry::Rectangle::Rectangle(double xlow, double ylow, double xup, double yup)
-
-        Parameters:
-        -----------
-
-        xlow: 
-        x-coordinate of lower left corner
-
-        ylow: 
-        y-coordinate of lower left corner
-
-        xup: 
-        x-coordinate of upper right corner
-
-        yup: 
-        y-coordinate of upper right corner 
-
-        """
+        """__init__(Rectangle self, double xlow, double ylow, double xup, double yup) -> Rectangle"""
         this = _libBornAgainCore.new_Rectangle(xlow, ylow, xup, yup)
         try:
             self.this.append(this)
@@ -23524,7 +23329,7 @@ class Rectangle(IShape2D):
         """
         clone(Rectangle self) -> Rectangle
 
-        Rectangle* Geometry::Rectangle::clone() const
+        virtual ICloneable* ICloneable::clone() const =0
 
         """
         return _libBornAgainCore.Rectangle_clone(self)
@@ -23534,62 +23339,32 @@ class Rectangle(IShape2D):
         """
         contains(Rectangle self, double x, double y) -> bool
         contains(Rectangle self, Bin1D binx, Bin1D biny) -> bool
-
-        bool Geometry::Rectangle::contains(const Bin1D &binx, const Bin1D &biny) const
-
-        Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). 
-
         """
         return _libBornAgainCore.Rectangle_contains(self, *args)
 
 
     def getArea(self):
-        """
-        getArea(Rectangle self) -> double
-
-        double Geometry::Rectangle::getArea() const
-
-        """
+        """getArea(Rectangle self) -> double"""
         return _libBornAgainCore.Rectangle_getArea(self)
 
 
     def getXlow(self):
-        """
-        getXlow(Rectangle self) -> double
-
-        double Geometry::Rectangle::getXlow() const
-
-        """
+        """getXlow(Rectangle self) -> double"""
         return _libBornAgainCore.Rectangle_getXlow(self)
 
 
     def getYlow(self):
-        """
-        getYlow(Rectangle self) -> double
-
-        double Geometry::Rectangle::getYlow() const
-
-        """
+        """getYlow(Rectangle self) -> double"""
         return _libBornAgainCore.Rectangle_getYlow(self)
 
 
     def getXup(self):
-        """
-        getXup(Rectangle self) -> double
-
-        double Geometry::Rectangle::getXup() const
-
-        """
+        """getXup(Rectangle self) -> double"""
         return _libBornAgainCore.Rectangle_getXup(self)
 
 
     def getYup(self):
-        """
-        getYup(Rectangle self) -> double
-
-        double Geometry::Rectangle::getYup() const
-
-        """
+        """getYup(Rectangle self) -> double"""
         return _libBornAgainCore.Rectangle_getYup(self)
 
     __swig_destroy__ = _libBornAgainCore.delete_Rectangle
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index f93317fa12c..0e132e180f3 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3479,204 +3479,204 @@ namespace Swig {
 #define SWIGTYPE_p_DistributionHandler swig_types[22]
 #define SWIGTYPE_p_DistributionLogNormal swig_types[23]
 #define SWIGTYPE_p_DistributionLorentz swig_types[24]
-#define SWIGTYPE_p_FTDecayFunction1DCauchy swig_types[25]
-#define SWIGTYPE_p_FTDecayFunction1DGauss swig_types[26]
-#define SWIGTYPE_p_FTDecayFunction1DTriangle swig_types[27]
-#define SWIGTYPE_p_FTDecayFunction1DVoigt swig_types[28]
-#define SWIGTYPE_p_FTDecayFunction2DCauchy swig_types[29]
-#define SWIGTYPE_p_FTDecayFunction2DGauss swig_types[30]
-#define SWIGTYPE_p_FTDecayFunction2DVoigt swig_types[31]
-#define SWIGTYPE_p_FTDistribution1DCauchy swig_types[32]
-#define SWIGTYPE_p_FTDistribution1DCosine swig_types[33]
-#define SWIGTYPE_p_FTDistribution1DGate swig_types[34]
-#define SWIGTYPE_p_FTDistribution1DGauss swig_types[35]
-#define SWIGTYPE_p_FTDistribution1DTriangle swig_types[36]
-#define SWIGTYPE_p_FTDistribution1DVoigt swig_types[37]
-#define SWIGTYPE_p_FTDistribution2DCauchy swig_types[38]
-#define SWIGTYPE_p_FTDistribution2DCone swig_types[39]
-#define SWIGTYPE_p_FTDistribution2DGate swig_types[40]
-#define SWIGTYPE_p_FTDistribution2DGauss swig_types[41]
-#define SWIGTYPE_p_FTDistribution2DVoigt swig_types[42]
-#define SWIGTYPE_p_FitObject swig_types[43]
-#define SWIGTYPE_p_FitObjects_t swig_types[44]
-#define SWIGTYPE_p_FitOptions swig_types[45]
-#define SWIGTYPE_p_FitParameter swig_types[46]
-#define SWIGTYPE_p_FitParameterLinked swig_types[47]
-#define SWIGTYPE_p_FitParameterSet swig_types[48]
-#define SWIGTYPE_p_FitStrategyDefault swig_types[49]
-#define SWIGTYPE_p_FitSuite swig_types[50]
-#define SWIGTYPE_p_FitSuiteImpl swig_types[51]
-#define SWIGTYPE_p_FitSuiteObjects swig_types[52]
-#define SWIGTYPE_p_FitSuiteStrategies swig_types[53]
-#define SWIGTYPE_p_FixedBinAxis swig_types[54]
-#define SWIGTYPE_p_FormFactorAnisoPyramid swig_types[55]
-#define SWIGTYPE_p_FormFactorBox swig_types[56]
-#define SWIGTYPE_p_FormFactorCone swig_types[57]
-#define SWIGTYPE_p_FormFactorCone6 swig_types[58]
-#define SWIGTYPE_p_FormFactorCrystal swig_types[59]
-#define SWIGTYPE_p_FormFactorCuboctahedron swig_types[60]
-#define SWIGTYPE_p_FormFactorCylinder swig_types[61]
-#define SWIGTYPE_p_FormFactorDecoratorDebyeWaller swig_types[62]
-#define SWIGTYPE_p_FormFactorDecoratorFactor swig_types[63]
-#define SWIGTYPE_p_FormFactorDecoratorMaterial swig_types[64]
-#define SWIGTYPE_p_FormFactorDecoratorPositionFactor swig_types[65]
-#define SWIGTYPE_p_FormFactorDecoratorRotation swig_types[66]
-#define SWIGTYPE_p_FormFactorDodecahedron swig_types[67]
-#define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[68]
-#define SWIGTYPE_p_FormFactorFullSphere swig_types[69]
-#define SWIGTYPE_p_FormFactorFullSpheroid swig_types[70]
-#define SWIGTYPE_p_FormFactorGauss swig_types[71]
-#define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[72]
-#define SWIGTYPE_p_FormFactorIcosahedron swig_types[73]
-#define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[74]
-#define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[75]
-#define SWIGTYPE_p_FormFactorLongRipple1Gauss swig_types[76]
-#define SWIGTYPE_p_FormFactorLongRipple1Lorentz swig_types[77]
-#define SWIGTYPE_p_FormFactorLongRipple2Gauss swig_types[78]
-#define SWIGTYPE_p_FormFactorLongRipple2Lorentz swig_types[79]
-#define SWIGTYPE_p_FormFactorLorentz swig_types[80]
-#define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[81]
-#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[82]
-#define SWIGTYPE_p_FormFactorPolyhedron swig_types[83]
-#define SWIGTYPE_p_FormFactorPrism3 swig_types[84]
-#define SWIGTYPE_p_FormFactorPrism6 swig_types[85]
-#define SWIGTYPE_p_FormFactorPyramid swig_types[86]
-#define SWIGTYPE_p_FormFactorRipple1 swig_types[87]
-#define SWIGTYPE_p_FormFactorRipple2 swig_types[88]
-#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[89]
-#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[90]
-#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[91]
-#define SWIGTYPE_p_FormFactorTetrahedron swig_types[92]
-#define SWIGTYPE_p_FormFactorTrivial swig_types[93]
-#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[94]
-#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[95]
-#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[96]
-#define SWIGTYPE_p_FormFactorWeighted swig_types[97]
-#define SWIGTYPE_p_GISASSimulation swig_types[98]
-#define SWIGTYPE_p_Geometry__Ellipse swig_types[99]
-#define SWIGTYPE_p_Geometry__HorizontalLine swig_types[100]
-#define SWIGTYPE_p_Geometry__IShape2D swig_types[101]
-#define SWIGTYPE_p_Geometry__Line swig_types[102]
-#define SWIGTYPE_p_Geometry__Polygon swig_types[103]
-#define SWIGTYPE_p_Geometry__PolygonPrivate swig_types[104]
-#define SWIGTYPE_p_Geometry__Rectangle swig_types[105]
-#define SWIGTYPE_p_Geometry__VerticalLine swig_types[106]
-#define SWIGTYPE_p_Histogram1D swig_types[107]
-#define SWIGTYPE_p_Histogram2D swig_types[108]
-#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[109]
-#define SWIGTYPE_p_HomogeneousMaterial swig_types[110]
-#define SWIGTYPE_p_IAbstractParticle swig_types[111]
-#define SWIGTYPE_p_IAxis swig_types[112]
-#define SWIGTYPE_p_IChiSquaredModule swig_types[113]
-#define SWIGTYPE_p_ICloneable swig_types[114]
-#define SWIGTYPE_p_IClusteredParticles swig_types[115]
-#define SWIGTYPE_p_ICompositeSample swig_types[116]
-#define SWIGTYPE_p_IDetector2D swig_types[117]
-#define SWIGTYPE_p_IDetectorResolution swig_types[118]
-#define SWIGTYPE_p_IDistribution1D swig_types[119]
-#define SWIGTYPE_p_IFTDecayFunction1D swig_types[120]
-#define SWIGTYPE_p_IFTDecayFunction2D swig_types[121]
-#define SWIGTYPE_p_IFTDistribution1D swig_types[122]
-#define SWIGTYPE_p_IFTDistribution2D swig_types[123]
-#define SWIGTYPE_p_IFactoryT_std__string_GISASSimulation_t swig_types[124]
-#define SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t swig_types[125]
-#define SWIGTYPE_p_IFitObserver swig_types[126]
-#define SWIGTYPE_p_IFitParameter swig_types[127]
-#define SWIGTYPE_p_IFitStrategy swig_types[128]
-#define SWIGTYPE_p_IFormFactor swig_types[129]
-#define SWIGTYPE_p_IFormFactorBorn swig_types[130]
-#define SWIGTYPE_p_IFormFactorDecorator swig_types[131]
-#define SWIGTYPE_p_IHistogram swig_types[132]
-#define SWIGTYPE_p_IIntensityFunction swig_types[133]
-#define SWIGTYPE_p_IIntensityNormalizer swig_types[134]
-#define SWIGTYPE_p_IInterferenceFunction swig_types[135]
-#define SWIGTYPE_p_ILayerRTCoefficients swig_types[136]
-#define SWIGTYPE_p_ILayout swig_types[137]
-#define SWIGTYPE_p_IMaterial swig_types[138]
-#define SWIGTYPE_p_IMinimizer swig_types[139]
-#define SWIGTYPE_p_IMultiLayerBuilder swig_types[140]
-#define SWIGTYPE_p_INamed swig_types[141]
-#define SWIGTYPE_p_INoncopyable swig_types[142]
-#define SWIGTYPE_p_IObservable swig_types[143]
-#define SWIGTYPE_p_IObserver swig_types[144]
-#define SWIGTYPE_p_IParameterT_double_t swig_types[145]
-#define SWIGTYPE_p_IParameterized swig_types[146]
-#define SWIGTYPE_p_IParticle swig_types[147]
-#define SWIGTYPE_p_IPixelMap swig_types[148]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[149]
-#define SWIGTYPE_p_IRotation swig_types[150]
-#define SWIGTYPE_p_IRoughness swig_types[151]
-#define SWIGTYPE_p_ISample swig_types[152]
-#define SWIGTYPE_p_ISampleVisitor swig_types[153]
-#define SWIGTYPE_p_ISelectionRule swig_types[154]
-#define SWIGTYPE_p_ISquaredFunction swig_types[155]
-#define SWIGTYPE_p_Instrument swig_types[156]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[157]
-#define SWIGTYPE_p_IntensityFunctionLog swig_types[158]
-#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[159]
-#define SWIGTYPE_p_IntensityNormalizer swig_types[160]
-#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[161]
-#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[162]
-#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[163]
-#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[164]
-#define SWIGTYPE_p_InterferenceFunctionNone swig_types[165]
-#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[166]
-#define SWIGTYPE_p_IsGISAXSDetector swig_types[167]
-#define SWIGTYPE_p_Lattice swig_types[168]
-#define SWIGTYPE_p_Lattice1DParameters swig_types[169]
-#define SWIGTYPE_p_Lattice2DParameters swig_types[170]
-#define SWIGTYPE_p_Layer swig_types[171]
-#define SWIGTYPE_p_LayerInterface swig_types[172]
-#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[173]
-#define SWIGTYPE_p_LayerRoughness swig_types[174]
-#define SWIGTYPE_p_Logging__Logger swig_types[175]
-#define SWIGTYPE_p_MesoCrystal swig_types[176]
-#define SWIGTYPE_p_MultiLayer swig_types[177]
-#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[178]
-#define SWIGTYPE_p_OffSpecSimulation swig_types[179]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[180]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[181]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[182]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[183]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[184]
-#define SWIGTYPE_p_ParameterDistribution swig_types[185]
-#define SWIGTYPE_p_ParameterPool swig_types[186]
-#define SWIGTYPE_p_Particle swig_types[187]
-#define SWIGTYPE_p_ParticleComposition swig_types[188]
-#define SWIGTYPE_p_ParticleCoreShell swig_types[189]
-#define SWIGTYPE_p_ParticleDistribution swig_types[190]
-#define SWIGTYPE_p_ParticleLayout swig_types[191]
-#define SWIGTYPE_p_PolygonalTopology swig_types[192]
-#define SWIGTYPE_p_PolyhedralEdge swig_types[193]
-#define SWIGTYPE_p_PolyhedralFace swig_types[194]
-#define SWIGTYPE_p_PolyhedralTopology swig_types[195]
-#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[196]
-#define SWIGTYPE_p_RealLimits swig_types[197]
-#define SWIGTYPE_p_RealParameter swig_types[198]
-#define SWIGTYPE_p_RectPixelMap swig_types[199]
-#define SWIGTYPE_p_RectangularDetector swig_types[200]
-#define SWIGTYPE_p_RegionOfInterest swig_types[201]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[202]
-#define SWIGTYPE_p_RotationEuler swig_types[203]
-#define SWIGTYPE_p_RotationX swig_types[204]
-#define SWIGTYPE_p_RotationY swig_types[205]
-#define SWIGTYPE_p_RotationZ swig_types[206]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[207]
-#define SWIGTYPE_p_SampleBuilderFactory swig_types[208]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[209]
-#define SWIGTYPE_p_Simulation swig_types[210]
-#define SWIGTYPE_p_SimulationFactory swig_types[211]
-#define SWIGTYPE_p_SimulationOptions swig_types[212]
-#define SWIGTYPE_p_SpecularSimulation swig_types[213]
-#define SWIGTYPE_p_SphericalDetector swig_types[214]
-#define SWIGTYPE_p_SquaredFunctionDefault swig_types[215]
-#define SWIGTYPE_p_SquaredFunctionGaussianError swig_types[216]
-#define SWIGTYPE_p_SquaredFunctionMeanSquaredError swig_types[217]
-#define SWIGTYPE_p_SquaredFunctionSimError swig_types[218]
-#define SWIGTYPE_p_SquaredFunctionSystematicError swig_types[219]
-#define SWIGTYPE_p_ThreadInfo swig_types[220]
-#define SWIGTYPE_p_Transform3D swig_types[221]
-#define SWIGTYPE_p_VariableBinAxis swig_types[222]
+#define SWIGTYPE_p_Ellipse swig_types[25]
+#define SWIGTYPE_p_FTDecayFunction1DCauchy swig_types[26]
+#define SWIGTYPE_p_FTDecayFunction1DGauss swig_types[27]
+#define SWIGTYPE_p_FTDecayFunction1DTriangle swig_types[28]
+#define SWIGTYPE_p_FTDecayFunction1DVoigt swig_types[29]
+#define SWIGTYPE_p_FTDecayFunction2DCauchy swig_types[30]
+#define SWIGTYPE_p_FTDecayFunction2DGauss swig_types[31]
+#define SWIGTYPE_p_FTDecayFunction2DVoigt swig_types[32]
+#define SWIGTYPE_p_FTDistribution1DCauchy swig_types[33]
+#define SWIGTYPE_p_FTDistribution1DCosine swig_types[34]
+#define SWIGTYPE_p_FTDistribution1DGate swig_types[35]
+#define SWIGTYPE_p_FTDistribution1DGauss swig_types[36]
+#define SWIGTYPE_p_FTDistribution1DTriangle swig_types[37]
+#define SWIGTYPE_p_FTDistribution1DVoigt swig_types[38]
+#define SWIGTYPE_p_FTDistribution2DCauchy swig_types[39]
+#define SWIGTYPE_p_FTDistribution2DCone swig_types[40]
+#define SWIGTYPE_p_FTDistribution2DGate swig_types[41]
+#define SWIGTYPE_p_FTDistribution2DGauss swig_types[42]
+#define SWIGTYPE_p_FTDistribution2DVoigt swig_types[43]
+#define SWIGTYPE_p_FitObject swig_types[44]
+#define SWIGTYPE_p_FitObjects_t swig_types[45]
+#define SWIGTYPE_p_FitOptions swig_types[46]
+#define SWIGTYPE_p_FitParameter swig_types[47]
+#define SWIGTYPE_p_FitParameterLinked swig_types[48]
+#define SWIGTYPE_p_FitParameterSet swig_types[49]
+#define SWIGTYPE_p_FitStrategyDefault swig_types[50]
+#define SWIGTYPE_p_FitSuite swig_types[51]
+#define SWIGTYPE_p_FitSuiteImpl swig_types[52]
+#define SWIGTYPE_p_FitSuiteObjects swig_types[53]
+#define SWIGTYPE_p_FitSuiteStrategies swig_types[54]
+#define SWIGTYPE_p_FixedBinAxis swig_types[55]
+#define SWIGTYPE_p_FormFactorAnisoPyramid swig_types[56]
+#define SWIGTYPE_p_FormFactorBox swig_types[57]
+#define SWIGTYPE_p_FormFactorCone swig_types[58]
+#define SWIGTYPE_p_FormFactorCone6 swig_types[59]
+#define SWIGTYPE_p_FormFactorCrystal swig_types[60]
+#define SWIGTYPE_p_FormFactorCuboctahedron swig_types[61]
+#define SWIGTYPE_p_FormFactorCylinder swig_types[62]
+#define SWIGTYPE_p_FormFactorDecoratorDebyeWaller swig_types[63]
+#define SWIGTYPE_p_FormFactorDecoratorFactor swig_types[64]
+#define SWIGTYPE_p_FormFactorDecoratorMaterial swig_types[65]
+#define SWIGTYPE_p_FormFactorDecoratorPositionFactor swig_types[66]
+#define SWIGTYPE_p_FormFactorDecoratorRotation swig_types[67]
+#define SWIGTYPE_p_FormFactorDodecahedron swig_types[68]
+#define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[69]
+#define SWIGTYPE_p_FormFactorFullSphere swig_types[70]
+#define SWIGTYPE_p_FormFactorFullSpheroid swig_types[71]
+#define SWIGTYPE_p_FormFactorGauss swig_types[72]
+#define SWIGTYPE_p_FormFactorHemiEllipsoid swig_types[73]
+#define SWIGTYPE_p_FormFactorIcosahedron swig_types[74]
+#define SWIGTYPE_p_FormFactorLongBoxGauss swig_types[75]
+#define SWIGTYPE_p_FormFactorLongBoxLorentz swig_types[76]
+#define SWIGTYPE_p_FormFactorLongRipple1Gauss swig_types[77]
+#define SWIGTYPE_p_FormFactorLongRipple1Lorentz swig_types[78]
+#define SWIGTYPE_p_FormFactorLongRipple2Gauss swig_types[79]
+#define SWIGTYPE_p_FormFactorLongRipple2Lorentz swig_types[80]
+#define SWIGTYPE_p_FormFactorLorentz swig_types[81]
+#define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[82]
+#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[83]
+#define SWIGTYPE_p_FormFactorPolyhedron swig_types[84]
+#define SWIGTYPE_p_FormFactorPrism3 swig_types[85]
+#define SWIGTYPE_p_FormFactorPrism6 swig_types[86]
+#define SWIGTYPE_p_FormFactorPyramid swig_types[87]
+#define SWIGTYPE_p_FormFactorRipple1 swig_types[88]
+#define SWIGTYPE_p_FormFactorRipple2 swig_types[89]
+#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[90]
+#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[91]
+#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[92]
+#define SWIGTYPE_p_FormFactorTetrahedron swig_types[93]
+#define SWIGTYPE_p_FormFactorTrivial swig_types[94]
+#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[95]
+#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[96]
+#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[97]
+#define SWIGTYPE_p_FormFactorWeighted swig_types[98]
+#define SWIGTYPE_p_GISASSimulation swig_types[99]
+#define SWIGTYPE_p_Histogram1D swig_types[100]
+#define SWIGTYPE_p_Histogram2D swig_types[101]
+#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[102]
+#define SWIGTYPE_p_HomogeneousMaterial swig_types[103]
+#define SWIGTYPE_p_HorizontalLine swig_types[104]
+#define SWIGTYPE_p_IAbstractParticle swig_types[105]
+#define SWIGTYPE_p_IAxis swig_types[106]
+#define SWIGTYPE_p_IChiSquaredModule swig_types[107]
+#define SWIGTYPE_p_ICloneable swig_types[108]
+#define SWIGTYPE_p_IClusteredParticles swig_types[109]
+#define SWIGTYPE_p_ICompositeSample swig_types[110]
+#define SWIGTYPE_p_IDetector2D swig_types[111]
+#define SWIGTYPE_p_IDetectorResolution swig_types[112]
+#define SWIGTYPE_p_IDistribution1D swig_types[113]
+#define SWIGTYPE_p_IFTDecayFunction1D swig_types[114]
+#define SWIGTYPE_p_IFTDecayFunction2D swig_types[115]
+#define SWIGTYPE_p_IFTDistribution1D swig_types[116]
+#define SWIGTYPE_p_IFTDistribution2D swig_types[117]
+#define SWIGTYPE_p_IFactoryT_std__string_GISASSimulation_t swig_types[118]
+#define SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t swig_types[119]
+#define SWIGTYPE_p_IFitObserver swig_types[120]
+#define SWIGTYPE_p_IFitParameter swig_types[121]
+#define SWIGTYPE_p_IFitStrategy swig_types[122]
+#define SWIGTYPE_p_IFormFactor swig_types[123]
+#define SWIGTYPE_p_IFormFactorBorn swig_types[124]
+#define SWIGTYPE_p_IFormFactorDecorator swig_types[125]
+#define SWIGTYPE_p_IHistogram swig_types[126]
+#define SWIGTYPE_p_IIntensityFunction swig_types[127]
+#define SWIGTYPE_p_IIntensityNormalizer swig_types[128]
+#define SWIGTYPE_p_IInterferenceFunction swig_types[129]
+#define SWIGTYPE_p_ILayerRTCoefficients swig_types[130]
+#define SWIGTYPE_p_ILayout swig_types[131]
+#define SWIGTYPE_p_IMaterial swig_types[132]
+#define SWIGTYPE_p_IMinimizer swig_types[133]
+#define SWIGTYPE_p_IMultiLayerBuilder swig_types[134]
+#define SWIGTYPE_p_INamed swig_types[135]
+#define SWIGTYPE_p_INoncopyable swig_types[136]
+#define SWIGTYPE_p_IObservable swig_types[137]
+#define SWIGTYPE_p_IObserver swig_types[138]
+#define SWIGTYPE_p_IParameterT_double_t swig_types[139]
+#define SWIGTYPE_p_IParameterized swig_types[140]
+#define SWIGTYPE_p_IParticle swig_types[141]
+#define SWIGTYPE_p_IPixelMap swig_types[142]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[143]
+#define SWIGTYPE_p_IRotation swig_types[144]
+#define SWIGTYPE_p_IRoughness swig_types[145]
+#define SWIGTYPE_p_ISample swig_types[146]
+#define SWIGTYPE_p_ISampleVisitor swig_types[147]
+#define SWIGTYPE_p_ISelectionRule swig_types[148]
+#define SWIGTYPE_p_IShape2D swig_types[149]
+#define SWIGTYPE_p_ISquaredFunction swig_types[150]
+#define SWIGTYPE_p_Instrument swig_types[151]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[152]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[153]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[154]
+#define SWIGTYPE_p_IntensityNormalizer swig_types[155]
+#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[156]
+#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[157]
+#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[158]
+#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[159]
+#define SWIGTYPE_p_InterferenceFunctionNone swig_types[160]
+#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[161]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[162]
+#define SWIGTYPE_p_Lattice swig_types[163]
+#define SWIGTYPE_p_Lattice1DParameters swig_types[164]
+#define SWIGTYPE_p_Lattice2DParameters swig_types[165]
+#define SWIGTYPE_p_Layer swig_types[166]
+#define SWIGTYPE_p_LayerInterface swig_types[167]
+#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[168]
+#define SWIGTYPE_p_LayerRoughness swig_types[169]
+#define SWIGTYPE_p_Line swig_types[170]
+#define SWIGTYPE_p_Logging__Logger swig_types[171]
+#define SWIGTYPE_p_MesoCrystal swig_types[172]
+#define SWIGTYPE_p_MultiLayer swig_types[173]
+#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[174]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[175]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[176]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[177]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[178]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[179]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[180]
+#define SWIGTYPE_p_ParameterDistribution swig_types[181]
+#define SWIGTYPE_p_ParameterPool swig_types[182]
+#define SWIGTYPE_p_Particle swig_types[183]
+#define SWIGTYPE_p_ParticleComposition swig_types[184]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[185]
+#define SWIGTYPE_p_ParticleDistribution swig_types[186]
+#define SWIGTYPE_p_ParticleLayout swig_types[187]
+#define SWIGTYPE_p_Polygon swig_types[188]
+#define SWIGTYPE_p_PolygonPrivate swig_types[189]
+#define SWIGTYPE_p_PolygonalTopology swig_types[190]
+#define SWIGTYPE_p_PolyhedralEdge swig_types[191]
+#define SWIGTYPE_p_PolyhedralFace swig_types[192]
+#define SWIGTYPE_p_PolyhedralTopology swig_types[193]
+#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[194]
+#define SWIGTYPE_p_RealLimits swig_types[195]
+#define SWIGTYPE_p_RealParameter swig_types[196]
+#define SWIGTYPE_p_RectPixelMap swig_types[197]
+#define SWIGTYPE_p_Rectangle swig_types[198]
+#define SWIGTYPE_p_RectangularDetector swig_types[199]
+#define SWIGTYPE_p_RegionOfInterest swig_types[200]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[201]
+#define SWIGTYPE_p_RotationEuler swig_types[202]
+#define SWIGTYPE_p_RotationX swig_types[203]
+#define SWIGTYPE_p_RotationY swig_types[204]
+#define SWIGTYPE_p_RotationZ swig_types[205]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[206]
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[207]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[208]
+#define SWIGTYPE_p_Simulation swig_types[209]
+#define SWIGTYPE_p_SimulationFactory swig_types[210]
+#define SWIGTYPE_p_SimulationOptions swig_types[211]
+#define SWIGTYPE_p_SpecularSimulation swig_types[212]
+#define SWIGTYPE_p_SphericalDetector swig_types[213]
+#define SWIGTYPE_p_SquaredFunctionDefault swig_types[214]
+#define SWIGTYPE_p_SquaredFunctionGaussianError swig_types[215]
+#define SWIGTYPE_p_SquaredFunctionMeanSquaredError swig_types[216]
+#define SWIGTYPE_p_SquaredFunctionSimError swig_types[217]
+#define SWIGTYPE_p_SquaredFunctionSystematicError swig_types[218]
+#define SWIGTYPE_p_ThreadInfo swig_types[219]
+#define SWIGTYPE_p_Transform3D swig_types[220]
+#define SWIGTYPE_p_VariableBinAxis swig_types[221]
+#define SWIGTYPE_p_VerticalLine swig_types[222]
 #define SWIGTYPE_p_WavevectorInfo swig_types[223]
 #define SWIGTYPE_p__object swig_types[224]
 #define SWIGTYPE_p_allocator_type swig_types[225]
@@ -30450,20 +30450,20 @@ SWIGINTERN PyObject *CustomBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self),
 
 SWIGINTERN PyObject *_wrap_IShape2D_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::IShape2D *arg1 = (Geometry::IShape2D *) 0 ;
+  IShape2D *arg1 = (IShape2D *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::IShape2D *result = 0 ;
+  IShape2D *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:IShape2D_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__IShape2D, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IShape2D, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_clone" "', argument " "1"" of type '" "Geometry::IShape2D const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_clone" "', argument " "1"" of type '" "IShape2D const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::IShape2D * >(argp1);
-  result = (Geometry::IShape2D *)((Geometry::IShape2D const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__IShape2D, 0 |  0 );
+  arg1 = reinterpret_cast< IShape2D * >(argp1);
+  result = (IShape2D *)((IShape2D const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IShape2D, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -30472,7 +30472,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::IShape2D *arg1 = (Geometry::IShape2D *) 0 ;
+  IShape2D *arg1 = (IShape2D *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -30487,11 +30487,11 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(se
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:IShape2D_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__IShape2D, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IShape2D, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_contains" "', argument " "1"" of type '" "Geometry::IShape2D const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_contains" "', argument " "1"" of type '" "IShape2D const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::IShape2D * >(argp1);
+  arg1 = reinterpret_cast< IShape2D * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IShape2D_contains" "', argument " "2"" of type '" "double""'");
@@ -30502,7 +30502,7 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(se
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IShape2D_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::IShape2D const *)arg1)->contains(arg2,arg3);
+  result = (bool)((IShape2D const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -30512,7 +30512,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::IShape2D *arg1 = (Geometry::IShape2D *) 0 ;
+  IShape2D *arg1 = (IShape2D *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -30527,11 +30527,11 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(se
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:IShape2D_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__IShape2D, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IShape2D, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_contains" "', argument " "1"" of type '" "Geometry::IShape2D const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IShape2D_contains" "', argument " "1"" of type '" "IShape2D const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::IShape2D * >(argp1);
+  arg1 = reinterpret_cast< IShape2D * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IShape2D_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -30548,7 +30548,7 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(se
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IShape2D_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::IShape2D const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((IShape2D const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -30571,7 +30571,7 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__IShape2D, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_IShape2D, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -30588,7 +30588,7 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__IShape2D, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_IShape2D, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -30610,25 +30610,25 @@ SWIGINTERN PyObject *_wrap_IShape2D_contains(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IShape2D_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::IShape2D::contains(double,double) const\n"
-    "    Geometry::IShape2D::contains(Bin1D const &,Bin1D const &) const\n");
+    "    IShape2D::contains(double,double) const\n"
+    "    IShape2D::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_delete_IShape2D(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::IShape2D *arg1 = (Geometry::IShape2D *) 0 ;
+  IShape2D *arg1 = (IShape2D *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_IShape2D",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__IShape2D, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IShape2D, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IShape2D" "', argument " "1"" of type '" "Geometry::IShape2D *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IShape2D" "', argument " "1"" of type '" "IShape2D *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::IShape2D * >(argp1);
+  arg1 = reinterpret_cast< IShape2D * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -30640,7 +30640,7 @@ fail:
 SWIGINTERN PyObject *IShape2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__IShape2D, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_IShape2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -50522,7 +50522,7 @@ fail:
 SWIGINTERN PyObject *_wrap_DetectorMask_addMask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   DetectorMask *arg1 = (DetectorMask *) 0 ;
-  Geometry::IShape2D *arg2 = 0 ;
+  IShape2D *arg2 = 0 ;
   bool arg3 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -50540,20 +50540,20 @@ SWIGINTERN PyObject *_wrap_DetectorMask_addMask(PyObject *SWIGUNUSEDPARM(self),
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DetectorMask_addMask" "', argument " "1"" of type '" "DetectorMask *""'"); 
   }
   arg1 = reinterpret_cast< DetectorMask * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__IShape2D,  0  | 0);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_IShape2D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DetectorMask_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DetectorMask_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DetectorMask_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DetectorMask_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
-  arg2 = reinterpret_cast< Geometry::IShape2D * >(argp2);
+  arg2 = reinterpret_cast< IShape2D * >(argp2);
   ecode3 = SWIG_AsVal_bool(obj2, &val3);
   if (!SWIG_IsOK(ecode3)) {
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DetectorMask_addMask" "', argument " "3"" of type '" "bool""'");
   } 
   arg3 = static_cast< bool >(val3);
-  (arg1)->addMask((Geometry::IShape2D const &)*arg2,arg3);
+  (arg1)->addMask((IShape2D const &)*arg2,arg3);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -50851,7 +50851,7 @@ SWIGINTERN PyObject *_wrap_DetectorMask_getMaskShape(PyObject *SWIGUNUSEDPARM(se
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
   PyObject * obj2 = 0 ;
-  Geometry::IShape2D *result = 0 ;
+  IShape2D *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:DetectorMask_getMaskShape",&obj0,&obj1,&obj2)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DetectorMask, 0 |  0 );
@@ -50872,8 +50872,8 @@ SWIGINTERN PyObject *_wrap_DetectorMask_getMaskShape(PyObject *SWIGUNUSEDPARM(se
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DetectorMask_getMaskShape" "', argument " "3"" of type '" "bool &""'"); 
   }
   arg3 = reinterpret_cast< bool * >(argp3);
-  result = (Geometry::IShape2D *)((DetectorMask const *)arg1)->getMaskShape(arg2,*arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__IShape2D, 0 |  0 );
+  result = (IShape2D *)((DetectorMask const *)arg1)->getMaskShape(arg2,*arg3);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IShape2D, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -50930,7 +50930,7 @@ SWIGINTERN PyObject *_wrap_new_Ellipse__SWIG_0(PyObject *SWIGUNUSEDPARM(self), P
   PyObject * obj2 = 0 ;
   PyObject * obj3 = 0 ;
   PyObject * obj4 = 0 ;
-  Geometry::Ellipse *result = 0 ;
+  Ellipse *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_Ellipse",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -50958,8 +50958,8 @@ SWIGINTERN PyObject *_wrap_new_Ellipse__SWIG_0(PyObject *SWIGUNUSEDPARM(self), P
     SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Ellipse" "', argument " "5"" of type '" "double""'");
   } 
   arg5 = static_cast< double >(val5);
-  result = (Geometry::Ellipse *)new Geometry::Ellipse(arg1,arg2,arg3,arg4,arg5);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Ellipse, SWIG_POINTER_NEW |  0 );
+  result = (Ellipse *)new Ellipse(arg1,arg2,arg3,arg4,arg5);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Ellipse, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -50984,7 +50984,7 @@ SWIGINTERN PyObject *_wrap_new_Ellipse__SWIG_1(PyObject *SWIGUNUSEDPARM(self), P
   PyObject * obj1 = 0 ;
   PyObject * obj2 = 0 ;
   PyObject * obj3 = 0 ;
-  Geometry::Ellipse *result = 0 ;
+  Ellipse *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOOO:new_Ellipse",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -51007,8 +51007,8 @@ SWIGINTERN PyObject *_wrap_new_Ellipse__SWIG_1(PyObject *SWIGUNUSEDPARM(self), P
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Ellipse" "', argument " "4"" of type '" "double""'");
   } 
   arg4 = static_cast< double >(val4);
-  result = (Geometry::Ellipse *)new Geometry::Ellipse(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Ellipse, SWIG_POINTER_NEW |  0 );
+  result = (Ellipse *)new Ellipse(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Ellipse, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -51093,28 +51093,28 @@ SWIGINTERN PyObject *_wrap_new_Ellipse(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_Ellipse'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Ellipse::Ellipse(double,double,double,double,double)\n"
-    "    Geometry::Ellipse::Ellipse(double,double,double,double)\n");
+    "    Ellipse::Ellipse(double,double,double,double,double)\n"
+    "    Ellipse::Ellipse(double,double,double,double)\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_Ellipse_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::Ellipse *result = 0 ;
+  Ellipse *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_clone" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_clone" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (Geometry::Ellipse *)((Geometry::Ellipse const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (Ellipse *)((Ellipse const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Ellipse, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -51123,7 +51123,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -51138,11 +51138,11 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(sel
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Ellipse_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_contains" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_contains" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Ellipse_contains" "', argument " "2"" of type '" "double""'");
@@ -51153,7 +51153,7 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(sel
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Ellipse_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::Ellipse const *)arg1)->contains(arg2,arg3);
+  result = (bool)((Ellipse const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -51163,7 +51163,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -51178,11 +51178,11 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(sel
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Ellipse_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_contains" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_contains" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ellipse_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -51199,7 +51199,7 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(sel
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Ellipse_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::Ellipse const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((Ellipse const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -51222,7 +51222,7 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Ellipse, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Ellipse, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -51239,7 +51239,7 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Ellipse, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Ellipse, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -51261,27 +51261,27 @@ SWIGINTERN PyObject *_wrap_Ellipse_contains(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'Ellipse_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Ellipse::contains(double,double) const\n"
-    "    Geometry::Ellipse::contains(Bin1D const &,Bin1D const &) const\n");
+    "    Ellipse::contains(double,double) const\n"
+    "    Ellipse::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_Ellipse_getCenterX(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_getCenterX",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getCenterX" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getCenterX" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (double)((Geometry::Ellipse const *)arg1)->getCenterX();
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (double)((Ellipse const *)arg1)->getCenterX();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -51291,19 +51291,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_getCenterY(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_getCenterY",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getCenterY" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getCenterY" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (double)((Geometry::Ellipse const *)arg1)->getCenterY();
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (double)((Ellipse const *)arg1)->getCenterY();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -51313,19 +51313,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_getRadiusX(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_getRadiusX",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getRadiusX" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getRadiusX" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (double)((Geometry::Ellipse const *)arg1)->getRadiusX();
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (double)((Ellipse const *)arg1)->getRadiusX();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -51335,19 +51335,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_getRadiusY(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_getRadiusY",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getRadiusY" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getRadiusY" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (double)((Geometry::Ellipse const *)arg1)->getRadiusY();
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (double)((Ellipse const *)arg1)->getRadiusY();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -51357,19 +51357,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Ellipse_getTheta(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Ellipse_getTheta",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getTheta" "', argument " "1"" of type '" "Geometry::Ellipse const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ellipse_getTheta" "', argument " "1"" of type '" "Ellipse const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
-  result = (double)((Geometry::Ellipse const *)arg1)->getTheta();
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
+  result = (double)((Ellipse const *)arg1)->getTheta();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -51379,17 +51379,17 @@ fail:
 
 SWIGINTERN PyObject *_wrap_delete_Ellipse(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Ellipse *arg1 = (Geometry::Ellipse *) 0 ;
+  Ellipse *arg1 = (Ellipse *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_Ellipse",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Ellipse, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Ellipse, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Ellipse" "', argument " "1"" of type '" "Geometry::Ellipse *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Ellipse" "', argument " "1"" of type '" "Ellipse *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Ellipse * >(argp1);
+  arg1 = reinterpret_cast< Ellipse * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -51401,7 +51401,7 @@ fail:
 SWIGINTERN PyObject *Ellipse_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__Ellipse, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_Ellipse, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -70565,7 +70565,7 @@ fail:
 SWIGINTERN PyObject *_wrap_GISASSimulation_addMask__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   GISASSimulation *arg1 = (GISASSimulation *) 0 ;
-  Geometry::IShape2D *arg2 = 0 ;
+  IShape2D *arg2 = 0 ;
   bool arg3 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -70583,20 +70583,20 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_addMask__SWIG_0(PyObject *SWIGUNUSEDP
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GISASSimulation_addMask" "', argument " "1"" of type '" "GISASSimulation *""'"); 
   }
   arg1 = reinterpret_cast< GISASSimulation * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__IShape2D,  0  | 0);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_IShape2D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
-  arg2 = reinterpret_cast< Geometry::IShape2D * >(argp2);
+  arg2 = reinterpret_cast< IShape2D * >(argp2);
   ecode3 = SWIG_AsVal_bool(obj2, &val3);
   if (!SWIG_IsOK(ecode3)) {
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "GISASSimulation_addMask" "', argument " "3"" of type '" "bool""'");
   } 
   arg3 = static_cast< bool >(val3);
-  (arg1)->addMask((Geometry::IShape2D const &)*arg2,arg3);
+  (arg1)->addMask((IShape2D const &)*arg2,arg3);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -70607,7 +70607,7 @@ fail:
 SWIGINTERN PyObject *_wrap_GISASSimulation_addMask__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   GISASSimulation *arg1 = (GISASSimulation *) 0 ;
-  Geometry::IShape2D *arg2 = 0 ;
+  IShape2D *arg2 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -70621,15 +70621,15 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_addMask__SWIG_1(PyObject *SWIGUNUSEDP
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GISASSimulation_addMask" "', argument " "1"" of type '" "GISASSimulation *""'"); 
   }
   arg1 = reinterpret_cast< GISASSimulation * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__IShape2D,  0  | 0);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_IShape2D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GISASSimulation_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
-  arg2 = reinterpret_cast< Geometry::IShape2D * >(argp2);
-  (arg1)->addMask((Geometry::IShape2D const &)*arg2);
+  arg2 = reinterpret_cast< IShape2D * >(argp2);
+  (arg1)->addMask((IShape2D const &)*arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -70655,7 +70655,7 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_addMask(PyObject *self, PyObject *arg
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_GISASSimulation, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Geometry__IShape2D, 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IShape2D, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_GISASSimulation_addMask__SWIG_1(self, args);
@@ -70668,7 +70668,7 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_addMask(PyObject *self, PyObject *arg
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_GISASSimulation, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Geometry__IShape2D, 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IShape2D, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         {
@@ -70685,8 +70685,8 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_addMask(PyObject *self, PyObject *arg
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'GISASSimulation_addMask'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    GISASSimulation::addMask(Geometry::IShape2D const &,bool)\n"
-    "    GISASSimulation::addMask(Geometry::IShape2D const &)\n");
+    "    GISASSimulation::addMask(IShape2D const &,bool)\n"
+    "    GISASSimulation::addMask(IShape2D const &)\n");
   return 0;
 }
 
@@ -75713,7 +75713,7 @@ fail:
 SWIGINTERN PyObject *_wrap_IDetector2D_addMask__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IDetector2D *arg1 = (IDetector2D *) 0 ;
-  Geometry::IShape2D *arg2 = 0 ;
+  IShape2D *arg2 = 0 ;
   bool arg3 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -75731,20 +75731,20 @@ SWIGINTERN PyObject *_wrap_IDetector2D_addMask__SWIG_0(PyObject *SWIGUNUSEDPARM(
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetector2D_addMask" "', argument " "1"" of type '" "IDetector2D *""'"); 
   }
   arg1 = reinterpret_cast< IDetector2D * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__IShape2D,  0  | 0);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_IShape2D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
-  arg2 = reinterpret_cast< Geometry::IShape2D * >(argp2);
+  arg2 = reinterpret_cast< IShape2D * >(argp2);
   ecode3 = SWIG_AsVal_bool(obj2, &val3);
   if (!SWIG_IsOK(ecode3)) {
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IDetector2D_addMask" "', argument " "3"" of type '" "bool""'");
   } 
   arg3 = static_cast< bool >(val3);
-  (arg1)->addMask((Geometry::IShape2D const &)*arg2,arg3);
+  (arg1)->addMask((IShape2D const &)*arg2,arg3);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -75755,7 +75755,7 @@ fail:
 SWIGINTERN PyObject *_wrap_IDetector2D_addMask__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IDetector2D *arg1 = (IDetector2D *) 0 ;
-  Geometry::IShape2D *arg2 = 0 ;
+  IShape2D *arg2 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -75769,15 +75769,15 @@ SWIGINTERN PyObject *_wrap_IDetector2D_addMask__SWIG_1(PyObject *SWIGUNUSEDPARM(
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetector2D_addMask" "', argument " "1"" of type '" "IDetector2D *""'"); 
   }
   arg1 = reinterpret_cast< IDetector2D * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__IShape2D,  0  | 0);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_IShape2D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "Geometry::IShape2D const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IDetector2D_addMask" "', argument " "2"" of type '" "IShape2D const &""'"); 
   }
-  arg2 = reinterpret_cast< Geometry::IShape2D * >(argp2);
-  (arg1)->addMask((Geometry::IShape2D const &)*arg2);
+  arg2 = reinterpret_cast< IShape2D * >(argp2);
+  (arg1)->addMask((IShape2D const &)*arg2);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -75803,7 +75803,7 @@ SWIGINTERN PyObject *_wrap_IDetector2D_addMask(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_IDetector2D, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Geometry__IShape2D, 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IShape2D, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_IDetector2D_addMask__SWIG_1(self, args);
@@ -75816,7 +75816,7 @@ SWIGINTERN PyObject *_wrap_IDetector2D_addMask(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_IDetector2D, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Geometry__IShape2D, 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IShape2D, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         {
@@ -75833,8 +75833,8 @@ SWIGINTERN PyObject *_wrap_IDetector2D_addMask(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IDetector2D_addMask'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    IDetector2D::addMask(Geometry::IShape2D const &,bool)\n"
-    "    IDetector2D::addMask(Geometry::IShape2D const &)\n");
+    "    IDetector2D::addMask(IShape2D const &,bool)\n"
+    "    IDetector2D::addMask(IShape2D const &)\n");
   return 0;
 }
 
@@ -86980,7 +86980,7 @@ SWIGINTERN PyObject *_wrap_new_Line(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
   PyObject * obj1 = 0 ;
   PyObject * obj2 = 0 ;
   PyObject * obj3 = 0 ;
-  Geometry::Line *result = 0 ;
+  Line *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOOO:new_Line",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -87003,8 +87003,8 @@ SWIGINTERN PyObject *_wrap_new_Line(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Line" "', argument " "4"" of type '" "double""'");
   } 
   arg4 = static_cast< double >(val4);
-  result = (Geometry::Line *)new Geometry::Line(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Line, SWIG_POINTER_NEW |  0 );
+  result = (Line *)new Line(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Line, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87013,20 +87013,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Line_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Line *arg1 = (Geometry::Line *) 0 ;
+  Line *arg1 = (Line *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::Line *result = 0 ;
+  Line *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Line_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Line, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Line, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_clone" "', argument " "1"" of type '" "Geometry::Line const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_clone" "', argument " "1"" of type '" "Line const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Line * >(argp1);
-  result = (Geometry::Line *)((Geometry::Line const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Line, 0 |  0 );
+  arg1 = reinterpret_cast< Line * >(argp1);
+  result = (Line *)((Line const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Line, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87035,7 +87035,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Line_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Line *arg1 = (Geometry::Line *) 0 ;
+  Line *arg1 = (Line *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -87050,11 +87050,11 @@ SWIGINTERN PyObject *_wrap_Line_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self),
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Line_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Line, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Line, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_contains" "', argument " "1"" of type '" "Geometry::Line const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_contains" "', argument " "1"" of type '" "Line const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Line * >(argp1);
+  arg1 = reinterpret_cast< Line * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Line_contains" "', argument " "2"" of type '" "double""'");
@@ -87065,7 +87065,7 @@ SWIGINTERN PyObject *_wrap_Line_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self),
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Line_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::Line const *)arg1)->contains(arg2,arg3);
+  result = (bool)((Line const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87075,7 +87075,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Line_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Line *arg1 = (Geometry::Line *) 0 ;
+  Line *arg1 = (Line *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -87090,11 +87090,11 @@ SWIGINTERN PyObject *_wrap_Line_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self),
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Line_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Line, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Line, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_contains" "', argument " "1"" of type '" "Geometry::Line const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Line_contains" "', argument " "1"" of type '" "Line const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Line * >(argp1);
+  arg1 = reinterpret_cast< Line * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Line_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -87111,7 +87111,7 @@ SWIGINTERN PyObject *_wrap_Line_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self),
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Line_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::Line const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((Line const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87134,7 +87134,7 @@ SWIGINTERN PyObject *_wrap_Line_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Line, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Line, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -87151,7 +87151,7 @@ SWIGINTERN PyObject *_wrap_Line_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Line, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Line, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -87173,25 +87173,25 @@ SWIGINTERN PyObject *_wrap_Line_contains(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'Line_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Line::contains(double,double) const\n"
-    "    Geometry::Line::contains(Bin1D const &,Bin1D const &) const\n");
+    "    Line::contains(double,double) const\n"
+    "    Line::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_delete_Line(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Line *arg1 = (Geometry::Line *) 0 ;
+  Line *arg1 = (Line *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_Line",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Line, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Line, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Line" "', argument " "1"" of type '" "Geometry::Line *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Line" "', argument " "1"" of type '" "Line *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Line * >(argp1);
+  arg1 = reinterpret_cast< Line * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -87203,7 +87203,7 @@ fail:
 SWIGINTERN PyObject *Line_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__Line, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_Line, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -87213,7 +87213,7 @@ SWIGINTERN PyObject *_wrap_new_VerticalLine(PyObject *SWIGUNUSEDPARM(self), PyOb
   double val1 ;
   int ecode1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::VerticalLine *result = 0 ;
+  VerticalLine *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:new_VerticalLine",&obj0)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -87221,8 +87221,8 @@ SWIGINTERN PyObject *_wrap_new_VerticalLine(PyObject *SWIGUNUSEDPARM(self), PyOb
     SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_VerticalLine" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
-  result = (Geometry::VerticalLine *)new Geometry::VerticalLine(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__VerticalLine, SWIG_POINTER_NEW |  0 );
+  result = (VerticalLine *)new VerticalLine(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_VerticalLine, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87231,20 +87231,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_VerticalLine_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::VerticalLine *arg1 = (Geometry::VerticalLine *) 0 ;
+  VerticalLine *arg1 = (VerticalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::VerticalLine *result = 0 ;
+  VerticalLine *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:VerticalLine_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__VerticalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_VerticalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_clone" "', argument " "1"" of type '" "Geometry::VerticalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_clone" "', argument " "1"" of type '" "VerticalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::VerticalLine * >(argp1);
-  result = (Geometry::VerticalLine *)((Geometry::VerticalLine const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__VerticalLine, 0 |  0 );
+  arg1 = reinterpret_cast< VerticalLine * >(argp1);
+  result = (VerticalLine *)((VerticalLine const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_VerticalLine, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87253,7 +87253,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::VerticalLine *arg1 = (Geometry::VerticalLine *) 0 ;
+  VerticalLine *arg1 = (VerticalLine *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -87268,11 +87268,11 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_0(PyObject *SWIGUNUSEDPAR
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:VerticalLine_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__VerticalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_VerticalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_contains" "', argument " "1"" of type '" "Geometry::VerticalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_contains" "', argument " "1"" of type '" "VerticalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::VerticalLine * >(argp1);
+  arg1 = reinterpret_cast< VerticalLine * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VerticalLine_contains" "', argument " "2"" of type '" "double""'");
@@ -87283,7 +87283,7 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_0(PyObject *SWIGUNUSEDPAR
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VerticalLine_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::VerticalLine const *)arg1)->contains(arg2,arg3);
+  result = (bool)((VerticalLine const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87293,7 +87293,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::VerticalLine *arg1 = (Geometry::VerticalLine *) 0 ;
+  VerticalLine *arg1 = (VerticalLine *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -87308,11 +87308,11 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_1(PyObject *SWIGUNUSEDPAR
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:VerticalLine_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__VerticalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_VerticalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_contains" "', argument " "1"" of type '" "Geometry::VerticalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_contains" "', argument " "1"" of type '" "VerticalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::VerticalLine * >(argp1);
+  arg1 = reinterpret_cast< VerticalLine * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VerticalLine_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -87329,7 +87329,7 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains__SWIG_1(PyObject *SWIGUNUSEDPAR
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VerticalLine_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::VerticalLine const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((VerticalLine const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87352,7 +87352,7 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains(PyObject *self, PyObject *args)
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__VerticalLine, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_VerticalLine, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -87369,7 +87369,7 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains(PyObject *self, PyObject *args)
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__VerticalLine, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_VerticalLine, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -87391,27 +87391,27 @@ SWIGINTERN PyObject *_wrap_VerticalLine_contains(PyObject *self, PyObject *args)
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VerticalLine_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::VerticalLine::contains(double,double) const\n"
-    "    Geometry::VerticalLine::contains(Bin1D const &,Bin1D const &) const\n");
+    "    VerticalLine::contains(double,double) const\n"
+    "    VerticalLine::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_VerticalLine_getXpos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::VerticalLine *arg1 = (Geometry::VerticalLine *) 0 ;
+  VerticalLine *arg1 = (VerticalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:VerticalLine_getXpos",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__VerticalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_VerticalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_getXpos" "', argument " "1"" of type '" "Geometry::VerticalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VerticalLine_getXpos" "', argument " "1"" of type '" "VerticalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::VerticalLine * >(argp1);
-  result = (double)((Geometry::VerticalLine const *)arg1)->getXpos();
+  arg1 = reinterpret_cast< VerticalLine * >(argp1);
+  result = (double)((VerticalLine const *)arg1)->getXpos();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -87421,17 +87421,17 @@ fail:
 
 SWIGINTERN PyObject *_wrap_delete_VerticalLine(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::VerticalLine *arg1 = (Geometry::VerticalLine *) 0 ;
+  VerticalLine *arg1 = (VerticalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_VerticalLine",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__VerticalLine, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_VerticalLine, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VerticalLine" "', argument " "1"" of type '" "Geometry::VerticalLine *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VerticalLine" "', argument " "1"" of type '" "VerticalLine *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::VerticalLine * >(argp1);
+  arg1 = reinterpret_cast< VerticalLine * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -87443,7 +87443,7 @@ fail:
 SWIGINTERN PyObject *VerticalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__VerticalLine, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_VerticalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -87453,7 +87453,7 @@ SWIGINTERN PyObject *_wrap_new_HorizontalLine(PyObject *SWIGUNUSEDPARM(self), Py
   double val1 ;
   int ecode1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::HorizontalLine *result = 0 ;
+  HorizontalLine *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:new_HorizontalLine",&obj0)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -87461,8 +87461,8 @@ SWIGINTERN PyObject *_wrap_new_HorizontalLine(PyObject *SWIGUNUSEDPARM(self), Py
     SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_HorizontalLine" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
-  result = (Geometry::HorizontalLine *)new Geometry::HorizontalLine(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__HorizontalLine, SWIG_POINTER_NEW |  0 );
+  result = (HorizontalLine *)new HorizontalLine(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_HorizontalLine, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87471,20 +87471,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_HorizontalLine_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::HorizontalLine *arg1 = (Geometry::HorizontalLine *) 0 ;
+  HorizontalLine *arg1 = (HorizontalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::HorizontalLine *result = 0 ;
+  HorizontalLine *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:HorizontalLine_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__HorizontalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_HorizontalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_clone" "', argument " "1"" of type '" "Geometry::HorizontalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_clone" "', argument " "1"" of type '" "HorizontalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::HorizontalLine * >(argp1);
-  result = (Geometry::HorizontalLine *)((Geometry::HorizontalLine const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__HorizontalLine, 0 |  0 );
+  arg1 = reinterpret_cast< HorizontalLine * >(argp1);
+  result = (HorizontalLine *)((HorizontalLine const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_HorizontalLine, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -87493,7 +87493,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::HorizontalLine *arg1 = (Geometry::HorizontalLine *) 0 ;
+  HorizontalLine *arg1 = (HorizontalLine *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -87508,11 +87508,11 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_0(PyObject *SWIGUNUSEDP
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:HorizontalLine_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__HorizontalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_HorizontalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_contains" "', argument " "1"" of type '" "Geometry::HorizontalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_contains" "', argument " "1"" of type '" "HorizontalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::HorizontalLine * >(argp1);
+  arg1 = reinterpret_cast< HorizontalLine * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "HorizontalLine_contains" "', argument " "2"" of type '" "double""'");
@@ -87523,7 +87523,7 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_0(PyObject *SWIGUNUSEDP
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "HorizontalLine_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::HorizontalLine const *)arg1)->contains(arg2,arg3);
+  result = (bool)((HorizontalLine const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87533,7 +87533,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::HorizontalLine *arg1 = (Geometry::HorizontalLine *) 0 ;
+  HorizontalLine *arg1 = (HorizontalLine *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -87548,11 +87548,11 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_1(PyObject *SWIGUNUSEDP
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:HorizontalLine_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__HorizontalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_HorizontalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_contains" "', argument " "1"" of type '" "Geometry::HorizontalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_contains" "', argument " "1"" of type '" "HorizontalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::HorizontalLine * >(argp1);
+  arg1 = reinterpret_cast< HorizontalLine * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "HorizontalLine_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -87569,7 +87569,7 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains__SWIG_1(PyObject *SWIGUNUSEDP
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "HorizontalLine_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::HorizontalLine const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((HorizontalLine const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -87592,7 +87592,7 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains(PyObject *self, PyObject *arg
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__HorizontalLine, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_HorizontalLine, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -87609,7 +87609,7 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains(PyObject *self, PyObject *arg
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__HorizontalLine, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_HorizontalLine, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -87631,27 +87631,27 @@ SWIGINTERN PyObject *_wrap_HorizontalLine_contains(PyObject *self, PyObject *arg
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'HorizontalLine_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::HorizontalLine::contains(double,double) const\n"
-    "    Geometry::HorizontalLine::contains(Bin1D const &,Bin1D const &) const\n");
+    "    HorizontalLine::contains(double,double) const\n"
+    "    HorizontalLine::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_HorizontalLine_getYpos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::HorizontalLine *arg1 = (Geometry::HorizontalLine *) 0 ;
+  HorizontalLine *arg1 = (HorizontalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:HorizontalLine_getYpos",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__HorizontalLine, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_HorizontalLine, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_getYpos" "', argument " "1"" of type '" "Geometry::HorizontalLine const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalLine_getYpos" "', argument " "1"" of type '" "HorizontalLine const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::HorizontalLine * >(argp1);
-  result = (double)((Geometry::HorizontalLine const *)arg1)->getYpos();
+  arg1 = reinterpret_cast< HorizontalLine * >(argp1);
+  result = (double)((HorizontalLine const *)arg1)->getYpos();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -87661,17 +87661,17 @@ fail:
 
 SWIGINTERN PyObject *_wrap_delete_HorizontalLine(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::HorizontalLine *arg1 = (Geometry::HorizontalLine *) 0 ;
+  HorizontalLine *arg1 = (HorizontalLine *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_HorizontalLine",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__HorizontalLine, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_HorizontalLine, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_HorizontalLine" "', argument " "1"" of type '" "Geometry::HorizontalLine *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_HorizontalLine" "', argument " "1"" of type '" "HorizontalLine *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::HorizontalLine * >(argp1);
+  arg1 = reinterpret_cast< HorizontalLine * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -87683,7 +87683,7 @@ fail:
 SWIGINTERN PyObject *HorizontalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__HorizontalLine, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_HorizontalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -95593,7 +95593,7 @@ SWIGINTERN PyObject *_wrap_new_Polygon__SWIG_0(PyObject *SWIGUNUSEDPARM(self), P
   int res2 = SWIG_OLDOBJ ;
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
-  Geometry::Polygon *result = 0 ;
+  Polygon *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OO:new_Polygon",&obj0,&obj1)) SWIG_fail;
   {
@@ -95618,8 +95618,8 @@ SWIGINTERN PyObject *_wrap_new_Polygon__SWIG_0(PyObject *SWIGUNUSEDPARM(self), P
     }
     arg2 = ptr;
   }
-  result = (Geometry::Polygon *)new Geometry::Polygon((std::vector< double,std::allocator< double > > const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Polygon, SWIG_POINTER_NEW |  0 );
+  result = (Polygon *)new Polygon((std::vector< double,std::allocator< double > > const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Polygon, SWIG_POINTER_NEW |  0 );
   if (SWIG_IsNewObj(res1)) delete arg1;
   if (SWIG_IsNewObj(res2)) delete arg2;
   return resultobj;
@@ -95635,7 +95635,7 @@ SWIGINTERN PyObject *_wrap_new_Polygon__SWIG_1(PyObject *SWIGUNUSEDPARM(self), P
   std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *arg1 = 0 ;
   int res1 = SWIG_OLDOBJ ;
   PyObject * obj0 = 0 ;
-  Geometry::Polygon *result = 0 ;
+  Polygon *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:new_Polygon",&obj0)) SWIG_fail;
   {
@@ -95649,8 +95649,8 @@ SWIGINTERN PyObject *_wrap_new_Polygon__SWIG_1(PyObject *SWIGUNUSEDPARM(self), P
     }
     arg1 = ptr;
   }
-  result = (Geometry::Polygon *)new Geometry::Polygon((std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &)*arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Polygon, SWIG_POINTER_NEW |  0 );
+  result = (Polygon *)new Polygon((std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &)*arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Polygon, SWIG_POINTER_NEW |  0 );
   if (SWIG_IsNewObj(res1)) delete arg1;
   return resultobj;
 fail:
@@ -95661,20 +95661,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_new_Polygon__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::PolygonPrivate *arg1 = (Geometry::PolygonPrivate *) 0 ;
+  PolygonPrivate *arg1 = (PolygonPrivate *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::Polygon *result = 0 ;
+  Polygon *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:new_Polygon",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__PolygonPrivate, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PolygonPrivate, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Polygon" "', argument " "1"" of type '" "Geometry::PolygonPrivate const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Polygon" "', argument " "1"" of type '" "PolygonPrivate const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::PolygonPrivate * >(argp1);
-  result = (Geometry::Polygon *)new Geometry::Polygon((Geometry::PolygonPrivate const *)arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Polygon, SWIG_POINTER_NEW |  0 );
+  arg1 = reinterpret_cast< PolygonPrivate * >(argp1);
+  result = (Polygon *)new Polygon((PolygonPrivate const *)arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Polygon, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -95696,7 +95696,7 @@ SWIGINTERN PyObject *_wrap_new_Polygon(PyObject *self, PyObject *args) {
   if (argc == 1) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__PolygonPrivate, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_PolygonPrivate, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       return _wrap_new_Polygon__SWIG_2(self, args);
@@ -95726,26 +95726,26 @@ SWIGINTERN PyObject *_wrap_new_Polygon(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_Polygon'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Polygon::Polygon(std::vector< double,std::allocator< double > > const &,std::vector< double,std::allocator< double > > const &)\n"
-    "    Geometry::Polygon::Polygon(std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &)\n"
-    "    Geometry::Polygon::Polygon(Geometry::PolygonPrivate const *)\n");
+    "    Polygon::Polygon(std::vector< double,std::allocator< double > > const &,std::vector< double,std::allocator< double > > const &)\n"
+    "    Polygon::Polygon(std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &)\n"
+    "    Polygon::Polygon(PolygonPrivate const *)\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_delete_Polygon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_Polygon",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Polygon" "', argument " "1"" of type '" "Geometry::Polygon *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Polygon" "', argument " "1"" of type '" "Polygon *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
+  arg1 = reinterpret_cast< Polygon * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -95756,20 +95756,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Polygon_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::Polygon *result = 0 ;
+  Polygon *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Polygon_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_clone" "', argument " "1"" of type '" "Geometry::Polygon const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_clone" "', argument " "1"" of type '" "Polygon const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
-  result = (Geometry::Polygon *)((Geometry::Polygon const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  arg1 = reinterpret_cast< Polygon * >(argp1);
+  result = (Polygon *)((Polygon const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Polygon, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -95778,7 +95778,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -95793,11 +95793,11 @@ SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(sel
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Polygon_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_contains" "', argument " "1"" of type '" "Geometry::Polygon const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_contains" "', argument " "1"" of type '" "Polygon const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
+  arg1 = reinterpret_cast< Polygon * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Polygon_contains" "', argument " "2"" of type '" "double""'");
@@ -95808,7 +95808,7 @@ SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(sel
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Polygon_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::Polygon const *)arg1)->contains(arg2,arg3);
+  result = (bool)((Polygon const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -95818,7 +95818,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -95833,11 +95833,11 @@ SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(sel
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Polygon_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_contains" "', argument " "1"" of type '" "Geometry::Polygon const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_contains" "', argument " "1"" of type '" "Polygon const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
+  arg1 = reinterpret_cast< Polygon * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Polygon_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -95854,7 +95854,7 @@ SWIGINTERN PyObject *_wrap_Polygon_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(sel
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Polygon_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::Polygon const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((Polygon const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -95877,7 +95877,7 @@ SWIGINTERN PyObject *_wrap_Polygon_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Polygon, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Polygon, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -95894,7 +95894,7 @@ SWIGINTERN PyObject *_wrap_Polygon_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Polygon, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Polygon, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -95916,27 +95916,27 @@ SWIGINTERN PyObject *_wrap_Polygon_contains(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'Polygon_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Polygon::contains(double,double) const\n"
-    "    Geometry::Polygon::contains(Bin1D const &,Bin1D const &) const\n");
+    "    Polygon::contains(double,double) const\n"
+    "    Polygon::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_Polygon_getArea(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Polygon_getArea",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_getArea" "', argument " "1"" of type '" "Geometry::Polygon const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_getArea" "', argument " "1"" of type '" "Polygon const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
-  result = (double)((Geometry::Polygon const *)arg1)->getArea();
+  arg1 = reinterpret_cast< Polygon * >(argp1);
+  result = (double)((Polygon const *)arg1)->getArea();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -95946,7 +95946,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Polygon_getPoints(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Polygon *arg1 = (Geometry::Polygon *) 0 ;
+  Polygon *arg1 = (Polygon *) 0 ;
   std::vector< double,std::allocator< double > > *arg2 = 0 ;
   std::vector< double,std::allocator< double > > *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -95960,11 +95960,11 @@ SWIGINTERN PyObject *_wrap_Polygon_getPoints(PyObject *SWIGUNUSEDPARM(self), PyO
   PyObject * obj2 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Polygon_getPoints",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Polygon, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Polygon, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_getPoints" "', argument " "1"" of type '" "Geometry::Polygon const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Polygon_getPoints" "', argument " "1"" of type '" "Polygon const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Polygon * >(argp1);
+  arg1 = reinterpret_cast< Polygon * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t,  0 );
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Polygon_getPoints" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > &""'"); 
@@ -95981,7 +95981,7 @@ SWIGINTERN PyObject *_wrap_Polygon_getPoints(PyObject *SWIGUNUSEDPARM(self), PyO
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Polygon_getPoints" "', argument " "3"" of type '" "std::vector< double,std::allocator< double > > &""'"); 
   }
   arg3 = reinterpret_cast< std::vector< double,std::allocator< double > > * >(argp3);
-  ((Geometry::Polygon const *)arg1)->getPoints(*arg2,*arg3);
+  ((Polygon const *)arg1)->getPoints(*arg2,*arg3);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
@@ -95992,7 +95992,7 @@ fail:
 SWIGINTERN PyObject *Polygon_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__Polygon, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_Polygon, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -96764,7 +96764,7 @@ SWIGINTERN PyObject *_wrap_new_Rectangle(PyObject *SWIGUNUSEDPARM(self), PyObjec
   PyObject * obj1 = 0 ;
   PyObject * obj2 = 0 ;
   PyObject * obj3 = 0 ;
-  Geometry::Rectangle *result = 0 ;
+  Rectangle *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"OOOO:new_Rectangle",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(obj0, &val1);
@@ -96787,8 +96787,8 @@ SWIGINTERN PyObject *_wrap_new_Rectangle(PyObject *SWIGUNUSEDPARM(self), PyObjec
     SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Rectangle" "', argument " "4"" of type '" "double""'");
   } 
   arg4 = static_cast< double >(val4);
-  result = (Geometry::Rectangle *)new Geometry::Rectangle(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Rectangle, SWIG_POINTER_NEW |  0 );
+  result = (Rectangle *)new Rectangle(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Rectangle, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -96797,20 +96797,20 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  Geometry::Rectangle *result = 0 ;
+  Rectangle *result = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_clone",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_clone" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_clone" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (Geometry::Rectangle *)((Geometry::Rectangle const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (Rectangle *)((Rectangle const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Rectangle, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
@@ -96819,7 +96819,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   double arg2 ;
   double arg3 ;
   void *argp1 = 0 ;
@@ -96834,11 +96834,11 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(s
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Rectangle_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_contains" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_contains" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
   ecode2 = SWIG_AsVal_double(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
     SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Rectangle_contains" "', argument " "2"" of type '" "double""'");
@@ -96849,7 +96849,7 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_0(PyObject *SWIGUNUSEDPARM(s
     SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Rectangle_contains" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
-  result = (bool)((Geometry::Rectangle const *)arg1)->contains(arg2,arg3);
+  result = (bool)((Rectangle const *)arg1)->contains(arg2,arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -96859,7 +96859,7 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   Bin1D *arg2 = 0 ;
   Bin1D *arg3 = 0 ;
   void *argp1 = 0 ;
@@ -96874,11 +96874,11 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(s
   bool result;
   
   if (!PyArg_ParseTuple(args,(char *)"OOO:Rectangle_contains",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_contains" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_contains" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Bin1D,  0  | 0);
   if (!SWIG_IsOK(res2)) {
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Rectangle_contains" "', argument " "2"" of type '" "Bin1D const &""'"); 
@@ -96895,7 +96895,7 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains__SWIG_1(PyObject *SWIGUNUSEDPARM(s
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Rectangle_contains" "', argument " "3"" of type '" "Bin1D const &""'"); 
   }
   arg3 = reinterpret_cast< Bin1D * >(argp3);
-  result = (bool)((Geometry::Rectangle const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
+  result = (bool)((Rectangle const *)arg1)->contains((Bin1D const &)*arg2,(Bin1D const &)*arg3);
   resultobj = SWIG_From_bool(static_cast< bool >(result));
   return resultobj;
 fail:
@@ -96918,7 +96918,7 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Rectangle, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Rectangle, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_Bin1D, 0);
@@ -96935,7 +96935,7 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains(PyObject *self, PyObject *args) {
   if (argc == 3) {
     int _v;
     void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Geometry__Rectangle, 0);
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Rectangle, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
       {
@@ -96957,27 +96957,27 @@ SWIGINTERN PyObject *_wrap_Rectangle_contains(PyObject *self, PyObject *args) {
 fail:
   SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'Rectangle_contains'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Geometry::Rectangle::contains(double,double) const\n"
-    "    Geometry::Rectangle::contains(Bin1D const &,Bin1D const &) const\n");
+    "    Rectangle::contains(double,double) const\n"
+    "    Rectangle::contains(Bin1D const &,Bin1D const &) const\n");
   return 0;
 }
 
 
 SWIGINTERN PyObject *_wrap_Rectangle_getArea(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_getArea",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getArea" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getArea" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (double)((Geometry::Rectangle const *)arg1)->getArea();
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (double)((Rectangle const *)arg1)->getArea();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -96987,19 +96987,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_getXlow(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_getXlow",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getXlow" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getXlow" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (double)((Geometry::Rectangle const *)arg1)->getXlow();
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (double)((Rectangle const *)arg1)->getXlow();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -97009,19 +97009,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_getYlow(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_getYlow",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getYlow" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getYlow" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (double)((Geometry::Rectangle const *)arg1)->getYlow();
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (double)((Rectangle const *)arg1)->getYlow();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -97031,19 +97031,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_getXup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_getXup",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getXup" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getXup" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (double)((Geometry::Rectangle const *)arg1)->getXup();
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (double)((Rectangle const *)arg1)->getXup();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -97053,19 +97053,19 @@ fail:
 
 SWIGINTERN PyObject *_wrap_Rectangle_getYup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   double result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Rectangle_getYup",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, 0 |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getYup" "', argument " "1"" of type '" "Geometry::Rectangle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Rectangle_getYup" "', argument " "1"" of type '" "Rectangle const *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
-  result = (double)((Geometry::Rectangle const *)arg1)->getYup();
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
+  result = (double)((Rectangle const *)arg1)->getYup();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -97075,17 +97075,17 @@ fail:
 
 SWIGINTERN PyObject *_wrap_delete_Rectangle(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  Geometry::Rectangle *arg1 = (Geometry::Rectangle *) 0 ;
+  Rectangle *arg1 = (Rectangle *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
   
   if (!PyArg_ParseTuple(args,(char *)"O:delete_Rectangle",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Geometry__Rectangle, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Rectangle, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Rectangle" "', argument " "1"" of type '" "Geometry::Rectangle *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Rectangle" "', argument " "1"" of type '" "Rectangle *""'"); 
   }
-  arg1 = reinterpret_cast< Geometry::Rectangle * >(argp1);
+  arg1 = reinterpret_cast< Rectangle * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -97097,7 +97097,7 @@ fail:
 SWIGINTERN PyObject *Rectangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_Geometry__Rectangle, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_Rectangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
@@ -101990,17 +101990,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IShape2D_clone", _wrap_IShape2D_clone, METH_VARARGS, (char *)"\n"
 		"IShape2D_clone(IShape2D self) -> IShape2D\n"
 		"\n"
-		"virtual IShape2D* Geometry::IShape2D::clone() const =0\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"IShape2D_contains", _wrap_IShape2D_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"IShape2D_contains(IShape2D self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"virtual bool Geometry::IShape2D::contains(const Bin1D &binx, const Bin1D &biny) const =0\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
 		""},
 	 { (char *)"delete_IShape2D", _wrap_delete_IShape2D, METH_VARARGS, (char *)"delete_IShape2D(IShape2D self)"},
 	 { (char *)"IShape2D_swigregister", IShape2D_swigregister, METH_VARARGS, NULL},
@@ -104265,73 +104260,22 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"new_Ellipse", _wrap_new_Ellipse, METH_VARARGS, (char *)"\n"
 		"Ellipse(double xcenter, double ycenter, double xradius, double yradius, double theta=0.0)\n"
 		"new_Ellipse(double xcenter, double ycenter, double xradius, double yradius) -> Ellipse\n"
-		"\n"
-		"Geometry::Ellipse::Ellipse(double xcenter, double ycenter, double xradius, double yradius, double theta=0.0)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"xcenter: \n"
-		"x-coordinate of  Ellipse's center\n"
-		"\n"
-		"ycenter: \n"
-		"y-coordinate of  Ellipse's center\n"
-		"\n"
-		"xradius: \n"
-		"Radius along x-axis\n"
-		"\n"
-		"yradius: \n"
-		"Radius along y-axis\n"
-		"\n"
-		"theta: \n"
-		"Angle of  Ellipse rotation in radians \n"
-		"\n"
 		""},
 	 { (char *)"Ellipse_clone", _wrap_Ellipse_clone, METH_VARARGS, (char *)"\n"
 		"Ellipse_clone(Ellipse self) -> Ellipse\n"
 		"\n"
-		"Ellipse* Geometry::Ellipse::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_contains", _wrap_Ellipse_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"Ellipse_contains(Ellipse self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::Ellipse::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of ellipse; more precisely, if mid point of two bins satisfy this condition. \n"
-		"\n"
-		""},
-	 { (char *)"Ellipse_getCenterX", _wrap_Ellipse_getCenterX, METH_VARARGS, (char *)"\n"
-		"Ellipse_getCenterX(Ellipse self) -> double\n"
-		"\n"
-		"double Geometry::Ellipse::getCenterX() const\n"
-		"\n"
-		""},
-	 { (char *)"Ellipse_getCenterY", _wrap_Ellipse_getCenterY, METH_VARARGS, (char *)"\n"
-		"Ellipse_getCenterY(Ellipse self) -> double\n"
-		"\n"
-		"double Geometry::Ellipse::getCenterY() const\n"
-		"\n"
-		""},
-	 { (char *)"Ellipse_getRadiusX", _wrap_Ellipse_getRadiusX, METH_VARARGS, (char *)"\n"
-		"Ellipse_getRadiusX(Ellipse self) -> double\n"
-		"\n"
-		"double Geometry::Ellipse::getRadiusX() const\n"
-		"\n"
-		""},
-	 { (char *)"Ellipse_getRadiusY", _wrap_Ellipse_getRadiusY, METH_VARARGS, (char *)"\n"
-		"Ellipse_getRadiusY(Ellipse self) -> double\n"
-		"\n"
-		"double Geometry::Ellipse::getRadiusY() const\n"
-		"\n"
-		""},
-	 { (char *)"Ellipse_getTheta", _wrap_Ellipse_getTheta, METH_VARARGS, (char *)"\n"
-		"Ellipse_getTheta(Ellipse self) -> double\n"
-		"\n"
-		"double Geometry::Ellipse::getTheta() const\n"
-		"\n"
 		""},
+	 { (char *)"Ellipse_getCenterX", _wrap_Ellipse_getCenterX, METH_VARARGS, (char *)"Ellipse_getCenterX(Ellipse self) -> double"},
+	 { (char *)"Ellipse_getCenterY", _wrap_Ellipse_getCenterY, METH_VARARGS, (char *)"Ellipse_getCenterY(Ellipse self) -> double"},
+	 { (char *)"Ellipse_getRadiusX", _wrap_Ellipse_getRadiusX, METH_VARARGS, (char *)"Ellipse_getRadiusX(Ellipse self) -> double"},
+	 { (char *)"Ellipse_getRadiusY", _wrap_Ellipse_getRadiusY, METH_VARARGS, (char *)"Ellipse_getRadiusY(Ellipse self) -> double"},
+	 { (char *)"Ellipse_getTheta", _wrap_Ellipse_getTheta, METH_VARARGS, (char *)"Ellipse_getTheta(Ellipse self) -> double"},
 	 { (char *)"delete_Ellipse", _wrap_delete_Ellipse, METH_VARARGS, (char *)"delete_Ellipse(Ellipse self)"},
 	 { (char *)"Ellipse_swigregister", Ellipse_swigregister, METH_VARARGS, NULL},
 	 { (char *)"IFTDecayFunction1D_clone", _wrap_IFTDecayFunction1D_clone, METH_VARARGS, (char *)"\n"
@@ -110789,97 +110733,45 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"delete_LayerRoughness", _wrap_delete_LayerRoughness, METH_VARARGS, (char *)"delete_LayerRoughness(LayerRoughness self)"},
 	 { (char *)"LayerRoughness_swigregister", LayerRoughness_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_Line", _wrap_new_Line, METH_VARARGS, (char *)"\n"
-		"new_Line(double x1, double y1, double x2, double y2) -> Line\n"
-		"\n"
-		"Geometry::Line::Line(double x1, double y1, double x2, double y2)\n"
-		"\n"
-		""},
+	 { (char *)"new_Line", _wrap_new_Line, METH_VARARGS, (char *)"new_Line(double x1, double y1, double x2, double y2) -> Line"},
 	 { (char *)"Line_clone", _wrap_Line_clone, METH_VARARGS, (char *)"\n"
 		"Line_clone(Line self) -> Line\n"
 		"\n"
-		"Line* Geometry::Line::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"Line_contains", _wrap_Line_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"Line_contains(Line self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::Line::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
 		""},
 	 { (char *)"delete_Line", _wrap_delete_Line, METH_VARARGS, (char *)"delete_Line(Line self)"},
 	 { (char *)"Line_swigregister", Line_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_VerticalLine", _wrap_new_VerticalLine, METH_VARARGS, (char *)"\n"
-		"new_VerticalLine(double x) -> VerticalLine\n"
-		"\n"
-		"Geometry::VerticalLine::VerticalLine(double x)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"x: \n"
-		"The value at which it crosses x-axes \n"
-		"\n"
-		""},
+	 { (char *)"new_VerticalLine", _wrap_new_VerticalLine, METH_VARARGS, (char *)"new_VerticalLine(double x) -> VerticalLine"},
 	 { (char *)"VerticalLine_clone", _wrap_VerticalLine_clone, METH_VARARGS, (char *)"\n"
 		"VerticalLine_clone(VerticalLine self) -> VerticalLine\n"
 		"\n"
-		"VerticalLine* Geometry::VerticalLine::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"VerticalLine_contains", _wrap_VerticalLine_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"VerticalLine_contains(VerticalLine self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::VerticalLine::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
-		""},
-	 { (char *)"VerticalLine_getXpos", _wrap_VerticalLine_getXpos, METH_VARARGS, (char *)"\n"
-		"VerticalLine_getXpos(VerticalLine self) -> double\n"
-		"\n"
-		"double Geometry::VerticalLine::getXpos() const\n"
-		"\n"
 		""},
+	 { (char *)"VerticalLine_getXpos", _wrap_VerticalLine_getXpos, METH_VARARGS, (char *)"VerticalLine_getXpos(VerticalLine self) -> double"},
 	 { (char *)"delete_VerticalLine", _wrap_delete_VerticalLine, METH_VARARGS, (char *)"delete_VerticalLine(VerticalLine self)"},
 	 { (char *)"VerticalLine_swigregister", VerticalLine_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_HorizontalLine", _wrap_new_HorizontalLine, METH_VARARGS, (char *)"\n"
-		"new_HorizontalLine(double y) -> HorizontalLine\n"
-		"\n"
-		"Geometry::HorizontalLine::HorizontalLine(double y)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"y: \n"
-		"The value at which it crosses y-axes \n"
-		"\n"
-		""},
+	 { (char *)"new_HorizontalLine", _wrap_new_HorizontalLine, METH_VARARGS, (char *)"new_HorizontalLine(double y) -> HorizontalLine"},
 	 { (char *)"HorizontalLine_clone", _wrap_HorizontalLine_clone, METH_VARARGS, (char *)"\n"
 		"HorizontalLine_clone(HorizontalLine self) -> HorizontalLine\n"
 		"\n"
-		"HorizontalLine* Geometry::HorizontalLine::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"HorizontalLine_contains", _wrap_HorizontalLine_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"HorizontalLine_contains(HorizontalLine self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::HorizontalLine::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
-		""},
-	 { (char *)"HorizontalLine_getYpos", _wrap_HorizontalLine_getYpos, METH_VARARGS, (char *)"\n"
-		"HorizontalLine_getYpos(HorizontalLine self) -> double\n"
-		"\n"
-		"double Geometry::HorizontalLine::getYpos() const\n"
-		"\n"
 		""},
+	 { (char *)"HorizontalLine_getYpos", _wrap_HorizontalLine_getYpos, METH_VARARGS, (char *)"HorizontalLine_getYpos(HorizontalLine self) -> double"},
 	 { (char *)"delete_HorizontalLine", _wrap_delete_HorizontalLine, METH_VARARGS, (char *)"delete_HorizontalLine(HorizontalLine self)"},
 	 { (char *)"HorizontalLine_swigregister", HorizontalLine_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_MesoCrystal", _wrap_new_MesoCrystal, METH_VARARGS, (char *)"\n"
@@ -112289,44 +112181,21 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"new_Polygon", _wrap_new_Polygon, METH_VARARGS, (char *)"\n"
 		"Polygon(vdouble1d_t x, vdouble1d_t y)\n"
 		"Polygon(vdouble2d_t points)\n"
-		"new_Polygon(Geometry::PolygonPrivate const * d) -> Polygon\n"
-		"\n"
-		"Geometry::Polygon::Polygon(const PolygonPrivate *d)\n"
-		"\n"
-		""},
-	 { (char *)"delete_Polygon", _wrap_delete_Polygon, METH_VARARGS, (char *)"\n"
-		"delete_Polygon(Polygon self)\n"
-		"\n"
-		"Geometry::Polygon::~Polygon()\n"
-		"\n"
+		"new_Polygon(PolygonPrivate const * d) -> Polygon\n"
 		""},
+	 { (char *)"delete_Polygon", _wrap_delete_Polygon, METH_VARARGS, (char *)"delete_Polygon(Polygon self)"},
 	 { (char *)"Polygon_clone", _wrap_Polygon_clone, METH_VARARGS, (char *)"\n"
 		"Polygon_clone(Polygon self) -> Polygon\n"
 		"\n"
-		"virtual Polygon* Geometry::Polygon::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"Polygon_contains", _wrap_Polygon_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"Polygon_contains(Polygon self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::Polygon::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
-		""},
-	 { (char *)"Polygon_getArea", _wrap_Polygon_getArea, METH_VARARGS, (char *)"\n"
-		"Polygon_getArea(Polygon self) -> double\n"
-		"\n"
-		"double Geometry::Polygon::getArea() const\n"
-		"\n"
-		""},
-	 { (char *)"Polygon_getPoints", _wrap_Polygon_getPoints, METH_VARARGS, (char *)"\n"
-		"Polygon_getPoints(Polygon self, vdouble1d_t xpos, vdouble1d_t ypos)\n"
-		"\n"
-		"void Geometry::Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const\n"
-		"\n"
 		""},
+	 { (char *)"Polygon_getArea", _wrap_Polygon_getArea, METH_VARARGS, (char *)"Polygon_getArea(Polygon self) -> double"},
+	 { (char *)"Polygon_getPoints", _wrap_Polygon_getPoints, METH_VARARGS, (char *)"Polygon_getPoints(Polygon self, vdouble1d_t xpos, vdouble1d_t ypos)"},
 	 { (char *)"Polygon_swigregister", Polygon_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_RealParameter", _wrap_new_RealParameter, METH_VARARGS, (char *)"\n"
 		"RealParameter(std::string const & name, double volatile * par, std::string const & parent_name, std::function< void () > const & onChange, RealLimits limits, Attributes attr)\n"
@@ -112404,72 +112273,22 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"delete_RealParameter", _wrap_delete_RealParameter, METH_VARARGS, (char *)"delete_RealParameter(RealParameter self)"},
 	 { (char *)"RealParameter_swigregister", RealParameter_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_Rectangle", _wrap_new_Rectangle, METH_VARARGS, (char *)"\n"
-		"new_Rectangle(double xlow, double ylow, double xup, double yup) -> Rectangle\n"
-		"\n"
-		"Geometry::Rectangle::Rectangle(double xlow, double ylow, double xup, double yup)\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"xlow: \n"
-		"x-coordinate of lower left corner\n"
-		"\n"
-		"ylow: \n"
-		"y-coordinate of lower left corner\n"
-		"\n"
-		"xup: \n"
-		"x-coordinate of upper right corner\n"
-		"\n"
-		"yup: \n"
-		"y-coordinate of upper right corner \n"
-		"\n"
-		""},
+	 { (char *)"new_Rectangle", _wrap_new_Rectangle, METH_VARARGS, (char *)"new_Rectangle(double xlow, double ylow, double xup, double yup) -> Rectangle"},
 	 { (char *)"Rectangle_clone", _wrap_Rectangle_clone, METH_VARARGS, (char *)"\n"
 		"Rectangle_clone(Rectangle self) -> Rectangle\n"
 		"\n"
-		"Rectangle* Geometry::Rectangle::clone() const\n"
+		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_contains", _wrap_Rectangle_contains, METH_VARARGS, (char *)"\n"
 		"contains(double x, double y) -> bool\n"
 		"Rectangle_contains(Rectangle self, Bin1D binx, Bin1D biny) -> bool\n"
-		"\n"
-		"bool Geometry::Rectangle::contains(const Bin1D &binx, const Bin1D &biny) const\n"
-		"\n"
-		"Returns true if area defined by two bins is inside or on border of polygon (more precisely, if mid point of two bins satisfy this condition). \n"
-		"\n"
-		""},
-	 { (char *)"Rectangle_getArea", _wrap_Rectangle_getArea, METH_VARARGS, (char *)"\n"
-		"Rectangle_getArea(Rectangle self) -> double\n"
-		"\n"
-		"double Geometry::Rectangle::getArea() const\n"
-		"\n"
-		""},
-	 { (char *)"Rectangle_getXlow", _wrap_Rectangle_getXlow, METH_VARARGS, (char *)"\n"
-		"Rectangle_getXlow(Rectangle self) -> double\n"
-		"\n"
-		"double Geometry::Rectangle::getXlow() const\n"
-		"\n"
-		""},
-	 { (char *)"Rectangle_getYlow", _wrap_Rectangle_getYlow, METH_VARARGS, (char *)"\n"
-		"Rectangle_getYlow(Rectangle self) -> double\n"
-		"\n"
-		"double Geometry::Rectangle::getYlow() const\n"
-		"\n"
-		""},
-	 { (char *)"Rectangle_getXup", _wrap_Rectangle_getXup, METH_VARARGS, (char *)"\n"
-		"Rectangle_getXup(Rectangle self) -> double\n"
-		"\n"
-		"double Geometry::Rectangle::getXup() const\n"
-		"\n"
-		""},
-	 { (char *)"Rectangle_getYup", _wrap_Rectangle_getYup, METH_VARARGS, (char *)"\n"
-		"Rectangle_getYup(Rectangle self) -> double\n"
-		"\n"
-		"double Geometry::Rectangle::getYup() const\n"
-		"\n"
 		""},
+	 { (char *)"Rectangle_getArea", _wrap_Rectangle_getArea, METH_VARARGS, (char *)"Rectangle_getArea(Rectangle self) -> double"},
+	 { (char *)"Rectangle_getXlow", _wrap_Rectangle_getXlow, METH_VARARGS, (char *)"Rectangle_getXlow(Rectangle self) -> double"},
+	 { (char *)"Rectangle_getYlow", _wrap_Rectangle_getYlow, METH_VARARGS, (char *)"Rectangle_getYlow(Rectangle self) -> double"},
+	 { (char *)"Rectangle_getXup", _wrap_Rectangle_getXup, METH_VARARGS, (char *)"Rectangle_getXup(Rectangle self) -> double"},
+	 { (char *)"Rectangle_getYup", _wrap_Rectangle_getYup, METH_VARARGS, (char *)"Rectangle_getYup(Rectangle self) -> double"},
 	 { (char *)"delete_Rectangle", _wrap_delete_Rectangle, METH_VARARGS, (char *)"delete_Rectangle(Rectangle self)"},
 	 { (char *)"Rectangle_swigregister", Rectangle_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_RectangularDetector", _wrap_new_RectangularDetector, METH_VARARGS, (char *)"\n"
@@ -112966,23 +112785,23 @@ static PyMethodDef SwigMethods[] = {
 static void *_p_IsGISAXSDetectorTo_p_SphericalDetector(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((SphericalDetector *)  ((IsGISAXSDetector *) x));
 }
-static void *_p_Geometry__PolygonTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::Polygon *) x));
+static void *_p_PolygonTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((Polygon *) x));
 }
-static void *_p_Geometry__VerticalLineTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::VerticalLine *) x));
+static void *_p_LineTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((Line *) x));
 }
-static void *_p_Geometry__EllipseTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::Ellipse *) x));
+static void *_p_VerticalLineTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((VerticalLine *) x));
 }
-static void *_p_Geometry__HorizontalLineTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::HorizontalLine *) x));
+static void *_p_EllipseTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((Ellipse *) x));
 }
-static void *_p_Geometry__RectangleTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::Rectangle *) x));
+static void *_p_HorizontalLineTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((HorizontalLine *) x));
 }
-static void *_p_Geometry__LineTo_p_Geometry__IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((Geometry::IShape2D *)  ((Geometry::Line *) x));
+static void *_p_RectangleTo_p_IShape2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IShape2D *)  ((Rectangle *) x));
 }
 static void *_p_FitParameterLinkedTo_p_FitParameter(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((FitParameter *)  ((FitParameterLinked *) x));
@@ -113192,11 +113011,11 @@ static void *_p_InterferenceFunctionNoneTo_p_INoncopyable(void *x, int *SWIGUNUS
 static void *_p_IDetector2DTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *) ((IDetector2D *) x));
 }
-static void *_p_Geometry__PolygonTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::Polygon *) x));
+static void *_p_PolygonTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((Polygon *) x));
 }
-static void *_p_Geometry__EllipseTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::Ellipse *) x));
+static void *_p_EllipseTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((Ellipse *) x));
 }
 static void *_p_ILayoutTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(ICompositeSample *) ((ILayout *) x));
@@ -113213,8 +113032,8 @@ static void *_p_ChiSquaredModuleTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_IChiSquaredModuleTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *) ((IChiSquaredModule *) x));
 }
-static void *_p_Geometry__HorizontalLineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::HorizontalLine *) x));
+static void *_p_HorizontalLineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((HorizontalLine *) x));
 }
 static void *_p_IsGISAXSDetectorTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(IDetector2D *)(SphericalDetector *) ((IsGISAXSDetector *) x));
@@ -113300,8 +113119,8 @@ static void *_p_FormFactorTruncatedSpheroidTo_p_INoncopyable(void *x, int *SWIGU
 static void *_p_FormFactorFullSpheroidTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
 }
-static void *_p_Geometry__IShape2DTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *) ((Geometry::IShape2D *) x));
+static void *_p_IShape2DTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *) ((IShape2D *) x));
 }
 static void *_p_FormFactorTruncatedCubeTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x));
@@ -113312,8 +113131,8 @@ static void *_p_RotationYTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemor
 static void *_p_RotationZTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_Geometry__RectangleTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::Rectangle *) x));
+static void *_p_RectangleTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((Rectangle *) x));
 }
 static void *_p_FormFactorLongRipple2GaussTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
@@ -113321,8 +113140,8 @@ static void *_p_FormFactorLongRipple2GaussTo_p_INoncopyable(void *x, int *SWIGUN
 static void *_p_FormFactorGaussTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_Geometry__VerticalLineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::VerticalLine *) x));
+static void *_p_VerticalLineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((VerticalLine *) x));
 }
 static void *_p_IDetectorResolutionTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *) ((IDetectorResolution *) x));
@@ -113333,6 +113152,9 @@ static void *_p_IFormFactorBornTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(ne
 static void *_p_IClusteredParticlesTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(ICompositeSample *) ((IClusteredParticles *) x));
 }
+static void *_p_LineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INoncopyable *) (ICloneable *)(IShape2D *) ((Line *) x));
+}
 static void *_p_IParticleTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(ICompositeSample *)(IAbstractParticle *) ((IParticle *) x));
 }
@@ -113393,9 +113215,6 @@ static void *_p_FormFactorLongRipple1GaussTo_p_INoncopyable(void *x, int *SWIGUN
 static void *_p_IFormFactorDecoratorTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
 }
-static void *_p_Geometry__LineTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INoncopyable *) (ICloneable *)(Geometry::IShape2D *) ((Geometry::Line *) x));
-}
 static void *_p_IRoughnessTo_p_INoncopyable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INoncopyable *) (ICloneable *)(ISample *) ((IRoughness *) x));
 }
@@ -113480,11 +113299,11 @@ static void *_p_InterferenceFunctionNoneTo_p_ICloneable(void *x, int *SWIGUNUSED
 static void *_p_IDetector2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IDetector2D *) x));
 }
-static void *_p_Geometry__PolygonTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Polygon *) x));
+static void *_p_PolygonTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((Polygon *) x));
 }
-static void *_p_Geometry__EllipseTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Ellipse *) x));
+static void *_p_EllipseTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((Ellipse *) x));
 }
 static void *_p_ILayoutTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(ICompositeSample *) ((ILayout *) x));
@@ -113501,8 +113320,8 @@ static void *_p_ChiSquaredModuleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_IChiSquaredModuleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IChiSquaredModule *) x));
 }
-static void *_p_Geometry__HorizontalLineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::HorizontalLine *) x));
+static void *_p_HorizontalLineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((HorizontalLine *) x));
 }
 static void *_p_IsGISAXSDetectorTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IDetector2D *)(SphericalDetector *) ((IsGISAXSDetector *) x));
@@ -113585,8 +113404,8 @@ static void *_p_FormFactorTruncatedSpheroidTo_p_ICloneable(void *x, int *SWIGUNU
 static void *_p_FormFactorFullSpheroidTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSpheroid *) x));
 }
-static void *_p_Geometry__IShape2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *)  ((Geometry::IShape2D *) x));
+static void *_p_IShape2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *)  ((IShape2D *) x));
 }
 static void *_p_FormFactorTruncatedCubeTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x));
@@ -113597,8 +113416,8 @@ static void *_p_RotationYTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)
 static void *_p_RotationZTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_Geometry__RectangleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Rectangle *) x));
+static void *_p_RectangleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((Rectangle *) x));
 }
 static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
@@ -113606,8 +113425,8 @@ static void *_p_FormFactorGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_FormFactorLongRipple2GaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
 }
-static void *_p_Geometry__VerticalLineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::VerticalLine *) x));
+static void *_p_VerticalLineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((VerticalLine *) x));
 }
 static void *_p_IDetectorResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IDetectorResolution *) x));
@@ -113618,6 +113437,9 @@ static void *_p_IFormFactorBornTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_IClusteredParticlesTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(ICompositeSample *) ((IClusteredParticles *) x));
 }
+static void *_p_LineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (IShape2D *) ((Line *) x));
+}
 static void *_p_IParticleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(ICompositeSample *)(IAbstractParticle *) ((IParticle *) x));
 }
@@ -113675,9 +113497,6 @@ static void *_p_FormFactorLongRipple1GaussTo_p_ICloneable(void *x, int *SWIGUNUS
 static void *_p_IFormFactorDecoratorTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IFormFactor *) ((IFormFactorDecorator *) x));
 }
-static void *_p_Geometry__LineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (Geometry::IShape2D *) ((Geometry::Line *) x));
-}
 static void *_p_LayerRoughnessTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISample *)(IRoughness *) ((LayerRoughness *) x));
 }
@@ -113771,11 +113590,11 @@ static void *_p_IDetector2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory))
 static void *_p_InterferenceFunctionNoneTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IInterferenceFunction *) ((InterferenceFunctionNone *) x));
 }
-static void *_p_Geometry__PolygonTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::Polygon *) x));
+static void *_p_PolygonTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Polygon *) x));
 }
-static void *_p_Geometry__EllipseTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::Ellipse *) x));
+static void *_p_EllipseTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Ellipse *) x));
 }
 static void *_p_FormFactorHemiEllipsoidTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorHemiEllipsoid *) x));
@@ -113795,8 +113614,8 @@ static void *_p_IntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_IIntensityNormalizerTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *) ((IIntensityNormalizer *) x));
 }
-static void *_p_Geometry__HorizontalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::HorizontalLine *) x));
+static void *_p_HorizontalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((HorizontalLine *) x));
 }
 static void *_p_SphericalDetectorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(IDetector2D *) ((SphericalDetector *) x));
@@ -113900,8 +113719,8 @@ static void *_p_FormFactorTruncatedSpheroidTo_p_INamed(void *x, int *SWIGUNUSEDP
 static void *_p_RotationXTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IRotation *) ((RotationX *) x));
 }
-static void *_p_Geometry__IShape2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *)  ((Geometry::IShape2D *) x));
+static void *_p_IShape2DTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *)  ((IShape2D *) x));
 }
 static void *_p_FTDistribution2DGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(IFTDistribution2D *) ((FTDistribution2DGauss *) x));
@@ -113921,8 +113740,8 @@ static void *_p_FitStrategyDefaultTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newme
 static void *_p_RotationZTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IRotation *) ((RotationZ *) x));
 }
-static void *_p_Geometry__RectangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::Rectangle *) x));
+static void *_p_RectangleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Rectangle *) x));
 }
 static void *_p_FormFactorLongRipple2GaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x));
@@ -113930,8 +113749,8 @@ static void *_p_FormFactorLongRipple2GaussTo_p_INamed(void *x, int *SWIGUNUSEDPA
 static void *_p_FormFactorGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorGauss *) x));
 }
-static void *_p_Geometry__VerticalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::VerticalLine *) x));
+static void *_p_VerticalLineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((VerticalLine *) x));
 }
 static void *_p_IFormFactorBornTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *) ((IFormFactorBorn *) x));
@@ -113945,6 +113764,9 @@ static void *_p_IClusteredParticlesTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_IMultiLayerBuilderTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *) ((IMultiLayerBuilder *) x));
 }
+static void *_p_LineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INamed *) (IShape2D *) ((Line *) x));
+}
 static void *_p_IAbstractParticleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *)(ICompositeSample *) ((IAbstractParticle *) x));
 }
@@ -114071,9 +113893,6 @@ static void *_p_IFormFactorDecoratorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(new
 static void *_p_IParameterizedTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *)  ((IParameterized *) x));
 }
-static void *_p_Geometry__LineTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INamed *) (Geometry::IShape2D *) ((Geometry::Line *) x));
-}
 static void *_p_IRoughnessTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INamed *) (IParameterized *)(ISample *) ((IRoughness *) x));
 }
@@ -115080,6 +114899,7 @@ static swig_type_info _swigt__p_DistributionGaussian = {"_p_DistributionGaussian
 static swig_type_info _swigt__p_DistributionHandler = {"_p_DistributionHandler", "DistributionHandler *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_DistributionLogNormal = {"_p_DistributionLogNormal", "DistributionLogNormal *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_DistributionLorentz = {"_p_DistributionLorentz", "DistributionLorentz *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Ellipse = {"_p_Ellipse", "Ellipse *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FTDecayFunction1DCauchy = {"_p_FTDecayFunction1DCauchy", "FTDecayFunction1DCauchy *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FTDecayFunction1DGauss = {"_p_FTDecayFunction1DGauss", "FTDecayFunction1DGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FTDecayFunction1DTriangle = {"_p_FTDecayFunction1DTriangle", "FTDecayFunction1DTriangle *", 0, 0, (void*)0, 0};
@@ -115154,18 +114974,11 @@ static swig_type_info _swigt__p_FormFactorTruncatedSphere = {"_p_FormFactorTrunc
 static swig_type_info _swigt__p_FormFactorTruncatedSpheroid = {"_p_FormFactorTruncatedSpheroid", "FormFactorTruncatedSpheroid *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorWeighted = {"_p_FormFactorWeighted", "FormFactorWeighted *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_GISASSimulation = {"_p_GISASSimulation", "GISASSimulation *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__Ellipse = {"_p_Geometry__Ellipse", "Geometry::Ellipse *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__HorizontalLine = {"_p_Geometry__HorizontalLine", "Geometry::HorizontalLine *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__IShape2D = {"_p_Geometry__IShape2D", "Geometry::IShape2D *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__Line = {"_p_Geometry__Line", "Geometry::Line *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__Polygon = {"_p_Geometry__Polygon", "Geometry::Polygon *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__PolygonPrivate = {"_p_Geometry__PolygonPrivate", "Geometry::PolygonPrivate *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__Rectangle = {"_p_Geometry__Rectangle", "Geometry::Rectangle *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_Geometry__VerticalLine = {"_p_Geometry__VerticalLine", "Geometry::VerticalLine *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Histogram1D = {"_p_Histogram1D", "Histogram1D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Histogram2D = {"_p_Histogram2D", "Histogram2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_HomogeneousMagneticMaterial = {"_p_HomogeneousMagneticMaterial", "HomogeneousMagneticMaterial *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_HomogeneousMaterial = {"_p_HomogeneousMaterial", "HomogeneousMaterial *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_HorizontalLine = {"_p_HorizontalLine", "HorizontalLine *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IAbstractParticle = {"_p_IAbstractParticle", "IAbstractParticle *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IAxis = {"_p_IAxis", "IAxis *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IChiSquaredModule = {"_p_IChiSquaredModule", "IChiSquaredModule *", 0, 0, (void*)0, 0};
@@ -115210,6 +115023,7 @@ static swig_type_info _swigt__p_IRoughness = {"_p_IRoughness", "IRoughness *", 0
 static swig_type_info _swigt__p_ISample = {"_p_ISample", "ISample *|std::vector< ISample * >::value_type|std::vector< ISample const * >::value_type", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ISampleVisitor = {"_p_ISampleVisitor", "ISampleVisitor *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ISelectionRule = {"_p_ISelectionRule", "ISelectionRule *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_IShape2D = {"_p_IShape2D", "IShape2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ISquaredFunction = {"_p_ISquaredFunction", "ISquaredFunction *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Instrument = {"_p_Instrument", "Instrument *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IntensityDataIOFactory = {"_p_IntensityDataIOFactory", "IntensityDataIOFactory *", 0, 0, (void*)0, 0};
@@ -115230,6 +115044,7 @@ static swig_type_info _swigt__p_Layer = {"_p_Layer", "Layer *", 0, 0, (void*)0,
 static swig_type_info _swigt__p_LayerInterface = {"_p_LayerInterface", "LayerInterface *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_LayerRTCoefficients_t = {"_p_LayerRTCoefficients_t", "LayerRTCoefficients_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_LayerRoughness = {"_p_LayerRoughness", "LayerRoughness *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Line = {"_p_Line", "Line *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Logging__Logger = {"_p_Logging__Logger", "Logging::Logger *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_MesoCrystal = {"_p_MesoCrystal", "MesoCrystal *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_MultiLayer = {"_p_MultiLayer", "MultiLayer *", 0, 0, (void*)0, 0};
@@ -115247,6 +115062,8 @@ static swig_type_info _swigt__p_ParticleComposition = {"_p_ParticleComposition",
 static swig_type_info _swigt__p_ParticleCoreShell = {"_p_ParticleCoreShell", "ParticleCoreShell *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ParticleDistribution = {"_p_ParticleDistribution", "ParticleDistribution *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ParticleLayout = {"_p_ParticleLayout", "ParticleLayout *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Polygon = {"_p_Polygon", "Polygon *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_PolygonPrivate = {"_p_PolygonPrivate", "PolygonPrivate *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PolygonalTopology = {"_p_PolygonalTopology", "PolygonalTopology *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PolyhedralEdge = {"_p_PolyhedralEdge", "PolyhedralEdge *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_PolyhedralFace = {"_p_PolyhedralFace", "PolyhedralFace *", 0, 0, (void*)0, 0};
@@ -115255,6 +115072,7 @@ static swig_type_info _swigt__p_ProgressHandler__Callback_t = {"_p_ProgressHandl
 static swig_type_info _swigt__p_RealLimits = {"_p_RealLimits", "RealLimits *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RealParameter = {"_p_RealParameter", "RealParameter *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RectPixelMap = {"_p_RectPixelMap", "RectPixelMap *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Rectangle = {"_p_Rectangle", "Rectangle *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RectangularDetector = {"_p_RectangularDetector", "RectangularDetector *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RegionOfInterest = {"_p_RegionOfInterest", "RegionOfInterest *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ResolutionFunction2DGaussian = {"_p_ResolutionFunction2DGaussian", "ResolutionFunction2DGaussian *", 0, 0, (void*)0, 0};
@@ -115278,6 +115096,7 @@ static swig_type_info _swigt__p_SquaredFunctionSystematicError = {"_p_SquaredFun
 static swig_type_info _swigt__p_ThreadInfo = {"_p_ThreadInfo", "ThreadInfo *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Transform3D = {"_p_Transform3D", "Transform3D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_VariableBinAxis = {"_p_VariableBinAxis", "VariableBinAxis *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_VerticalLine = {"_p_VerticalLine", "VerticalLine *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_WavevectorInfo = {"_p_WavevectorInfo", "WavevectorInfo *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p__object = {"_p__object", "_object *|PyObject *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_allocator_type = {"_p_allocator_type", "allocator_type *", 0, 0, (void*)0, 0};
@@ -115375,6 +115194,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_DistributionHandler,
   &_swigt__p_DistributionLogNormal,
   &_swigt__p_DistributionLorentz,
+  &_swigt__p_Ellipse,
   &_swigt__p_FTDecayFunction1DCauchy,
   &_swigt__p_FTDecayFunction1DGauss,
   &_swigt__p_FTDecayFunction1DTriangle,
@@ -115449,18 +115269,11 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorTruncatedSpheroid,
   &_swigt__p_FormFactorWeighted,
   &_swigt__p_GISASSimulation,
-  &_swigt__p_Geometry__Ellipse,
-  &_swigt__p_Geometry__HorizontalLine,
-  &_swigt__p_Geometry__IShape2D,
-  &_swigt__p_Geometry__Line,
-  &_swigt__p_Geometry__Polygon,
-  &_swigt__p_Geometry__PolygonPrivate,
-  &_swigt__p_Geometry__Rectangle,
-  &_swigt__p_Geometry__VerticalLine,
   &_swigt__p_Histogram1D,
   &_swigt__p_Histogram2D,
   &_swigt__p_HomogeneousMagneticMaterial,
   &_swigt__p_HomogeneousMaterial,
+  &_swigt__p_HorizontalLine,
   &_swigt__p_IAbstractParticle,
   &_swigt__p_IAxis,
   &_swigt__p_IChiSquaredModule,
@@ -115505,6 +115318,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_ISample,
   &_swigt__p_ISampleVisitor,
   &_swigt__p_ISelectionRule,
+  &_swigt__p_IShape2D,
   &_swigt__p_ISquaredFunction,
   &_swigt__p_Instrument,
   &_swigt__p_IntensityDataIOFactory,
@@ -115525,6 +115339,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_LayerInterface,
   &_swigt__p_LayerRTCoefficients_t,
   &_swigt__p_LayerRoughness,
+  &_swigt__p_Line,
   &_swigt__p_Logging__Logger,
   &_swigt__p_MesoCrystal,
   &_swigt__p_MultiLayer,
@@ -115542,6 +115357,8 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_ParticleCoreShell,
   &_swigt__p_ParticleDistribution,
   &_swigt__p_ParticleLayout,
+  &_swigt__p_Polygon,
+  &_swigt__p_PolygonPrivate,
   &_swigt__p_PolygonalTopology,
   &_swigt__p_PolyhedralEdge,
   &_swigt__p_PolyhedralFace,
@@ -115550,6 +115367,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_RealLimits,
   &_swigt__p_RealParameter,
   &_swigt__p_RectPixelMap,
+  &_swigt__p_Rectangle,
   &_swigt__p_RectangularDetector,
   &_swigt__p_RegionOfInterest,
   &_swigt__p_ResolutionFunction2DGaussian,
@@ -115573,6 +115391,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_ThreadInfo,
   &_swigt__p_Transform3D,
   &_swigt__p_VariableBinAxis,
+  &_swigt__p_VerticalLine,
   &_swigt__p_WavevectorInfo,
   &_swigt__p__object,
   &_swigt__p_allocator_type,
@@ -115670,6 +115489,7 @@ static swig_cast_info _swigc__p_DistributionGaussian[] = {  {&_swigt__p_Distribu
 static swig_cast_info _swigc__p_DistributionHandler[] = {  {&_swigt__p_DistributionHandler, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_DistributionLogNormal[] = {  {&_swigt__p_DistributionLogNormal, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_DistributionLorentz[] = {  {&_swigt__p_DistributionLorentz, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Ellipse[] = {  {&_swigt__p_Ellipse, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FTDecayFunction1DCauchy[] = {  {&_swigt__p_FTDecayFunction1DCauchy, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FTDecayFunction1DGauss[] = {  {&_swigt__p_FTDecayFunction1DGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FTDecayFunction1DTriangle[] = {  {&_swigt__p_FTDecayFunction1DTriangle, 0, 0, 0},{0, 0, 0, 0}};
@@ -115744,22 +115564,15 @@ static swig_cast_info _swigc__p_FormFactorTruncatedSphere[] = {  {&_swigt__p_For
 static swig_cast_info _swigc__p_FormFactorTruncatedSpheroid[] = {  {&_swigt__p_FormFactorTruncatedSpheroid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorWeighted[] = {  {&_swigt__p_FormFactorWeighted, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_GISASSimulation[] = {  {&_swigt__p_GISASSimulation, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__Ellipse[] = {  {&_swigt__p_Geometry__Ellipse, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__HorizontalLine[] = {  {&_swigt__p_Geometry__HorizontalLine, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__IShape2D[] = {  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_Geometry__IShape2D, 0, 0},  {&_swigt__p_Geometry__IShape2D, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__Line[] = {  {&_swigt__p_Geometry__Line, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__Polygon[] = {  {&_swigt__p_Geometry__Polygon, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__PolygonPrivate[] = {  {&_swigt__p_Geometry__PolygonPrivate, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__Rectangle[] = {  {&_swigt__p_Geometry__Rectangle, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_Geometry__VerticalLine[] = {  {&_swigt__p_Geometry__VerticalLine, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Histogram1D[] = {  {&_swigt__p_Histogram1D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Histogram2D[] = {  {&_swigt__p_Histogram2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HomogeneousMagneticMaterial[] = {  {&_swigt__p_HomogeneousMagneticMaterial, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HomogeneousMaterial[] = {  {&_swigt__p_HomogeneousMaterial, 0, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_HomogeneousMaterial, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_HorizontalLine[] = {  {&_swigt__p_HorizontalLine, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IAbstractParticle[] = {  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_IAbstractParticle, 0, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IAbstractParticle, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IAbstractParticle, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IAxis[] = {  {&_swigt__p_IAxis, 0, 0, 0},  {&_swigt__p_VariableBinAxis, _p_VariableBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_ConstKBinAxis, _p_ConstKBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_CustomBinAxis, _p_CustomBinAxisTo_p_IAxis, 0, 0},  {&_swigt__p_FixedBinAxis, _p_FixedBinAxisTo_p_IAxis, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IChiSquaredModule[] = {  {&_swigt__p_IChiSquaredModule, 0, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_IChiSquaredModule, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IClusteredParticles[] = {  {&_swigt__p_IClusteredParticles, 0, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_IClusteredParticles, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICompositeSample[] = {  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICompositeSample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ICompositeSample, 0, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICompositeSample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICompositeSample, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICompositeSample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICompositeSample, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
@@ -115786,8 +115599,8 @@ static swig_cast_info _swigc__p_ILayout[] = {  {&_swigt__p_ILayout, 0, 0, 0},  {
 static swig_cast_info _swigc__p_IMaterial[] = {  {&_swigt__p_IMaterial, 0, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_IMaterial, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_IMaterial, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMinimizer[] = {  {&_swigt__p_IMinimizer, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMultiLayerBuilder[] = {  {&_swigt__p_IMultiLayerBuilder, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_INamed, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_INamed, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0},  {&_swigt__p_FitSuiteObjects, _p_FitSuiteObjectsTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_INamed, 0, 0},  {&_swigt__p_FitStrategyDefault, _p_FitStrategyDefaultTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0},  {&_swigt__p_FitObject, _p_FitObjectTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INamed, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0},  {&_swigt__p_AdjustMinimizerStrategy, _p_AdjustMinimizerStrategyTo_p_INamed, 0, 0},  {&_swigt__p_IFitStrategy, _p_IFitStrategyTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INoncopyable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_INoncopyable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INoncopyable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INoncopyable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_INoncopyable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INoncopyable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INoncopyable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INoncopyable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INoncopyable, 0, 0},  {&_swigt__p_FitSuiteObjects, _p_FitSuiteObjectsTo_p_INoncopyable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INoncopyable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INoncopyable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INoncopyable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INoncopyable, 0, 0},  {&_swigt__p_INoncopyable, 0, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INoncopyable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INoncopyable, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_INoncopyable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INoncopyable, 0, 0},  {&_swigt__p_FitObject, _p_FitObjectTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INoncopyable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INoncopyable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INoncopyable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INoncopyable, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INoncopyable, 0, 0},  {&_swigt__p_ICloneable, _p_ICloneableTo_p_INoncopyable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INamed[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_INamed, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_INamed, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_IIntensityNormalizer, _p_IIntensityNormalizerTo_p_INamed, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_INamed, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0},  {&_swigt__p_FitSuiteObjects, _p_FitSuiteObjectsTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_INamed, 0, 0},  {&_swigt__p_FitStrategyDefault, _p_FitStrategyDefaultTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INamed, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0},  {&_swigt__p_IMultiLayerBuilder, _p_IMultiLayerBuilderTo_p_INamed, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0},  {&_swigt__p_INamed, 0, 0, 0},  {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0},  {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0},  {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0},  {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INamed, 0, 0},  {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0},  {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0},  {&_swigt__p_FitObject, _p_FitObjectTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INamed, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0},  {&_swigt__p_AdjustMinimizerStrategy, _p_AdjustMinimizerStrategyTo_p_INamed, 0, 0},  {&_swigt__p_IFitStrategy, _p_IFitStrategyTo_p_INamed, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INamed, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0},  {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INoncopyable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INoncopyable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_INoncopyable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INoncopyable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INoncopyable, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INoncopyable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_INoncopyable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_INoncopyable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INoncopyable, 0, 0},  {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_Simulation, _p_SimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INoncopyable, 0, 0},  {&_swigt__p_ISample, _p_ISampleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INoncopyable, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INoncopyable, 0, 0},  {&_swigt__p_FitSuiteObjects, _p_FitSuiteObjectsTo_p_INoncopyable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INoncopyable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INoncopyable, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INoncopyable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INoncopyable, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INoncopyable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INoncopyable, 0, 0},  {&_swigt__p_INoncopyable, 0, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INoncopyable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INoncopyable, 0, 0},  {&_swigt__p_IParameterT_double_t, _p_IParameterT_double_tTo_p_INoncopyable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INoncopyable, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INoncopyable, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INoncopyable, 0, 0},  {&_swigt__p_FitObject, _p_FitObjectTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INoncopyable, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INoncopyable, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INoncopyable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INoncopyable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INoncopyable, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INoncopyable, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INoncopyable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INoncopyable, 0, 0},  {&_swigt__p_ICloneable, _p_ICloneableTo_p_INoncopyable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObservable[] = {  {&_swigt__p_IObservable, 0, 0, 0},  {&_swigt__p_FitSuite, _p_FitSuiteTo_p_IObservable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IObserver[] = {  {&_swigt__p_IObserver, 0, 0, 0},  {&_swigt__p_IFitObserver, _p_IFitObserverTo_p_IObserver, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParameterT_double_t[] = {  {&_swigt__p_IParameterT_double_t, 0, 0, 0},  {&_swigt__p_RealParameter, _p_RealParameterTo_p_IParameterT_double_t, 0, 0},{0, 0, 0, 0}};
@@ -115800,6 +115613,7 @@ static swig_cast_info _swigc__p_IRoughness[] = {  {&_swigt__p_IRoughness, 0, 0,
 static swig_cast_info _swigc__p_ISample[] = {  {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ISample, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0},  {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0},  {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0},  {&_swigt__p_ISample, 0, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0},  {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ISample, 0, 0},  {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0},  {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0},  {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0},  {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0},  {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0},  {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ISample, 0, 0},  {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISampleVisitor[] = {  {&_swigt__p_ISampleVisitor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISelectionRule[] = {  {&_swigt__p_ISelectionRule, 0, 0, 0},  {&_swigt__p_SimpleSelectionRule, _p_SimpleSelectionRuleTo_p_ISelectionRule, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IShape2D[] = {  {&_swigt__p_Polygon, _p_PolygonTo_p_IShape2D, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_IShape2D, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_IShape2D, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_IShape2D, 0, 0},  {&_swigt__p_IShape2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISquaredFunction[] = {  {&_swigt__p_SquaredFunctionGaussianError, _p_SquaredFunctionGaussianErrorTo_p_ISquaredFunction, 0, 0},  {&_swigt__p_SquaredFunctionMeanSquaredError, _p_SquaredFunctionMeanSquaredErrorTo_p_ISquaredFunction, 0, 0},  {&_swigt__p_ISquaredFunction, 0, 0, 0},  {&_swigt__p_SquaredFunctionDefault, _p_SquaredFunctionDefaultTo_p_ISquaredFunction, 0, 0},  {&_swigt__p_SquaredFunctionSimError, _p_SquaredFunctionSimErrorTo_p_ISquaredFunction, 0, 0},  {&_swigt__p_SquaredFunctionSystematicError, _p_SquaredFunctionSystematicErrorTo_p_ISquaredFunction, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Instrument[] = {  {&_swigt__p_Instrument, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IntensityDataIOFactory[] = {  {&_swigt__p_IntensityDataIOFactory, 0, 0, 0},{0, 0, 0, 0}};
@@ -115820,6 +115634,7 @@ static swig_cast_info _swigc__p_Layer[] = {  {&_swigt__p_Layer, 0, 0, 0},{0, 0,
 static swig_cast_info _swigc__p_LayerInterface[] = {  {&_swigt__p_LayerInterface, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_LayerRTCoefficients_t[] = {  {&_swigt__p_LayerRTCoefficients_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_LayerRoughness[] = {  {&_swigt__p_LayerRoughness, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Line[] = {  {&_swigt__p_Line, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Logging__Logger[] = {  {&_swigt__p_Logging__Logger, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_MesoCrystal[] = {  {&_swigt__p_MesoCrystal, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_MultiLayer[] = {  {&_swigt__p_MultiLayer, 0, 0, 0},{0, 0, 0, 0}};
@@ -115837,6 +115652,8 @@ static swig_cast_info _swigc__p_ParticleComposition[] = {  {&_swigt__p_ParticleC
 static swig_cast_info _swigc__p_ParticleCoreShell[] = {  {&_swigt__p_ParticleCoreShell, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ParticleDistribution[] = {  {&_swigt__p_ParticleDistribution, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ParticleLayout[] = {  {&_swigt__p_ParticleLayout, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Polygon[] = {  {&_swigt__p_Polygon, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_PolygonPrivate[] = {  {&_swigt__p_PolygonPrivate, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PolygonalTopology[] = {  {&_swigt__p_PolygonalTopology, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PolyhedralEdge[] = {  {&_swigt__p_PolyhedralEdge, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_PolyhedralFace[] = {  {&_swigt__p_PolyhedralFace, 0, 0, 0},{0, 0, 0, 0}};
@@ -115845,6 +115662,7 @@ static swig_cast_info _swigc__p_ProgressHandler__Callback_t[] = {  {&_swigt__p_P
 static swig_cast_info _swigc__p_RealLimits[] = {  {&_swigt__p_RealLimits, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RealParameter[] = {  {&_swigt__p_RealParameter, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RectPixelMap[] = {  {&_swigt__p_RectPixelMap, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Rectangle[] = {  {&_swigt__p_Rectangle, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RectangularDetector[] = {  {&_swigt__p_RectangularDetector, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RegionOfInterest[] = {  {&_swigt__p_RegionOfInterest, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ResolutionFunction2DGaussian[] = {  {&_swigt__p_ResolutionFunction2DGaussian, 0, 0, 0},{0, 0, 0, 0}};
@@ -115868,6 +115686,7 @@ static swig_cast_info _swigc__p_SquaredFunctionSystematicError[] = {  {&_swigt__
 static swig_cast_info _swigc__p_ThreadInfo[] = {  {&_swigt__p_ThreadInfo, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Transform3D[] = {  {&_swigt__p_Transform3D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_VariableBinAxis[] = {  {&_swigt__p_VariableBinAxis, 0, 0, 0},  {&_swigt__p_ConstKBinAxis, _p_ConstKBinAxisTo_p_VariableBinAxis, 0, 0},  {&_swigt__p_CustomBinAxis, _p_CustomBinAxisTo_p_VariableBinAxis, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_VerticalLine[] = {  {&_swigt__p_VerticalLine, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_WavevectorInfo[] = {  {&_swigt__p_WavevectorInfo, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p__object[] = {  {&_swigt__p__object, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_allocator_type[] = {  {&_swigt__p_allocator_type, 0, 0, 0},{0, 0, 0, 0}};
@@ -115965,6 +115784,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_DistributionHandler,
   _swigc__p_DistributionLogNormal,
   _swigc__p_DistributionLorentz,
+  _swigc__p_Ellipse,
   _swigc__p_FTDecayFunction1DCauchy,
   _swigc__p_FTDecayFunction1DGauss,
   _swigc__p_FTDecayFunction1DTriangle,
@@ -116039,18 +115859,11 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorTruncatedSpheroid,
   _swigc__p_FormFactorWeighted,
   _swigc__p_GISASSimulation,
-  _swigc__p_Geometry__Ellipse,
-  _swigc__p_Geometry__HorizontalLine,
-  _swigc__p_Geometry__IShape2D,
-  _swigc__p_Geometry__Line,
-  _swigc__p_Geometry__Polygon,
-  _swigc__p_Geometry__PolygonPrivate,
-  _swigc__p_Geometry__Rectangle,
-  _swigc__p_Geometry__VerticalLine,
   _swigc__p_Histogram1D,
   _swigc__p_Histogram2D,
   _swigc__p_HomogeneousMagneticMaterial,
   _swigc__p_HomogeneousMaterial,
+  _swigc__p_HorizontalLine,
   _swigc__p_IAbstractParticle,
   _swigc__p_IAxis,
   _swigc__p_IChiSquaredModule,
@@ -116095,6 +115908,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_ISample,
   _swigc__p_ISampleVisitor,
   _swigc__p_ISelectionRule,
+  _swigc__p_IShape2D,
   _swigc__p_ISquaredFunction,
   _swigc__p_Instrument,
   _swigc__p_IntensityDataIOFactory,
@@ -116115,6 +115929,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_LayerInterface,
   _swigc__p_LayerRTCoefficients_t,
   _swigc__p_LayerRoughness,
+  _swigc__p_Line,
   _swigc__p_Logging__Logger,
   _swigc__p_MesoCrystal,
   _swigc__p_MultiLayer,
@@ -116132,6 +115947,8 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_ParticleCoreShell,
   _swigc__p_ParticleDistribution,
   _swigc__p_ParticleLayout,
+  _swigc__p_Polygon,
+  _swigc__p_PolygonPrivate,
   _swigc__p_PolygonalTopology,
   _swigc__p_PolyhedralEdge,
   _swigc__p_PolyhedralFace,
@@ -116140,6 +115957,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_RealLimits,
   _swigc__p_RealParameter,
   _swigc__p_RectPixelMap,
+  _swigc__p_Rectangle,
   _swigc__p_RectangularDetector,
   _swigc__p_RegionOfInterest,
   _swigc__p_ResolutionFunction2DGaussian,
@@ -116163,6 +115981,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_ThreadInfo,
   _swigc__p_Transform3D,
   _swigc__p_VariableBinAxis,
+  _swigc__p_VerticalLine,
   _swigc__p_WavevectorInfo,
   _swigc__p__object,
   _swigc__p_allocator_type,
-- 
GitLab