From a5438f7c5a1c2e22c5daee3eec77506ab6aa2ea6 Mon Sep 17 00:00:00 2001
From: Dmitry Yurov <d.yurov@fz-juelich.de>
Date: Tue, 30 Jan 2018 11:05:53 +0100
Subject: [PATCH] Bindings regenerated

Redmine: #1860
---
 auto/Wrap/doxygen_core.i            | 1577 ++++++++-------
 auto/Wrap/libBornAgainCore.py       | 1529 +++++++-------
 auto/Wrap/libBornAgainCore_wrap.cpp | 2925 +++++++++++++++++----------
 auto/Wrap/libBornAgainCore_wrap.h   |    2 +-
 auto/Wrap/swig_runtime.h            |   31 +-
 5 files changed, 3471 insertions(+), 2593 deletions(-)

diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index d00e4dd7edc..ffe1cd73788 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -15,7 +15,7 @@ C++ includes: AdjustMinimizerStrategy.h
 %feature("docstring")  AdjustMinimizerStrategy::AdjustMinimizerStrategy "AdjustMinimizerStrategy::AdjustMinimizerStrategy(const std::string &minimizerName, const std::string &algorithmName=\"\", const std::string &optionString=\"\")
 ";
 
-%feature("docstring")  AdjustMinimizerStrategy::clone "AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const 
+%feature("docstring")  AdjustMinimizerStrategy::clone "AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const
 ";
 
 %feature("docstring")  AdjustMinimizerStrategy::setMinimizer "void AdjustMinimizerStrategy::setMinimizer(const std::string &minimizerName, const std::string &algorithmName=\"\", const std::string &optionString=\"\")
@@ -38,7 +38,7 @@ C++ includes: AdjustMinimizerStrategy.h
 // File: classAsymRippleBuilder.xml
 %feature("docstring") AsymRippleBuilder "";
 
-%feature("docstring")  AsymRippleBuilder::buildSample "MultiLayer * AsymRippleBuilder::buildSample() const 
+%feature("docstring")  AsymRippleBuilder::buildSample "MultiLayer * AsymRippleBuilder::buildSample() const
 ";
 
 
@@ -138,7 +138,7 @@ C++ includes: TwoDimLatticeBuilder.h
 %feature("docstring")  Basic2DLatticeBuilder::Basic2DLatticeBuilder "Basic2DLatticeBuilder::Basic2DLatticeBuilder()
 ";
 
-%feature("docstring")  Basic2DLatticeBuilder::buildSample "MultiLayer * Basic2DLatticeBuilder::buildSample() const 
+%feature("docstring")  Basic2DLatticeBuilder::buildSample "MultiLayer * Basic2DLatticeBuilder::buildSample() const
 ";
 
 
@@ -156,7 +156,7 @@ C++ includes: ParaCrystalBuilder.h
 %feature("docstring")  Basic2DParaCrystalBuilder::~Basic2DParaCrystalBuilder "Basic2DParaCrystalBuilder::~Basic2DParaCrystalBuilder()
 ";
 
-%feature("docstring")  Basic2DParaCrystalBuilder::buildSample "MultiLayer * Basic2DParaCrystalBuilder::buildSample() const 
+%feature("docstring")  Basic2DParaCrystalBuilder::buildSample "MultiLayer * Basic2DParaCrystalBuilder::buildSample() const
 ";
 
 %feature("docstring")  Basic2DParaCrystalBuilder::createSample "MultiLayer * Basic2DParaCrystalBuilder::createSample(size_t index=0)
@@ -172,7 +172,7 @@ C++ includes: ParaCrystalBuilder.h
 %feature("docstring")  BasicLattice::BasicLattice "BasicLattice::BasicLattice(double length1, double length2, double angle, double rotation_angle=0.0)
 ";
 
-%feature("docstring")  BasicLattice::clone "BasicLattice * BasicLattice::clone() const 
+%feature("docstring")  BasicLattice::clone "BasicLattice * BasicLattice::clone() const
 ";
 
 %feature("docstring")  BasicLattice::accept "void BasicLattice::accept(INodeVisitor *visitor) const final
@@ -180,16 +180,16 @@ C++ includes: ParaCrystalBuilder.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  BasicLattice::length1 "virtual double BasicLattice::length1() const 
+%feature("docstring")  BasicLattice::length1 "virtual double BasicLattice::length1() const
 ";
 
-%feature("docstring")  BasicLattice::length2 "virtual double BasicLattice::length2() const 
+%feature("docstring")  BasicLattice::length2 "virtual double BasicLattice::length2() const
 ";
 
-%feature("docstring")  BasicLattice::latticeAngle "virtual double BasicLattice::latticeAngle() const 
+%feature("docstring")  BasicLattice::latticeAngle "virtual double BasicLattice::latticeAngle() const
 ";
 
-%feature("docstring")  BasicLattice::unitCellArea "double BasicLattice::unitCellArea() const 
+%feature("docstring")  BasicLattice::unitCellArea "double BasicLattice::unitCellArea() const
 ";
 
 
@@ -301,14 +301,14 @@ Returns this, trivially converted to complex type.
 Returns real parts. 
 ";
 
-%feature("docstring")  BasicVector3D::dot "auto BasicVector3D< T >::dot(const BasicVector3D< U > &v) const -> decltype(this->x()*v.x())
+%feature("docstring")  BasicVector3D::dot "auto BasicVector3D< T >::dot(const BasicVector3D< U > &v) const -> decltype(this->x() *v.x())
 
 Returns dot product of vectors (antilinear in the first [=self] argument).
 
 Returns dot product of (complex) vectors (antilinear in the first [=self] argument). 
 ";
 
-%feature("docstring")  BasicVector3D::cross "auto BasicVector3D< T >::cross(const BasicVector3D< U > &v) const -> BasicVector3D< decltype(this->x()*v.x())>
+%feature("docstring")  BasicVector3D::cross "auto BasicVector3D< T >::cross(const BasicVector3D< U > &v) const -> BasicVector3D< decltype(this->x() *v.x())>
 
 Returns cross product of vectors (linear in both arguments).
 
@@ -412,7 +412,7 @@ Sets beam to sample width ratio in footprint factor.
 Sets the polarization density matrix according to the given Bloch vector. 
 ";
 
-%feature("docstring")  Beam::getBlochVector "kvector_t Beam::getBlochVector() const 
+%feature("docstring")  Beam::getBlochVector "kvector_t Beam::getBlochVector() const
 ";
 
 %feature("docstring")  Beam::getPolarization "Eigen::Matrix2cd Beam::getPolarization() const
@@ -420,13 +420,13 @@ Sets the polarization density matrix according to the given Bloch vector.
 Returns the polarization density matrix (in spin basis along z-axis) 
 ";
 
-%feature("docstring")  Beam::getWavelength "double Beam::getWavelength() const 
+%feature("docstring")  Beam::getWavelength "double Beam::getWavelength() const
 ";
 
-%feature("docstring")  Beam::getAlpha "double Beam::getAlpha() const 
+%feature("docstring")  Beam::getAlpha "double Beam::getAlpha() const
 ";
 
-%feature("docstring")  Beam::getPhi "double Beam::getPhi() const 
+%feature("docstring")  Beam::getPhi "double Beam::getPhi() const
 ";
 
 %feature("docstring")  Beam::accept "void Beam::accept(INodeVisitor *visitor) const override
@@ -444,10 +444,10 @@ Calls the  INodeVisitor's visit method.
 %feature("docstring")  Bin1D::Bin1D "Bin1D::Bin1D(double lower, double upper)
 ";
 
-%feature("docstring")  Bin1D::getMidPoint "double Bin1D::getMidPoint() const 
+%feature("docstring")  Bin1D::getMidPoint "double Bin1D::getMidPoint() const
 ";
 
-%feature("docstring")  Bin1D::getBinSize "double Bin1D::getBinSize() const 
+%feature("docstring")  Bin1D::getBinSize "double Bin1D::getBinSize() const
 ";
 
 
@@ -470,10 +470,10 @@ C++ includes: Bin.h
 creation on  Bin1DCVector from alpha and phi bins 
 ";
 
-%feature("docstring")  Bin1DCVector::getMidPoint "cvector_t Bin1DCVector::getMidPoint() const 
+%feature("docstring")  Bin1DCVector::getMidPoint "cvector_t Bin1DCVector::getMidPoint() const
 ";
 
-%feature("docstring")  Bin1DCVector::getDelta "cvector_t Bin1DCVector::getDelta() const 
+%feature("docstring")  Bin1DCVector::getDelta "cvector_t Bin1DCVector::getDelta() const
 ";
 
 
@@ -496,10 +496,10 @@ C++ includes: Bin.h
 creation on  Bin1DKVector from alpha and phi bins 
 ";
 
-%feature("docstring")  Bin1DKVector::getMidPoint "kvector_t Bin1DKVector::getMidPoint() const 
+%feature("docstring")  Bin1DKVector::getMidPoint "kvector_t Bin1DKVector::getMidPoint() const
 ";
 
-%feature("docstring")  Bin1DKVector::getDelta "kvector_t Bin1DKVector::getDelta() const 
+%feature("docstring")  Bin1DKVector::getDelta "kvector_t Bin1DKVector::getDelta() const
 ";
 
 
@@ -549,7 +549,7 @@ C++ includes: BoxCompositionBuilder.h
 %feature("docstring")  BoxCompositionRotateXBuilder::BoxCompositionRotateXBuilder "BoxCompositionRotateXBuilder::BoxCompositionRotateXBuilder()
 ";
 
-%feature("docstring")  BoxCompositionRotateXBuilder::buildSample "MultiLayer * BoxCompositionRotateXBuilder::buildSample() const 
+%feature("docstring")  BoxCompositionRotateXBuilder::buildSample "MultiLayer * BoxCompositionRotateXBuilder::buildSample() const
 ";
 
 
@@ -564,7 +564,7 @@ C++ includes: BoxCompositionBuilder.h
 %feature("docstring")  BoxCompositionRotateYBuilder::BoxCompositionRotateYBuilder "BoxCompositionRotateYBuilder::BoxCompositionRotateYBuilder()
 ";
 
-%feature("docstring")  BoxCompositionRotateYBuilder::buildSample "MultiLayer * BoxCompositionRotateYBuilder::buildSample() const 
+%feature("docstring")  BoxCompositionRotateYBuilder::buildSample "MultiLayer * BoxCompositionRotateYBuilder::buildSample() const
 ";
 
 
@@ -579,7 +579,7 @@ C++ includes: BoxCompositionBuilder.h
 %feature("docstring")  BoxCompositionRotateZandYBuilder::BoxCompositionRotateZandYBuilder "BoxCompositionRotateZandYBuilder::BoxCompositionRotateZandYBuilder()
 ";
 
-%feature("docstring")  BoxCompositionRotateZandYBuilder::buildSample "MultiLayer * BoxCompositionRotateZandYBuilder::buildSample() const 
+%feature("docstring")  BoxCompositionRotateZandYBuilder::buildSample "MultiLayer * BoxCompositionRotateZandYBuilder::buildSample() const
 ";
 
 
@@ -594,7 +594,7 @@ C++ includes: BoxCompositionBuilder.h
 %feature("docstring")  BoxCompositionRotateZBuilder::BoxCompositionRotateZBuilder "BoxCompositionRotateZBuilder::BoxCompositionRotateZBuilder()
 ";
 
-%feature("docstring")  BoxCompositionRotateZBuilder::buildSample "MultiLayer * BoxCompositionRotateZBuilder::buildSample() const 
+%feature("docstring")  BoxCompositionRotateZBuilder::buildSample "MultiLayer * BoxCompositionRotateZBuilder::buildSample() const
 ";
 
 
@@ -609,7 +609,7 @@ C++ includes: BoxesSquareLatticeBuilder.h
 %feature("docstring")  BoxesSquareLatticeBuilder::BoxesSquareLatticeBuilder "BoxesSquareLatticeBuilder::BoxesSquareLatticeBuilder()
 ";
 
-%feature("docstring")  BoxesSquareLatticeBuilder::buildSample "MultiLayer * BoxesSquareLatticeBuilder::buildSample() const 
+%feature("docstring")  BoxesSquareLatticeBuilder::buildSample "MultiLayer * BoxesSquareLatticeBuilder::buildSample() const
 ";
 
 
@@ -624,25 +624,25 @@ C++ includes: BoxCompositionBuilder.h
 %feature("docstring")  BoxStackCompositionBuilder::BoxStackCompositionBuilder "BoxStackCompositionBuilder::BoxStackCompositionBuilder()
 ";
 
-%feature("docstring")  BoxStackCompositionBuilder::buildSample "MultiLayer * BoxStackCompositionBuilder::buildSample() const 
+%feature("docstring")  BoxStackCompositionBuilder::buildSample "MultiLayer * BoxStackCompositionBuilder::buildSample() const
 ";
 
 
-// File: structIntegratorMCMiser_1_1CallBackHolder.xml
-%feature("docstring") IntegratorMCMiser::CallBackHolder "
+// File: structIntegratorReal_1_1CallBackHolder.xml
+%feature("docstring") IntegratorReal::CallBackHolder "
 
 structure holding the object and possible extra parameters
 
-C++ includes: IntegratorMCMiser.h
+C++ includes: IntegratorReal.h
 ";
 
 
-// File: structIntegratorReal_1_1CallBackHolder.xml
-%feature("docstring") IntegratorReal::CallBackHolder "
+// File: structIntegratorMCMiser_1_1CallBackHolder.xml
+%feature("docstring") IntegratorMCMiser::CallBackHolder "
 
 structure holding the object and possible extra parameters
 
-C++ includes: IntegratorReal.h
+C++ includes: IntegratorMCMiser.h
 ";
 
 
@@ -657,7 +657,7 @@ C++ includes: TwoDimLatticeBuilder.h
 %feature("docstring")  CenteredSquareLatticeBuilder::CenteredSquareLatticeBuilder "CenteredSquareLatticeBuilder::CenteredSquareLatticeBuilder()
 ";
 
-%feature("docstring")  CenteredSquareLatticeBuilder::buildSample "MultiLayer * CenteredSquareLatticeBuilder::buildSample() const 
+%feature("docstring")  CenteredSquareLatticeBuilder::buildSample "MultiLayer * CenteredSquareLatticeBuilder::buildSample() const
 ";
 
 
@@ -705,10 +705,10 @@ C++ includes: ComputationStatus.h
 %feature("docstring")  ComputationStatus::ComputationStatus "ComputationStatus::ComputationStatus()
 ";
 
-%feature("docstring")  ComputationStatus::isCompleted "bool ComputationStatus::isCompleted() const 
+%feature("docstring")  ComputationStatus::isCompleted "bool ComputationStatus::isCompleted() const
 ";
 
-%feature("docstring")  ComputationStatus::errorMessage "std::string ComputationStatus::errorMessage() const 
+%feature("docstring")  ComputationStatus::errorMessage "std::string ComputationStatus::errorMessage() const
 ";
 
 %feature("docstring")  ComputationStatus::setRunning "void ComputationStatus::setRunning()
@@ -735,7 +735,7 @@ C++ includes: ParticleDistributionsBuilder.h
 %feature("docstring")  ConesWithLimitsDistributionBuilder::ConesWithLimitsDistributionBuilder "ConesWithLimitsDistributionBuilder::ConesWithLimitsDistributionBuilder()
 ";
 
-%feature("docstring")  ConesWithLimitsDistributionBuilder::buildSample "MultiLayer * ConesWithLimitsDistributionBuilder::buildSample() const 
+%feature("docstring")  ConesWithLimitsDistributionBuilder::buildSample "MultiLayer * ConesWithLimitsDistributionBuilder::buildSample() const
 ";
 
 
@@ -753,10 +753,10 @@ C++ includes: ConstantBackground.h
 %feature("docstring")  ConstantBackground::~ConstantBackground "ConstantBackground::~ConstantBackground()
 ";
 
-%feature("docstring")  ConstantBackground::clone "ConstantBackground * ConstantBackground::clone() const overridefinal
+%feature("docstring")  ConstantBackground::clone "ConstantBackground * ConstantBackground::clone() const override final
 ";
 
-%feature("docstring")  ConstantBackground::backgroundValue "double ConstantBackground::backgroundValue() const 
+%feature("docstring")  ConstantBackground::backgroundValue "double ConstantBackground::backgroundValue() const
 ";
 
 %feature("docstring")  ConstantBackground::accept "void ConstantBackground::accept(INodeVisitor *visitor) const override
@@ -764,7 +764,7 @@ C++ includes: ConstantBackground.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ConstantBackground::addBackGround "double ConstantBackground::addBackGround(double intensity) const overridefinal
+%feature("docstring")  ConstantBackground::addBackGround "double ConstantBackground::addBackGround(double intensity) const override final
 ";
 
 
@@ -838,7 +838,7 @@ Constructor taking a 2 dimensional resolution function as argument.
 Convolve given intensities with the encapsulated resolution. 
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::clone "ConvolutionDetectorResolution * ConvolutionDetectorResolution::clone() const 
+%feature("docstring")  ConvolutionDetectorResolution::clone "ConvolutionDetectorResolution * ConvolutionDetectorResolution::clone() const
 ";
 
 %feature("docstring")  ConvolutionDetectorResolution::accept "void ConvolutionDetectorResolution::accept(INodeVisitor *visitor) const final
@@ -846,7 +846,7 @@ Convolve given intensities with the encapsulated resolution.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::getResolutionFunction2D "const IResolutionFunction2D * ConvolutionDetectorResolution::getResolutionFunction2D() const 
+%feature("docstring")  ConvolutionDetectorResolution::getResolutionFunction2D "const IResolutionFunction2D * ConvolutionDetectorResolution::getResolutionFunction2D() const
 ";
 
 %feature("docstring")  ConvolutionDetectorResolution::getChildren "std::vector< const INode * > ConvolutionDetectorResolution::getChildren() const
@@ -902,7 +902,7 @@ C++ includes: CoreShellParticleBuilder.h
 %feature("docstring")  CoreShellBoxRotateZandYBuilder::CoreShellBoxRotateZandYBuilder "CoreShellBoxRotateZandYBuilder::CoreShellBoxRotateZandYBuilder()
 ";
 
-%feature("docstring")  CoreShellBoxRotateZandYBuilder::buildSample "MultiLayer * CoreShellBoxRotateZandYBuilder::buildSample() const 
+%feature("docstring")  CoreShellBoxRotateZandYBuilder::buildSample "MultiLayer * CoreShellBoxRotateZandYBuilder::buildSample() const
 ";
 
 
@@ -917,7 +917,7 @@ C++ includes: CoreShellParticleBuilder.h
 %feature("docstring")  CoreShellParticleBuilder::CoreShellParticleBuilder "CoreShellParticleBuilder::CoreShellParticleBuilder()
 ";
 
-%feature("docstring")  CoreShellParticleBuilder::buildSample "MultiLayer * CoreShellParticleBuilder::buildSample() const 
+%feature("docstring")  CoreShellParticleBuilder::buildSample "MultiLayer * CoreShellParticleBuilder::buildSample() const
 ";
 
 
@@ -932,7 +932,7 @@ C++ includes: RipplesBuilder.h
 %feature("docstring")  CosineRippleBuilder::CosineRippleBuilder "CosineRippleBuilder::CosineRippleBuilder()
 ";
 
-%feature("docstring")  CosineRippleBuilder::buildSample "MultiLayer * CosineRippleBuilder::buildSample() const 
+%feature("docstring")  CosineRippleBuilder::buildSample "MultiLayer * CosineRippleBuilder::buildSample() const
 ";
 
 
@@ -950,33 +950,33 @@ C++ includes: Crystal.h
 %feature("docstring")  Crystal::~Crystal "Crystal::~Crystal()
 ";
 
-%feature("docstring")  Crystal::clone "Crystal * Crystal::clone() const overridefinal
+%feature("docstring")  Crystal::clone "Crystal * Crystal::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  Crystal::accept "void Crystal::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  Crystal::accept "void Crystal::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  Crystal::createTotalFormFactor "IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const overridefinal
+%feature("docstring")  Crystal::createTotalFormFactor "IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const override final
 
 Creates a total form factor for the mesocrystal with a specific shape and content The bulk content of the mesocrystal is encapsulated by the  IClusteredParticles object itself 
 ";
 
-%feature("docstring")  Crystal::homogeneousRegions "std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const overridefinal
+%feature("docstring")  Crystal::homogeneousRegions "std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const override final
 
 Creates region information with volumetric densities instead of absolute volume These densities need to be multiplied by the total mesocrystal volume 
 ";
 
-%feature("docstring")  Crystal::transformedLattice "Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const 
+%feature("docstring")  Crystal::transformedLattice "Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const
 ";
 
 %feature("docstring")  Crystal::setDWFactor "void Crystal::setDWFactor(double dw_factor)
 ";
 
-%feature("docstring")  Crystal::getChildren "std::vector< const INode * > Crystal::getChildren() const overridefinal
+%feature("docstring")  Crystal::getChildren "std::vector< const INode * > Crystal::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -1002,16 +1002,16 @@ C++ includes: CumulativeValue.h
 %feature("docstring")  CumulativeValue::add "void CumulativeValue::add(double value, double weight=1.0)
 ";
 
-%feature("docstring")  CumulativeValue::getNumberOfEntries "int CumulativeValue::getNumberOfEntries() const 
+%feature("docstring")  CumulativeValue::getNumberOfEntries "int CumulativeValue::getNumberOfEntries() const
 ";
 
-%feature("docstring")  CumulativeValue::getContent "double CumulativeValue::getContent() const 
+%feature("docstring")  CumulativeValue::getContent "double CumulativeValue::getContent() const
 ";
 
-%feature("docstring")  CumulativeValue::getAverage "double CumulativeValue::getAverage() const 
+%feature("docstring")  CumulativeValue::getAverage "double CumulativeValue::getAverage() const
 ";
 
-%feature("docstring")  CumulativeValue::getRMS "double CumulativeValue::getRMS() const 
+%feature("docstring")  CumulativeValue::getRMS "double CumulativeValue::getRMS() const
 ";
 
 
@@ -1056,7 +1056,7 @@ clone function
 retrieve a 1d bin for the given index 
 ";
 
-%feature("docstring")  CustomBinAxis::getBinCenters "std::vector< double > CustomBinAxis::getBinCenters() const 
+%feature("docstring")  CustomBinAxis::getBinCenters "std::vector< double > CustomBinAxis::getBinCenters() const
 ";
 
 %feature("docstring")  CustomBinAxis::createClippedAxis "CustomBinAxis * CustomBinAxis::createClippedAxis(double left, double right) const
@@ -1076,7 +1076,7 @@ C++ includes: CustomMorphologyBuilder.h
 %feature("docstring")  CustomMorphologyBuilder::CustomMorphologyBuilder "CustomMorphologyBuilder::CustomMorphologyBuilder()
 ";
 
-%feature("docstring")  CustomMorphologyBuilder::buildSample "MultiLayer * CustomMorphologyBuilder::buildSample() const 
+%feature("docstring")  CustomMorphologyBuilder::buildSample "MultiLayer * CustomMorphologyBuilder::buildSample() const
 ";
 
 
@@ -1091,7 +1091,7 @@ C++ includes: CylindersAndPrismsBuilder.h
 %feature("docstring")  CylindersAndPrismsBuilder::CylindersAndPrismsBuilder "CylindersAndPrismsBuilder::CylindersAndPrismsBuilder()
 ";
 
-%feature("docstring")  CylindersAndPrismsBuilder::buildSample "MultiLayer * CylindersAndPrismsBuilder::buildSample() const 
+%feature("docstring")  CylindersAndPrismsBuilder::buildSample "MultiLayer * CylindersAndPrismsBuilder::buildSample() const
 ";
 
 
@@ -1106,7 +1106,7 @@ C++ includes: CylindersBuilder.h
 %feature("docstring")  CylindersInBABuilder::CylindersInBABuilder "CylindersInBABuilder::CylindersInBABuilder()
 ";
 
-%feature("docstring")  CylindersInBABuilder::buildSample "MultiLayer * CylindersInBABuilder::buildSample() const 
+%feature("docstring")  CylindersInBABuilder::buildSample "MultiLayer * CylindersInBABuilder::buildSample() const
 ";
 
 
@@ -1121,7 +1121,7 @@ C++ includes: CylindersBuilder.h
 %feature("docstring")  CylindersInDWBABuilder::CylindersInDWBABuilder "CylindersInDWBABuilder::CylindersInDWBABuilder()
 ";
 
-%feature("docstring")  CylindersInDWBABuilder::buildSample "MultiLayer * CylindersInDWBABuilder::buildSample() const 
+%feature("docstring")  CylindersInDWBABuilder::buildSample "MultiLayer * CylindersInDWBABuilder::buildSample() const
 ";
 
 
@@ -1136,7 +1136,7 @@ C++ includes: SizeDistributionModelsBuilder.h
 %feature("docstring")  CylindersInSSCABuilder::CylindersInSSCABuilder "CylindersInSSCABuilder::CylindersInSSCABuilder()
 ";
 
-%feature("docstring")  CylindersInSSCABuilder::buildSample "MultiLayer * CylindersInSSCABuilder::buildSample() const 
+%feature("docstring")  CylindersInSSCABuilder::buildSample "MultiLayer * CylindersInSSCABuilder::buildSample() const
 ";
 
 
@@ -1151,7 +1151,7 @@ C++ includes: ParticleDistributionsBuilder.h
 %feature("docstring")  CylindersWithSizeDistributionBuilder::CylindersWithSizeDistributionBuilder "CylindersWithSizeDistributionBuilder::CylindersWithSizeDistributionBuilder()
 ";
 
-%feature("docstring")  CylindersWithSizeDistributionBuilder::buildSample "MultiLayer * CylindersWithSizeDistributionBuilder::buildSample() const 
+%feature("docstring")  CylindersWithSizeDistributionBuilder::buildSample "MultiLayer * CylindersWithSizeDistributionBuilder::buildSample() const
 ";
 
 
@@ -1231,7 +1231,7 @@ Retrieve the analyzer characteristics.
 will always return positive value 
 ";
 
-%feature("docstring")  DetectionProperties::analyzerTotalTransmission "double DetectionProperties::analyzerTotalTransmission() const 
+%feature("docstring")  DetectionProperties::analyzerTotalTransmission "double DetectionProperties::analyzerTotalTransmission() const
 ";
 
 %feature("docstring")  DetectionProperties::accept "void DetectionProperties::accept(INodeVisitor *visitor) const final
@@ -1254,7 +1254,7 @@ C++ includes: DetectorElement.h
 %feature("docstring")  DetectorElement::setSpecular "void DetectorElement::setSpecular(bool specular=true)
 ";
 
-%feature("docstring")  DetectorElement::isSpecular "bool DetectorElement::isSpecular() const 
+%feature("docstring")  DetectorElement::isSpecular "bool DetectorElement::isSpecular() const
 ";
 
 %feature("docstring")  DetectorElement::getAnalyzerOperator "Eigen::Matrix2cd DetectorElement::getAnalyzerOperator() const
@@ -1304,13 +1304,13 @@ Init the map of masks for the given detector plane.
 %feature("docstring")  DetectorMask::initMaskData "void DetectorMask::initMaskData(const OutputData< double > &data)
 ";
 
-%feature("docstring")  DetectorMask::isMasked "bool DetectorMask::isMasked(size_t index) const 
+%feature("docstring")  DetectorMask::isMasked "bool DetectorMask::isMasked(size_t index) const
 ";
 
-%feature("docstring")  DetectorMask::getMaskData "const OutputData<bool>* DetectorMask::getMaskData() const 
+%feature("docstring")  DetectorMask::getMaskData "const OutputData<bool>* DetectorMask::getMaskData() const
 ";
 
-%feature("docstring")  DetectorMask::createHistogram "Histogram2D * DetectorMask::createHistogram() const 
+%feature("docstring")  DetectorMask::createHistogram "Histogram2D * DetectorMask::createHistogram() const
 ";
 
 %feature("docstring")  DetectorMask::removeMasks "void DetectorMask::removeMasks()
@@ -1323,13 +1323,13 @@ remove all masks and return object to initial state
 returns true if has masks 
 ";
 
-%feature("docstring")  DetectorMask::numberOfMaskedChannels "int DetectorMask::numberOfMaskedChannels() const 
+%feature("docstring")  DetectorMask::numberOfMaskedChannels "int DetectorMask::numberOfMaskedChannels() const
 ";
 
-%feature("docstring")  DetectorMask::numberOfMasks "size_t DetectorMask::numberOfMasks() const 
+%feature("docstring")  DetectorMask::numberOfMasks "size_t DetectorMask::numberOfMasks() const
 ";
 
-%feature("docstring")  DetectorMask::getMaskShape "const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const 
+%feature("docstring")  DetectorMask::getMaskShape "const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const
 ";
 
 
@@ -1363,7 +1363,7 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionCosine::getSigma "double DistributionCosine::getSigma() const 
+%feature("docstring")  DistributionCosine::getSigma "double DistributionCosine::getSigma() const
 ";
 
 %feature("docstring")  DistributionCosine::equidistantPoints "std::vector< double > DistributionCosine::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1412,10 +1412,10 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionGate::getMin "double DistributionGate::getMin() const 
+%feature("docstring")  DistributionGate::getMin "double DistributionGate::getMin() const
 ";
 
-%feature("docstring")  DistributionGate::getMax "double DistributionGate::getMax() const 
+%feature("docstring")  DistributionGate::getMax "double DistributionGate::getMax() const
 ";
 
 %feature("docstring")  DistributionGate::equidistantPoints "std::vector< double > DistributionGate::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1464,7 +1464,7 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionGaussian::getStdDev "double DistributionGaussian::getStdDev() const 
+%feature("docstring")  DistributionGaussian::getStdDev "double DistributionGaussian::getStdDev() const
 ";
 
 %feature("docstring")  DistributionGaussian::equidistantPoints "std::vector< double > DistributionGaussian::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1515,7 +1515,7 @@ get the total number of parameter value combinations (product of the individual
 set the parameter values of the simulation object to a specific combination of values, determined by the index (which must be smaller than the total number of combinations) and returns the weight associated with this combination of parameter values 
 ";
 
-%feature("docstring")  DistributionHandler::getDistributions "const DistributionHandler::Distributions_t & DistributionHandler::getDistributions() const 
+%feature("docstring")  DistributionHandler::getDistributions "const DistributionHandler::Distributions_t & DistributionHandler::getDistributions() const
 ";
 
 
@@ -1549,10 +1549,10 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionLogNormal::getMedian "double DistributionLogNormal::getMedian() const 
+%feature("docstring")  DistributionLogNormal::getMedian "double DistributionLogNormal::getMedian() const
 ";
 
-%feature("docstring")  DistributionLogNormal::getScalePar "double DistributionLogNormal::getScalePar() const 
+%feature("docstring")  DistributionLogNormal::getScalePar "double DistributionLogNormal::getScalePar() const
 ";
 
 %feature("docstring")  DistributionLogNormal::equidistantPoints "std::vector< double > DistributionLogNormal::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1606,7 +1606,7 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionLorentz::getHWHM "double DistributionLorentz::getHWHM() const 
+%feature("docstring")  DistributionLorentz::getHWHM "double DistributionLorentz::getHWHM() const
 ";
 
 %feature("docstring")  DistributionLorentz::equidistantPoints "std::vector< double > DistributionLorentz::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1655,13 +1655,13 @@ Returns the distribution-specific probability density for value x.
 Returns the distribution-specific mean. 
 ";
 
-%feature("docstring")  DistributionTrapezoid::getLeftWidth "double DistributionTrapezoid::getLeftWidth() const 
+%feature("docstring")  DistributionTrapezoid::getLeftWidth "double DistributionTrapezoid::getLeftWidth() const
 ";
 
-%feature("docstring")  DistributionTrapezoid::getMiddleWidth "double DistributionTrapezoid::getMiddleWidth() const 
+%feature("docstring")  DistributionTrapezoid::getMiddleWidth "double DistributionTrapezoid::getMiddleWidth() const
 ";
 
-%feature("docstring")  DistributionTrapezoid::getRightWidth "double DistributionTrapezoid::getRightWidth() const 
+%feature("docstring")  DistributionTrapezoid::getRightWidth "double DistributionTrapezoid::getRightWidth() const
 ";
 
 %feature("docstring")  DistributionTrapezoid::equidistantPoints "std::vector< double > DistributionTrapezoid::equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
@@ -1770,7 +1770,7 @@ theta:
 Angle of  Ellipse rotation in radians 
 ";
 
-%feature("docstring")  Ellipse::clone "Ellipse* Ellipse::clone() const 
+%feature("docstring")  Ellipse::clone "Ellipse* Ellipse::clone() const
 ";
 
 %feature("docstring")  Ellipse::contains "bool Ellipse::contains(double x, double y) const
@@ -1783,19 +1783,19 @@ Returns true if point with given coordinates is inside or on border of the shape
 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. 
 ";
 
-%feature("docstring")  Ellipse::getCenterX "double Ellipse::getCenterX() const 
+%feature("docstring")  Ellipse::getCenterX "double Ellipse::getCenterX() const
 ";
 
-%feature("docstring")  Ellipse::getCenterY "double Ellipse::getCenterY() const 
+%feature("docstring")  Ellipse::getCenterY "double Ellipse::getCenterY() const
 ";
 
-%feature("docstring")  Ellipse::getRadiusX "double Ellipse::getRadiusX() const 
+%feature("docstring")  Ellipse::getRadiusX "double Ellipse::getRadiusX() const
 ";
 
-%feature("docstring")  Ellipse::getRadiusY "double Ellipse::getRadiusY() const 
+%feature("docstring")  Ellipse::getRadiusY "double Ellipse::getRadiusY() const
 ";
 
-%feature("docstring")  Ellipse::getTheta "double Ellipse::getTheta() const 
+%feature("docstring")  Ellipse::getTheta "double Ellipse::getTheta() const
 ";
 
 
@@ -1837,25 +1837,25 @@ C++ includes: FitElement.h
 %feature("docstring")  FitElement::FitElement "FitElement::FitElement(const FitElement &other)
 ";
 
-%feature("docstring")  FitElement::getIndex "size_t FitElement::getIndex() const 
+%feature("docstring")  FitElement::getIndex "size_t FitElement::getIndex() const
 ";
 
-%feature("docstring")  FitElement::getSimulValue "double FitElement::getSimulValue() const 
+%feature("docstring")  FitElement::getSimulValue "double FitElement::getSimulValue() const
 ";
 
-%feature("docstring")  FitElement::getRealValue "double FitElement::getRealValue() const 
+%feature("docstring")  FitElement::getRealValue "double FitElement::getRealValue() const
 ";
 
-%feature("docstring")  FitElement::getWeight "double FitElement::getWeight() const 
+%feature("docstring")  FitElement::getWeight "double FitElement::getWeight() const
 ";
 
-%feature("docstring")  FitElement::getSquaredDifference "double FitElement::getSquaredDifference() const 
+%feature("docstring")  FitElement::getSquaredDifference "double FitElement::getSquaredDifference() const
 ";
 
 %feature("docstring")  FitElement::setSquaredDifference "void FitElement::setSquaredDifference(double value)
 ";
 
-%feature("docstring")  FitElement::getResidual "double FitElement::getResidual() const 
+%feature("docstring")  FitElement::getResidual "double FitElement::getResidual() const
 ";
 
 %feature("docstring")  FitElement::setResidual "void FitElement::setResidual(double value)
@@ -1959,7 +1959,7 @@ C++ includes: FitParameter.h
 %feature("docstring")  FitParameter::~FitParameter "FitParameter::~FitParameter() final
 ";
 
-%feature("docstring")  FitParameter::clone "FitParameter * FitParameter::clone() const 
+%feature("docstring")  FitParameter::clone "FitParameter * FitParameter::clone() const
 ";
 
 %feature("docstring")  FitParameter::setValue "void FitParameter::setValue(double value) final
@@ -1982,7 +1982,7 @@ Adds real parameter to the collection.
 Adds parameters from pool which match given wildcard. 
 ";
 
-%feature("docstring")  FitParameter::patterns "std::vector< std::string > FitParameter::patterns() const 
+%feature("docstring")  FitParameter::patterns "std::vector< std::string > FitParameter::patterns() const
 ";
 
 %feature("docstring")  FitParameter::matchedParameterNames "std::vector< std::string > FitParameter::matchedParameterNames() const
@@ -2018,7 +2018,7 @@ C++ includes: FitStrategyAdjustParameters.h
 %feature("docstring")  FitStrategyAdjustParameters::~FitStrategyAdjustParameters "virtual FitStrategyAdjustParameters::~FitStrategyAdjustParameters()
 ";
 
-%feature("docstring")  FitStrategyAdjustParameters::clone "virtual FitStrategyAdjustParameters* FitStrategyAdjustParameters::clone() const 
+%feature("docstring")  FitStrategyAdjustParameters::clone "virtual FitStrategyAdjustParameters* FitStrategyAdjustParameters::clone() const
 ";
 
 %feature("docstring")  FitStrategyAdjustParameters::execute "void FitStrategyAdjustParameters::execute()
@@ -2056,7 +2056,7 @@ C++ includes: IFitStrategy.h
 %feature("docstring")  FitStrategyDefault::FitStrategyDefault "FitStrategyDefault::FitStrategyDefault()
 ";
 
-%feature("docstring")  FitStrategyDefault::clone "FitStrategyDefault * FitStrategyDefault::clone() const 
+%feature("docstring")  FitStrategyDefault::clone "FitStrategyDefault * FitStrategyDefault::clone() const
 ";
 
 %feature("docstring")  FitStrategyDefault::execute "void FitStrategyDefault::execute()
@@ -2080,7 +2080,7 @@ C++ includes: FitStrategyAdjustParameters.h
 %feature("docstring")  FitStrategyFixParameters::~FitStrategyFixParameters "virtual FitStrategyFixParameters::~FitStrategyFixParameters()
 ";
 
-%feature("docstring")  FitStrategyFixParameters::clone "virtual FitStrategyFixParameters* FitStrategyFixParameters::clone() const 
+%feature("docstring")  FitStrategyFixParameters::clone "virtual FitStrategyFixParameters* FitStrategyFixParameters::clone() const
 ";
 
 %feature("docstring")  FitStrategyFixParameters::clear "virtual void FitStrategyFixParameters::clear()
@@ -2107,7 +2107,7 @@ C++ includes: FitStrategyAdjustParameters.h
 %feature("docstring")  FitStrategyReleaseParameters::~FitStrategyReleaseParameters "virtual FitStrategyReleaseParameters::~FitStrategyReleaseParameters()
 ";
 
-%feature("docstring")  FitStrategyReleaseParameters::clone "virtual FitStrategyReleaseParameters* FitStrategyReleaseParameters::clone() const 
+%feature("docstring")  FitStrategyReleaseParameters::clone "virtual FitStrategyReleaseParameters* FitStrategyReleaseParameters::clone() const
 ";
 
 %feature("docstring")  FitStrategyReleaseParameters::clear "virtual void FitStrategyReleaseParameters::clear()
@@ -2330,13 +2330,13 @@ Returns minimum chi squared value found.
 %feature("docstring")  FitSuite::isInterrupted "bool FitSuite::isInterrupted()
 ";
 
-%feature("docstring")  FitSuite::getRealOutputData "const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const 
+%feature("docstring")  FitSuite::getRealOutputData "const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const
 ";
 
-%feature("docstring")  FitSuite::getSimulationOutputData "const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const 
+%feature("docstring")  FitSuite::getSimulationOutputData "const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const
 ";
 
-%feature("docstring")  FitSuite::getChiSquaredOutputData "const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const 
+%feature("docstring")  FitSuite::getChiSquaredOutputData "const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const
 ";
 
 %feature("docstring")  FitSuite::parametersToString "std::string FitSuite::parametersToString() const
@@ -2398,10 +2398,10 @@ evaluate method for gradients and residuals called directly from the minimizer
 evaluate residual and derivative for given data element 
 ";
 
-%feature("docstring")  FitSuiteGradientFunction::getNCallsTotal "virtual size_t FitSuiteGradientFunction::getNCallsTotal() const 
+%feature("docstring")  FitSuiteGradientFunction::getNCallsTotal "virtual size_t FitSuiteGradientFunction::getNCallsTotal() const
 ";
 
-%feature("docstring")  FitSuiteGradientFunction::getNCallsGradient "virtual size_t FitSuiteGradientFunction::getNCallsGradient() const 
+%feature("docstring")  FitSuiteGradientFunction::getNCallsGradient "virtual size_t FitSuiteGradientFunction::getNCallsGradient() const
 ";
 
 
@@ -2471,7 +2471,7 @@ Runs a single minimization round (called by FitSuiteStrategy)
 Returns reference to the kit with data. 
 ";
 
-%feature("docstring")  FitSuiteImpl::fitObjects "const FitSuiteObjects* FitSuiteImpl::fitObjects() const 
+%feature("docstring")  FitSuiteImpl::fitObjects "const FitSuiteObjects* FitSuiteImpl::fitObjects() const
 ";
 
 %feature("docstring")  FitSuiteImpl::fitParameters "FitParameterSet * FitSuiteImpl::fitParameters()
@@ -2523,10 +2523,10 @@ Sets fit options.
 %feature("docstring")  FitSuiteImpl::resetInterrupt "void FitSuiteImpl::resetInterrupt()
 ";
 
-%feature("docstring")  FitSuiteImpl::isInterrupted "bool FitSuiteImpl::isInterrupted() const 
+%feature("docstring")  FitSuiteImpl::isInterrupted "bool FitSuiteImpl::isInterrupted() const
 ";
 
-%feature("docstring")  FitSuiteImpl::kernel "const FitKernel * FitSuiteImpl::kernel() const 
+%feature("docstring")  FitSuiteImpl::kernel "const FitKernel * FitSuiteImpl::kernel() const
 ";
 
 %feature("docstring")  FitSuiteImpl::setupToString "std::string FitSuiteImpl::setupToString()
@@ -2635,7 +2635,7 @@ index accross all element in  FitElement vector
 clear all data 
 ";
 
-%feature("docstring")  FitSuiteObjects::size "size_t FitSuiteObjects::size() const 
+%feature("docstring")  FitSuiteObjects::size "size_t FitSuiteObjects::size() const
 ";
 
 %feature("docstring")  FitSuiteObjects::begin "iterator FitSuiteObjects::begin()
@@ -2696,10 +2696,10 @@ C++ includes: FitSuiteStrategies.h
 %feature("docstring")  FitSuiteStrategies::minimize "void FitSuiteStrategies::minimize()
 ";
 
-%feature("docstring")  FitSuiteStrategies::currentStrategyIndex "size_t FitSuiteStrategies::currentStrategyIndex() const 
+%feature("docstring")  FitSuiteStrategies::currentStrategyIndex "size_t FitSuiteStrategies::currentStrategyIndex() const
 ";
 
-%feature("docstring")  FitSuiteStrategies::size "size_t FitSuiteStrategies::size() const 
+%feature("docstring")  FitSuiteStrategies::size "size_t FitSuiteStrategies::size() const
 ";
 
 %feature("docstring")  FitSuiteStrategies::clear "void FitSuiteStrategies::clear()
@@ -2765,7 +2765,7 @@ Returns value of first point of axis.
 Returns value of last point of axis. 
 ";
 
-%feature("docstring")  FixedBinAxis::getBinCenter "double FixedBinAxis::getBinCenter(size_t index) const 
+%feature("docstring")  FixedBinAxis::getBinCenter "double FixedBinAxis::getBinCenter(size_t index) const
 ";
 
 %feature("docstring")  FixedBinAxis::findClosestIndex "size_t FixedBinAxis::findClosestIndex(double value) const
@@ -2773,10 +2773,10 @@ Returns value of last point of axis.
 find bin index which is best match for given value 
 ";
 
-%feature("docstring")  FixedBinAxis::getBinCenters "std::vector< double > FixedBinAxis::getBinCenters() const 
+%feature("docstring")  FixedBinAxis::getBinCenters "std::vector< double > FixedBinAxis::getBinCenters() const
 ";
 
-%feature("docstring")  FixedBinAxis::getBinBoundaries "std::vector< double > FixedBinAxis::getBinBoundaries() const 
+%feature("docstring")  FixedBinAxis::getBinBoundaries "std::vector< double > FixedBinAxis::getBinBoundaries() const
 ";
 
 %feature("docstring")  FixedBinAxis::createClippedAxis "FixedBinAxis * FixedBinAxis::createClippedAxis(double left, double right) const
@@ -2870,26 +2870,26 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal
+%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::accept "void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorAnisoPyramid::accept "void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::getLength "double FormFactorAnisoPyramid::getLength() const 
+%feature("docstring")  FormFactorAnisoPyramid::getLength "double FormFactorAnisoPyramid::getLength() const
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::getWidth "double FormFactorAnisoPyramid::getWidth() const 
+%feature("docstring")  FormFactorAnisoPyramid::getWidth "double FormFactorAnisoPyramid::getWidth() const
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::getHeight "double FormFactorAnisoPyramid::getHeight() const 
+%feature("docstring")  FormFactorAnisoPyramid::getHeight "double FormFactorAnisoPyramid::getHeight() const
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::getAlpha "double FormFactorAnisoPyramid::getAlpha() const 
+%feature("docstring")  FormFactorAnisoPyramid::getAlpha "double FormFactorAnisoPyramid::getAlpha() const
 ";
 
 
@@ -2918,31 +2918,31 @@ height:
 height of the box in nanometers 
 ";
 
-%feature("docstring")  FormFactorBox::clone "FormFactorBox* FormFactorBox::clone() const overridefinal
+%feature("docstring")  FormFactorBox::clone "FormFactorBox* FormFactorBox::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorBox::accept "void FormFactorBox::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorBox::accept "void FormFactorBox::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorBox::getLength "double FormFactorBox::getLength() const 
+%feature("docstring")  FormFactorBox::getLength "double FormFactorBox::getLength() const
 ";
 
-%feature("docstring")  FormFactorBox::getHeight "double FormFactorBox::getHeight() const 
+%feature("docstring")  FormFactorBox::getHeight "double FormFactorBox::getHeight() const
 ";
 
-%feature("docstring")  FormFactorBox::getWidth "double FormFactorBox::getWidth() const 
+%feature("docstring")  FormFactorBox::getWidth "double FormFactorBox::getWidth() const
 ";
 
-%feature("docstring")  FormFactorBox::radialExtension "double FormFactorBox::radialExtension() const overridefinal
+%feature("docstring")  FormFactorBox::radialExtension "double FormFactorBox::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorBox::evaluate_for_q "complex_t FormFactorBox::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorBox::evaluate_for_q "complex_t FormFactorBox::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -2965,16 +2965,16 @@ C++ includes: FormFactorCoherentPart.h
 %feature("docstring")  FormFactorCoherentPart::~FormFactorCoherentPart "FormFactorCoherentPart::~FormFactorCoherentPart()
 ";
 
-%feature("docstring")  FormFactorCoherentPart::evaluate "complex_t FormFactorCoherentPart::evaluate(const SimulationElement &sim_element) const 
+%feature("docstring")  FormFactorCoherentPart::evaluate "complex_t FormFactorCoherentPart::evaluate(const SimulationElement &sim_element) const
 ";
 
-%feature("docstring")  FormFactorCoherentPart::evaluatePol "Eigen::Matrix2cd FormFactorCoherentPart::evaluatePol(const SimulationElement &sim_element) const 
+%feature("docstring")  FormFactorCoherentPart::evaluatePol "Eigen::Matrix2cd FormFactorCoherentPart::evaluatePol(const SimulationElement &sim_element) const
 ";
 
 %feature("docstring")  FormFactorCoherentPart::setSpecularInfo "void FormFactorCoherentPart::setSpecularInfo(const IFresnelMap *p_fresnel_map, size_t layer_index)
 ";
 
-%feature("docstring")  FormFactorCoherentPart::radialExtension "double FormFactorCoherentPart::radialExtension() const 
+%feature("docstring")  FormFactorCoherentPart::radialExtension "double FormFactorCoherentPart::radialExtension() const
 ";
 
 
@@ -2992,28 +2992,28 @@ C++ includes: FormFactorCoherentSum.h
 %feature("docstring")  FormFactorCoherentSum::~FormFactorCoherentSum "FormFactorCoherentSum::~FormFactorCoherentSum()
 ";
 
-%feature("docstring")  FormFactorCoherentSum::clone "FormFactorCoherentSum * FormFactorCoherentSum::clone() const 
+%feature("docstring")  FormFactorCoherentSum::clone "FormFactorCoherentSum * FormFactorCoherentSum::clone() const
 ";
 
 %feature("docstring")  FormFactorCoherentSum::addCoherentPart "void FormFactorCoherentSum::addCoherentPart(const FormFactorCoherentPart &part)
 ";
 
-%feature("docstring")  FormFactorCoherentSum::evaluate "complex_t FormFactorCoherentSum::evaluate(const SimulationElement &sim_element) const 
+%feature("docstring")  FormFactorCoherentSum::evaluate "complex_t FormFactorCoherentSum::evaluate(const SimulationElement &sim_element) const
 ";
 
-%feature("docstring")  FormFactorCoherentSum::evaluatePol "Eigen::Matrix2cd FormFactorCoherentSum::evaluatePol(const SimulationElement &sim_element) const 
+%feature("docstring")  FormFactorCoherentSum::evaluatePol "Eigen::Matrix2cd FormFactorCoherentSum::evaluatePol(const SimulationElement &sim_element) const
 ";
 
 %feature("docstring")  FormFactorCoherentSum::setSpecularInfo "void FormFactorCoherentSum::setSpecularInfo(const IFresnelMap *p_fresnel_map, size_t layer_index)
 ";
 
-%feature("docstring")  FormFactorCoherentSum::relativeAbundance "double FormFactorCoherentSum::relativeAbundance() const 
+%feature("docstring")  FormFactorCoherentSum::relativeAbundance "double FormFactorCoherentSum::relativeAbundance() const
 ";
 
 %feature("docstring")  FormFactorCoherentSum::scaleRelativeAbundance "void FormFactorCoherentSum::scaleRelativeAbundance(double total_abundance)
 ";
 
-%feature("docstring")  FormFactorCoherentSum::radialExtension "double FormFactorCoherentSum::radialExtension() const 
+%feature("docstring")  FormFactorCoherentSum::radialExtension "double FormFactorCoherentSum::radialExtension() const
 ";
 
 
@@ -3054,31 +3054,31 @@ alpha:
 angle between the base and the side surface in radians 
 ";
 
-%feature("docstring")  FormFactorCone::clone "FormFactorCone* FormFactorCone::clone() const overridefinal
+%feature("docstring")  FormFactorCone::clone "FormFactorCone* FormFactorCone::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCone::accept "void FormFactorCone::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCone::accept "void FormFactorCone::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCone::getHeight "double FormFactorCone::getHeight() const 
+%feature("docstring")  FormFactorCone::getHeight "double FormFactorCone::getHeight() const
 ";
 
-%feature("docstring")  FormFactorCone::getAlpha "double FormFactorCone::getAlpha() const 
+%feature("docstring")  FormFactorCone::getAlpha "double FormFactorCone::getAlpha() const
 ";
 
-%feature("docstring")  FormFactorCone::getRadius "double FormFactorCone::getRadius() const 
+%feature("docstring")  FormFactorCone::getRadius "double FormFactorCone::getRadius() const
 ";
 
-%feature("docstring")  FormFactorCone::radialExtension "double FormFactorCone::radialExtension() const overridefinal
+%feature("docstring")  FormFactorCone::radialExtension "double FormFactorCone::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCone::evaluate_for_q "complex_t FormFactorCone::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorCone::evaluate_for_q "complex_t FormFactorCone::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3109,23 +3109,23 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorCone6::clone "FormFactorCone6* FormFactorCone6::clone() const overridefinal
+%feature("docstring")  FormFactorCone6::clone "FormFactorCone6* FormFactorCone6::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCone6::accept "void FormFactorCone6::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCone6::accept "void FormFactorCone6::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCone6::getBaseEdge "double FormFactorCone6::getBaseEdge() const 
+%feature("docstring")  FormFactorCone6::getBaseEdge "double FormFactorCone6::getBaseEdge() const
 ";
 
-%feature("docstring")  FormFactorCone6::getHeight "double FormFactorCone6::getHeight() const 
+%feature("docstring")  FormFactorCone6::getHeight "double FormFactorCone6::getHeight() const
 ";
 
-%feature("docstring")  FormFactorCone6::getAlpha "double FormFactorCone6::getAlpha() const 
+%feature("docstring")  FormFactorCone6::getAlpha "double FormFactorCone6::getAlpha() const
 ";
 
 
@@ -3142,45 +3142,45 @@ C++ includes: FormFactorCoreShell.h
 %feature("docstring")  FormFactorCoreShell::FormFactorCoreShell "FormFactorCoreShell::FormFactorCoreShell(IFormFactor *core, IFormFactor *shell)
 ";
 
-%feature("docstring")  FormFactorCoreShell::~FormFactorCoreShell "FormFactorCoreShell::~FormFactorCoreShell() overridefinal
+%feature("docstring")  FormFactorCoreShell::~FormFactorCoreShell "FormFactorCoreShell::~FormFactorCoreShell() override final
 ";
 
-%feature("docstring")  FormFactorCoreShell::clone "FormFactorCoreShell * FormFactorCoreShell::clone() const overridefinal
+%feature("docstring")  FormFactorCoreShell::clone "FormFactorCoreShell * FormFactorCoreShell::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::accept "void FormFactorCoreShell::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCoreShell::accept "void FormFactorCoreShell::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::radialExtension "double FormFactorCoreShell::radialExtension() const overridefinal
+%feature("docstring")  FormFactorCoreShell::radialExtension "double FormFactorCoreShell::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCoreShell::bottomZ "double FormFactorCoreShell::bottomZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorCoreShell::bottomZ "double FormFactorCoreShell::bottomZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::topZ "double FormFactorCoreShell::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorCoreShell::topZ "double FormFactorCoreShell::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::setAmbientMaterial "void FormFactorCoreShell::setAmbientMaterial(Material material) overridefinal
+%feature("docstring")  FormFactorCoreShell::setAmbientMaterial "void FormFactorCoreShell::setAmbientMaterial(Material material) override final
 
 Passes the material in which this particle is embedded. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::evaluate "complex_t FormFactorCoreShell::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorCoreShell::evaluate "complex_t FormFactorCoreShell::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::evaluatePol "Eigen::Matrix2cd FormFactorCoreShell::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorCoreShell::evaluatePol "Eigen::Matrix2cd FormFactorCoreShell::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Calculates and returns a polarized form factor calculation in DWBA. 
 ";
@@ -3197,15 +3197,15 @@ C++ includes: FormFactorCrystal.h
 %feature("docstring")  FormFactorCrystal::FormFactorCrystal "FormFactorCrystal::FormFactorCrystal(const Lattice &lattice, const IFormFactor &basis_form_factor, const IFormFactor &meso_form_factor)
 ";
 
-%feature("docstring")  FormFactorCrystal::~FormFactorCrystal "FormFactorCrystal::~FormFactorCrystal() overridefinal
+%feature("docstring")  FormFactorCrystal::~FormFactorCrystal "FormFactorCrystal::~FormFactorCrystal() override final
 ";
 
-%feature("docstring")  FormFactorCrystal::clone "FormFactorCrystal* FormFactorCrystal::clone() const overridefinal
+%feature("docstring")  FormFactorCrystal::clone "FormFactorCrystal* FormFactorCrystal::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCrystal::accept "void FormFactorCrystal::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCrystal::accept "void FormFactorCrystal::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
@@ -3215,12 +3215,12 @@ Calls the  INodeVisitor's visit method.
 Passes the material in which this particle is embedded. 
 ";
 
-%feature("docstring")  FormFactorCrystal::volume "double FormFactorCrystal::volume() const overridefinal
+%feature("docstring")  FormFactorCrystal::volume "double FormFactorCrystal::volume() const override final
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorCrystal::radialExtension "double FormFactorCrystal::radialExtension() const overridefinal
+%feature("docstring")  FormFactorCrystal::radialExtension "double FormFactorCrystal::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -3230,17 +3230,17 @@ Returns the (approximate in some cases) radial size of the particle of this form
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorCrystal::topZ "double FormFactorCrystal::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorCrystal::topZ "double FormFactorCrystal::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorCrystal::evaluate "complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorCrystal::evaluate "complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorCrystal::evaluatePol "Eigen::Matrix2cd FormFactorCrystal::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorCrystal::evaluatePol "Eigen::Matrix2cd FormFactorCrystal::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -3274,26 +3274,26 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal
+%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::accept "void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCuboctahedron::accept "void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::getLength "double FormFactorCuboctahedron::getLength() const 
+%feature("docstring")  FormFactorCuboctahedron::getLength "double FormFactorCuboctahedron::getLength() const
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::getHeight "double FormFactorCuboctahedron::getHeight() const 
+%feature("docstring")  FormFactorCuboctahedron::getHeight "double FormFactorCuboctahedron::getHeight() const
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::getHeightRatio "double FormFactorCuboctahedron::getHeightRatio() const 
+%feature("docstring")  FormFactorCuboctahedron::getHeightRatio "double FormFactorCuboctahedron::getHeightRatio() const
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::getAlpha "double FormFactorCuboctahedron::getAlpha() const 
+%feature("docstring")  FormFactorCuboctahedron::getAlpha "double FormFactorCuboctahedron::getAlpha() const
 ";
 
 
@@ -3319,28 +3319,28 @@ height:
 height of the cylinder in nanometers 
 ";
 
-%feature("docstring")  FormFactorCylinder::clone "FormFactorCylinder* FormFactorCylinder::clone() const overridefinal
+%feature("docstring")  FormFactorCylinder::clone "FormFactorCylinder* FormFactorCylinder::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCylinder::accept "void FormFactorCylinder::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorCylinder::accept "void FormFactorCylinder::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCylinder::getHeight "double FormFactorCylinder::getHeight() const 
+%feature("docstring")  FormFactorCylinder::getHeight "double FormFactorCylinder::getHeight() const
 ";
 
-%feature("docstring")  FormFactorCylinder::getRadius "double FormFactorCylinder::getRadius() const 
+%feature("docstring")  FormFactorCylinder::getRadius "double FormFactorCylinder::getRadius() const
 ";
 
-%feature("docstring")  FormFactorCylinder::radialExtension "double FormFactorCylinder::radialExtension() const overridefinal
+%feature("docstring")  FormFactorCylinder::radialExtension "double FormFactorCylinder::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCylinder::evaluate_for_q "complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorCylinder::evaluate_for_q "complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3364,22 +3364,22 @@ Anisotropic Debye-Waller factor.
 Isotropic Debye-Waller factor. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::clone "FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal
+%feature("docstring")  FormFactorDecoratorDebyeWaller::clone "FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::accept "void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDecoratorDebyeWaller::accept "void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluate "complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluate "complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorDebyeWaller::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorDebyeWaller::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -3396,15 +3396,15 @@ C++ includes: FormFactorDecoratorMaterial.h
 %feature("docstring")  FormFactorDecoratorMaterial::FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial() overridefinal
+%feature("docstring")  FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial() override final
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::clone "FormFactorDecoratorMaterial * FormFactorDecoratorMaterial::clone() const overridefinal
+%feature("docstring")  FormFactorDecoratorMaterial::clone "FormFactorDecoratorMaterial * FormFactorDecoratorMaterial::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::accept "void FormFactorDecoratorMaterial::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDecoratorMaterial::accept "void FormFactorDecoratorMaterial::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
@@ -3424,7 +3424,7 @@ Sets the ambient material.
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorMaterial::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorMaterial::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorMaterial::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -3441,32 +3441,32 @@ C++ includes: FormFactorDecoratorPositionFactor.h
 %feature("docstring")  FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor "FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(const IFormFactor &form_factor, const kvector_t &position)
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::accept "void FormFactorDecoratorPositionFactor::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::accept "void FormFactorDecoratorPositionFactor::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::bottomZ "double FormFactorDecoratorPositionFactor::bottomZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::bottomZ "double FormFactorDecoratorPositionFactor::bottomZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::topZ "double FormFactorDecoratorPositionFactor::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::topZ "double FormFactorDecoratorPositionFactor::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::evaluate "complex_t FormFactorDecoratorPositionFactor::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::evaluate "complex_t FormFactorDecoratorPositionFactor::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorPositionFactor::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorPositionFactor::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorPositionFactor::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -3485,32 +3485,32 @@ C++ includes: FormFactorDecoratorRotation.h
 Constructor, setting form factor and rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::clone "FormFactorDecoratorRotation * FormFactorDecoratorRotation::clone() const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::clone "FormFactorDecoratorRotation * FormFactorDecoratorRotation::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::accept "void FormFactorDecoratorRotation::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::accept "void FormFactorDecoratorRotation::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::bottomZ "double FormFactorDecoratorRotation::bottomZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::bottomZ "double FormFactorDecoratorRotation::bottomZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::topZ "double FormFactorDecoratorRotation::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::topZ "double FormFactorDecoratorRotation::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::evaluate "complex_t FormFactorDecoratorRotation::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::evaluate "complex_t FormFactorDecoratorRotation::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorRotation::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorDecoratorRotation::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorRotation::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -3543,17 +3543,17 @@ edge:
 length of the edge in nanometers 
 ";
 
-%feature("docstring")  FormFactorDodecahedron::clone "FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal
+%feature("docstring")  FormFactorDodecahedron::clone "FormFactorDodecahedron* FormFactorDodecahedron::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDodecahedron::accept "void FormFactorDodecahedron::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDodecahedron::accept "void FormFactorDodecahedron::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDodecahedron::getEdge "double FormFactorDodecahedron::getEdge() const 
+%feature("docstring")  FormFactorDodecahedron::getEdge "double FormFactorDodecahedron::getEdge() const
 ";
 
 
@@ -3568,22 +3568,22 @@ C++ includes: FormFactorDot.h
 %feature("docstring")  FormFactorDot::FormFactorDot "FormFactorDot::FormFactorDot()
 ";
 
-%feature("docstring")  FormFactorDot::clone "FormFactorDot* FormFactorDot::clone() const overridefinal
+%feature("docstring")  FormFactorDot::clone "FormFactorDot* FormFactorDot::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDot::accept "void FormFactorDot::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorDot::accept "void FormFactorDot::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDot::radialExtension "double FormFactorDot::radialExtension() const overridefinal
+%feature("docstring")  FormFactorDot::radialExtension "double FormFactorDot::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorDot::evaluate_for_q "complex_t FormFactorDot::evaluate_for_q(cvector_t) const overridefinal
+%feature("docstring")  FormFactorDot::evaluate_for_q "complex_t FormFactorDot::evaluate_for_q(cvector_t) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3739,31 +3739,31 @@ height:
 height of the ellipsoidal cylinder in nanometers 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal
+%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::accept "void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorEllipsoidalCylinder::accept "void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::getRadiusX "double FormFactorEllipsoidalCylinder::getRadiusX() const 
+%feature("docstring")  FormFactorEllipsoidalCylinder::getRadiusX "double FormFactorEllipsoidalCylinder::getRadiusX() const
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::getRadiusY "double FormFactorEllipsoidalCylinder::getRadiusY() const 
+%feature("docstring")  FormFactorEllipsoidalCylinder::getRadiusY "double FormFactorEllipsoidalCylinder::getRadiusY() const
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::getHeight "double FormFactorEllipsoidalCylinder::getHeight() const 
+%feature("docstring")  FormFactorEllipsoidalCylinder::getHeight "double FormFactorEllipsoidalCylinder::getHeight() const
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::radialExtension "double FormFactorEllipsoidalCylinder::radialExtension() const overridefinal
+%feature("docstring")  FormFactorEllipsoidalCylinder::radialExtension "double FormFactorEllipsoidalCylinder::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::evaluate_for_q "complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorEllipsoidalCylinder::evaluate_for_q "complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3788,35 +3788,35 @@ radius:
 radius of the sphere in nanometers 
 ";
 
-%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal
+%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorFullSphere::accept "void FormFactorFullSphere::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorFullSphere::accept "void FormFactorFullSphere::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorFullSphere::getRadius "double FormFactorFullSphere::getRadius() const 
+%feature("docstring")  FormFactorFullSphere::getRadius "double FormFactorFullSphere::getRadius() const
 ";
 
-%feature("docstring")  FormFactorFullSphere::radialExtension "double FormFactorFullSphere::radialExtension() const overridefinal
+%feature("docstring")  FormFactorFullSphere::radialExtension "double FormFactorFullSphere::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorFullSphere::bottomZ "double FormFactorFullSphere::bottomZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorFullSphere::bottomZ "double FormFactorFullSphere::bottomZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorFullSphere::topZ "double FormFactorFullSphere::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorFullSphere::topZ "double FormFactorFullSphere::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorFullSphere::evaluate_for_q "complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorFullSphere::evaluate_for_q "complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3844,28 +3844,28 @@ height:
 height of the full spheroid in nanometers 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal
+%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::accept "void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorFullSpheroid::accept "void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::getHeight "double FormFactorFullSpheroid::getHeight() const 
+%feature("docstring")  FormFactorFullSpheroid::getHeight "double FormFactorFullSpheroid::getHeight() const
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::getRadius "double FormFactorFullSpheroid::getRadius() const 
+%feature("docstring")  FormFactorFullSpheroid::getRadius "double FormFactorFullSpheroid::getRadius() const
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::radialExtension "double FormFactorFullSpheroid::radialExtension() const overridefinal
+%feature("docstring")  FormFactorFullSpheroid::radialExtension "double FormFactorFullSpheroid::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::evaluate_for_q "complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorFullSpheroid::evaluate_for_q "complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3885,28 +3885,28 @@ C++ includes: FormFactorGauss.h
 %feature("docstring")  FormFactorGauss::FormFactorGauss "FormFactorGauss::FormFactorGauss(double width, double height)
 ";
 
-%feature("docstring")  FormFactorGauss::clone "FormFactorGauss* FormFactorGauss::clone() const overridefinal
+%feature("docstring")  FormFactorGauss::clone "FormFactorGauss* FormFactorGauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorGauss::accept "void FormFactorGauss::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorGauss::accept "void FormFactorGauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorGauss::getWidth "double FormFactorGauss::getWidth() const 
+%feature("docstring")  FormFactorGauss::getWidth "double FormFactorGauss::getWidth() const
 ";
 
-%feature("docstring")  FormFactorGauss::getHeight "double FormFactorGauss::getHeight() const 
+%feature("docstring")  FormFactorGauss::getHeight "double FormFactorGauss::getHeight() const
 ";
 
-%feature("docstring")  FormFactorGauss::radialExtension "double FormFactorGauss::radialExtension() const overridefinal
+%feature("docstring")  FormFactorGauss::radialExtension "double FormFactorGauss::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorGauss::evaluate_for_q "complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorGauss::evaluate_for_q "complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3940,31 +3940,31 @@ height of the hemi ellipsoid in nanometers
 %feature("docstring")  FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid "virtual FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid()
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal
+%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::accept "void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorHemiEllipsoid::accept "void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::getHeight "double FormFactorHemiEllipsoid::getHeight() const 
+%feature("docstring")  FormFactorHemiEllipsoid::getHeight "double FormFactorHemiEllipsoid::getHeight() const
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::getRadiusX "double FormFactorHemiEllipsoid::getRadiusX() const 
+%feature("docstring")  FormFactorHemiEllipsoid::getRadiusX "double FormFactorHemiEllipsoid::getRadiusX() const
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::getRadiusY "double FormFactorHemiEllipsoid::getRadiusY() const 
+%feature("docstring")  FormFactorHemiEllipsoid::getRadiusY "double FormFactorHemiEllipsoid::getRadiusY() const
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::radialExtension "double FormFactorHemiEllipsoid::radialExtension() const overridefinal
+%feature("docstring")  FormFactorHemiEllipsoid::radialExtension "double FormFactorHemiEllipsoid::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::evaluate_for_q "complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorHemiEllipsoid::evaluate_for_q "complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -3989,17 +3989,17 @@ edge:
 length of the edge in nanometers 
 ";
 
-%feature("docstring")  FormFactorIcosahedron::clone "FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal
+%feature("docstring")  FormFactorIcosahedron::clone "FormFactorIcosahedron* FormFactorIcosahedron::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorIcosahedron::accept "void FormFactorIcosahedron::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorIcosahedron::accept "void FormFactorIcosahedron::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorIcosahedron::getEdge "double FormFactorIcosahedron::getEdge() const 
+%feature("docstring")  FormFactorIcosahedron::getEdge "double FormFactorIcosahedron::getEdge() const
 ";
 
 
@@ -4028,31 +4028,31 @@ height:
 of  Box
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal
+%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::accept "void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongBoxGauss::accept "void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::getLength "double FormFactorLongBoxGauss::getLength() const 
+%feature("docstring")  FormFactorLongBoxGauss::getLength "double FormFactorLongBoxGauss::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::getHeight "double FormFactorLongBoxGauss::getHeight() const 
+%feature("docstring")  FormFactorLongBoxGauss::getHeight "double FormFactorLongBoxGauss::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::getWidth "double FormFactorLongBoxGauss::getWidth() const 
+%feature("docstring")  FormFactorLongBoxGauss::getWidth "double FormFactorLongBoxGauss::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::radialExtension "double FormFactorLongBoxGauss::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongBoxGauss::radialExtension "double FormFactorLongBoxGauss::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::evaluate_for_q "complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongBoxGauss::evaluate_for_q "complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4083,31 +4083,31 @@ height:
 of  Box
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal
+%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::accept "void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongBoxLorentz::accept "void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::getLength "double FormFactorLongBoxLorentz::getLength() const 
+%feature("docstring")  FormFactorLongBoxLorentz::getLength "double FormFactorLongBoxLorentz::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::getHeight "double FormFactorLongBoxLorentz::getHeight() const 
+%feature("docstring")  FormFactorLongBoxLorentz::getHeight "double FormFactorLongBoxLorentz::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::getWidth "double FormFactorLongBoxLorentz::getWidth() const 
+%feature("docstring")  FormFactorLongBoxLorentz::getWidth "double FormFactorLongBoxLorentz::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::radialExtension "double FormFactorLongBoxLorentz::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongBoxLorentz::radialExtension "double FormFactorLongBoxLorentz::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::evaluate_for_q "complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongBoxLorentz::evaluate_for_q "complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4138,31 +4138,31 @@ height:
 of cosine cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::clone "FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal
+%feature("docstring")  FormFactorLongRipple1Gauss::clone "FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::accept "void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongRipple1Gauss::accept "void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::getHeight "double FormFactorLongRipple1Gauss::getHeight() const 
+%feature("docstring")  FormFactorLongRipple1Gauss::getHeight "double FormFactorLongRipple1Gauss::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::getWidth "double FormFactorLongRipple1Gauss::getWidth() const 
+%feature("docstring")  FormFactorLongRipple1Gauss::getWidth "double FormFactorLongRipple1Gauss::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::getLength "double FormFactorLongRipple1Gauss::getLength() const 
+%feature("docstring")  FormFactorLongRipple1Gauss::getLength "double FormFactorLongRipple1Gauss::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::radialExtension "double FormFactorLongRipple1Gauss::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongRipple1Gauss::radialExtension "double FormFactorLongRipple1Gauss::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::evaluate_for_q "complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongRipple1Gauss::evaluate_for_q "complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4193,31 +4193,31 @@ height:
 of cosine cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::clone "FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal
+%feature("docstring")  FormFactorLongRipple1Lorentz::clone "FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::accept "void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongRipple1Lorentz::accept "void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::radialExtension "double FormFactorLongRipple1Lorentz::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongRipple1Lorentz::radialExtension "double FormFactorLongRipple1Lorentz::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::getHeight "double FormFactorLongRipple1Lorentz::getHeight() const 
+%feature("docstring")  FormFactorLongRipple1Lorentz::getHeight "double FormFactorLongRipple1Lorentz::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::getWidth "double FormFactorLongRipple1Lorentz::getWidth() const 
+%feature("docstring")  FormFactorLongRipple1Lorentz::getWidth "double FormFactorLongRipple1Lorentz::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::getLength "double FormFactorLongRipple1Lorentz::getLength() const 
+%feature("docstring")  FormFactorLongRipple1Lorentz::getLength "double FormFactorLongRipple1Lorentz::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::evaluate_for_q "complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongRipple1Lorentz::evaluate_for_q "complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4251,34 +4251,34 @@ asymmetry:
 length of triangular cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::clone "FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal
+%feature("docstring")  FormFactorLongRipple2Gauss::clone "FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::accept "void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongRipple2Gauss::accept "void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::getHeight "double FormFactorLongRipple2Gauss::getHeight() const 
+%feature("docstring")  FormFactorLongRipple2Gauss::getHeight "double FormFactorLongRipple2Gauss::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::getWidth "double FormFactorLongRipple2Gauss::getWidth() const 
+%feature("docstring")  FormFactorLongRipple2Gauss::getWidth "double FormFactorLongRipple2Gauss::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::getLength "double FormFactorLongRipple2Gauss::getLength() const 
+%feature("docstring")  FormFactorLongRipple2Gauss::getLength "double FormFactorLongRipple2Gauss::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::getAsymmetry "double FormFactorLongRipple2Gauss::getAsymmetry() const 
+%feature("docstring")  FormFactorLongRipple2Gauss::getAsymmetry "double FormFactorLongRipple2Gauss::getAsymmetry() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::radialExtension "double FormFactorLongRipple2Gauss::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongRipple2Gauss::radialExtension "double FormFactorLongRipple2Gauss::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::evaluate_for_q "complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongRipple2Gauss::evaluate_for_q "complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4310,34 +4310,34 @@ asymmetry:
 length of triangular cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::clone "FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal
+%feature("docstring")  FormFactorLongRipple2Lorentz::clone "FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::accept "void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLongRipple2Lorentz::accept "void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::getHeight "double FormFactorLongRipple2Lorentz::getHeight() const 
+%feature("docstring")  FormFactorLongRipple2Lorentz::getHeight "double FormFactorLongRipple2Lorentz::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::getWidth "double FormFactorLongRipple2Lorentz::getWidth() const 
+%feature("docstring")  FormFactorLongRipple2Lorentz::getWidth "double FormFactorLongRipple2Lorentz::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::getLength "double FormFactorLongRipple2Lorentz::getLength() const 
+%feature("docstring")  FormFactorLongRipple2Lorentz::getLength "double FormFactorLongRipple2Lorentz::getLength() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::getAsymmetry "double FormFactorLongRipple2Lorentz::getAsymmetry() const 
+%feature("docstring")  FormFactorLongRipple2Lorentz::getAsymmetry "double FormFactorLongRipple2Lorentz::getAsymmetry() const
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::radialExtension "double FormFactorLongRipple2Lorentz::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLongRipple2Lorentz::radialExtension "double FormFactorLongRipple2Lorentz::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::evaluate_for_q "complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLongRipple2Lorentz::evaluate_for_q "complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4357,28 +4357,28 @@ C++ includes: FormFactorLorentz.h
 %feature("docstring")  FormFactorLorentz::FormFactorLorentz "FormFactorLorentz::FormFactorLorentz(double width, double height)
 ";
 
-%feature("docstring")  FormFactorLorentz::clone "FormFactorLorentz* FormFactorLorentz::clone() const overridefinal
+%feature("docstring")  FormFactorLorentz::clone "FormFactorLorentz* FormFactorLorentz::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLorentz::accept "void FormFactorLorentz::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorLorentz::accept "void FormFactorLorentz::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLorentz::getWidth "double FormFactorLorentz::getWidth() const 
+%feature("docstring")  FormFactorLorentz::getWidth "double FormFactorLorentz::getWidth() const
 ";
 
-%feature("docstring")  FormFactorLorentz::getHeight "double FormFactorLorentz::getHeight() const 
+%feature("docstring")  FormFactorLorentz::getHeight "double FormFactorLorentz::getHeight() const
 ";
 
-%feature("docstring")  FormFactorLorentz::radialExtension "double FormFactorLorentz::radialExtension() const overridefinal
+%feature("docstring")  FormFactorLorentz::radialExtension "double FormFactorLorentz::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLorentz::evaluate_for_q "complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorLorentz::evaluate_for_q "complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4395,20 +4395,20 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolygonalPrism::FormFactorPolygonalPrism "FormFactorPolygonalPrism::FormFactorPolygonalPrism(double height)
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::evaluate_for_q "complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorPolygonalPrism::evaluate_for_q "complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const override final
 
 Returns the form factor F(q) of this polyhedron, respecting the offset height/2. 
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::volume "double FormFactorPolygonalPrism::volume() const overridefinal
+%feature("docstring")  FormFactorPolygonalPrism::volume "double FormFactorPolygonalPrism::volume() const override final
 
 Returns the volume of this prism. 
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::getHeight "double FormFactorPolygonalPrism::getHeight() const 
+%feature("docstring")  FormFactorPolygonalPrism::getHeight "double FormFactorPolygonalPrism::getHeight() const
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::radialExtension "double FormFactorPolygonalPrism::radialExtension() const overridefinal
+%feature("docstring")  FormFactorPolygonalPrism::radialExtension "double FormFactorPolygonalPrism::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -4425,7 +4425,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolygonalSurface::FormFactorPolygonalSurface "FormFactorPolygonalSurface::FormFactorPolygonalSurface()
 ";
 
-%feature("docstring")  FormFactorPolygonalSurface::evaluate_for_q "complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorPolygonalSurface::evaluate_for_q "complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4435,7 +4435,7 @@ Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This m
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorPolygonalSurface::radialExtension "double FormFactorPolygonalSurface::radialExtension() const overridefinal
+%feature("docstring")  FormFactorPolygonalSurface::radialExtension "double FormFactorPolygonalSurface::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -4452,7 +4452,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolyhedron::FormFactorPolyhedron "FormFactorPolyhedron::FormFactorPolyhedron()
 ";
 
-%feature("docstring")  FormFactorPolyhedron::evaluate_for_q "complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorPolyhedron::evaluate_for_q "complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const override final
 
 Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. 
 ";
@@ -4462,12 +4462,12 @@ Returns the form factor F(q) of this polyhedron, respecting the offset z_origin.
 Returns the form factor F(q) of this polyhedron, with origin at z=0. 
 ";
 
-%feature("docstring")  FormFactorPolyhedron::volume "double FormFactorPolyhedron::volume() const overridefinal
+%feature("docstring")  FormFactorPolyhedron::volume "double FormFactorPolyhedron::volume() const override final
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorPolyhedron::radialExtension "double FormFactorPolyhedron::radialExtension() const overridefinal
+%feature("docstring")  FormFactorPolyhedron::radialExtension "double FormFactorPolyhedron::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -4500,17 +4500,17 @@ height:
 height in nanometers 
 ";
 
-%feature("docstring")  FormFactorPrism3::clone "FormFactorPrism3* FormFactorPrism3::clone() const overridefinal
+%feature("docstring")  FormFactorPrism3::clone "FormFactorPrism3* FormFactorPrism3::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPrism3::accept "void FormFactorPrism3::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorPrism3::accept "void FormFactorPrism3::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorPrism3::getBaseEdge "double FormFactorPrism3::getBaseEdge() const 
+%feature("docstring")  FormFactorPrism3::getBaseEdge "double FormFactorPrism3::getBaseEdge() const
 ";
 
 
@@ -4536,17 +4536,17 @@ height:
 height in nanometers 
 ";
 
-%feature("docstring")  FormFactorPrism6::clone "FormFactorPrism6* FormFactorPrism6::clone() const overridefinal
+%feature("docstring")  FormFactorPrism6::clone "FormFactorPrism6* FormFactorPrism6::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPrism6::accept "void FormFactorPrism6::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorPrism6::accept "void FormFactorPrism6::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorPrism6::getBaseEdge "double FormFactorPrism6::getBaseEdge() const 
+%feature("docstring")  FormFactorPrism6::getBaseEdge "double FormFactorPrism6::getBaseEdge() const
 ";
 
 
@@ -4575,23 +4575,23 @@ alpha:
 dihedral angle between the base and a side face in radians 
 ";
 
-%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const overridefinal
+%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPyramid::accept "void FormFactorPyramid::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorPyramid::accept "void FormFactorPyramid::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorPyramid::getHeight "double FormFactorPyramid::getHeight() const 
+%feature("docstring")  FormFactorPyramid::getHeight "double FormFactorPyramid::getHeight() const
 ";
 
-%feature("docstring")  FormFactorPyramid::getBaseEdge "double FormFactorPyramid::getBaseEdge() const 
+%feature("docstring")  FormFactorPyramid::getBaseEdge "double FormFactorPyramid::getBaseEdge() const
 ";
 
-%feature("docstring")  FormFactorPyramid::getAlpha "double FormFactorPyramid::getAlpha() const 
+%feature("docstring")  FormFactorPyramid::getAlpha "double FormFactorPyramid::getAlpha() const
 ";
 
 
@@ -4620,31 +4620,31 @@ height:
 height of the ripple in nanometers 
 ";
 
-%feature("docstring")  FormFactorRipple1::clone "FormFactorRipple1* FormFactorRipple1::clone() const overridefinal
+%feature("docstring")  FormFactorRipple1::clone "FormFactorRipple1* FormFactorRipple1::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple1::accept "void FormFactorRipple1::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorRipple1::accept "void FormFactorRipple1::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorRipple1::getLength "double FormFactorRipple1::getLength() const 
+%feature("docstring")  FormFactorRipple1::getLength "double FormFactorRipple1::getLength() const
 ";
 
-%feature("docstring")  FormFactorRipple1::getHeight "double FormFactorRipple1::getHeight() const 
+%feature("docstring")  FormFactorRipple1::getHeight "double FormFactorRipple1::getHeight() const
 ";
 
-%feature("docstring")  FormFactorRipple1::getWidth "double FormFactorRipple1::getWidth() const 
+%feature("docstring")  FormFactorRipple1::getWidth "double FormFactorRipple1::getWidth() const
 ";
 
-%feature("docstring")  FormFactorRipple1::radialExtension "double FormFactorRipple1::radialExtension() const overridefinal
+%feature("docstring")  FormFactorRipple1::radialExtension "double FormFactorRipple1::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorRipple1::evaluate_for_q "complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorRipple1::evaluate_for_q "complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4678,34 +4678,34 @@ asymmetry:
 asymmetry length of the triangular profile in nanometers 
 ";
 
-%feature("docstring")  FormFactorRipple2::clone "FormFactorRipple2* FormFactorRipple2::clone() const overridefinal
+%feature("docstring")  FormFactorRipple2::clone "FormFactorRipple2* FormFactorRipple2::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple2::accept "void FormFactorRipple2::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorRipple2::accept "void FormFactorRipple2::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorRipple2::getHeight "double FormFactorRipple2::getHeight() const 
+%feature("docstring")  FormFactorRipple2::getHeight "double FormFactorRipple2::getHeight() const
 ";
 
-%feature("docstring")  FormFactorRipple2::getWidth "double FormFactorRipple2::getWidth() const 
+%feature("docstring")  FormFactorRipple2::getWidth "double FormFactorRipple2::getWidth() const
 ";
 
-%feature("docstring")  FormFactorRipple2::getLength "double FormFactorRipple2::getLength() const 
+%feature("docstring")  FormFactorRipple2::getLength "double FormFactorRipple2::getLength() const
 ";
 
-%feature("docstring")  FormFactorRipple2::getAsymmetry "double FormFactorRipple2::getAsymmetry() const 
+%feature("docstring")  FormFactorRipple2::getAsymmetry "double FormFactorRipple2::getAsymmetry() const
 ";
 
-%feature("docstring")  FormFactorRipple2::radialExtension "double FormFactorRipple2::radialExtension() const overridefinal
+%feature("docstring")  FormFactorRipple2::radialExtension "double FormFactorRipple2::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorRipple2::evaluate_for_q "complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorRipple2::evaluate_for_q "complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4722,22 +4722,22 @@ C++ includes: FormFactorSphereGaussianRadius.h
 %feature("docstring")  FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal
+%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::accept "void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorSphereGaussianRadius::accept "void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::radialExtension "double FormFactorSphereGaussianRadius::radialExtension() const overridefinal
+%feature("docstring")  FormFactorSphereGaussianRadius::radialExtension "double FormFactorSphereGaussianRadius::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::evaluate_for_q "complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorSphereGaussianRadius::evaluate_for_q "complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4754,22 +4754,22 @@ C++ includes: FormFactorSphereLogNormalRadius.h
 %feature("docstring")  FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius "FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples)
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::clone "FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal
+%feature("docstring")  FormFactorSphereLogNormalRadius::clone "FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::accept "void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorSphereLogNormalRadius::accept "void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::radialExtension "double FormFactorSphereLogNormalRadius::radialExtension() const overridefinal
+%feature("docstring")  FormFactorSphereLogNormalRadius::radialExtension "double FormFactorSphereLogNormalRadius::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::evaluate_for_q "complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorSphereLogNormalRadius::evaluate_for_q "complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4786,22 +4786,22 @@ C++ includes: FormFactorSphereUniformRadius.h
 %feature("docstring")  FormFactorSphereUniformRadius::FormFactorSphereUniformRadius "FormFactorSphereUniformRadius::FormFactorSphereUniformRadius(double mean, double full_width)
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::clone "FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal
+%feature("docstring")  FormFactorSphereUniformRadius::clone "FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::accept "void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorSphereUniformRadius::accept "void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::radialExtension "double FormFactorSphereUniformRadius::radialExtension() const overridefinal
+%feature("docstring")  FormFactorSphereUniformRadius::radialExtension "double FormFactorSphereUniformRadius::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::evaluate_for_q "complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorSphereUniformRadius::evaluate_for_q "complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -4832,23 +4832,23 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorTetrahedron::clone "FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal
+%feature("docstring")  FormFactorTetrahedron::clone "FormFactorTetrahedron* FormFactorTetrahedron::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTetrahedron::accept "void FormFactorTetrahedron::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorTetrahedron::accept "void FormFactorTetrahedron::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTetrahedron::getBaseEdge "double FormFactorTetrahedron::getBaseEdge() const 
+%feature("docstring")  FormFactorTetrahedron::getBaseEdge "double FormFactorTetrahedron::getBaseEdge() const
 ";
 
-%feature("docstring")  FormFactorTetrahedron::getHeight "double FormFactorTetrahedron::getHeight() const 
+%feature("docstring")  FormFactorTetrahedron::getHeight "double FormFactorTetrahedron::getHeight() const
 ";
 
-%feature("docstring")  FormFactorTetrahedron::getAlpha "double FormFactorTetrahedron::getAlpha() const 
+%feature("docstring")  FormFactorTetrahedron::getAlpha "double FormFactorTetrahedron::getAlpha() const
 ";
 
 
@@ -4863,17 +4863,17 @@ C++ includes: FormFactorTriangle.h
 %feature("docstring")  FormFactorTriangle::FormFactorTriangle "FormFactorTriangle::FormFactorTriangle(const double base_edge)
 ";
 
-%feature("docstring")  FormFactorTriangle::clone "FormFactorTriangle* FormFactorTriangle::clone() const overridefinal
+%feature("docstring")  FormFactorTriangle::clone "FormFactorTriangle* FormFactorTriangle::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTriangle::accept "void FormFactorTriangle::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorTriangle::accept "void FormFactorTriangle::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTriangle::getBaseEdge "double FormFactorTriangle::getBaseEdge() const 
+%feature("docstring")  FormFactorTriangle::getBaseEdge "double FormFactorTriangle::getBaseEdge() const
 ";
 
 
@@ -4899,20 +4899,20 @@ removed_length:
 removed length from each edge of the cube in nanometers 
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal
+%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::accept "void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorTruncatedCube::accept "void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::getLength "double FormFactorTruncatedCube::getLength() const 
+%feature("docstring")  FormFactorTruncatedCube::getLength "double FormFactorTruncatedCube::getLength() const
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::getRemovedLength "double FormFactorTruncatedCube::getRemovedLength() const 
+%feature("docstring")  FormFactorTruncatedCube::getRemovedLength "double FormFactorTruncatedCube::getRemovedLength() const
 ";
 
 
@@ -4941,31 +4941,31 @@ dh:
 length of cup truncated from the top 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal
+%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::accept "void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorTruncatedSphere::accept "void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::getHeight "double FormFactorTruncatedSphere::getHeight() const 
+%feature("docstring")  FormFactorTruncatedSphere::getHeight "double FormFactorTruncatedSphere::getHeight() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::getRadius "double FormFactorTruncatedSphere::getRadius() const 
+%feature("docstring")  FormFactorTruncatedSphere::getRadius "double FormFactorTruncatedSphere::getRadius() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::getRemovedTop "double FormFactorTruncatedSphere::getRemovedTop() const 
+%feature("docstring")  FormFactorTruncatedSphere::getRemovedTop "double FormFactorTruncatedSphere::getRemovedTop() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::radialExtension "double FormFactorTruncatedSphere::radialExtension() const overridefinal
+%feature("docstring")  FormFactorTruncatedSphere::radialExtension "double FormFactorTruncatedSphere::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::evaluate_for_q "complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorTruncatedSphere::evaluate_for_q "complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const override final
 
 Complex formfactor. 
 ";
@@ -4999,34 +4999,34 @@ dh:
 length of cup truncated from the top 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal
+%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::accept "void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorTruncatedSpheroid::accept "void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::getRadius "double FormFactorTruncatedSpheroid::getRadius() const 
+%feature("docstring")  FormFactorTruncatedSpheroid::getRadius "double FormFactorTruncatedSpheroid::getRadius() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::getHeight "double FormFactorTruncatedSpheroid::getHeight() const 
+%feature("docstring")  FormFactorTruncatedSpheroid::getHeight "double FormFactorTruncatedSpheroid::getHeight() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::getHeightFlattening "double FormFactorTruncatedSpheroid::getHeightFlattening() const 
+%feature("docstring")  FormFactorTruncatedSpheroid::getHeightFlattening "double FormFactorTruncatedSpheroid::getHeightFlattening() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::getRemovedTop "double FormFactorTruncatedSpheroid::getRemovedTop() const 
+%feature("docstring")  FormFactorTruncatedSpheroid::getRemovedTop "double FormFactorTruncatedSpheroid::getRemovedTop() const
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::radialExtension "double FormFactorTruncatedSpheroid::radialExtension() const overridefinal
+%feature("docstring")  FormFactorTruncatedSpheroid::radialExtension "double FormFactorTruncatedSpheroid::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::evaluate_for_q "complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const overridefinal
+%feature("docstring")  FormFactorTruncatedSpheroid::evaluate_for_q "complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const override final
 
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
@@ -5045,30 +5045,30 @@ C++ includes: FormFactorWeighted.h
 %feature("docstring")  FormFactorWeighted::FormFactorWeighted "FormFactorWeighted::FormFactorWeighted()
 ";
 
-%feature("docstring")  FormFactorWeighted::~FormFactorWeighted "FormFactorWeighted::~FormFactorWeighted() overridefinal
+%feature("docstring")  FormFactorWeighted::~FormFactorWeighted "FormFactorWeighted::~FormFactorWeighted() override final
 ";
 
-%feature("docstring")  FormFactorWeighted::clone "FormFactorWeighted * FormFactorWeighted::clone() const overridefinal
+%feature("docstring")  FormFactorWeighted::clone "FormFactorWeighted * FormFactorWeighted::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorWeighted::accept "void FormFactorWeighted::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  FormFactorWeighted::accept "void FormFactorWeighted::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorWeighted::radialExtension "double FormFactorWeighted::radialExtension() const overridefinal
+%feature("docstring")  FormFactorWeighted::radialExtension "double FormFactorWeighted::radialExtension() const override final
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorWeighted::bottomZ "double FormFactorWeighted::bottomZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorWeighted::bottomZ "double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorWeighted::topZ "double FormFactorWeighted::topZ(const IRotation &rotation) const overridefinal
+%feature("docstring")  FormFactorWeighted::topZ "double FormFactorWeighted::topZ(const IRotation &rotation) const override final
 
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
@@ -5076,22 +5076,63 @@ Returns the z-coordinate of the lowest point in this shape after a given rotatio
 %feature("docstring")  FormFactorWeighted::addFormFactor "void FormFactorWeighted::addFormFactor(const IFormFactor &form_factor, double weight=1.0)
 ";
 
-%feature("docstring")  FormFactorWeighted::setAmbientMaterial "void FormFactorWeighted::setAmbientMaterial(Material material) overridefinal
+%feature("docstring")  FormFactorWeighted::setAmbientMaterial "void FormFactorWeighted::setAmbientMaterial(Material material) override final
 
 Passes the material in which this particle is embedded. 
 ";
 
-%feature("docstring")  FormFactorWeighted::evaluate "complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorWeighted::evaluate "complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorWeighted::evaluatePol "Eigen::Matrix2cd FormFactorWeighted::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  FormFactorWeighted::evaluatePol "Eigen::Matrix2cd FormFactorWeighted::evaluatePol(const WavevectorInfo &wavevectors) const override final
 
 Calculates and returns a polarized form factor calculation in DWBA. 
 ";
 
 
+// File: classFourierTransform.xml
+%feature("docstring") FourierTransform "
+
+Fourier transform of vectors (in 1D or 2D) using Fast Fourier Transform (fftw package).
+
+Usage: std::vector<double> signal, result;  FourierTransform ft; ft.fft(signal, result)
+
+Given code rely on code from Jeremy Fix page, http://jeremy.fix.free.fr/spip.php?article15, see also \"Efficient convolution using the Fast Fourier Transform, Application in C++\" by Jeremy Fix, May 30, 2011
+
+C++ includes: FourierTransform.h
+";
+
+%feature("docstring")  FourierTransform::FourierTransform "FourierTransform::FourierTransform()
+";
+
+%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double1d_t &source, double1d_t &result)
+
+FT in 1D. 
+";
+
+%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double1d_t &result)
+
+Shift low frequency to the center of 1D FT array. 
+";
+
+%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double2d_t &source, double2d_t &result)
+
+FT in 2D. 
+";
+
+%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double2d_t &result)
+
+Shift low frequency to the center of 2D FT array. 
+";
+
+%feature("docstring")  FourierTransform::init "void FourierTransform::init(int h_src, int w_src)
+
+prepare arrays for 2D Fourier Transformation (FT) of the given vector 
+";
+
+
 // File: classFTDecayFunction1DCauchy.xml
 %feature("docstring") FTDecayFunction1DCauchy "
 
@@ -5103,7 +5144,7 @@ C++ includes: FTDecayFunctions.h
 %feature("docstring")  FTDecayFunction1DCauchy::FTDecayFunction1DCauchy "FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DCauchy::clone "FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const 
+%feature("docstring")  FTDecayFunction1DCauchy::clone "FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction1DCauchy::accept "void FTDecayFunction1DCauchy::accept(INodeVisitor *visitor) const final
@@ -5126,7 +5167,7 @@ C++ includes: FTDecayFunctions.h
 %feature("docstring")  FTDecayFunction1DGauss::FTDecayFunction1DGauss "FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DGauss::clone "FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const 
+%feature("docstring")  FTDecayFunction1DGauss::clone "FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction1DGauss::accept "void FTDecayFunction1DGauss::accept(INodeVisitor *visitor) const final
@@ -5149,7 +5190,7 @@ C++ includes: FTDecayFunctions.h
 %feature("docstring")  FTDecayFunction1DTriangle::FTDecayFunction1DTriangle "FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DTriangle::clone "FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const 
+%feature("docstring")  FTDecayFunction1DTriangle::clone "FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction1DTriangle::accept "void FTDecayFunction1DTriangle::accept(INodeVisitor *visitor) const final
@@ -5183,7 +5224,7 @@ eta:
 parameter [0,1] to balance between Cauchy (eta=0.0) and Gauss (eta=1.0) 
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::clone "FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const 
+%feature("docstring")  FTDecayFunction1DVoigt::clone "FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction1DVoigt::accept "void FTDecayFunction1DVoigt::accept(INodeVisitor *visitor) const final
@@ -5194,7 +5235,7 @@ Calls the  INodeVisitor's visit method.
 %feature("docstring")  FTDecayFunction1DVoigt::evaluate "double FTDecayFunction1DVoigt::evaluate(double q) const final
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::eEta "double FTDecayFunction1DVoigt::eEta() const 
+%feature("docstring")  FTDecayFunction1DVoigt::eEta "double FTDecayFunction1DVoigt::eEta() const
 ";
 
 
@@ -5209,7 +5250,7 @@ C++ includes: FTDecayFunctions.h
 %feature("docstring")  FTDecayFunction2DCauchy::FTDecayFunction2DCauchy "FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma=0)
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::clone "FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const 
+%feature("docstring")  FTDecayFunction2DCauchy::clone "FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction2DCauchy::accept "void FTDecayFunction2DCauchy::accept(INodeVisitor *visitor) const final
@@ -5234,7 +5275,7 @@ C++ includes: FTDecayFunctions.h
 %feature("docstring")  FTDecayFunction2DGauss::FTDecayFunction2DGauss "FTDecayFunction2DGauss::FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma=0)
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::clone "FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const 
+%feature("docstring")  FTDecayFunction2DGauss::clone "FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction2DGauss::accept "void FTDecayFunction2DGauss::accept(INodeVisitor *visitor) const final
@@ -5276,7 +5317,7 @@ gamma:
 distribution orientation with respect to the first lattice vector in radians 
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::clone "FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const 
+%feature("docstring")  FTDecayFunction2DVoigt::clone "FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
 ";
 
 %feature("docstring")  FTDecayFunction2DVoigt::accept "void FTDecayFunction2DVoigt::accept(INodeVisitor *visitor) const final
@@ -5289,7 +5330,7 @@ Calls the  INodeVisitor's visit method.
 evaluate Fourier transformed decay function for q in X,Y coordinates 
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::eta "double FTDecayFunction2DVoigt::eta() const 
+%feature("docstring")  FTDecayFunction2DVoigt::eta "double FTDecayFunction2DVoigt::eta() const
 ";
 
 
@@ -5453,7 +5494,7 @@ Calls the  INodeVisitor's visit method.
 Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::eta "double FTDistribution1DVoigt::eta() const 
+%feature("docstring")  FTDistribution1DVoigt::eta "double FTDistribution1DVoigt::eta() const
 ";
 
 
@@ -5610,7 +5651,7 @@ Calls the  INodeVisitor's visit method.
 evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real space) is assumed to be normalized: total integral is equal to 1 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::eta "double FTDistribution2DVoigt::eta() const 
+%feature("docstring")  FTDistribution2DVoigt::eta "double FTDistribution2DVoigt::eta() const
 ";
 
 
@@ -5706,7 +5747,7 @@ Calculate scattering intensity for each  SimulationElement returns false if noth
 %feature("docstring")  HexagonalLattice::HexagonalLattice "HexagonalLattice::HexagonalLattice(double length, double rotation_angle=0.0)
 ";
 
-%feature("docstring")  HexagonalLattice::clone "HexagonalLattice * HexagonalLattice::clone() const 
+%feature("docstring")  HexagonalLattice::clone "HexagonalLattice * HexagonalLattice::clone() const
 ";
 
 %feature("docstring")  HexagonalLattice::accept "void HexagonalLattice::accept(INodeVisitor *visitor) const final
@@ -5714,16 +5755,16 @@ Calculate scattering intensity for each  SimulationElement returns false if noth
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  HexagonalLattice::length1 "virtual double HexagonalLattice::length1() const 
+%feature("docstring")  HexagonalLattice::length1 "virtual double HexagonalLattice::length1() const
 ";
 
-%feature("docstring")  HexagonalLattice::length2 "virtual double HexagonalLattice::length2() const 
+%feature("docstring")  HexagonalLattice::length2 "virtual double HexagonalLattice::length2() const
 ";
 
-%feature("docstring")  HexagonalLattice::latticeAngle "double HexagonalLattice::latticeAngle() const 
+%feature("docstring")  HexagonalLattice::latticeAngle "double HexagonalLattice::latticeAngle() const
 ";
 
-%feature("docstring")  HexagonalLattice::unitCellArea "double HexagonalLattice::unitCellArea() const 
+%feature("docstring")  HexagonalLattice::unitCellArea "double HexagonalLattice::unitCellArea() const
 ";
 
 
@@ -5738,7 +5779,7 @@ C++ includes: ParaCrystalBuilder.h
 %feature("docstring")  HexParaCrystalBuilder::HexParaCrystalBuilder "HexParaCrystalBuilder::HexParaCrystalBuilder()
 ";
 
-%feature("docstring")  HexParaCrystalBuilder::buildSample "MultiLayer * HexParaCrystalBuilder::buildSample() const 
+%feature("docstring")  HexParaCrystalBuilder::buildSample "MultiLayer * HexParaCrystalBuilder::buildSample() const
 ";
 
 
@@ -5998,7 +6039,7 @@ C++ includes: HomogeneousMultilayerBuilder.h
 %feature("docstring")  HomogeneousMultilayerBuilder::HomogeneousMultilayerBuilder "HomogeneousMultilayerBuilder::HomogeneousMultilayerBuilder()
 ";
 
-%feature("docstring")  HomogeneousMultilayerBuilder::buildSample "MultiLayer * HomogeneousMultilayerBuilder::buildSample() const 
+%feature("docstring")  HomogeneousMultilayerBuilder::buildSample "MultiLayer * HomogeneousMultilayerBuilder::buildSample() const
 ";
 
 
@@ -6028,7 +6069,7 @@ y:
 The value at which it crosses y-axes 
 ";
 
-%feature("docstring")  HorizontalLine::clone "HorizontalLine* HorizontalLine::clone() const 
+%feature("docstring")  HorizontalLine::clone "HorizontalLine* HorizontalLine::clone() const
 ";
 
 %feature("docstring")  HorizontalLine::contains "bool HorizontalLine::contains(double x, double y) const
@@ -6041,7 +6082,7 @@ Returns true if point with given coordinates is inside or on border of the shape
 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). 
 ";
 
-%feature("docstring")  HorizontalLine::getYpos "double HorizontalLine::getYpos() const 
+%feature("docstring")  HorizontalLine::getYpos "double HorizontalLine::getYpos() const
 ";
 
 
@@ -6071,7 +6112,7 @@ Returns a clone of this  ISample object.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  IAbstractParticle::abundance "double IAbstractParticle::abundance() const 
+%feature("docstring")  IAbstractParticle::abundance "double IAbstractParticle::abundance() const
 ";
 
 %feature("docstring")  IAbstractParticle::setAbundance "void IAbstractParticle::setAbundance(double abundance)
@@ -6167,10 +6208,10 @@ find bin index which is best match for given value
 find index of bin that contains the given value returns  size() when value is not found 
 ";
 
-%feature("docstring")  IAxis::getBinCenters "std::vector< double > IAxis::getBinCenters() const 
+%feature("docstring")  IAxis::getBinCenters "std::vector< double > IAxis::getBinCenters() const
 ";
 
-%feature("docstring")  IAxis::getBinBoundaries "std::vector< double > IAxis::getBinBoundaries() const 
+%feature("docstring")  IAxis::getBinBoundaries "std::vector< double > IAxis::getBinBoundaries() const
 ";
 
 %feature("docstring")  IAxis::createClippedAxis "IAxis * IAxis::createClippedAxis(double left, double right) const
@@ -6341,10 +6382,10 @@ C++ includes: IComputation.h
 %feature("docstring")  IComputation::run "void IComputation::run()
 ";
 
-%feature("docstring")  IComputation::isCompleted "bool IComputation::isCompleted() const 
+%feature("docstring")  IComputation::isCompleted "bool IComputation::isCompleted() const
 ";
 
-%feature("docstring")  IComputation::errorMessage "std::string IComputation::errorMessage() const 
+%feature("docstring")  IComputation::errorMessage "std::string IComputation::errorMessage() const
 ";
 
 
@@ -6443,7 +6484,7 @@ Inits detector with the beam settings.
 %feature("docstring")  IDetector::addAxis "void IDetector::addAxis(const IAxis &axis)
 ";
 
-%feature("docstring")  IDetector::getAxis "const IAxis & IDetector::getAxis(size_t index) const 
+%feature("docstring")  IDetector::getAxis "const IAxis & IDetector::getAxis(size_t index) const
 ";
 
 %feature("docstring")  IDetector::dimension "size_t IDetector::dimension() const
@@ -6726,7 +6767,7 @@ C++ includes: IFactory.h
 Creates object by calling creation function corresponded to given identifier. 
 ";
 
-%feature("docstring")  IFactory::create "std::unique_ptr<AbstractProduct> IFactory< Key, AbstractProduct >::create(const Key &item_key) const 
+%feature("docstring")  IFactory::create "std::unique_ptr<AbstractProduct> IFactory< Key, AbstractProduct >::create(const Key &item_key) const
 ";
 
 %feature("docstring")  IFactory::registerItem "bool IFactory< Key, AbstractProduct >::registerItem(const Key &item_key, CreateItemCallback CreateFn, const std::string &itemDescription=\"\")
@@ -6734,7 +6775,7 @@ Creates object by calling creation function corresponded to given identifier.
 Registers object's creation function and store object description. 
 ";
 
-%feature("docstring")  IFactory::contains "bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const 
+%feature("docstring")  IFactory::contains "bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const
 ";
 
 %feature("docstring")  IFactory::~IFactory "IFactory< Key, AbstractProduct >::~IFactory()
@@ -6745,10 +6786,10 @@ Registers object's creation function and store object description.
 Returns number of registered objects. 
 ";
 
-%feature("docstring")  IFactory::begin "const_iterator IFactory< Key, AbstractProduct >::begin() const 
+%feature("docstring")  IFactory::begin "const_iterator IFactory< Key, AbstractProduct >::begin() const
 ";
 
-%feature("docstring")  IFactory::end "const_iterator IFactory< Key, AbstractProduct >::end() const 
+%feature("docstring")  IFactory::end "const_iterator IFactory< Key, AbstractProduct >::end() const
 ";
 
 
@@ -6815,7 +6856,7 @@ C++ includes: FitSuiteFunctions.h
 %feature("docstring")  IFitSuiteFunction::init "virtual void IFitSuiteFunction::init(FitSuiteImpl *fit_suite)
 ";
 
-%feature("docstring")  IFitSuiteFunction::getNCalls "virtual size_t IFitSuiteFunction::getNCalls() const 
+%feature("docstring")  IFitSuiteFunction::getNCalls "virtual size_t IFitSuiteFunction::getNCalls() const
 ";
 
 
@@ -6842,7 +6883,7 @@ C++ includes: IFootprintFactor.h
 %feature("docstring")  IFootprintFactor::setWidthRatio "void IFootprintFactor::setWidthRatio(double width_ratio)
 ";
 
-%feature("docstring")  IFootprintFactor::widthRatio "double IFootprintFactor::widthRatio() const 
+%feature("docstring")  IFootprintFactor::widthRatio "double IFootprintFactor::widthRatio() const
 ";
 
 %feature("docstring")  IFootprintFactor::calculate "virtual double IFootprintFactor::calculate(double alpha) const =0
@@ -7089,7 +7130,7 @@ half-width of the distribution in nanometers
 %feature("docstring")  IFTDecayFunction1D::evaluate "virtual double IFTDecayFunction1D::evaluate(double q) const =0
 ";
 
-%feature("docstring")  IFTDecayFunction1D::decayLength "double IFTDecayFunction1D::decayLength() const 
+%feature("docstring")  IFTDecayFunction1D::decayLength "double IFTDecayFunction1D::decayLength() const
 ";
 
 
@@ -7187,7 +7228,7 @@ Returns Fourier transform of this distribution; is a decay function starting at
 %feature("docstring")  IFTDistribution1D::setOmega "void IFTDistribution1D::setOmega(double omega)
 ";
 
-%feature("docstring")  IFTDistribution1D::omega "double IFTDistribution1D::omega() const 
+%feature("docstring")  IFTDistribution1D::omega "double IFTDistribution1D::omega() const
 ";
 
 
@@ -7222,16 +7263,16 @@ angle in direct space between first lattice vector and x-axis of the distributio
 %feature("docstring")  IFTDistribution2D::setGamma "void IFTDistribution2D::setGamma(double gamma)
 ";
 
-%feature("docstring")  IFTDistribution2D::gamma "double IFTDistribution2D::gamma() const 
+%feature("docstring")  IFTDistribution2D::gamma "double IFTDistribution2D::gamma() const
 ";
 
-%feature("docstring")  IFTDistribution2D::delta "double IFTDistribution2D::delta() const 
+%feature("docstring")  IFTDistribution2D::delta "double IFTDistribution2D::delta() const
 ";
 
-%feature("docstring")  IFTDistribution2D::omegaX "double IFTDistribution2D::omegaX() const 
+%feature("docstring")  IFTDistribution2D::omegaX "double IFTDistribution2D::omegaX() const
 ";
 
-%feature("docstring")  IFTDistribution2D::omegaY "double IFTDistribution2D::omegaY() const 
+%feature("docstring")  IFTDistribution2D::omegaY "double IFTDistribution2D::omegaY() const
 ";
 
 %feature("docstring")  IFTDistribution2D::evaluate "virtual double IFTDistribution2D::evaluate(double qx, double qy) const =0
@@ -7397,7 +7438,7 @@ The global bin index
 The value accumulated by the bin (integral) 
 ";
 
-%feature("docstring")  IHistogram::getData "const OutputData<CumulativeValue>& IHistogram::getData() const 
+%feature("docstring")  IHistogram::getData "const OutputData<CumulativeValue>& IHistogram::getData() const
 ";
 
 %feature("docstring")  IHistogram::getData "OutputData<CumulativeValue>& IHistogram::getData()
@@ -7683,10 +7724,10 @@ Returns z-part of the two wavevector eigenmodes.
 Scalar value getters; these throw errors by default as they should only be used when the derived object is really scalar 
 ";
 
-%feature("docstring")  ILayerRTCoefficients::getScalarR "virtual complex_t ILayerRTCoefficients::getScalarR() const 
+%feature("docstring")  ILayerRTCoefficients::getScalarR "virtual complex_t ILayerRTCoefficients::getScalarR() const
 ";
 
-%feature("docstring")  ILayerRTCoefficients::getScalarKz "virtual complex_t ILayerRTCoefficients::getScalarKz() const 
+%feature("docstring")  ILayerRTCoefficients::getScalarKz "virtual complex_t ILayerRTCoefficients::getScalarKz() const
 ";
 
 
@@ -7791,7 +7832,7 @@ C++ includes: INamed.h
 %feature("docstring")  INamed::~INamed "INamed::~INamed()
 ";
 
-%feature("docstring")  INamed::getName "std::string INamed::getName() const 
+%feature("docstring")  INamed::getName "std::string INamed::getName() const
 ";
 
 
@@ -7806,7 +7847,7 @@ C++ includes: InfinitePlane.h
 %feature("docstring")  InfinitePlane::InfinitePlane "InfinitePlane::InfinitePlane()
 ";
 
-%feature("docstring")  InfinitePlane::clone "InfinitePlane* InfinitePlane::clone() const 
+%feature("docstring")  InfinitePlane::clone "InfinitePlane* InfinitePlane::clone() const
 ";
 
 %feature("docstring")  InfinitePlane::contains "bool InfinitePlane::contains(double, double) const
@@ -7855,7 +7896,7 @@ Returns a vector of children (const).
 %feature("docstring")  INode::setParent "void INode::setParent(const INode *newParent)
 ";
 
-%feature("docstring")  INode::parent "const INode * INode::parent() const 
+%feature("docstring")  INode::parent "const INode * INode::parent() const
 ";
 
 %feature("docstring")  INode::parent "INode * INode::parent()
@@ -7871,11 +7912,16 @@ Returns copyNumber of child, which takes into account existence of children with
 Returns display name, composed from the name of node and it's copy number. 
 ";
 
-%feature("docstring")  INode::createParameterTree "ParameterPool * INode::createParameterTree() const
+%feature("docstring")  INode::createParameterTree "ParameterPool* INode::createParameterTree() const override
 
 Creates new parameter pool, with all local parameters and those of its children. 
 ";
 
+%feature("docstring")  INode::createParameterTree "ParameterPool * INode::createParameterTree(const INode *node) const
+
+Creates new parameter pool, with all local parameters and those of its children. Parameter names are derived relatively to the given  node. 
+";
+
 
 // File: classINodeVisitor.xml
 %feature("docstring") INodeVisitor "
@@ -8271,7 +8317,7 @@ Calls the  INodeVisitor's visit method.
 %feature("docstring")  Instrument::getBeam "Beam& Instrument::getBeam()
 ";
 
-%feature("docstring")  Instrument::getBeam "const Beam& Instrument::getBeam() const 
+%feature("docstring")  Instrument::getBeam "const Beam& Instrument::getBeam() const
 ";
 
 %feature("docstring")  Instrument::setBeam "void Instrument::setBeam(const Beam &beam)
@@ -8305,7 +8351,7 @@ Returns the detector data.
 %feature("docstring")  Instrument::getDetector "IDetector * Instrument::getDetector()
 ";
 
-%feature("docstring")  Instrument::getDetectorMask "const DetectorMask * Instrument::getDetectorMask() const 
+%feature("docstring")  Instrument::getDetectorMask "const DetectorMask * Instrument::getDetectorMask() const
 ";
 
 %feature("docstring")  Instrument::getDetectorAxis "const IAxis & Instrument::getDetectorAxis(size_t index) const
@@ -8465,10 +8511,10 @@ C++ includes: IIntensityFunction.h
 %feature("docstring")  IntensityFunctionLog::~IntensityFunctionLog "virtual IntensityFunctionLog::~IntensityFunctionLog()
 ";
 
-%feature("docstring")  IntensityFunctionLog::clone "virtual IntensityFunctionLog* IntensityFunctionLog::clone() const 
+%feature("docstring")  IntensityFunctionLog::clone "virtual IntensityFunctionLog* IntensityFunctionLog::clone() const
 ";
 
-%feature("docstring")  IntensityFunctionLog::evaluate "double IntensityFunctionLog::evaluate(double value) const 
+%feature("docstring")  IntensityFunctionLog::evaluate "double IntensityFunctionLog::evaluate(double value) const
 ";
 
 
@@ -8483,10 +8529,10 @@ C++ includes: IIntensityFunction.h
 %feature("docstring")  IntensityFunctionSqrt::~IntensityFunctionSqrt "virtual IntensityFunctionSqrt::~IntensityFunctionSqrt()
 ";
 
-%feature("docstring")  IntensityFunctionSqrt::clone "virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const 
+%feature("docstring")  IntensityFunctionSqrt::clone "virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const
 ";
 
-%feature("docstring")  IntensityFunctionSqrt::evaluate "double IntensityFunctionSqrt::evaluate(double value) const 
+%feature("docstring")  IntensityFunctionSqrt::evaluate "double IntensityFunctionSqrt::evaluate(double value) const
 ";
 
 
@@ -8504,7 +8550,7 @@ C++ includes: IIntensityNormalizer.h
 %feature("docstring")  IntensityNormalizer::~IntensityNormalizer "virtual IntensityNormalizer::~IntensityNormalizer()
 ";
 
-%feature("docstring")  IntensityNormalizer::clone "IntensityNormalizer * IntensityNormalizer::clone() const 
+%feature("docstring")  IntensityNormalizer::clone "IntensityNormalizer * IntensityNormalizer::clone() const
 ";
 
 %feature("docstring")  IntensityNormalizer::accept "void IntensityNormalizer::accept(INodeVisitor *visitor) const
@@ -8512,7 +8558,7 @@ C++ includes: IIntensityNormalizer.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  IntensityNormalizer::createNormalizedData "OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const 
+%feature("docstring")  IntensityNormalizer::createNormalizedData "OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const
 ";
 
 %feature("docstring")  IntensityNormalizer::apply "void IntensityNormalizer::apply(OutputData< double > &data) const final
@@ -8594,7 +8640,7 @@ decay:
 one-dimensional decay function in reciprocal space 
 ";
 
-%feature("docstring")  InterferenceFunction1DLattice::getLatticeParameters "Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const 
+%feature("docstring")  InterferenceFunction1DLattice::getLatticeParameters "Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const
 ";
 
 %feature("docstring")  InterferenceFunction1DLattice::evaluate "double InterferenceFunction1DLattice::evaluate(const kvector_t q) const final
@@ -8671,10 +8717,10 @@ Evaluates the interference function for a given wavevector transfer (only the re
 %feature("docstring")  InterferenceFunction2DLattice::setIntegrationOverXi "void InterferenceFunction2DLattice::setIntegrationOverXi(bool integrate_xi)
 ";
 
-%feature("docstring")  InterferenceFunction2DLattice::integrationOverXi "bool InterferenceFunction2DLattice::integrationOverXi() const 
+%feature("docstring")  InterferenceFunction2DLattice::integrationOverXi "bool InterferenceFunction2DLattice::integrationOverXi() const
 ";
 
-%feature("docstring")  InterferenceFunction2DLattice::lattice "const Lattice2D & InterferenceFunction2DLattice::lattice() const 
+%feature("docstring")  InterferenceFunction2DLattice::lattice "const Lattice2D & InterferenceFunction2DLattice::lattice() const
 ";
 
 %feature("docstring")  InterferenceFunction2DLattice::getParticleDensity "double InterferenceFunction2DLattice::getParticleDensity() const final
@@ -8687,7 +8733,7 @@ Returns the particle density associated with this 2d lattice.
 Returns a vector of children (const). 
 ";
 
-%feature("docstring")  InterferenceFunction2DLattice::onChange "void InterferenceFunction2DLattice::onChange() overridefinal
+%feature("docstring")  InterferenceFunction2DLattice::onChange "void InterferenceFunction2DLattice::onChange() override final
 
 Action to be taken in inherited class when a parameter has changed. 
 ";
@@ -8784,7 +8830,7 @@ the damping (coherence) length of the paracrystal in nanometers
 Evaluates the interference function for a given wavevector transfer (only the real x and y components are relevant) 
 ";
 
-%feature("docstring")  InterferenceFunction2DParaCrystal::domainSizes "std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const 
+%feature("docstring")  InterferenceFunction2DParaCrystal::domainSizes "std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const
 ";
 
 %feature("docstring")  InterferenceFunction2DParaCrystal::setIntegrationOverXi "void InterferenceFunction2DParaCrystal::setIntegrationOverXi(bool integrate_xi)
@@ -8798,13 +8844,13 @@ integrate_xi:
 integration flag 
 ";
 
-%feature("docstring")  InterferenceFunction2DParaCrystal::integrationOverXi "bool InterferenceFunction2DParaCrystal::integrationOverXi() const 
+%feature("docstring")  InterferenceFunction2DParaCrystal::integrationOverXi "bool InterferenceFunction2DParaCrystal::integrationOverXi() const
 ";
 
-%feature("docstring")  InterferenceFunction2DParaCrystal::dampingLength "double InterferenceFunction2DParaCrystal::dampingLength() const 
+%feature("docstring")  InterferenceFunction2DParaCrystal::dampingLength "double InterferenceFunction2DParaCrystal::dampingLength() const
 ";
 
-%feature("docstring")  InterferenceFunction2DParaCrystal::lattice "const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const 
+%feature("docstring")  InterferenceFunction2DParaCrystal::lattice "const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const
 ";
 
 %feature("docstring")  InterferenceFunction2DParaCrystal::getParticleDensity "double InterferenceFunction2DParaCrystal::getParticleDensity() const final
@@ -8904,7 +8950,7 @@ size:
 size of coherence domain along the lattice main axis in nanometers 
 ";
 
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::domainSize "double InterferenceFunctionRadialParaCrystal::domainSize() const 
+%feature("docstring")  InterferenceFunctionRadialParaCrystal::domainSize "double InterferenceFunctionRadialParaCrystal::domainSize() const
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::evaluate "double InterferenceFunctionRadialParaCrystal::evaluate(const kvector_t q) const final
@@ -8912,7 +8958,7 @@ size of coherence domain along the lattice main axis in nanometers
 Evaluates the interference function for a given wavevector transfer (only the real x and y components are relevant) 
 ";
 
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::FTPDF "complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const 
+%feature("docstring")  InterferenceFunctionRadialParaCrystal::FTPDF "complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::setProbabilityDistribution "void InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(const IFTDistribution1D &pdf)
@@ -8926,10 +8972,10 @@ pdf:
 probability distribution (Fourier transform of probability density) 
 ";
 
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::peakDistance "double InterferenceFunctionRadialParaCrystal::peakDistance() const 
+%feature("docstring")  InterferenceFunctionRadialParaCrystal::peakDistance "double InterferenceFunctionRadialParaCrystal::peakDistance() const
 ";
 
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::dampingLength "double InterferenceFunctionRadialParaCrystal::dampingLength() const 
+%feature("docstring")  InterferenceFunctionRadialParaCrystal::dampingLength "double InterferenceFunctionRadialParaCrystal::dampingLength() const
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::getChildren "std::vector< const INode * > InterferenceFunctionRadialParaCrystal::getChildren() const override
@@ -9032,7 +9078,7 @@ C++ includes: IParameter.h
 Returns true if wrapped parameter was not initialized with proper real value. 
 ";
 
-%feature("docstring")  IParameter::getData "T& IParameter< T >::getData() const 
+%feature("docstring")  IParameter::getData "T& IParameter< T >::getData() const
 ";
 
 %feature("docstring")  IParameter::setData "void IParameter< T >::setData(T &data)
@@ -9169,7 +9215,7 @@ z:
 z-coordinate in nanometers 
 ";
 
-%feature("docstring")  IParticle::translate "void IParticle::translate(kvector_t translation) overridefinal
+%feature("docstring")  IParticle::translate "void IParticle::translate(kvector_t translation) override final
 
 Translates the particle. 
 ";
@@ -9184,7 +9230,7 @@ Returns rotation object.
 Sets transformation. 
 ";
 
-%feature("docstring")  IParticle::rotate "void IParticle::rotate(const IRotation &rotation) overridefinal
+%feature("docstring")  IParticle::rotate "void IParticle::rotate(const IRotation &rotation) override final
 
 Rotates the particle. 
 ";
@@ -9248,13 +9294,13 @@ Templated object registry.
 C++ includes: IRegistry.h
 ";
 
-%feature("docstring")  IRegistry::getItem "const ValueType* IRegistry< ValueType >::getItem(const std::string &key) const 
+%feature("docstring")  IRegistry::getItem "const ValueType* IRegistry< ValueType >::getItem(const std::string &key) const
 ";
 
 %feature("docstring")  IRegistry::keys "std::vector<std::string> IRegistry< ValueType >::keys()
 ";
 
-%feature("docstring")  IRegistry::size "size_t IRegistry< ValueType >::size() const 
+%feature("docstring")  IRegistry::size "size_t IRegistry< ValueType >::size() const
 ";
 
 
@@ -9506,7 +9552,7 @@ C++ includes: NodeIterator.h
 %feature("docstring")  IteratorMemento::get_state "IteratorState& IteratorMemento::get_state()
 ";
 
-%feature("docstring")  IteratorMemento::empty "bool IteratorMemento::empty() const 
+%feature("docstring")  IteratorMemento::empty "bool IteratorMemento::empty() const
 ";
 
 %feature("docstring")  IteratorMemento::reset "void IteratorMemento::reset()
@@ -9518,7 +9564,7 @@ C++ includes: NodeIterator.h
 %feature("docstring")  IteratorMemento::next "void IteratorMemento::next()
 ";
 
-%feature("docstring")  IteratorMemento::size "size_t IteratorMemento::size() const 
+%feature("docstring")  IteratorMemento::size "size_t IteratorMemento::size() const
 ";
 
 
@@ -9533,16 +9579,16 @@ C++ includes: NodeIterator.h
 %feature("docstring")  IteratorState::IteratorState "IteratorState::IteratorState(const INode *single_element)
 ";
 
-%feature("docstring")  IteratorState::IteratorState "IteratorState::IteratorState(std::vector< const INode * > samples)
+%feature("docstring")  IteratorState::IteratorState "IteratorState::IteratorState(std::vector< const INode *> samples)
 ";
 
 %feature("docstring")  IteratorState::~IteratorState "virtual IteratorState::~IteratorState()
 ";
 
-%feature("docstring")  IteratorState::getCurrent "const INode* IteratorState::getCurrent() const 
+%feature("docstring")  IteratorState::getCurrent "const INode* IteratorState::getCurrent() const
 ";
 
-%feature("docstring")  IteratorState::isEnd "bool IteratorState::isEnd() const 
+%feature("docstring")  IteratorState::isEnd "bool IteratorState::isEnd() const
 ";
 
 %feature("docstring")  IteratorState::next "void IteratorState::next()
@@ -9594,7 +9640,7 @@ C++ includes: CylindersBuilder.h
 %feature("docstring")  LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder "LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder()
 ";
 
-%feature("docstring")  LargeCylindersInDWBABuilder::buildSample "MultiLayer * LargeCylindersInDWBABuilder::buildSample() const 
+%feature("docstring")  LargeCylindersInDWBABuilder::buildSample "MultiLayer * LargeCylindersInDWBABuilder::buildSample() const
 ";
 
 
@@ -9695,7 +9741,7 @@ C++ includes: LatticeBuilder.h
 %feature("docstring")  Lattice1DBuilder::Lattice1DBuilder "Lattice1DBuilder::Lattice1DBuilder()
 ";
 
-%feature("docstring")  Lattice1DBuilder::buildSample "MultiLayer * Lattice1DBuilder::buildSample() const 
+%feature("docstring")  Lattice1DBuilder::buildSample "MultiLayer * Lattice1DBuilder::buildSample() const
 ";
 
 
@@ -9744,10 +9790,10 @@ xi:
 %feature("docstring")  Lattice2D::unitCellArea "virtual double Lattice2D::unitCellArea() const =0
 ";
 
-%feature("docstring")  Lattice2D::rotationAngle "double Lattice2D::rotationAngle() const 
+%feature("docstring")  Lattice2D::rotationAngle "double Lattice2D::rotationAngle() const
 ";
 
-%feature("docstring")  Lattice2D::reciprocalBases "Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const 
+%feature("docstring")  Lattice2D::reciprocalBases "Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const
 ";
 
 %feature("docstring")  Lattice2D::setRotationEnabled "void Lattice2D::setRotationEnabled(bool enabled)
@@ -9779,15 +9825,15 @@ thickness of a layer in nanometers
 %feature("docstring")  Layer::~Layer "Layer::~Layer()
 ";
 
-%feature("docstring")  Layer::clone "Layer * Layer::clone() const overridefinal
+%feature("docstring")  Layer::clone "Layer * Layer::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  Layer::cloneInvertB "Layer * Layer::cloneInvertB() const 
+%feature("docstring")  Layer::cloneInvertB "Layer * Layer::cloneInvertB() const
 ";
 
-%feature("docstring")  Layer::accept "void Layer::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  Layer::accept "void Layer::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
@@ -9797,10 +9843,10 @@ Calls the  INodeVisitor's visit method.
 Sets layer thickness in nanometers. 
 ";
 
-%feature("docstring")  Layer::thickness "double Layer::thickness() const 
+%feature("docstring")  Layer::thickness "double Layer::thickness() const
 ";
 
-%feature("docstring")  Layer::material "const Material* Layer::material() const overridefinal
+%feature("docstring")  Layer::material "const Material* Layer::material() const override final
 
 Returns nullptr, unless overwritten to return a specific material. 
 ";
@@ -9811,13 +9857,13 @@ Returns nullptr, unless overwritten to return a specific material.
 %feature("docstring")  Layer::addLayout "void Layer::addLayout(const ILayout &decoration)
 ";
 
-%feature("docstring")  Layer::numberOfLayouts "size_t Layer::numberOfLayouts() const 
+%feature("docstring")  Layer::numberOfLayouts "size_t Layer::numberOfLayouts() const
 ";
 
-%feature("docstring")  Layer::layouts "std::vector< const ILayout * > Layer::layouts() const 
+%feature("docstring")  Layer::layouts "std::vector< const ILayout * > Layer::layouts() const
 ";
 
-%feature("docstring")  Layer::getChildren "std::vector< const INode * > Layer::getChildren() const overridefinal
+%feature("docstring")  Layer::getChildren "std::vector< const INode * > Layer::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -9828,10 +9874,10 @@ Returns a vector of children (const).
 %feature("docstring")  Layer::setNumberOfSlices "void Layer::setNumberOfSlices(unsigned int n_slices)
 ";
 
-%feature("docstring")  Layer::numberOfSlices "unsigned int Layer::numberOfSlices() const 
+%feature("docstring")  Layer::numberOfSlices "unsigned int Layer::numberOfSlices() const
 ";
 
-%feature("docstring")  Layer::slice "SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const 
+%feature("docstring")  Layer::slice "SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const
 ";
 
 %feature("docstring")  Layer::scalarReducedPotential "complex_t Layer::scalarReducedPotential(kvector_t k, double n_ref) const
@@ -9905,10 +9951,10 @@ Sets roughness of the interface.
 Returns roughness of the interface. 
 ";
 
-%feature("docstring")  LayerInterface::topLayer "const Layer * LayerInterface::topLayer() const 
+%feature("docstring")  LayerInterface::topLayer "const Layer * LayerInterface::topLayer() const
 ";
 
-%feature("docstring")  LayerInterface::bottomLayer "const Layer * LayerInterface::bottomLayer() const 
+%feature("docstring")  LayerInterface::bottomLayer "const Layer * LayerInterface::bottomLayer() const
 ";
 
 %feature("docstring")  LayerInterface::getChildren "std::vector< const INode * > LayerInterface::getChildren() const
@@ -10016,7 +10062,7 @@ C++ includes: LayersWithAbsorptionBuilder.h
 %feature("docstring")  LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder "LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder()
 ";
 
-%feature("docstring")  LayersWithAbsorptionBuilder::buildSample "MultiLayer * LayersWithAbsorptionBuilder::buildSample() const 
+%feature("docstring")  LayersWithAbsorptionBuilder::buildSample "MultiLayer * LayersWithAbsorptionBuilder::buildSample() const
 ";
 
 %feature("docstring")  LayersWithAbsorptionBuilder::createSample "MultiLayer * LayersWithAbsorptionBuilder::createSample(size_t index=0)
@@ -10043,7 +10089,7 @@ C++ includes: LayoutStrategyBuilder.h
 %feature("docstring")  LayoutStrategyBuilder::releaseStrategy "IInterferenceFunctionStrategy * LayoutStrategyBuilder::releaseStrategy()
 ";
 
-%feature("docstring")  LayoutStrategyBuilder::regionMap "std::map< size_t, std::vector< HomogeneousRegion > > LayoutStrategyBuilder::regionMap() const 
+%feature("docstring")  LayoutStrategyBuilder::regionMap "std::map< size_t, std::vector< HomogeneousRegion > > LayoutStrategyBuilder::regionMap() const
 ";
 
 
@@ -10058,7 +10104,7 @@ C++ includes: Line.h
 %feature("docstring")  Line::Line "Line::Line(double x1, double y1, double x2, double y2)
 ";
 
-%feature("docstring")  Line::clone "Line* Line::clone() const 
+%feature("docstring")  Line::clone "Line* Line::clone() const
 ";
 
 %feature("docstring")  Line::contains "bool Line::contains(double x, double y) const
@@ -10089,13 +10135,13 @@ C++ includes: LLData.h
 %feature("docstring")  LLData::~LLData "LLData< T >::~LLData()
 ";
 
-%feature("docstring")  LLData::meanValues "LLData<double> LLData< T >::meanValues() const 
+%feature("docstring")  LLData::meanValues "LLData<double> LLData< T >::meanValues() const
 ";
 
 %feature("docstring")  LLData::atCoordinate "T & LLData< T >::atCoordinate(int *coordinate)
 ";
 
-%feature("docstring")  LLData::atCoordinate "const T & LLData< T >::atCoordinate(int *coordinate) const 
+%feature("docstring")  LLData::atCoordinate "const T & LLData< T >::atCoordinate(int *coordinate) const
 ";
 
 %feature("docstring")  LLData::setAll "void LLData< T >::setAll(const T &value)
@@ -10104,16 +10150,16 @@ C++ includes: LLData.h
 %feature("docstring")  LLData::scaleAll "void LLData< T >::scaleAll(const T &factor)
 ";
 
-%feature("docstring")  LLData::getTotalSize "size_t LLData< T >::getTotalSize() const 
+%feature("docstring")  LLData::getTotalSize "size_t LLData< T >::getTotalSize() const
 ";
 
-%feature("docstring")  LLData::getRank "size_t LLData< T >::getRank() const 
+%feature("docstring")  LLData::getRank "size_t LLData< T >::getRank() const
 ";
 
-%feature("docstring")  LLData::getDimensions "const int* LLData< T >::getDimensions() const 
+%feature("docstring")  LLData::getDimensions "const int* LLData< T >::getDimensions() const
 ";
 
-%feature("docstring")  LLData::getTotalSum "T LLData< T >::getTotalSum() const 
+%feature("docstring")  LLData::getTotalSum "T LLData< T >::getTotalSum() const
 ";
 
 
@@ -10135,7 +10181,7 @@ C++ includes: MagneticParticlesBuilder.h
 %feature("docstring")  MagneticCylindersBuilder::MagneticCylindersBuilder "MagneticCylindersBuilder::MagneticCylindersBuilder()
 ";
 
-%feature("docstring")  MagneticCylindersBuilder::buildSample "MultiLayer * MagneticCylindersBuilder::buildSample() const 
+%feature("docstring")  MagneticCylindersBuilder::buildSample "MultiLayer * MagneticCylindersBuilder::buildSample() const
 ";
 
 
@@ -10160,30 +10206,30 @@ Constructs basic material with name and magnetization.
 Returns pointer to a copy of material. 
 ";
 
-%feature("docstring")  MagneticMaterialImpl::inverted "MagneticMaterialImpl * MagneticMaterialImpl::inverted() const overridefinal
+%feature("docstring")  MagneticMaterialImpl::inverted "MagneticMaterialImpl * MagneticMaterialImpl::inverted() const override final
 
 Constructs a material with inverted magnetization. 
 ";
 
-%feature("docstring")  MagneticMaterialImpl::isScalarMaterial "bool MagneticMaterialImpl::isScalarMaterial() const overridefinal
+%feature("docstring")  MagneticMaterialImpl::isScalarMaterial "bool MagneticMaterialImpl::isScalarMaterial() const override final
 
 Indicates whether the interaction with the material is scalar. This means that different polarization states will be diffracted equally 
 ";
 
-%feature("docstring")  MagneticMaterialImpl::isMagneticMaterial "bool MagneticMaterialImpl::isMagneticMaterial() const overridefinal
+%feature("docstring")  MagneticMaterialImpl::isMagneticMaterial "bool MagneticMaterialImpl::isMagneticMaterial() const override final
 ";
 
-%feature("docstring")  MagneticMaterialImpl::magnetization "kvector_t MagneticMaterialImpl::magnetization() const overridefinal
+%feature("docstring")  MagneticMaterialImpl::magnetization "kvector_t MagneticMaterialImpl::magnetization() const override final
 
 Returns the magnetization (in A/m) 
 ";
 
-%feature("docstring")  MagneticMaterialImpl::polarizedSubtrSLD "Eigen::Matrix2cd MagneticMaterialImpl::polarizedSubtrSLD(const WavevectorInfo &wavevectors) const overridefinal
+%feature("docstring")  MagneticMaterialImpl::polarizedSubtrSLD "Eigen::Matrix2cd MagneticMaterialImpl::polarizedSubtrSLD(const WavevectorInfo &wavevectors) const override final
 
 Returns (  $ \\\\pi/\\\\lambda^2 $ - sld) matrix with magnetization corrections. 
 ";
 
-%feature("docstring")  MagneticMaterialImpl::transformedMaterial "MagneticMaterialImpl * MagneticMaterialImpl::transformedMaterial(const Transform3D &transform) const overridefinal
+%feature("docstring")  MagneticMaterialImpl::transformedMaterial "MagneticMaterialImpl * MagneticMaterialImpl::transformedMaterial(const Transform3D &transform) const override final
 ";
 
 
@@ -10198,7 +10244,7 @@ C++ includes: MagneticParticlesBuilder.h
 %feature("docstring")  MagneticParticleZeroFieldBuilder::MagneticParticleZeroFieldBuilder "MagneticParticleZeroFieldBuilder::MagneticParticleZeroFieldBuilder()
 ";
 
-%feature("docstring")  MagneticParticleZeroFieldBuilder::buildSample "MultiLayer * MagneticParticleZeroFieldBuilder::buildSample() const 
+%feature("docstring")  MagneticParticleZeroFieldBuilder::buildSample "MultiLayer * MagneticParticleZeroFieldBuilder::buildSample() const
 ";
 
 
@@ -10213,7 +10259,7 @@ C++ includes: MagneticLayersBuilder.h
 %feature("docstring")  MagneticRotationBuilder::MagneticRotationBuilder "MagneticRotationBuilder::MagneticRotationBuilder()
 ";
 
-%feature("docstring")  MagneticRotationBuilder::buildSample "MultiLayer * MagneticRotationBuilder::buildSample() const 
+%feature("docstring")  MagneticRotationBuilder::buildSample "MultiLayer * MagneticRotationBuilder::buildSample() const
 ";
 
 
@@ -10228,7 +10274,7 @@ C++ includes: MagneticParticlesBuilder.h
 %feature("docstring")  MagneticSpheresBuilder::MagneticSpheresBuilder "MagneticSpheresBuilder::MagneticSpheresBuilder()
 ";
 
-%feature("docstring")  MagneticSpheresBuilder::buildSample "MultiLayer * MagneticSpheresBuilder::buildSample() const 
+%feature("docstring")  MagneticSpheresBuilder::buildSample "MultiLayer * MagneticSpheresBuilder::buildSample() const
 ";
 
 
@@ -10243,7 +10289,7 @@ C++ includes: MagneticLayersBuilder.h
 %feature("docstring")  MagneticSubstrateZeroFieldBuilder::MagneticSubstrateZeroFieldBuilder "MagneticSubstrateZeroFieldBuilder::MagneticSubstrateZeroFieldBuilder()
 ";
 
-%feature("docstring")  MagneticSubstrateZeroFieldBuilder::buildSample "MultiLayer * MagneticSubstrateZeroFieldBuilder::buildSample() const 
+%feature("docstring")  MagneticSubstrateZeroFieldBuilder::buildSample "MultiLayer * MagneticSubstrateZeroFieldBuilder::buildSample() const
 ";
 
 
@@ -10290,7 +10336,7 @@ Returns squared refractive index.
 Indicates whether the interaction with the material is scalar. This means that different polarization states will be diffracted equally 
 ";
 
-%feature("docstring")  Material::isMagneticMaterial "bool Material::isMagneticMaterial() const 
+%feature("docstring")  Material::isMagneticMaterial "bool Material::isMagneticMaterial() const
 ";
 
 %feature("docstring")  Material::getName "std::string Material::getName() const
@@ -10333,7 +10379,7 @@ Returns (  $ \\\\pi/\\\\lambda^2 $ - sld), sld (in  $nm^{-2}$) being the scatter
 Returns (  $ \\\\pi/\\\\lambda^2 $ - sld) matrix with magnetization corrections. 
 ";
 
-%feature("docstring")  Material::transformedMaterial "Material Material::transformedMaterial(const Transform3D &transform) const 
+%feature("docstring")  Material::transformedMaterial "Material Material::transformedMaterial(const Transform3D &transform) const
 ";
 
 
@@ -10416,17 +10462,17 @@ C++ includes: MatrixFresnelMap.h
 %feature("docstring")  MatrixFresnelMap::~MatrixFresnelMap "MatrixFresnelMap::~MatrixFresnelMap()
 ";
 
-%feature("docstring")  MatrixFresnelMap::getOutCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const finaloverride
+%feature("docstring")  MatrixFresnelMap::getOutCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
 
 Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
 ";
 
-%feature("docstring")  MatrixFresnelMap::getInCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const finaloverride
+%feature("docstring")  MatrixFresnelMap::getInCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
 
 Retrieves the amplitude coefficients for an incoming wavevector. 
 ";
 
-%feature("docstring")  MatrixFresnelMap::setMultilayer "void MatrixFresnelMap::setMultilayer(const MultiLayer &multilayer) finaloverride
+%feature("docstring")  MatrixFresnelMap::setMultilayer "void MatrixFresnelMap::setMultilayer(const MultiLayer &multilayer) final override
 
 Sets the multilayer to be used for the Fresnel calculations. 
 ";
@@ -10451,7 +10497,7 @@ C++ includes: MatrixRTCoefficients.h
 %feature("docstring")  MatrixRTCoefficients::~MatrixRTCoefficients "virtual MatrixRTCoefficients::~MatrixRTCoefficients()
 ";
 
-%feature("docstring")  MatrixRTCoefficients::clone "MatrixRTCoefficients * MatrixRTCoefficients::clone() const 
+%feature("docstring")  MatrixRTCoefficients::clone "MatrixRTCoefficients * MatrixRTCoefficients::clone() const
 ";
 
 %feature("docstring")  MatrixRTCoefficients::T1plus "Eigen::Vector2cd MatrixRTCoefficients::T1plus() const
@@ -10459,25 +10505,25 @@ C++ includes: MatrixRTCoefficients.h
 The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R1plus "Eigen::Vector2cd MatrixRTCoefficients::R1plus() const 
+%feature("docstring")  MatrixRTCoefficients::R1plus "Eigen::Vector2cd MatrixRTCoefficients::R1plus() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T2plus "Eigen::Vector2cd MatrixRTCoefficients::T2plus() const 
+%feature("docstring")  MatrixRTCoefficients::T2plus "Eigen::Vector2cd MatrixRTCoefficients::T2plus() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R2plus "Eigen::Vector2cd MatrixRTCoefficients::R2plus() const 
+%feature("docstring")  MatrixRTCoefficients::R2plus "Eigen::Vector2cd MatrixRTCoefficients::R2plus() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T1min "Eigen::Vector2cd MatrixRTCoefficients::T1min() const 
+%feature("docstring")  MatrixRTCoefficients::T1min "Eigen::Vector2cd MatrixRTCoefficients::T1min() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R1min "Eigen::Vector2cd MatrixRTCoefficients::R1min() const 
+%feature("docstring")  MatrixRTCoefficients::R1min "Eigen::Vector2cd MatrixRTCoefficients::R1min() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T2min "Eigen::Vector2cd MatrixRTCoefficients::T2min() const 
+%feature("docstring")  MatrixRTCoefficients::T2min "Eigen::Vector2cd MatrixRTCoefficients::T2min() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R2min "Eigen::Vector2cd MatrixRTCoefficients::R2min() const 
+%feature("docstring")  MatrixRTCoefficients::R2min "Eigen::Vector2cd MatrixRTCoefficients::R2min() const
 ";
 
 %feature("docstring")  MatrixRTCoefficients::getKz "virtual Eigen::Vector2cd MatrixRTCoefficients::getKz() const
@@ -10500,22 +10546,22 @@ C++ includes: MesoCrystal.h
 %feature("docstring")  MesoCrystal::~MesoCrystal "MesoCrystal::~MesoCrystal()
 ";
 
-%feature("docstring")  MesoCrystal::clone "MesoCrystal * MesoCrystal::clone() const overridefinal
+%feature("docstring")  MesoCrystal::clone "MesoCrystal * MesoCrystal::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  MesoCrystal::accept "void MesoCrystal::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  MesoCrystal::accept "void MesoCrystal::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  MesoCrystal::createSlicedParticle "SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const overridefinal
+%feature("docstring")  MesoCrystal::createSlicedParticle "SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final
 
 Create a sliced form factor for this particle. 
 ";
 
-%feature("docstring")  MesoCrystal::getChildren "std::vector< const INode * > MesoCrystal::getChildren() const overridefinal
+%feature("docstring")  MesoCrystal::getChildren "std::vector< const INode * > MesoCrystal::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -10532,7 +10578,7 @@ C++ includes: MesoCrystalBuilder.h
 %feature("docstring")  MesoCrystalBuilder::MesoCrystalBuilder "MesoCrystalBuilder::MesoCrystalBuilder()
 ";
 
-%feature("docstring")  MesoCrystalBuilder::buildSample "MultiLayer * MesoCrystalBuilder::buildSample() const 
+%feature("docstring")  MesoCrystalBuilder::buildSample "MultiLayer * MesoCrystalBuilder::buildSample() const
 ";
 
 
@@ -10552,15 +10598,15 @@ C++ includes: MultiLayer.h
 %feature("docstring")  MultiLayer::~MultiLayer "MultiLayer::~MultiLayer()
 ";
 
-%feature("docstring")  MultiLayer::accept "void MultiLayer::accept(INodeVisitor *visitor) const finaloverride
+%feature("docstring")  MultiLayer::accept "void MultiLayer::accept(INodeVisitor *visitor) const final override
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  MultiLayer::numberOfLayers "size_t MultiLayer::numberOfLayers() const 
+%feature("docstring")  MultiLayer::numberOfLayers "size_t MultiLayer::numberOfLayers() const
 ";
 
-%feature("docstring")  MultiLayer::numberOfInterfaces "size_t MultiLayer::numberOfInterfaces() const 
+%feature("docstring")  MultiLayer::numberOfInterfaces "size_t MultiLayer::numberOfInterfaces() const
 ";
 
 %feature("docstring")  MultiLayer::addLayer "void MultiLayer::addLayer(const Layer &layer)
@@ -10624,7 +10670,7 @@ Returns layer material.
 Changes a layer's material. 
 ";
 
-%feature("docstring")  MultiLayer::clone "MultiLayer * MultiLayer::clone() const finaloverride
+%feature("docstring")  MultiLayer::clone "MultiLayer * MultiLayer::clone() const final override
 
 Returns a clone of multilayer with clones of all layers and recreated interfaces between layers 
 ";
@@ -10686,7 +10732,7 @@ returns layer index corresponding to given global z coordinate The top interface
 returns layer index corresponding to given global z coordinate The top interface position of a layer is considered to belong to the layer beneath 
 ";
 
-%feature("docstring")  MultiLayer::containsMagneticMaterial "bool MultiLayer::containsMagneticMaterial() const 
+%feature("docstring")  MultiLayer::containsMagneticMaterial "bool MultiLayer::containsMagneticMaterial() const
 ";
 
 %feature("docstring")  MultiLayer::containsCompatibleMaterials "bool MultiLayer::containsCompatibleMaterials() const
@@ -10699,13 +10745,13 @@ Returns true if the multilayer contains non-default materials of one type only.
 precalculate the magnetic B fields in each layer 
 ";
 
-%feature("docstring")  MultiLayer::hasRoughness "bool MultiLayer::hasRoughness() const 
+%feature("docstring")  MultiLayer::hasRoughness "bool MultiLayer::hasRoughness() const
 ";
 
-%feature("docstring")  MultiLayer::totalNofLayouts "size_t MultiLayer::totalNofLayouts() const 
+%feature("docstring")  MultiLayer::totalNofLayouts "size_t MultiLayer::totalNofLayouts() const
 ";
 
-%feature("docstring")  MultiLayer::getChildren "std::vector< const INode * > MultiLayer::getChildren() const finaloverride
+%feature("docstring")  MultiLayer::getChildren "std::vector< const INode * > MultiLayer::getChildren() const final override
 
 Returns a vector of children (const). 
 ";
@@ -10722,7 +10768,7 @@ C++ includes: MultiLayerWithRoughnessBuilder.h
 %feature("docstring")  MultiLayerWithRoughnessBuilder::MultiLayerWithRoughnessBuilder "MultiLayerWithRoughnessBuilder::MultiLayerWithRoughnessBuilder()
 ";
 
-%feature("docstring")  MultiLayerWithRoughnessBuilder::buildSample "MultiLayer * MultiLayerWithRoughnessBuilder::buildSample() const 
+%feature("docstring")  MultiLayerWithRoughnessBuilder::buildSample "MultiLayer * MultiLayerWithRoughnessBuilder::buildSample() const
 ";
 
 
@@ -10737,7 +10783,7 @@ C++ includes: MultipleLayoutBuilder.h
 %feature("docstring")  MultipleLayoutBuilder::MultipleLayoutBuilder "MultipleLayoutBuilder::MultipleLayoutBuilder()
 ";
 
-%feature("docstring")  MultipleLayoutBuilder::buildSample "MultiLayer * MultipleLayoutBuilder::buildSample() const 
+%feature("docstring")  MultipleLayoutBuilder::buildSample "MultiLayer * MultipleLayoutBuilder::buildSample() const
 ";
 
 
@@ -10766,10 +10812,10 @@ C++ includes: NodeIterator.h
 %feature("docstring")  NodeIterator::getCurrent "const INode * NodeIterator< Strategy >::getCurrent()
 ";
 
-%feature("docstring")  NodeIterator::isDone "bool NodeIterator< Strategy >::isDone() const 
+%feature("docstring")  NodeIterator::isDone "bool NodeIterator< Strategy >::isDone() const
 ";
 
-%feature("docstring")  NodeIterator::depth "int NodeIterator< Strategy >::depth() const 
+%feature("docstring")  NodeIterator::depth "int NodeIterator< Strategy >::depth() const
 ";
 
 
@@ -10880,10 +10926,10 @@ C++ includes: OrderedMap.h
 %feature("docstring")  OrderedMap::clear "void OrderedMap< Key, Object >::clear()
 ";
 
-%feature("docstring")  OrderedMap::begin "const_iterator OrderedMap< Key, Object >::begin() const 
+%feature("docstring")  OrderedMap::begin "const_iterator OrderedMap< Key, Object >::begin() const
 ";
 
-%feature("docstring")  OrderedMap::end "const_iterator OrderedMap< Key, Object >::end() const 
+%feature("docstring")  OrderedMap::end "const_iterator OrderedMap< Key, Object >::end() const
 ";
 
 %feature("docstring")  OrderedMap::begin "iterator OrderedMap< Key, Object >::begin()
@@ -10901,7 +10947,7 @@ C++ includes: OrderedMap.h
 %feature("docstring")  OrderedMap::find "iterator OrderedMap< Key, Object >::find(const Key &key)
 ";
 
-%feature("docstring")  OrderedMap::find "const_iterator OrderedMap< Key, Object >::find(const Key &key) const 
+%feature("docstring")  OrderedMap::find "const_iterator OrderedMap< Key, Object >::find(const Key &key) const
 ";
 
 %feature("docstring")  OrderedMap::erase "size_t OrderedMap< Key, Object >::erase(const Key &key)
@@ -10935,7 +10981,7 @@ C++ includes: OutputData.h
 %feature("docstring")  OutputData::~OutputData "OutputData< T >::~OutputData()
 ";
 
-%feature("docstring")  OutputData::clone "OutputData< T > * OutputData< T >::clone() const 
+%feature("docstring")  OutputData::clone "OutputData< T > * OutputData< T >::clone() const
 ";
 
 %feature("docstring")  OutputData::copyFrom "void OutputData< T >::copyFrom(const OutputData< T > &x)
@@ -10944,7 +10990,7 @@ C++ includes: OutputData.h
 %feature("docstring")  OutputData::copyShapeFrom "void OutputData< T >::copyShapeFrom(const OutputData< U > &other)
 ";
 
-%feature("docstring")  OutputData::meanValues "OutputData< double > * OutputData< T >::meanValues() const 
+%feature("docstring")  OutputData::meanValues "OutputData< double > * OutputData< T >::meanValues() const
 ";
 
 %feature("docstring")  OutputData::addAxis "void OutputData< T >::addAxis(const IAxis &new_axis)
@@ -11408,7 +11454,7 @@ get number of samples for this distribution
 get the sigma factor 
 ";
 
-%feature("docstring")  ParameterDistribution::getDistribution "const IDistribution1D * ParameterDistribution::getDistribution() const 
+%feature("docstring")  ParameterDistribution::getDistribution "const IDistribution1D * ParameterDistribution::getDistribution() const
 ";
 
 %feature("docstring")  ParameterDistribution::getDistribution "IDistribution1D * ParameterDistribution::getDistribution()
@@ -11424,13 +11470,13 @@ generate list of sampled values with their weight
 get list of linked parameter names 
 ";
 
-%feature("docstring")  ParameterDistribution::getLimits "RealLimits ParameterDistribution::getLimits() const 
+%feature("docstring")  ParameterDistribution::getLimits "RealLimits ParameterDistribution::getLimits() const
 ";
 
-%feature("docstring")  ParameterDistribution::getMinValue "double ParameterDistribution::getMinValue() const 
+%feature("docstring")  ParameterDistribution::getMinValue "double ParameterDistribution::getMinValue() const
 ";
 
-%feature("docstring")  ParameterDistribution::getMaxValue "double ParameterDistribution::getMaxValue() const 
+%feature("docstring")  ParameterDistribution::getMaxValue "double ParameterDistribution::getMaxValue() const
 ";
 
 
@@ -11454,7 +11500,7 @@ C++ includes: ParameterPattern.h
 %feature("docstring")  ParameterPattern::add "ParameterPattern & ParameterPattern::add(std::string object_type)
 ";
 
-%feature("docstring")  ParameterPattern::toStdString "std::string ParameterPattern::toStdString() const 
+%feature("docstring")  ParameterPattern::toStdString "std::string ParameterPattern::toStdString() const
 ";
 
 
@@ -11541,7 +11587,7 @@ Sets value of the nonzero parameters that match  pattern ('*' allowed), or throw
 Sets value of the one parameter that matches  pattern ('*' allowed), or throws. 
 ";
 
-%feature("docstring")  ParameterPool::parameterNames "std::vector< std::string > ParameterPool::parameterNames() const 
+%feature("docstring")  ParameterPool::parameterNames "std::vector< std::string > ParameterPool::parameterNames() const
 ";
 
 %feature("docstring")  ParameterPool::removeParameter "void ParameterPool::removeParameter(const std::string &name)
@@ -11582,17 +11628,17 @@ C++ includes: Particle.h
 %feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IFormFactor &form_factor, const IRotation &rotation)
 ";
 
-%feature("docstring")  Particle::clone "Particle * Particle::clone() const overridefinal
+%feature("docstring")  Particle::clone "Particle * Particle::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  Particle::accept "void Particle::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  Particle::accept "void Particle::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  Particle::createSlicedParticle "SlicedParticle Particle::createSlicedParticle(ZLimits limits) const overridefinal
+%feature("docstring")  Particle::createSlicedParticle "SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final
 
 Create a sliced form factor for this particle. 
 ";
@@ -11600,7 +11646,7 @@ Create a sliced form factor for this particle.
 %feature("docstring")  Particle::setMaterial "void Particle::setMaterial(Material material)
 ";
 
-%feature("docstring")  Particle::material "const Material* Particle::material() const overridefinal
+%feature("docstring")  Particle::material "const Material* Particle::material() const override final
 
 Returns nullptr, unless overwritten to return a specific material. 
 ";
@@ -11608,7 +11654,7 @@ Returns nullptr, unless overwritten to return a specific material.
 %feature("docstring")  Particle::setFormFactor "void Particle::setFormFactor(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  Particle::getChildren "std::vector< const INode * > Particle::getChildren() const overridefinal
+%feature("docstring")  Particle::getChildren "std::vector< const INode * > Particle::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -11631,17 +11677,17 @@ C++ includes: ParticleComposition.h
 %feature("docstring")  ParticleComposition::~ParticleComposition "ParticleComposition::~ParticleComposition()
 ";
 
-%feature("docstring")  ParticleComposition::clone "ParticleComposition * ParticleComposition::clone() const overridefinal
+%feature("docstring")  ParticleComposition::clone "ParticleComposition * ParticleComposition::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  ParticleComposition::accept "void ParticleComposition::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  ParticleComposition::accept "void ParticleComposition::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ParticleComposition::createFormFactor "IFormFactor * ParticleComposition::createFormFactor() const overridefinal
+%feature("docstring")  ParticleComposition::createFormFactor "IFormFactor * ParticleComposition::createFormFactor() const override final
 
 Create a form factor for this particle. 
 ";
@@ -11660,17 +11706,17 @@ Create a form factor for this particle.
 Returns number of different particles. 
 ";
 
-%feature("docstring")  ParticleComposition::getChildren "std::vector< const INode * > ParticleComposition::getChildren() const overridefinal
+%feature("docstring")  ParticleComposition::getChildren "std::vector< const INode * > ParticleComposition::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
 
-%feature("docstring")  ParticleComposition::decompose "SafePointerVector< IParticle > ParticleComposition::decompose() const overridefinal
+%feature("docstring")  ParticleComposition::decompose "SafePointerVector< IParticle > ParticleComposition::decompose() const override final
 
 Decompose in constituent  IParticle objects. 
 ";
 
-%feature("docstring")  ParticleComposition::bottomTopZ "ParticleLimits ParticleComposition::bottomTopZ() const overridefinal
+%feature("docstring")  ParticleComposition::bottomTopZ "ParticleLimits ParticleComposition::bottomTopZ() const override final
 
 Top and bottom z-coordinate. 
 ";
@@ -11687,7 +11733,7 @@ C++ includes: ParticleCompositionBuilder.h
 %feature("docstring")  ParticleCompositionBuilder::ParticleCompositionBuilder "ParticleCompositionBuilder::ParticleCompositionBuilder()
 ";
 
-%feature("docstring")  ParticleCompositionBuilder::buildSample "MultiLayer * ParticleCompositionBuilder::buildSample() const 
+%feature("docstring")  ParticleCompositionBuilder::buildSample "MultiLayer * ParticleCompositionBuilder::buildSample() const
 ";
 
 
@@ -11705,28 +11751,28 @@ C++ includes: ParticleCoreShell.h
 %feature("docstring")  ParticleCoreShell::~ParticleCoreShell "ParticleCoreShell::~ParticleCoreShell()
 ";
 
-%feature("docstring")  ParticleCoreShell::clone "ParticleCoreShell * ParticleCoreShell::clone() const overridefinal
+%feature("docstring")  ParticleCoreShell::clone "ParticleCoreShell * ParticleCoreShell::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  ParticleCoreShell::accept "void ParticleCoreShell::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  ParticleCoreShell::accept "void ParticleCoreShell::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ParticleCoreShell::createSlicedParticle "SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const overridefinal
+%feature("docstring")  ParticleCoreShell::createSlicedParticle "SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final
 
 Create a sliced form factor for this particle. 
 ";
 
-%feature("docstring")  ParticleCoreShell::coreParticle "const Particle * ParticleCoreShell::coreParticle() const 
+%feature("docstring")  ParticleCoreShell::coreParticle "const Particle * ParticleCoreShell::coreParticle() const
 ";
 
-%feature("docstring")  ParticleCoreShell::shellParticle "const Particle * ParticleCoreShell::shellParticle() const 
+%feature("docstring")  ParticleCoreShell::shellParticle "const Particle * ParticleCoreShell::shellParticle() const
 ";
 
-%feature("docstring")  ParticleCoreShell::getChildren "std::vector< const INode * > ParticleCoreShell::getChildren() const overridefinal
+%feature("docstring")  ParticleCoreShell::getChildren "std::vector< const INode * > ParticleCoreShell::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -11743,22 +11789,22 @@ C++ includes: ParticleDistribution.h
 %feature("docstring")  ParticleDistribution::ParticleDistribution "ParticleDistribution::ParticleDistribution(const IParticle &prototype, const ParameterDistribution &par_distr)
 ";
 
-%feature("docstring")  ParticleDistribution::clone "ParticleDistribution * ParticleDistribution::clone() const overridefinal
+%feature("docstring")  ParticleDistribution::clone "ParticleDistribution * ParticleDistribution::clone() const override final
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  ParticleDistribution::accept "void ParticleDistribution::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  ParticleDistribution::accept "void ParticleDistribution::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ParticleDistribution::translate "void ParticleDistribution::translate(kvector_t translation) overridefinal
+%feature("docstring")  ParticleDistribution::translate "void ParticleDistribution::translate(kvector_t translation) override final
 
 Translates the particle with the given vector. 
 ";
 
-%feature("docstring")  ParticleDistribution::rotate "void ParticleDistribution::rotate(const IRotation &rotation) overridefinal
+%feature("docstring")  ParticleDistribution::rotate "void ParticleDistribution::rotate(const IRotation &rotation) override final
 
 Applies the given rotation to the particle. 
 ";
@@ -11780,7 +11826,7 @@ Returns the prototype particle, used for generating multiple ones.
 Returns the distributed parameter data. 
 ";
 
-%feature("docstring")  ParticleDistribution::getChildren "std::vector< const INode * > ParticleDistribution::getChildren() const overridefinal
+%feature("docstring")  ParticleDistribution::getChildren "std::vector< const INode * > ParticleDistribution::getChildren() const override final
 
 Returns a vector of children (const). 
 ";
@@ -11800,7 +11846,7 @@ C++ includes: ParticleInTheAirBuilder.h
 %feature("docstring")  ParticleInTheAirBuilder::~ParticleInTheAirBuilder "ParticleInTheAirBuilder::~ParticleInTheAirBuilder()
 ";
 
-%feature("docstring")  ParticleInTheAirBuilder::buildSample "MultiLayer * ParticleInTheAirBuilder::buildSample() const 
+%feature("docstring")  ParticleInTheAirBuilder::buildSample "MultiLayer * ParticleInTheAirBuilder::buildSample() const
 ";
 
 %feature("docstring")  ParticleInTheAirBuilder::createSample "MultiLayer * ParticleInTheAirBuilder::createSample(size_t index=0)
@@ -11827,15 +11873,15 @@ C++ includes: ParticleLayout.h
 %feature("docstring")  ParticleLayout::~ParticleLayout "ParticleLayout::~ParticleLayout()
 ";
 
-%feature("docstring")  ParticleLayout::clone "ParticleLayout * ParticleLayout::clone() const finaloverride
+%feature("docstring")  ParticleLayout::clone "ParticleLayout * ParticleLayout::clone() const final override
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  ParticleLayout::cloneWithOffset "ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const finaloverride
+%feature("docstring")  ParticleLayout::cloneWithOffset "ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const final override
 ";
 
-%feature("docstring")  ParticleLayout::accept "void ParticleLayout::accept(INodeVisitor *visitor) const finaloverride
+%feature("docstring")  ParticleLayout::accept "void ParticleLayout::accept(INodeVisitor *visitor) const final override
 
 Calls the  INodeVisitor's visit method. 
 ";
@@ -11860,12 +11906,12 @@ rotation:
  Particle rotation 
 ";
 
-%feature("docstring")  ParticleLayout::particles "SafePointerVector< const IParticle > ParticleLayout::particles() const finaloverride
+%feature("docstring")  ParticleLayout::particles "SafePointerVector< const IParticle > ParticleLayout::particles() const final override
 
 Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
 ";
 
-%feature("docstring")  ParticleLayout::getTotalAbundance "double ParticleLayout::getTotalAbundance() const finaloverride
+%feature("docstring")  ParticleLayout::getTotalAbundance "double ParticleLayout::getTotalAbundance() const final override
 
 Get total abundance of all particles. 
 ";
@@ -11875,17 +11921,17 @@ Get total abundance of all particles.
 Adds interference functions. 
 ";
 
-%feature("docstring")  ParticleLayout::totalParticleSurfaceDensity "double ParticleLayout::totalParticleSurfaceDensity() const finaloverride
+%feature("docstring")  ParticleLayout::totalParticleSurfaceDensity "double ParticleLayout::totalParticleSurfaceDensity() const final override
 
 Returns surface density of all particles. 
 ";
 
-%feature("docstring")  ParticleLayout::setTotalParticleSurfaceDensity "void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) finaloverride
+%feature("docstring")  ParticleLayout::setTotalParticleSurfaceDensity "void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override
 
 Sets total particle surface density.  particle_density: number of particles per square nanometer 
 ";
 
-%feature("docstring")  ParticleLayout::getChildren "std::vector< const INode * > ParticleLayout::getChildren() const finaloverride
+%feature("docstring")  ParticleLayout::getChildren "std::vector< const INode * > ParticleLayout::getChildren() const final override
 
 Returns a vector of children (const). 
 ";
@@ -11926,7 +11972,7 @@ C++ includes: PoissonNoiseBackground.h
 %feature("docstring")  PoissonNoiseBackground::~PoissonNoiseBackground "PoissonNoiseBackground::~PoissonNoiseBackground()
 ";
 
-%feature("docstring")  PoissonNoiseBackground::clone "PoissonNoiseBackground * PoissonNoiseBackground::clone() const overridefinal
+%feature("docstring")  PoissonNoiseBackground::clone "PoissonNoiseBackground * PoissonNoiseBackground::clone() const override final
 ";
 
 %feature("docstring")  PoissonNoiseBackground::accept "void PoissonNoiseBackground::accept(INodeVisitor *visitor) const override
@@ -11934,7 +11980,7 @@ C++ includes: PoissonNoiseBackground.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  PoissonNoiseBackground::addBackGround "double PoissonNoiseBackground::addBackGround(double intensity) const overridefinal
+%feature("docstring")  PoissonNoiseBackground::addBackGround "double PoissonNoiseBackground::addBackGround(double intensity) const override final
 ";
 
 
@@ -12002,7 +12048,7 @@ Vector of y-coordinates of polygon points.
 %feature("docstring")  Polygon::~Polygon "Polygon::~Polygon()
 ";
 
-%feature("docstring")  Polygon::clone "virtual Polygon* Polygon::clone() const 
+%feature("docstring")  Polygon::clone "virtual Polygon* Polygon::clone() const
 ";
 
 %feature("docstring")  Polygon::contains "bool Polygon::contains(double x, double y) const
@@ -12015,10 +12061,10 @@ Returns true if point with given coordinates is inside or on border of the shape
 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). 
 ";
 
-%feature("docstring")  Polygon::getArea "double Polygon::getArea() const 
+%feature("docstring")  Polygon::getArea "double Polygon::getArea() const
 ";
 
-%feature("docstring")  Polygon::getPoints "void Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const 
+%feature("docstring")  Polygon::getPoints "void Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const
 ";
 
 
@@ -12055,16 +12101,16 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  PolyhedralEdge::PolyhedralEdge "PolyhedralEdge::PolyhedralEdge(const kvector_t _Vlow, const kvector_t _Vhig)
 ";
 
-%feature("docstring")  PolyhedralEdge::E "kvector_t PolyhedralEdge::E() const 
+%feature("docstring")  PolyhedralEdge::E "kvector_t PolyhedralEdge::E() const
 ";
 
-%feature("docstring")  PolyhedralEdge::R "kvector_t PolyhedralEdge::R() const 
+%feature("docstring")  PolyhedralEdge::R "kvector_t PolyhedralEdge::R() const
 ";
 
-%feature("docstring")  PolyhedralEdge::qE "complex_t PolyhedralEdge::qE(cvector_t q) const 
+%feature("docstring")  PolyhedralEdge::qE "complex_t PolyhedralEdge::qE(cvector_t q) const
 ";
 
-%feature("docstring")  PolyhedralEdge::qR "complex_t PolyhedralEdge::qR(cvector_t q) const 
+%feature("docstring")  PolyhedralEdge::qR "complex_t PolyhedralEdge::qR(cvector_t q) const
 ";
 
 %feature("docstring")  PolyhedralEdge::contrib "complex_t PolyhedralEdge::contrib(int m, cvector_t qpa, complex_t qrperp) const
@@ -12095,16 +12141,16 @@ _sym_S2:
 true if face has a perpedicular two-fold symmetry axis 
 ";
 
-%feature("docstring")  PolyhedralFace::area "double PolyhedralFace::area() const 
+%feature("docstring")  PolyhedralFace::area "double PolyhedralFace::area() const
 ";
 
-%feature("docstring")  PolyhedralFace::center "kvector_t PolyhedralFace::center() const 
+%feature("docstring")  PolyhedralFace::center "kvector_t PolyhedralFace::center() const
 ";
 
-%feature("docstring")  PolyhedralFace::pyramidalVolume "double PolyhedralFace::pyramidalVolume() const 
+%feature("docstring")  PolyhedralFace::pyramidalVolume "double PolyhedralFace::pyramidalVolume() const
 ";
 
-%feature("docstring")  PolyhedralFace::radius3d "double PolyhedralFace::radius3d() const 
+%feature("docstring")  PolyhedralFace::radius3d "double PolyhedralFace::radius3d() const
 ";
 
 %feature("docstring")  PolyhedralFace::normalProjectionConj "complex_t PolyhedralFace::normalProjectionConj(cvector_t q) const
@@ -12148,7 +12194,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  PostorderStrategy::PostorderStrategy "PostorderStrategy::PostorderStrategy()
 ";
 
-%feature("docstring")  PostorderStrategy::clone "PostorderStrategy * PostorderStrategy::clone() const 
+%feature("docstring")  PostorderStrategy::clone "PostorderStrategy * PostorderStrategy::clone() const
 ";
 
 %feature("docstring")  PostorderStrategy::~PostorderStrategy "PostorderStrategy::~PostorderStrategy()
@@ -12157,10 +12203,10 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  PostorderStrategy::first "IteratorMemento PostorderStrategy::first(const INode *p_root)
 ";
 
-%feature("docstring")  PostorderStrategy::next "void PostorderStrategy::next(IteratorMemento &iterator_stack) const 
+%feature("docstring")  PostorderStrategy::next "void PostorderStrategy::next(IteratorMemento &iterator_stack) const
 ";
 
-%feature("docstring")  PostorderStrategy::isDone "bool PostorderStrategy::isDone(IteratorMemento &iterator_stack) const 
+%feature("docstring")  PostorderStrategy::isDone "bool PostorderStrategy::isDone(IteratorMemento &iterator_stack) const
 ";
 
 
@@ -12170,7 +12216,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  PreorderStrategy::PreorderStrategy "PreorderStrategy::PreorderStrategy()
 ";
 
-%feature("docstring")  PreorderStrategy::clone "PreorderStrategy * PreorderStrategy::clone() const 
+%feature("docstring")  PreorderStrategy::clone "PreorderStrategy * PreorderStrategy::clone() const
 ";
 
 %feature("docstring")  PreorderStrategy::~PreorderStrategy "PreorderStrategy::~PreorderStrategy()
@@ -12179,10 +12225,10 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  PreorderStrategy::first "IteratorMemento PreorderStrategy::first(const INode *p_root)
 ";
 
-%feature("docstring")  PreorderStrategy::next "void PreorderStrategy::next(IteratorMemento &iterator_stack) const 
+%feature("docstring")  PreorderStrategy::next "void PreorderStrategy::next(IteratorMemento &iterator_stack) const
 ";
 
-%feature("docstring")  PreorderStrategy::isDone "bool PreorderStrategy::isDone(IteratorMemento &iterator_stack) const 
+%feature("docstring")  PreorderStrategy::isDone "bool PreorderStrategy::isDone(IteratorMemento &iterator_stack) const
 ";
 
 
@@ -12249,7 +12295,7 @@ C++ includes: ParaCrystalBuilder.h
 %feature("docstring")  RadialParaCrystalBuilder::RadialParaCrystalBuilder "RadialParaCrystalBuilder::RadialParaCrystalBuilder()
 ";
 
-%feature("docstring")  RadialParaCrystalBuilder::buildSample "MultiLayer * RadialParaCrystalBuilder::buildSample() const 
+%feature("docstring")  RadialParaCrystalBuilder::buildSample "MultiLayer * RadialParaCrystalBuilder::buildSample() const
 ";
 
 
@@ -12264,7 +12310,7 @@ C++ includes: RealParameter.h
 %feature("docstring")  RealParameter::RealParameter "RealParameter::RealParameter(const std::string &name, double *par, const std::string &parent_name=std::string(), const std::function< void()> &onChange=std::function< void()>(), const RealLimits &limits=RealLimits::limitless(), const Attributes &attr=Attributes::free())
 ";
 
-%feature("docstring")  RealParameter::clone "RealParameter * RealParameter::clone(const std::string &new_name=\"\") const 
+%feature("docstring")  RealParameter::clone "RealParameter * RealParameter::clone(const std::string &new_name=\"\") const
 ";
 
 %feature("docstring")  RealParameter::setValue "void RealParameter::setValue(double value)
@@ -12280,7 +12326,7 @@ Returns value of wrapped parameter.
 %feature("docstring")  RealParameter::setLimits "RealParameter & RealParameter::setLimits(const RealLimits &limits)
 ";
 
-%feature("docstring")  RealParameter::limits "RealLimits RealParameter::limits() const 
+%feature("docstring")  RealParameter::limits "RealLimits RealParameter::limits() const
 ";
 
 %feature("docstring")  RealParameter::setLimited "RealParameter & RealParameter::setLimited(double lower, double upper)
@@ -12295,7 +12341,7 @@ Returns value of wrapped parameter.
 %feature("docstring")  RealParameter::setUnit "RealParameter & RealParameter::setUnit(const std::string &name)
 ";
 
-%feature("docstring")  RealParameter::unit "std::string RealParameter::unit() const 
+%feature("docstring")  RealParameter::unit "std::string RealParameter::unit() const
 ";
 
 
@@ -12338,7 +12384,7 @@ yup:
 y-coordinate of upper right corner 
 ";
 
-%feature("docstring")  Rectangle::clone "Rectangle* Rectangle::clone() const 
+%feature("docstring")  Rectangle::clone "Rectangle* Rectangle::clone() const
 ";
 
 %feature("docstring")  Rectangle::contains "bool Rectangle::contains(double x, double y) const
@@ -12351,19 +12397,19 @@ Returns true if point with given coordinates is inside or on border of the shape
 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). 
 ";
 
-%feature("docstring")  Rectangle::getArea "double Rectangle::getArea() const 
+%feature("docstring")  Rectangle::getArea "double Rectangle::getArea() const
 ";
 
-%feature("docstring")  Rectangle::getXlow "double Rectangle::getXlow() const 
+%feature("docstring")  Rectangle::getXlow "double Rectangle::getXlow() const
 ";
 
-%feature("docstring")  Rectangle::getYlow "double Rectangle::getYlow() const 
+%feature("docstring")  Rectangle::getYlow "double Rectangle::getYlow() const
 ";
 
-%feature("docstring")  Rectangle::getXup "double Rectangle::getXup() const 
+%feature("docstring")  Rectangle::getXup "double Rectangle::getXup() const
 ";
 
-%feature("docstring")  Rectangle::getYup "double Rectangle::getYup() const 
+%feature("docstring")  Rectangle::getYup "double Rectangle::getYup() const
 ";
 
 
@@ -12432,7 +12478,7 @@ Calls the  INodeVisitor's visit method.
 Inits detector with the beam settings. 
 ";
 
-%feature("docstring")  RectangularDetector::setPosition "void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0,-1.0, 0.0))
+%feature("docstring")  RectangularDetector::setPosition "void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0, -1.0, 0.0))
 ";
 
 %feature("docstring")  RectangularDetector::setPerpendicularToSampleX "void RectangularDetector::setPerpendicularToSampleX(double distance, double u0, double v0)
@@ -12447,40 +12493,40 @@ Inits detector with the beam settings.
 %feature("docstring")  RectangularDetector::setDirectBeamPosition "void RectangularDetector::setDirectBeamPosition(double u0, double v0)
 ";
 
-%feature("docstring")  RectangularDetector::getWidth "double RectangularDetector::getWidth() const 
+%feature("docstring")  RectangularDetector::getWidth "double RectangularDetector::getWidth() const
 ";
 
-%feature("docstring")  RectangularDetector::getHeight "double RectangularDetector::getHeight() const 
+%feature("docstring")  RectangularDetector::getHeight "double RectangularDetector::getHeight() const
 ";
 
-%feature("docstring")  RectangularDetector::getNbinsX "size_t RectangularDetector::getNbinsX() const 
+%feature("docstring")  RectangularDetector::getNbinsX "size_t RectangularDetector::getNbinsX() const
 ";
 
-%feature("docstring")  RectangularDetector::getNbinsY "size_t RectangularDetector::getNbinsY() const 
+%feature("docstring")  RectangularDetector::getNbinsY "size_t RectangularDetector::getNbinsY() const
 ";
 
-%feature("docstring")  RectangularDetector::getNormalVector "kvector_t RectangularDetector::getNormalVector() const 
+%feature("docstring")  RectangularDetector::getNormalVector "kvector_t RectangularDetector::getNormalVector() const
 ";
 
-%feature("docstring")  RectangularDetector::getU0 "double RectangularDetector::getU0() const 
+%feature("docstring")  RectangularDetector::getU0 "double RectangularDetector::getU0() const
 ";
 
-%feature("docstring")  RectangularDetector::getV0 "double RectangularDetector::getV0() const 
+%feature("docstring")  RectangularDetector::getV0 "double RectangularDetector::getV0() const
 ";
 
-%feature("docstring")  RectangularDetector::getDirectionVector "kvector_t RectangularDetector::getDirectionVector() const 
+%feature("docstring")  RectangularDetector::getDirectionVector "kvector_t RectangularDetector::getDirectionVector() const
 ";
 
-%feature("docstring")  RectangularDetector::getDistance "double RectangularDetector::getDistance() const 
+%feature("docstring")  RectangularDetector::getDistance "double RectangularDetector::getDistance() const
 ";
 
-%feature("docstring")  RectangularDetector::getDirectBeamU0 "double RectangularDetector::getDirectBeamU0() const 
+%feature("docstring")  RectangularDetector::getDirectBeamU0 "double RectangularDetector::getDirectBeamU0() const
 ";
 
-%feature("docstring")  RectangularDetector::getDirectBeamV0 "double RectangularDetector::getDirectBeamV0() const 
+%feature("docstring")  RectangularDetector::getDirectBeamV0 "double RectangularDetector::getDirectBeamV0() const
 ";
 
-%feature("docstring")  RectangularDetector::getDetectorArrangment "RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const 
+%feature("docstring")  RectangularDetector::getDetectorArrangment "RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const
 ";
 
 %feature("docstring")  RectangularDetector::validAxesUnits "std::vector< AxesUnits > RectangularDetector::validAxesUnits() const override
@@ -12493,7 +12539,7 @@ returns vector of valid axes units
 return default axes units 
 ";
 
-%feature("docstring")  RectangularDetector::regionOfInterestPixel "RectangularPixel * RectangularDetector::regionOfInterestPixel() const 
+%feature("docstring")  RectangularDetector::regionOfInterestPixel "RectangularPixel * RectangularDetector::regionOfInterestPixel() const
 ";
 
 
@@ -12515,7 +12561,7 @@ return default axes units
 %feature("docstring")  RectangularPixel::getK "kvector_t RectangularPixel::getK(double x, double y, double wavelength) const override
 ";
 
-%feature("docstring")  RectangularPixel::getPosition "kvector_t RectangularPixel::getPosition(double x, double y) const 
+%feature("docstring")  RectangularPixel::getPosition "kvector_t RectangularPixel::getPosition(double x, double y) const
 ";
 
 %feature("docstring")  RectangularPixel::getIntegrationFactor "double RectangularPixel::getIntegrationFactor(double x, double y) const override
@@ -12536,7 +12582,7 @@ C++ includes: ParaCrystalBuilder.h
 %feature("docstring")  RectParaCrystalBuilder::RectParaCrystalBuilder "RectParaCrystalBuilder::RectParaCrystalBuilder()
 ";
 
-%feature("docstring")  RectParaCrystalBuilder::buildSample "MultiLayer * RectParaCrystalBuilder::buildSample() const 
+%feature("docstring")  RectParaCrystalBuilder::buildSample "MultiLayer * RectParaCrystalBuilder::buildSample() const
 ";
 
 
@@ -12601,22 +12647,22 @@ C++ includes: RegionOfInterest.h
 %feature("docstring")  RegionOfInterest::RegionOfInterest "RegionOfInterest::RegionOfInterest(const OutputData< double > &data, double xlow, double ylow, double xup, double yup)
 ";
 
-%feature("docstring")  RegionOfInterest::clone "RegionOfInterest * RegionOfInterest::clone() const 
+%feature("docstring")  RegionOfInterest::clone "RegionOfInterest * RegionOfInterest::clone() const
 ";
 
 %feature("docstring")  RegionOfInterest::~RegionOfInterest "RegionOfInterest::~RegionOfInterest()
 ";
 
-%feature("docstring")  RegionOfInterest::getXlow "double RegionOfInterest::getXlow() const 
+%feature("docstring")  RegionOfInterest::getXlow "double RegionOfInterest::getXlow() const
 ";
 
-%feature("docstring")  RegionOfInterest::getYlow "double RegionOfInterest::getYlow() const 
+%feature("docstring")  RegionOfInterest::getYlow "double RegionOfInterest::getYlow() const
 ";
 
-%feature("docstring")  RegionOfInterest::getXup "double RegionOfInterest::getXup() const 
+%feature("docstring")  RegionOfInterest::getXup "double RegionOfInterest::getXup() const
 ";
 
-%feature("docstring")  RegionOfInterest::getYup "double RegionOfInterest::getYup() const 
+%feature("docstring")  RegionOfInterest::getYup "double RegionOfInterest::getYup() const
 ";
 
 %feature("docstring")  RegionOfInterest::detectorIndex "size_t RegionOfInterest::detectorIndex(size_t roiIndex) const
@@ -12639,10 +12685,10 @@ Number of detector bins in ROI area.
 Number of detector bins. 
 ";
 
-%feature("docstring")  RegionOfInterest::isInROI "bool RegionOfInterest::isInROI(size_t detectorIndex) const 
+%feature("docstring")  RegionOfInterest::isInROI "bool RegionOfInterest::isInROI(size_t detectorIndex) const
 ";
 
-%feature("docstring")  RegionOfInterest::clipAxisToRoi "std::unique_ptr< IAxis > RegionOfInterest::clipAxisToRoi(size_t axis_index, const IAxis &axis) const 
+%feature("docstring")  RegionOfInterest::clipAxisToRoi "std::unique_ptr< IAxis > RegionOfInterest::clipAxisToRoi(size_t axis_index, const IAxis &axis) const
 ";
 
 
@@ -12657,10 +12703,10 @@ C++ includes: ResolutionFunction2DGaussian.h
 %feature("docstring")  ResolutionFunction2DGaussian::ResolutionFunction2DGaussian "ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(double sigma_x, double sigma_y)
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::evaluateCDF "double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const 
+%feature("docstring")  ResolutionFunction2DGaussian::evaluateCDF "double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::clone "ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const 
+%feature("docstring")  ResolutionFunction2DGaussian::clone "ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const
 ";
 
 %feature("docstring")  ResolutionFunction2DGaussian::accept "void ResolutionFunction2DGaussian::accept(INodeVisitor *visitor) const final
@@ -12668,10 +12714,10 @@ C++ includes: ResolutionFunction2DGaussian.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::getSigmaX "double ResolutionFunction2DGaussian::getSigmaX() const 
+%feature("docstring")  ResolutionFunction2DGaussian::getSigmaX "double ResolutionFunction2DGaussian::getSigmaX() const
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::getSigmaY "double ResolutionFunction2DGaussian::getSigmaY() const 
+%feature("docstring")  ResolutionFunction2DGaussian::getSigmaY "double ResolutionFunction2DGaussian::getSigmaY() const
 ";
 
 
@@ -12706,7 +12752,7 @@ C++ includes: CylindersBuilder.h
 %feature("docstring")  RotatedCylindersBuilder::RotatedCylindersBuilder "RotatedCylindersBuilder::RotatedCylindersBuilder()
 ";
 
-%feature("docstring")  RotatedCylindersBuilder::buildSample "MultiLayer * RotatedCylindersBuilder::buildSample() const 
+%feature("docstring")  RotatedCylindersBuilder::buildSample "MultiLayer * RotatedCylindersBuilder::buildSample() const
 ";
 
 
@@ -12721,7 +12767,7 @@ C++ includes: RotatedPyramidsBuilder.h
 %feature("docstring")  RotatedPyramidsBuilder::RotatedPyramidsBuilder "RotatedPyramidsBuilder::RotatedPyramidsBuilder()
 ";
 
-%feature("docstring")  RotatedPyramidsBuilder::buildSample "MultiLayer * RotatedPyramidsBuilder::buildSample() const 
+%feature("docstring")  RotatedPyramidsBuilder::buildSample "MultiLayer * RotatedPyramidsBuilder::buildSample() const
 ";
 
 
@@ -12736,7 +12782,7 @@ C++ includes: ParticleDistributionsBuilder.h
 %feature("docstring")  RotatedPyramidsDistributionBuilder::RotatedPyramidsDistributionBuilder "RotatedPyramidsDistributionBuilder::RotatedPyramidsDistributionBuilder()
 ";
 
-%feature("docstring")  RotatedPyramidsDistributionBuilder::buildSample "MultiLayer * RotatedPyramidsDistributionBuilder::buildSample() const 
+%feature("docstring")  RotatedPyramidsDistributionBuilder::buildSample "MultiLayer * RotatedPyramidsDistributionBuilder::buildSample() const
 ";
 
 
@@ -12751,7 +12797,7 @@ C++ includes: TwoDimLatticeBuilder.h
 %feature("docstring")  RotatedSquareLatticeBuilder::RotatedSquareLatticeBuilder "RotatedSquareLatticeBuilder::RotatedSquareLatticeBuilder()
 ";
 
-%feature("docstring")  RotatedSquareLatticeBuilder::buildSample "MultiLayer * RotatedSquareLatticeBuilder::buildSample() const 
+%feature("docstring")  RotatedSquareLatticeBuilder::buildSample "MultiLayer * RotatedSquareLatticeBuilder::buildSample() const
 ";
 
 
@@ -12790,13 +12836,13 @@ Returns a new  IRotation object that is the current object's inverse.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  RotationEuler::getAlpha "double RotationEuler::getAlpha() const 
+%feature("docstring")  RotationEuler::getAlpha "double RotationEuler::getAlpha() const
 ";
 
-%feature("docstring")  RotationEuler::getBeta "double RotationEuler::getBeta() const 
+%feature("docstring")  RotationEuler::getBeta "double RotationEuler::getBeta() const
 ";
 
-%feature("docstring")  RotationEuler::getGamma "double RotationEuler::getGamma() const 
+%feature("docstring")  RotationEuler::getGamma "double RotationEuler::getGamma() const
 ";
 
 %feature("docstring")  RotationEuler::getTransform3D "Transform3D RotationEuler::getTransform3D() const
@@ -12834,7 +12880,7 @@ Returns a new  IRotation object that is the current object's inverse.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  RotationX::getAngle "double RotationX::getAngle() const 
+%feature("docstring")  RotationX::getAngle "double RotationX::getAngle() const
 ";
 
 %feature("docstring")  RotationX::getTransform3D "Transform3D RotationX::getTransform3D() const
@@ -12872,7 +12918,7 @@ Returns a new  IRotation object that is the current object's inverse.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  RotationY::getAngle "double RotationY::getAngle() const 
+%feature("docstring")  RotationY::getAngle "double RotationY::getAngle() const
 ";
 
 %feature("docstring")  RotationY::getTransform3D "Transform3D RotationY::getTransform3D() const
@@ -12910,7 +12956,7 @@ Returns a new  IRotation object that is the current object's inverse.
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  RotationZ::getAngle "double RotationZ::getAngle() const 
+%feature("docstring")  RotationZ::getAngle "double RotationZ::getAngle() const
 ";
 
 %feature("docstring")  RotationZ::getTransform3D "Transform3D RotationZ::getTransform3D() const
@@ -12965,10 +13011,10 @@ C++ includes: SafePointerVector.h
 %feature("docstring")  SafePointerVector::~SafePointerVector "SafePointerVector< T >::~SafePointerVector()
 ";
 
-%feature("docstring")  SafePointerVector::size "size_t SafePointerVector< T >::size() const 
+%feature("docstring")  SafePointerVector::size "size_t SafePointerVector< T >::size() const
 ";
 
-%feature("docstring")  SafePointerVector::empty "bool SafePointerVector< T >::empty() const 
+%feature("docstring")  SafePointerVector::empty "bool SafePointerVector< T >::empty() const
 ";
 
 %feature("docstring")  SafePointerVector::push_back "void SafePointerVector< T >::push_back(T *pointer)
@@ -12977,13 +13023,13 @@ C++ includes: SafePointerVector.h
 %feature("docstring")  SafePointerVector::begin "iterator SafePointerVector< T >::begin()
 ";
 
-%feature("docstring")  SafePointerVector::begin "const_iterator SafePointerVector< T >::begin() const 
+%feature("docstring")  SafePointerVector::begin "const_iterator SafePointerVector< T >::begin() const
 ";
 
 %feature("docstring")  SafePointerVector::end "iterator SafePointerVector< T >::end()
 ";
 
-%feature("docstring")  SafePointerVector::end "const_iterator SafePointerVector< T >::end() const 
+%feature("docstring")  SafePointerVector::end "const_iterator SafePointerVector< T >::end() const
 ";
 
 %feature("docstring")  SafePointerVector::deleteElement "bool SafePointerVector< T >::deleteElement(T *pointer)
@@ -12992,7 +13038,7 @@ C++ includes: SafePointerVector.h
 %feature("docstring")  SafePointerVector::back "T* SafePointerVector< T >::back()
 ";
 
-%feature("docstring")  SafePointerVector::back "const T* SafePointerVector< T >::back() const 
+%feature("docstring")  SafePointerVector::back "const T* SafePointerVector< T >::back() const
 ";
 
 %feature("docstring")  SafePointerVector::clear "void SafePointerVector< T >::clear()
@@ -13270,12 +13316,12 @@ C++ includes: ScalarFresnelMap.h
 %feature("docstring")  ScalarFresnelMap::~ScalarFresnelMap "ScalarFresnelMap::~ScalarFresnelMap() final
 ";
 
-%feature("docstring")  ScalarFresnelMap::getOutCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const finaloverride
+%feature("docstring")  ScalarFresnelMap::getOutCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
 
 Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
 ";
 
-%feature("docstring")  ScalarFresnelMap::getInCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const finaloverride
+%feature("docstring")  ScalarFresnelMap::getInCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
 
 Retrieves the amplitude coefficients for an incoming wavevector. 
 ";
@@ -13300,7 +13346,7 @@ C++ includes: ScalarRTCoefficients.h
 %feature("docstring")  ScalarRTCoefficients::~ScalarRTCoefficients "virtual ScalarRTCoefficients::~ScalarRTCoefficients()
 ";
 
-%feature("docstring")  ScalarRTCoefficients::clone "ScalarRTCoefficients * ScalarRTCoefficients::clone() const 
+%feature("docstring")  ScalarRTCoefficients::clone "ScalarRTCoefficients * ScalarRTCoefficients::clone() const
 ";
 
 %feature("docstring")  ScalarRTCoefficients::T1plus "Eigen::Vector2cd ScalarRTCoefficients::T1plus() const
@@ -13308,25 +13354,25 @@ C++ includes: ScalarRTCoefficients.h
 The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
 ";
 
-%feature("docstring")  ScalarRTCoefficients::R1plus "Eigen::Vector2cd ScalarRTCoefficients::R1plus() const 
+%feature("docstring")  ScalarRTCoefficients::R1plus "Eigen::Vector2cd ScalarRTCoefficients::R1plus() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::T2plus "Eigen::Vector2cd ScalarRTCoefficients::T2plus() const 
+%feature("docstring")  ScalarRTCoefficients::T2plus "Eigen::Vector2cd ScalarRTCoefficients::T2plus() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::R2plus "Eigen::Vector2cd ScalarRTCoefficients::R2plus() const 
+%feature("docstring")  ScalarRTCoefficients::R2plus "Eigen::Vector2cd ScalarRTCoefficients::R2plus() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::T1min "Eigen::Vector2cd ScalarRTCoefficients::T1min() const 
+%feature("docstring")  ScalarRTCoefficients::T1min "Eigen::Vector2cd ScalarRTCoefficients::T1min() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::R1min "Eigen::Vector2cd ScalarRTCoefficients::R1min() const 
+%feature("docstring")  ScalarRTCoefficients::R1min "Eigen::Vector2cd ScalarRTCoefficients::R1min() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::T2min "Eigen::Vector2cd ScalarRTCoefficients::T2min() const 
+%feature("docstring")  ScalarRTCoefficients::T2min "Eigen::Vector2cd ScalarRTCoefficients::T2min() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::R2min "Eigen::Vector2cd ScalarRTCoefficients::R2min() const 
+%feature("docstring")  ScalarRTCoefficients::R2min "Eigen::Vector2cd ScalarRTCoefficients::R2min() const
 ";
 
 %feature("docstring")  ScalarRTCoefficients::getKz "Eigen::Vector2cd ScalarRTCoefficients::getKz() const
@@ -13339,10 +13385,10 @@ Returns z-part of the two wavevector eigenmodes.
 Scalar value getters; these throw errors by default as they should only be used when the derived object is really scalar 
 ";
 
-%feature("docstring")  ScalarRTCoefficients::getScalarR "complex_t ScalarRTCoefficients::getScalarR() const 
+%feature("docstring")  ScalarRTCoefficients::getScalarR "complex_t ScalarRTCoefficients::getScalarR() const
 ";
 
-%feature("docstring")  ScalarRTCoefficients::getScalarKz "virtual complex_t ScalarRTCoefficients::getScalarKz() const 
+%feature("docstring")  ScalarRTCoefficients::getScalarKz "virtual complex_t ScalarRTCoefficients::getScalarKz() const
 ";
 
 
@@ -13367,10 +13413,10 @@ C++ includes: ISelectionRule.h
 %feature("docstring")  SimpleSelectionRule::~SimpleSelectionRule "virtual SimpleSelectionRule::~SimpleSelectionRule()
 ";
 
-%feature("docstring")  SimpleSelectionRule::clone "SimpleSelectionRule * SimpleSelectionRule::clone() const 
+%feature("docstring")  SimpleSelectionRule::clone "SimpleSelectionRule * SimpleSelectionRule::clone() const
 ";
 
-%feature("docstring")  SimpleSelectionRule::coordinateSelected "bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const 
+%feature("docstring")  SimpleSelectionRule::coordinateSelected "bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const
 ";
 
 
@@ -13412,7 +13458,7 @@ Run simulation with possible averaging over parameter distributions.
 %feature("docstring")  Simulation::setInstrument "void Simulation::setInstrument(const Instrument &instrument)
 ";
 
-%feature("docstring")  Simulation::getInstrument "const Instrument& Simulation::getInstrument() const 
+%feature("docstring")  Simulation::getInstrument "const Instrument& Simulation::getInstrument() const
 ";
 
 %feature("docstring")  Simulation::getInstrument "Instrument& Simulation::getInstrument()
@@ -13421,7 +13467,7 @@ Run simulation with possible averaging over parameter distributions.
 %feature("docstring")  Simulation::setBeamIntensity "void Simulation::setBeamIntensity(double intensity)
 ";
 
-%feature("docstring")  Simulation::getBeamIntensity "double Simulation::getBeamIntensity() const 
+%feature("docstring")  Simulation::getBeamIntensity "double Simulation::getBeamIntensity() const
 ";
 
 %feature("docstring")  Simulation::setBeamPolarization "void Simulation::setBeamPolarization(const kvector_t bloch_vector)
@@ -13445,7 +13491,7 @@ Sets the polarization analyzer characteristics of the detector.
 The  MultiLayer object will not be owned by the  Simulation object. 
 ";
 
-%feature("docstring")  Simulation::sample "const MultiLayer * Simulation::sample() const 
+%feature("docstring")  Simulation::sample "const MultiLayer * Simulation::sample() const
 ";
 
 %feature("docstring")  Simulation::setSampleBuilder "void Simulation::setSampleBuilder(const std::shared_ptr< IMultiLayerBuilder > sample_builder)
@@ -13454,7 +13500,7 @@ The  MultiLayer object will not be owned by the  Simulation object.
 %feature("docstring")  Simulation::setBackground "void Simulation::setBackground(const IBackground &bg)
 ";
 
-%feature("docstring")  Simulation::background "const IBackground* Simulation::background() const 
+%feature("docstring")  Simulation::background "const IBackground* Simulation::background() const
 ";
 
 %feature("docstring")  Simulation::numberOfSimulationElements "virtual size_t Simulation::numberOfSimulationElements() const =0
@@ -13471,13 +13517,13 @@ Clone simulated intensity map.
 %feature("docstring")  Simulation::addParameterDistribution "void Simulation::addParameterDistribution(const ParameterDistribution &par_distr)
 ";
 
-%feature("docstring")  Simulation::getDistributionHandler "const DistributionHandler& Simulation::getDistributionHandler() const 
+%feature("docstring")  Simulation::getDistributionHandler "const DistributionHandler& Simulation::getDistributionHandler() const
 ";
 
 %feature("docstring")  Simulation::setOptions "void Simulation::setOptions(const SimulationOptions &options)
 ";
 
-%feature("docstring")  Simulation::getOptions "const SimulationOptions& Simulation::getOptions() const 
+%feature("docstring")  Simulation::getOptions "const SimulationOptions& Simulation::getOptions() const
 ";
 
 %feature("docstring")  Simulation::getOptions "SimulationOptions& Simulation::getOptions()
@@ -13621,7 +13667,7 @@ C++ includes: SimulationArea.h
 returns true if given iterator index correspond to masked detector channel 
 ";
 
-%feature("docstring")  SimulationArea::totalSize "size_t SimulationArea::totalSize() const 
+%feature("docstring")  SimulationArea::totalSize "size_t SimulationArea::totalSize() const
 ";
 
 %feature("docstring")  SimulationArea::roiIndex "size_t SimulationArea::roiIndex(size_t index) const
@@ -13646,16 +13692,16 @@ C++ includes: SimulationAreaIterator.h
 %feature("docstring")  SimulationAreaIterator::SimulationAreaIterator "SimulationAreaIterator::SimulationAreaIterator(const SimulationArea *area, size_t start_at_index)
 ";
 
-%feature("docstring")  SimulationAreaIterator::index "size_t SimulationAreaIterator::index() const 
+%feature("docstring")  SimulationAreaIterator::index "size_t SimulationAreaIterator::index() const
 ";
 
-%feature("docstring")  SimulationAreaIterator::elementIndex "size_t SimulationAreaIterator::elementIndex() const 
+%feature("docstring")  SimulationAreaIterator::elementIndex "size_t SimulationAreaIterator::elementIndex() const
 ";
 
-%feature("docstring")  SimulationAreaIterator::roiIndex "size_t SimulationAreaIterator::roiIndex() const 
+%feature("docstring")  SimulationAreaIterator::roiIndex "size_t SimulationAreaIterator::roiIndex() const
 ";
 
-%feature("docstring")  SimulationAreaIterator::detectorIndex "size_t SimulationAreaIterator::detectorIndex() const 
+%feature("docstring")  SimulationAreaIterator::detectorIndex "size_t SimulationAreaIterator::detectorIndex() const
 ";
 
 
@@ -13699,19 +13745,19 @@ Sets the polarization analyzer operator (in spin basis along z-axis)
 Returns assigned  PolarizationHandler. 
 ";
 
-%feature("docstring")  SimulationElement::getWavelength "double SimulationElement::getWavelength() const 
+%feature("docstring")  SimulationElement::getWavelength "double SimulationElement::getWavelength() const
 ";
 
-%feature("docstring")  SimulationElement::getAlphaI "double SimulationElement::getAlphaI() const 
+%feature("docstring")  SimulationElement::getAlphaI "double SimulationElement::getAlphaI() const
 ";
 
-%feature("docstring")  SimulationElement::getPhiI "double SimulationElement::getPhiI() const 
+%feature("docstring")  SimulationElement::getPhiI "double SimulationElement::getPhiI() const
 ";
 
-%feature("docstring")  SimulationElement::getAlphaMean "double SimulationElement::getAlphaMean() const 
+%feature("docstring")  SimulationElement::getAlphaMean "double SimulationElement::getAlphaMean() const
 ";
 
-%feature("docstring")  SimulationElement::getPhiMean "double SimulationElement::getPhiMean() const 
+%feature("docstring")  SimulationElement::getPhiMean "double SimulationElement::getPhiMean() const
 ";
 
 %feature("docstring")  SimulationElement::setIntensity "void SimulationElement::setIntensity(double intensity)
@@ -13720,16 +13766,16 @@ Returns assigned  PolarizationHandler.
 %feature("docstring")  SimulationElement::addIntensity "void SimulationElement::addIntensity(double intensity)
 ";
 
-%feature("docstring")  SimulationElement::getIntensity "double SimulationElement::getIntensity() const 
+%feature("docstring")  SimulationElement::getIntensity "double SimulationElement::getIntensity() const
 ";
 
-%feature("docstring")  SimulationElement::getKi "kvector_t SimulationElement::getKi() const 
+%feature("docstring")  SimulationElement::getKi "kvector_t SimulationElement::getKi() const
 ";
 
-%feature("docstring")  SimulationElement::getMeanKf "kvector_t SimulationElement::getMeanKf() const 
+%feature("docstring")  SimulationElement::getMeanKf "kvector_t SimulationElement::getMeanKf() const
 ";
 
-%feature("docstring")  SimulationElement::getMeanQ "kvector_t SimulationElement::getMeanQ() const 
+%feature("docstring")  SimulationElement::getMeanQ "kvector_t SimulationElement::getMeanQ() const
 ";
 
 %feature("docstring")  SimulationElement::getQ "kvector_t SimulationElement::getQ(double x, double y) const
@@ -13737,16 +13783,16 @@ Returns assigned  PolarizationHandler.
 Returns scattering vector Q, with Kf determined from in-pixel coordinates x,y. In-pixel coordinates take values from 0 to 1. 
 ";
 
-%feature("docstring")  SimulationElement::getIntegrationFactor "double SimulationElement::getIntegrationFactor(double x, double y) const 
+%feature("docstring")  SimulationElement::getIntegrationFactor "double SimulationElement::getIntegrationFactor(double x, double y) const
 ";
 
-%feature("docstring")  SimulationElement::getSolidAngle "double SimulationElement::getSolidAngle() const 
+%feature("docstring")  SimulationElement::getSolidAngle "double SimulationElement::getSolidAngle() const
 ";
 
-%feature("docstring")  SimulationElement::getAlpha "double SimulationElement::getAlpha(double x, double y) const 
+%feature("docstring")  SimulationElement::getAlpha "double SimulationElement::getAlpha(double x, double y) const
 ";
 
-%feature("docstring")  SimulationElement::getPhi "double SimulationElement::getPhi(double x, double y) const 
+%feature("docstring")  SimulationElement::getPhi "double SimulationElement::getPhi(double x, double y) const
 ";
 
 %feature("docstring")  SimulationElement::setSpecular "void SimulationElement::setSpecular(bool is_specular)
@@ -13785,10 +13831,10 @@ C++ includes: SimulationOptions.h
 %feature("docstring")  SimulationOptions::SimulationOptions "SimulationOptions::SimulationOptions()
 ";
 
-%feature("docstring")  SimulationOptions::isIntegrate "bool SimulationOptions::isIntegrate() const 
+%feature("docstring")  SimulationOptions::isIntegrate "bool SimulationOptions::isIntegrate() const
 ";
 
-%feature("docstring")  SimulationOptions::getMcPoints "size_t SimulationOptions::getMcPoints() const 
+%feature("docstring")  SimulationOptions::getMcPoints "size_t SimulationOptions::getMcPoints() const
 ";
 
 %feature("docstring")  SimulationOptions::setMonteCarloIntegration "void SimulationOptions::setMonteCarloIntegration(bool flag=true, size_t mc_points=50)
@@ -13810,7 +13856,7 @@ Number of points for MonteCarlo integrator
 Sets number of threads to use during the simulation (0 - take the default value from the hardware) 
 ";
 
-%feature("docstring")  SimulationOptions::getNumberOfThreads "unsigned SimulationOptions::getNumberOfThreads() const 
+%feature("docstring")  SimulationOptions::getNumberOfThreads "unsigned SimulationOptions::getNumberOfThreads() const
 ";
 
 %feature("docstring")  SimulationOptions::setNumberOfBatches "void SimulationOptions::setNumberOfBatches(int nbatches)
@@ -13818,10 +13864,10 @@ Sets number of threads to use during the simulation (0 - take the default value
 Sets number of batches to split. 
 ";
 
-%feature("docstring")  SimulationOptions::getNumberOfBatches "unsigned SimulationOptions::getNumberOfBatches() const 
+%feature("docstring")  SimulationOptions::getNumberOfBatches "unsigned SimulationOptions::getNumberOfBatches() const
 ";
 
-%feature("docstring")  SimulationOptions::getCurrentBatch "unsigned SimulationOptions::getCurrentBatch() const 
+%feature("docstring")  SimulationOptions::getCurrentBatch "unsigned SimulationOptions::getCurrentBatch() const
 ";
 
 %feature("docstring")  SimulationOptions::setThreadInfo "void SimulationOptions::setThreadInfo(const ThreadInfo &thread_info)
@@ -13829,19 +13875,19 @@ Sets number of batches to split.
 Sets the batch and thread information to be used. 
 ";
 
-%feature("docstring")  SimulationOptions::getHardwareConcurrency "unsigned SimulationOptions::getHardwareConcurrency() const 
+%feature("docstring")  SimulationOptions::getHardwareConcurrency "unsigned SimulationOptions::getHardwareConcurrency() const
 ";
 
 %feature("docstring")  SimulationOptions::setIncludeSpecular "void SimulationOptions::setIncludeSpecular(bool include_specular)
 ";
 
-%feature("docstring")  SimulationOptions::includeSpecular "bool SimulationOptions::includeSpecular() const 
+%feature("docstring")  SimulationOptions::includeSpecular "bool SimulationOptions::includeSpecular() const
 ";
 
 %feature("docstring")  SimulationOptions::setUseAvgMaterials "void SimulationOptions::setUseAvgMaterials(bool use_avg_materials)
 ";
 
-%feature("docstring")  SimulationOptions::useAvgMaterials "bool SimulationOptions::useAvgMaterials() const 
+%feature("docstring")  SimulationOptions::useAvgMaterials "bool SimulationOptions::useAvgMaterials() const
 ";
 
 
@@ -13865,10 +13911,10 @@ C++ includes: SimulationResult.h
 %feature("docstring")  SimulationResult::SimulationResult "SimulationResult::SimulationResult(SimulationResult &&other)
 ";
 
-%feature("docstring")  SimulationResult::data "OutputData< double > * SimulationResult::data(AxesUnits units_type=AxesUnits::DEFAULT) const 
+%feature("docstring")  SimulationResult::data "OutputData< double > * SimulationResult::data(AxesUnits units_type=AxesUnits::DEFAULT) const
 ";
 
-%feature("docstring")  SimulationResult::histogram2d "Histogram2D * SimulationResult::histogram2d(AxesUnits units_type=AxesUnits::DEFAULT) const 
+%feature("docstring")  SimulationResult::histogram2d "Histogram2D * SimulationResult::histogram2d(AxesUnits units_type=AxesUnits::DEFAULT) const
 ";
 
 
@@ -13914,7 +13960,7 @@ C++ includes: SizeDistributionModelsBuilder.h
 %feature("docstring")  SizeDistributionDAModelBuilder::SizeDistributionDAModelBuilder "SizeDistributionDAModelBuilder::SizeDistributionDAModelBuilder()
 ";
 
-%feature("docstring")  SizeDistributionDAModelBuilder::buildSample "MultiLayer * SizeDistributionDAModelBuilder::buildSample() const 
+%feature("docstring")  SizeDistributionDAModelBuilder::buildSample "MultiLayer * SizeDistributionDAModelBuilder::buildSample() const
 ";
 
 
@@ -13929,7 +13975,7 @@ C++ includes: SizeDistributionModelsBuilder.h
 %feature("docstring")  SizeDistributionLMAModelBuilder::SizeDistributionLMAModelBuilder "SizeDistributionLMAModelBuilder::SizeDistributionLMAModelBuilder()
 ";
 
-%feature("docstring")  SizeDistributionLMAModelBuilder::buildSample "MultiLayer * SizeDistributionLMAModelBuilder::buildSample() const 
+%feature("docstring")  SizeDistributionLMAModelBuilder::buildSample "MultiLayer * SizeDistributionLMAModelBuilder::buildSample() const
 ";
 
 
@@ -13944,7 +13990,7 @@ C++ includes: SizeDistributionModelsBuilder.h
 %feature("docstring")  SizeDistributionSSCAModelBuilder::SizeDistributionSSCAModelBuilder "SizeDistributionSSCAModelBuilder::SizeDistributionSSCAModelBuilder()
 ";
 
-%feature("docstring")  SizeDistributionSSCAModelBuilder::buildSample "MultiLayer * SizeDistributionSSCAModelBuilder::buildSample() const 
+%feature("docstring")  SizeDistributionSSCAModelBuilder::buildSample "MultiLayer * SizeDistributionSSCAModelBuilder::buildSample() const
 ";
 
 
@@ -13959,7 +14005,7 @@ C++ includes: SlicedParticleBuilder.h
 %feature("docstring")  SlicedCompositionBuilder::SlicedCompositionBuilder "SlicedCompositionBuilder::SlicedCompositionBuilder()
 ";
 
-%feature("docstring")  SlicedCompositionBuilder::buildSample "MultiLayer * SlicedCompositionBuilder::buildSample() const 
+%feature("docstring")  SlicedCompositionBuilder::buildSample "MultiLayer * SlicedCompositionBuilder::buildSample() const
 ";
 
 
@@ -13980,10 +14026,10 @@ C++ includes: SlicedFormFactorList.h
 %feature("docstring")  SlicedFormFactorList::~SlicedFormFactorList "SlicedFormFactorList::~SlicedFormFactorList()=default
 ";
 
-%feature("docstring")  SlicedFormFactorList::size "size_t SlicedFormFactorList::size() const 
+%feature("docstring")  SlicedFormFactorList::size "size_t SlicedFormFactorList::size() const
 ";
 
-%feature("docstring")  SlicedFormFactorList::regionMap "std::map< size_t, std::vector< HomogeneousRegion > > SlicedFormFactorList::regionMap() const 
+%feature("docstring")  SlicedFormFactorList::regionMap "std::map< size_t, std::vector< HomogeneousRegion > > SlicedFormFactorList::regionMap() const
 ";
 
 
@@ -14033,7 +14079,7 @@ C++ includes: SpecularComputationTerm.h
 %feature("docstring")  SpecularComputationTerm::SpecularComputationTerm "SpecularComputationTerm::SpecularComputationTerm(const MultiLayer *p_multi_layer, const IFresnelMap *p_fresnel_map)
 ";
 
-%feature("docstring")  SpecularComputationTerm::eval "void SpecularComputationTerm::eval(ProgressHandler *progress, const SpecularElementIter &begin_it, const SpecularElementIter &end_it) const 
+%feature("docstring")  SpecularComputationTerm::eval "void SpecularComputationTerm::eval(ProgressHandler *progress, const SpecularElementIter &begin_it, const SpecularElementIter &end_it) const
 ";
 
 
@@ -14054,7 +14100,7 @@ C++ includes: SpecularData.h
 %feature("docstring")  SpecularData::SpecularData "SpecularData::SpecularData(ScalarVector coefficients)
 ";
 
-%feature("docstring")  SpecularData::isInited "bool SpecularData::isInited() const 
+%feature("docstring")  SpecularData::isInited "bool SpecularData::isInited() const
 ";
 
 
@@ -14162,7 +14208,7 @@ C++ includes: SpecularSimulation.h
 Put into a clean state for running a simulation. 
 ";
 
-%feature("docstring")  SpecularSimulation::accept "void SpecularSimulation::accept(INodeVisitor *visitor) const overridefinal
+%feature("docstring")  SpecularSimulation::accept "void SpecularSimulation::accept(INodeVisitor *visitor) const override final
 
 Calls the  INodeVisitor's visit method. 
 ";
@@ -14188,7 +14234,10 @@ Returns a pointer to incident angle axis.
 Returns detector count values in the form of  OutputData<double>. Detector counts are proportional to  $Reflectivity = |R|^2$ from the upper layer. 
 ";
 
-%feature("docstring")  SpecularSimulation::getIntensityData "Histogram1D * SpecularSimulation::getIntensityData() const
+%feature("docstring")  SpecularSimulation::addParameterDistribution "void SpecularSimulation::addParameterDistribution(const ParameterDistribution &par_distr) override
+";
+
+%feature("docstring")  SpecularSimulation::getIntensityData "Histogram1D * SpecularSimulation::getIntensityData(AxesUnits units_type=AxesUnits::DEFAULT) const
 
 Returns detector signal (  $ \\\\propto |R|^2$) in the form of 1D Histogram. 
 ";
@@ -14224,13 +14273,13 @@ Assigns  PolarizationHandler.
 Returns assigned  PolarizationHandler. 
 ";
 
-%feature("docstring")  SpecularSimulationElement::getWavelength "double SpecularSimulationElement::getWavelength() const 
+%feature("docstring")  SpecularSimulationElement::getWavelength "double SpecularSimulationElement::getWavelength() const
 ";
 
-%feature("docstring")  SpecularSimulationElement::getAlphaI "double SpecularSimulationElement::getAlphaI() const 
+%feature("docstring")  SpecularSimulationElement::getAlphaI "double SpecularSimulationElement::getAlphaI() const
 ";
 
-%feature("docstring")  SpecularSimulationElement::getKi "kvector_t SpecularSimulationElement::getKi() const 
+%feature("docstring")  SpecularSimulationElement::getKi "kvector_t SpecularSimulationElement::getKi() const
 ";
 
 %feature("docstring")  SpecularSimulationElement::setIntensity "void SpecularSimulationElement::setIntensity(double intensity)
@@ -14239,7 +14288,7 @@ Returns assigned  PolarizationHandler.
 %feature("docstring")  SpecularSimulationElement::addIntensity "void SpecularSimulationElement::addIntensity(double intensity)
 ";
 
-%feature("docstring")  SpecularSimulationElement::getIntensity "double SpecularSimulationElement::getIntensity() const 
+%feature("docstring")  SpecularSimulationElement::getIntensity "double SpecularSimulationElement::getIntensity() const
 ";
 
 %feature("docstring")  SpecularSimulationElement::specularData "const SpecularData& SpecularSimulationElement::specularData() const
@@ -14252,6 +14301,14 @@ Returns specular data container.
 Set specular data. 
 ";
 
+%feature("docstring")  SpecularSimulationElement::setCalculationFlag "void SpecularSimulationElement::setCalculationFlag(bool calculation_flag)
+
+Set calculation flag (if it's false, zero intensity is assigned to the element) 
+";
+
+%feature("docstring")  SpecularSimulationElement::isCalculated "bool SpecularSimulationElement::isCalculated() const
+";
+
 
 // File: classSpheresWithLimitsDistributionBuilder.xml
 %feature("docstring") SpheresWithLimitsDistributionBuilder "
@@ -14264,7 +14321,7 @@ C++ includes: ParticleDistributionsBuilder.h
 %feature("docstring")  SpheresWithLimitsDistributionBuilder::SpheresWithLimitsDistributionBuilder "SpheresWithLimitsDistributionBuilder::SpheresWithLimitsDistributionBuilder()
 ";
 
-%feature("docstring")  SpheresWithLimitsDistributionBuilder::buildSample "MultiLayer * SpheresWithLimitsDistributionBuilder::buildSample() const 
+%feature("docstring")  SpheresWithLimitsDistributionBuilder::buildSample "MultiLayer * SpheresWithLimitsDistributionBuilder::buildSample() const
 ";
 
 
@@ -14499,7 +14556,7 @@ C++ includes: ISquaredFunction.h
 %feature("docstring")  SquareLattice::SquareLattice "SquareLattice::SquareLattice(double length, double rotation_angle=0.0)
 ";
 
-%feature("docstring")  SquareLattice::clone "SquareLattice * SquareLattice::clone() const 
+%feature("docstring")  SquareLattice::clone "SquareLattice * SquareLattice::clone() const
 ";
 
 %feature("docstring")  SquareLattice::accept "void SquareLattice::accept(INodeVisitor *visitor) const final
@@ -14507,16 +14564,16 @@ C++ includes: ISquaredFunction.h
 Calls the  INodeVisitor's visit method. 
 ";
 
-%feature("docstring")  SquareLattice::length1 "virtual double SquareLattice::length1() const 
+%feature("docstring")  SquareLattice::length1 "virtual double SquareLattice::length1() const
 ";
 
-%feature("docstring")  SquareLattice::length2 "virtual double SquareLattice::length2() const 
+%feature("docstring")  SquareLattice::length2 "virtual double SquareLattice::length2() const
 ";
 
-%feature("docstring")  SquareLattice::latticeAngle "double SquareLattice::latticeAngle() const 
+%feature("docstring")  SquareLattice::latticeAngle "double SquareLattice::latticeAngle() const
 ";
 
-%feature("docstring")  SquareLattice::unitCellArea "double SquareLattice::unitCellArea() const 
+%feature("docstring")  SquareLattice::unitCellArea "double SquareLattice::unitCellArea() const
 ";
 
 
@@ -14531,7 +14588,7 @@ C++ includes: TwoDimLatticeBuilder.h
 %feature("docstring")  SquareLatticeBuilder::SquareLatticeBuilder "SquareLatticeBuilder::SquareLatticeBuilder()
 ";
 
-%feature("docstring")  SquareLatticeBuilder::buildSample "MultiLayer * SquareLatticeBuilder::buildSample() const 
+%feature("docstring")  SquareLatticeBuilder::buildSample "MultiLayer * SquareLatticeBuilder::buildSample() const
 ";
 
 
@@ -14549,19 +14606,19 @@ C++ includes: SSCAHelper.h
 %feature("docstring")  SSCAHelper::init "void SSCAHelper::init(const SafePointerVector< FormFactorCoherentSum > &ff_wrappers)
 ";
 
-%feature("docstring")  SSCAHelper::getCharacteristicSizeCoupling "complex_t SSCAHelper::getCharacteristicSizeCoupling(double qp, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const 
+%feature("docstring")  SSCAHelper::getCharacteristicSizeCoupling "complex_t SSCAHelper::getCharacteristicSizeCoupling(double qp, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const
 ";
 
-%feature("docstring")  SSCAHelper::getCharacteristicDistribution "complex_t SSCAHelper::getCharacteristicDistribution(double qp, const IInterferenceFunction *p_iff) const 
+%feature("docstring")  SSCAHelper::getCharacteristicDistribution "complex_t SSCAHelper::getCharacteristicDistribution(double qp, const IInterferenceFunction *p_iff) const
 ";
 
-%feature("docstring")  SSCAHelper::calculatePositionOffsetPhase "complex_t SSCAHelper::calculatePositionOffsetPhase(double qp, double radial_extension) const 
+%feature("docstring")  SSCAHelper::calculatePositionOffsetPhase "complex_t SSCAHelper::calculatePositionOffsetPhase(double qp, double radial_extension) const
 ";
 
-%feature("docstring")  SSCAHelper::getMeanFormfactorNorm "complex_t SSCAHelper::getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const 
+%feature("docstring")  SSCAHelper::getMeanFormfactorNorm "complex_t SSCAHelper::getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const
 ";
 
-%feature("docstring")  SSCAHelper::getMeanFormfactors "void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const IInterferenceFunctionStrategy::matrixFFVector_t &precomputed_ff, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const 
+%feature("docstring")  SSCAHelper::getMeanFormfactors "void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const IInterferenceFunctionStrategy::matrixFFVector_t &precomputed_ff, const SafePointerVector< FormFactorCoherentSum > &ff_wrappers) const
 ";
 
 
@@ -14603,16 +14660,16 @@ C++ includes: TRange.h
 %feature("docstring")  TRange::~TRange "virtual TRange< T >::~TRange()
 ";
 
-%feature("docstring")  TRange::getLowerBound "T TRange< T >::getLowerBound() const 
+%feature("docstring")  TRange::getLowerBound "T TRange< T >::getLowerBound() const
 ";
 
-%feature("docstring")  TRange::getUpperBound "T TRange< T >::getUpperBound() const 
+%feature("docstring")  TRange::getUpperBound "T TRange< T >::getUpperBound() const
 ";
 
-%feature("docstring")  TRange::getDifference "T TRange< T >::getDifference() const 
+%feature("docstring")  TRange::getDifference "T TRange< T >::getDifference() const
 ";
 
-%feature("docstring")  TRange::inRange "bool TRange< T >::inRange(T value) const 
+%feature("docstring")  TRange::inRange "bool TRange< T >::inRange(T value) const
 ";
 
 
@@ -14689,16 +14746,16 @@ Retrieve the rotation type (general, around x, y or z-axis)
 Determine if the transformation is trivial (identity) 
 ";
 
-%feature("docstring")  Transform3D::print "void Transform3D::print(std::ostream &ostr) const 
+%feature("docstring")  Transform3D::print "void Transform3D::print(std::ostream &ostr) const
 ";
 
-%feature("docstring")  Transform3D::isXRotation "bool Transform3D::isXRotation() const 
+%feature("docstring")  Transform3D::isXRotation "bool Transform3D::isXRotation() const
 ";
 
-%feature("docstring")  Transform3D::isYRotation "bool Transform3D::isYRotation() const 
+%feature("docstring")  Transform3D::isYRotation "bool Transform3D::isYRotation() const
 ";
 
-%feature("docstring")  Transform3D::isZRotation "bool Transform3D::isZRotation() const 
+%feature("docstring")  Transform3D::isZRotation "bool Transform3D::isZRotation() const
 ";
 
 
@@ -14713,7 +14770,7 @@ C++ includes: TransformationsBuilder.h
 %feature("docstring")  TransformBoxBuilder::TransformBoxBuilder "TransformBoxBuilder::TransformBoxBuilder()
 ";
 
-%feature("docstring")  TransformBoxBuilder::buildSample "MultiLayer * TransformBoxBuilder::buildSample() const 
+%feature("docstring")  TransformBoxBuilder::buildSample "MultiLayer * TransformBoxBuilder::buildSample() const
 ";
 
 
@@ -14738,7 +14795,7 @@ C++ includes: RipplesBuilder.h
 %feature("docstring")  TriangularRippleBuilder::TriangularRippleBuilder "TriangularRippleBuilder::TriangularRippleBuilder()
 ";
 
-%feature("docstring")  TriangularRippleBuilder::buildSample "MultiLayer * TriangularRippleBuilder::buildSample() const 
+%feature("docstring")  TriangularRippleBuilder::buildSample "MultiLayer * TriangularRippleBuilder::buildSample() const
 ";
 
 
@@ -14773,7 +14830,7 @@ C++ includes: TRange.h
 %feature("docstring")  TSampledRange::TSampledRange "TSampledRange< T >::TSampledRange(size_t n_samples, T lowerBound, T upperBound)
 ";
 
-%feature("docstring")  TSampledRange::getNSamples "size_t TSampledRange< T >::getNSamples() const 
+%feature("docstring")  TSampledRange::getNSamples "size_t TSampledRange< T >::getNSamples() const
 ";
 
 
@@ -14788,7 +14845,7 @@ C++ includes: TwoLayerRoughnessBuilder.h
 %feature("docstring")  TwoLayerRoughnessBuilder::TwoLayerRoughnessBuilder "TwoLayerRoughnessBuilder::TwoLayerRoughnessBuilder()
 ";
 
-%feature("docstring")  TwoLayerRoughnessBuilder::buildSample "MultiLayer * TwoLayerRoughnessBuilder::buildSample() const 
+%feature("docstring")  TwoLayerRoughnessBuilder::buildSample "MultiLayer * TwoLayerRoughnessBuilder::buildSample() const
 ";
 
 
@@ -14803,7 +14860,7 @@ C++ includes: ParticleDistributionsBuilder.h
 %feature("docstring")  TwoTypesCylindersDistributionBuilder::TwoTypesCylindersDistributionBuilder "TwoTypesCylindersDistributionBuilder::TwoTypesCylindersDistributionBuilder()
 ";
 
-%feature("docstring")  TwoTypesCylindersDistributionBuilder::buildSample "MultiLayer * TwoTypesCylindersDistributionBuilder::buildSample() const 
+%feature("docstring")  TwoTypesCylindersDistributionBuilder::buildSample "MultiLayer * TwoTypesCylindersDistributionBuilder::buildSample() const
 ";
 
 
@@ -14912,7 +14969,7 @@ Returns value of first point of axis.
 Returns value of last point of axis. 
 ";
 
-%feature("docstring")  VariableBinAxis::getBinCenter "double VariableBinAxis::getBinCenter(size_t index) const 
+%feature("docstring")  VariableBinAxis::getBinCenter "double VariableBinAxis::getBinCenter(size_t index) const
 ";
 
 %feature("docstring")  VariableBinAxis::findClosestIndex "size_t VariableBinAxis::findClosestIndex(double value) const
@@ -14920,10 +14977,10 @@ Returns value of last point of axis.
 find bin index which is best match for given value 
 ";
 
-%feature("docstring")  VariableBinAxis::getBinCenters "std::vector< double > VariableBinAxis::getBinCenters() const 
+%feature("docstring")  VariableBinAxis::getBinCenters "std::vector< double > VariableBinAxis::getBinCenters() const
 ";
 
-%feature("docstring")  VariableBinAxis::getBinBoundaries "std::vector<double> VariableBinAxis::getBinBoundaries() const 
+%feature("docstring")  VariableBinAxis::getBinBoundaries "std::vector<double> VariableBinAxis::getBinBoundaries() const
 ";
 
 %feature("docstring")  VariableBinAxis::createClippedAxis "VariableBinAxis * VariableBinAxis::createClippedAxis(double left, double right) const
@@ -14949,7 +15006,7 @@ x:
 The value at which it crosses x-axes 
 ";
 
-%feature("docstring")  VerticalLine::clone "VerticalLine* VerticalLine::clone() const 
+%feature("docstring")  VerticalLine::clone "VerticalLine* VerticalLine::clone() const
 ";
 
 %feature("docstring")  VerticalLine::contains "bool VerticalLine::contains(double x, double y) const
@@ -14962,7 +15019,7 @@ Returns true if point with given coordinates is inside or on border of the shape
 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). 
 ";
 
-%feature("docstring")  VerticalLine::getXpos "double VerticalLine::getXpos() const 
+%feature("docstring")  VerticalLine::getXpos "double VerticalLine::getXpos() const
 ";
 
 
@@ -14980,25 +15037,28 @@ C++ includes: WavevectorInfo.h
 %feature("docstring")  WavevectorInfo::WavevectorInfo "WavevectorInfo::WavevectorInfo(kvector_t ki, kvector_t kf, double wavelength)
 ";
 
-%feature("docstring")  WavevectorInfo::transformed "WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const 
+%feature("docstring")  WavevectorInfo::transformed "WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const
 ";
 
-%feature("docstring")  WavevectorInfo::getKi "cvector_t WavevectorInfo::getKi() const 
+%feature("docstring")  WavevectorInfo::getKi "cvector_t WavevectorInfo::getKi() const
 ";
 
-%feature("docstring")  WavevectorInfo::getKf "cvector_t WavevectorInfo::getKf() const 
+%feature("docstring")  WavevectorInfo::getKf "cvector_t WavevectorInfo::getKf() const
 ";
 
-%feature("docstring")  WavevectorInfo::getQ "cvector_t WavevectorInfo::getQ() const 
+%feature("docstring")  WavevectorInfo::getQ "cvector_t WavevectorInfo::getQ() const
 ";
 
-%feature("docstring")  WavevectorInfo::getWavelength "double WavevectorInfo::getWavelength() const 
+%feature("docstring")  WavevectorInfo::getWavelength "double WavevectorInfo::getWavelength() const
 ";
 
 
 // File: classConvolve_1_1Workspace.xml
 
 
+// File: classFourierTransform_1_1Workspace.xml
+
+
 // File: classZLimits.xml
 %feature("docstring") ZLimits "
 
@@ -15016,13 +15076,13 @@ C++ includes: ZLimits.h
 %feature("docstring")  ZLimits::ZLimits "ZLimits::ZLimits(OneSidedLimit lower_limit, OneSidedLimit upper_limit)
 ";
 
-%feature("docstring")  ZLimits::isFinite "bool ZLimits::isFinite() const 
+%feature("docstring")  ZLimits::isFinite "bool ZLimits::isFinite() const
 ";
 
-%feature("docstring")  ZLimits::lowerLimit "OneSidedLimit ZLimits::lowerLimit() const 
+%feature("docstring")  ZLimits::lowerLimit "OneSidedLimit ZLimits::lowerLimit() const
 ";
 
-%feature("docstring")  ZLimits::upperLimit "OneSidedLimit ZLimits::upperLimit() const 
+%feature("docstring")  ZLimits::upperLimit "OneSidedLimit ZLimits::upperLimit() const
 ";
 
 
@@ -15038,13 +15098,10 @@ C++ includes: ZLimits.h
 // File: namespace_0D23.xml
 
 
-// File: namespace_0D275.xml
-
+// File: namespace_0D277.xml
 
-// File: namespace_0D308.xml
 
-
-// File: namespace_0D312.xml
+// File: namespace_0D310.xml
 
 
 // File: namespace_0D314.xml
@@ -15053,37 +15110,37 @@ C++ includes: ZLimits.h
 // File: namespace_0D316.xml
 
 
-// File: namespace_0D324.xml
+// File: namespace_0D318.xml
 
 
-// File: namespace_0D339.xml
+// File: namespace_0D326.xml
 
 
-// File: namespace_0D347.xml
+// File: namespace_0D341.xml
 
 
-// File: namespace_0D353.xml
+// File: namespace_0D349.xml
 
 
-// File: namespace_0D356.xml
+// File: namespace_0D355.xml
 
 
 // File: namespace_0D358.xml
 
 
-// File: namespace_0D379.xml
+// File: namespace_0D360.xml
 
 
-// File: namespace_0D388.xml
+// File: namespace_0D381.xml
 
 
-// File: namespace_0D421.xml
+// File: namespace_0D390.xml
 
 
-// File: namespace_0D428.xml
+// File: namespace_0D423.xml
 
 
-// File: namespace_0D470.xml
+// File: namespace_0D430.xml
 
 
 // File: namespace_0D472.xml
@@ -15092,10 +15149,13 @@ C++ includes: ZLimits.h
 // File: namespace_0D474.xml
 
 
-// File: namespace_0D548.xml
+// File: namespace_0D476.xml
+
 
+// File: namespace_0D550.xml
 
-// File: namespace_0D570.xml
+
+// File: namespace_0D572.xml
 
 
 // File: namespace_0D79.xml
@@ -15369,6 +15429,26 @@ Transforms x,y coordinate from  OutputData axes coordinates to bin-fraction-coor
 Transforms x,y coordinate from bin-fraction-coordinates to  OutputData's axes coordinates. 
 ";
 
+%feature("docstring")  IntensityDataFunctions::create2DArrayfromOutputData "std::vector< std::vector< double > > IntensityDataFunctions::create2DArrayfromOutputData(const OutputData< double > &data)
+
+Creates a vector of vectors of double (2D Array) from  OutputData. 
+";
+
+%feature("docstring")  IntensityDataFunctions::FT2DArray "std::vector< std::vector< double > > IntensityDataFunctions::FT2DArray(const std::vector< std::vector< double >> &signal)
+
+Creates a Fourier Transform of a 2D Array (vector of vectors). 
+";
+
+%feature("docstring")  IntensityDataFunctions::createOutputDatafrom2DArray "OutputData< double > * IntensityDataFunctions::createOutputDatafrom2DArray(const std::vector< std::vector< double >> &array_2d)
+
+Creates  OutputData from a 2D Array. 
+";
+
+%feature("docstring")  IntensityDataFunctions::getFourierTransform "OutputData< double > * IntensityDataFunctions::getFourierTransform(const OutputData< double > &data)
+
+Creates Fourier Transform ( OutputData format) of intensity map ( OutputData format). 
+";
+
 
 // File: namespaceMaterialUtils.xml
 %feature("docstring")  MaterialUtils::ScalarReducedPotential "complex_t MaterialUtils::ScalarReducedPotential(complex_t n, kvector_t k, double n_ref)
@@ -15386,7 +15466,7 @@ Function for calculating the reduced potential, used for obtaining the Fresnel c
 Utility to compute magnetization correction for reduced potential and scattering length density. 
 ";
 
-%feature("docstring")  MaterialUtils::checkMaterialTypes "MATERIAL_TYPES MaterialUtils::checkMaterialTypes(const std::vector< const Material * > &materials)
+%feature("docstring")  MaterialUtils::checkMaterialTypes "MATERIAL_TYPES MaterialUtils::checkMaterialTypes(const std::vector< const Material *> &materials)
 
 Checks if all non-default materials in  materials are of the same type and returns this type. If several types of materials are involved, InvalidMaterialType identifier is returned. 
 ";
@@ -15827,6 +15907,9 @@ GISAS simulation with rectangular detector, region of interest and mask.
 %feature("docstring")  StandardSimulations::SpecularWithSquareBeam "SpecularSimulation * StandardSimulations::SpecularWithSquareBeam()
 ";
 
+%feature("docstring")  StandardSimulations::SpecularDivergentBeam "SpecularSimulation * StandardSimulations::SpecularDivergentBeam()
+";
+
 
 // File: namespaceSysUtils.xml
 %feature("docstring")  SysUtils::getCurrentDateAndTime "std::string SysUtils::getCurrentDateAndTime()
@@ -16593,6 +16676,12 @@ global helper function for comparison of axes
 // File: FitElement_8h.xml
 
 
+// File: FourierTransform_8cpp.xml
+
+
+// File: FourierTransform_8h.xml
+
+
 // File: Histogram1D_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 642a7e13d8e..2b42a61dad4 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -1,15 +1,22 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 3.0.8
+# Version 3.0.12
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
 
-
-
-
-
-from sys import version_info
-if version_info >= (2, 6, 0):
+from sys import version_info as _swig_python_version_info
+if _swig_python_version_info >= (2, 7, 0):
+    def swig_import_helper():
+        import importlib
+        pkg = __name__.rpartition('.')[0]
+        mname = '.'.join((pkg, '_libBornAgainCore')).lstrip('.')
+        try:
+            return importlib.import_module(mname)
+        except ImportError:
+            return importlib.import_module('_libBornAgainCore')
+    _libBornAgainCore = swig_import_helper()
+    del swig_import_helper
+elif _swig_python_version_info >= (2, 6, 0):
     def swig_import_helper():
         from os.path import dirname
         import imp
@@ -19,22 +26,27 @@ if version_info >= (2, 6, 0):
         except ImportError:
             import _libBornAgainCore
             return _libBornAgainCore
-        if fp is not None:
-            try:
-                _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
-            finally:
+        try:
+            _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
+        finally:
+            if fp is not None:
                 fp.close()
-            return _mod
+        return _mod
     _libBornAgainCore = swig_import_helper()
     del swig_import_helper
 else:
     import _libBornAgainCore
-del version_info
+del _swig_python_version_info
+
 try:
     _swig_property = property
 except NameError:
     pass  # Python < 2.2 doesn't have 'property'.
 
+try:
+    import builtins as __builtin__
+except ImportError:
+    import __builtin__
 
 def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
     if (name == "thisown"):
@@ -59,41 +71,34 @@ def _swig_setattr(self, class_type, name, value):
     return _swig_setattr_nondynamic(self, class_type, name, value, 0)
 
 
-def _swig_getattr_nondynamic(self, class_type, name, static=1):
+def _swig_getattr(self, class_type, name):
     if (name == "thisown"):
         return self.this.own()
     method = class_type.__swig_getmethods__.get(name, None)
     if method:
         return method(self)
-    if (not static):
-        return object.__getattr__(self, name)
-    else:
-        raise AttributeError(name)
-
-def _swig_getattr(self, class_type, name):
-    return _swig_getattr_nondynamic(self, class_type, name, 0)
+    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
 
 
 def _swig_repr(self):
     try:
         strthis = "proxy of " + self.this.__repr__()
-    except Exception:
+    except __builtin__.Exception:
         strthis = ""
     return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
 
 try:
     _object = object
     _newclass = 1
-except AttributeError:
+except __builtin__.Exception:
     class _object:
         pass
     _newclass = 0
 
-
 try:
     import weakref
     weakref_proxy = weakref.proxy
-except Exception:
+except __builtin__.Exception:
     weakref_proxy = lambda x: x
 
 
@@ -204,8 +209,6 @@ class SwigPyIterator(_object):
 SwigPyIterator_swigregister = _libBornAgainCore.SwigPyIterator_swigregister
 SwigPyIterator_swigregister(SwigPyIterator)
 
-
-_libBornAgainCore.SHARED_PTR_DISOWN_swigconstant(_libBornAgainCore)
 SHARED_PTR_DISOWN = _libBornAgainCore.SHARED_PTR_DISOWN
 
 class ParameterPoolIterator(object):
@@ -386,7 +389,7 @@ class vdouble1d_t(_object):
         this = _libBornAgainCore.new_vdouble1d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -598,7 +601,7 @@ class vdouble2d_t(_object):
         this = _libBornAgainCore.new_vdouble2d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -810,7 +813,7 @@ class vector_integer_t(_object):
         this = _libBornAgainCore.new_vector_integer_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1022,7 +1025,7 @@ class vinteger2d_t(_object):
         this = _libBornAgainCore.new_vinteger2d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1234,7 +1237,7 @@ class vector_longinteger_t(_object):
         this = _libBornAgainCore.new_vector_longinteger_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1446,7 +1449,7 @@ class vector_complex_t(_object):
         this = _libBornAgainCore.new_vector_complex_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1658,7 +1661,7 @@ class vector_string_t(_object):
         this = _libBornAgainCore.new_vector_string_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1825,7 +1828,7 @@ class INamed(_object):
         this = _libBornAgainCore.new_INamed(_self, *args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INamed
     __del__ = lambda self: None
@@ -1834,7 +1837,7 @@ class INamed(_object):
         """
         getName(INamed self) -> std::string
 
-        std::string INamed::getName() const 
+        std::string INamed::getName() const
 
         """
         return _libBornAgainCore.INamed_getName(self)
@@ -1882,7 +1885,7 @@ class IParameterized(INamed):
         this = _libBornAgainCore.new_IParameterized(_self, *args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IParameterized
     __del__ = lambda self: None
@@ -2012,25 +2015,19 @@ class IParameterized(INamed):
         """XComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_XComponentName(base_name)
 
-    if _newclass:
-        XComponentName = staticmethod(XComponentName)
-    __swig_getmethods__["XComponentName"] = lambda x: XComponentName
+    XComponentName = staticmethod(XComponentName)
 
     def YComponentName(base_name):
         """YComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_YComponentName(base_name)
 
-    if _newclass:
-        YComponentName = staticmethod(YComponentName)
-    __swig_getmethods__["YComponentName"] = lambda x: YComponentName
+    YComponentName = staticmethod(YComponentName)
 
     def ZComponentName(base_name):
         """ZComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_ZComponentName(base_name)
 
-    if _newclass:
-        ZComponentName = staticmethod(ZComponentName)
-    __swig_getmethods__["ZComponentName"] = lambda x: ZComponentName
+    ZComponentName = staticmethod(ZComponentName)
     def __disown__(self):
         self.this.disown()
         _libBornAgainCore.disown_IParameterized(self)
@@ -2084,7 +2081,7 @@ class INode(IParameterized):
         this = _libBornAgainCore.new_INode(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INode
     __del__ = lambda self: None
@@ -2180,16 +2177,17 @@ class INode(IParameterized):
         return _libBornAgainCore.INode_displayName(self)
 
 
-    def createParameterTree(self):
+    def createParameterTree(self, *args):
         """
         createParameterTree(INode self) -> ParameterPool
+        createParameterTree(INode self, INode node) -> ParameterPool
 
-        ParameterPool * INode::createParameterTree() const
+        ParameterPool * INode::createParameterTree(const INode *node) const
 
-        Creates new parameter pool, with all local parameters and those of its children. 
+        Creates new parameter pool, with all local parameters and those of its children. Parameter names are derived relatively to the given  node. 
 
         """
-        return _libBornAgainCore.INode_createParameterTree(self)
+        return _libBornAgainCore.INode_createParameterTree(self, *args)
 
     def __disown__(self):
         self.this.disown()
@@ -2357,7 +2355,7 @@ class swig_dummy_type_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_inode_vector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2569,7 +2567,7 @@ class swig_dummy_type_const_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_const_inode_vector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2651,7 +2649,7 @@ class kvector_t(_object):
         this = _libBornAgainCore.new_kvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def x(self):
@@ -3081,7 +3079,7 @@ class vector_kvector_t(_object):
         this = _libBornAgainCore.new_vector_kvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3163,7 +3161,7 @@ class cvector_t(_object):
         this = _libBornAgainCore.new_cvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def x(self):
@@ -3501,7 +3499,7 @@ class vector_cvector_t(_object):
         this = _libBornAgainCore.new_vector_cvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3614,9 +3612,7 @@ class WavevectorInfo(_object):
         """GetZeroQ() -> WavevectorInfo"""
         return _libBornAgainCore.WavevectorInfo_GetZeroQ()
 
-    if _newclass:
-        GetZeroQ = staticmethod(GetZeroQ)
-    __swig_getmethods__["GetZeroQ"] = lambda x: GetZeroQ
+    GetZeroQ = staticmethod(GetZeroQ)
 
     def __init__(self, *args):
         """
@@ -3629,14 +3625,14 @@ class WavevectorInfo(_object):
         this = _libBornAgainCore.new_WavevectorInfo(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def transformed(self, transform):
         """
         transformed(WavevectorInfo self, Transform3D const & transform) -> WavevectorInfo
 
-        WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const 
+        WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const
 
         """
         return _libBornAgainCore.WavevectorInfo_transformed(self, transform)
@@ -3646,7 +3642,7 @@ class WavevectorInfo(_object):
         """
         getKi(WavevectorInfo self) -> cvector_t
 
-        cvector_t WavevectorInfo::getKi() const 
+        cvector_t WavevectorInfo::getKi() const
 
         """
         return _libBornAgainCore.WavevectorInfo_getKi(self)
@@ -3656,7 +3652,7 @@ class WavevectorInfo(_object):
         """
         getKf(WavevectorInfo self) -> cvector_t
 
-        cvector_t WavevectorInfo::getKf() const 
+        cvector_t WavevectorInfo::getKf() const
 
         """
         return _libBornAgainCore.WavevectorInfo_getKf(self)
@@ -3666,7 +3662,7 @@ class WavevectorInfo(_object):
         """
         getQ(WavevectorInfo self) -> cvector_t
 
-        cvector_t WavevectorInfo::getQ() const 
+        cvector_t WavevectorInfo::getQ() const
 
         """
         return _libBornAgainCore.WavevectorInfo_getQ(self)
@@ -3676,7 +3672,7 @@ class WavevectorInfo(_object):
         """
         getWavelength(WavevectorInfo self) -> double
 
-        double WavevectorInfo::getWavelength() const 
+        double WavevectorInfo::getWavelength() const
 
         """
         return _libBornAgainCore.WavevectorInfo_getWavelength(self)
@@ -3738,7 +3734,7 @@ class Beam(INode):
         this = _libBornAgainCore.new_Beam(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Beam
     __del__ = lambda self: None
@@ -3843,7 +3839,7 @@ class Beam(INode):
         """
         getBlochVector(Beam self) -> kvector_t
 
-        kvector_t Beam::getBlochVector() const 
+        kvector_t Beam::getBlochVector() const
 
         """
         return _libBornAgainCore.Beam_getBlochVector(self)
@@ -3853,7 +3849,7 @@ class Beam(INode):
         """
         getWavelength(Beam self) -> double
 
-        double Beam::getWavelength() const 
+        double Beam::getWavelength() const
 
         """
         return _libBornAgainCore.Beam_getWavelength(self)
@@ -3863,7 +3859,7 @@ class Beam(INode):
         """
         getAlpha(Beam self) -> double
 
-        double Beam::getAlpha() const 
+        double Beam::getAlpha() const
 
         """
         return _libBornAgainCore.Beam_getAlpha(self)
@@ -3873,7 +3869,7 @@ class Beam(INode):
         """
         getPhi(Beam self) -> double
 
-        double Beam::getPhi() const 
+        double Beam::getPhi() const
 
         """
         return _libBornAgainCore.Beam_getPhi(self)
@@ -3913,7 +3909,7 @@ class Bin1D(_object):
         this = _libBornAgainCore.new_Bin1D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_set
     __swig_getmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_get
@@ -3928,7 +3924,7 @@ class Bin1D(_object):
         """
         getMidPoint(Bin1D self) -> double
 
-        double Bin1D::getMidPoint() const 
+        double Bin1D::getMidPoint() const
 
         """
         return _libBornAgainCore.Bin1D_getMidPoint(self)
@@ -3938,7 +3934,7 @@ class Bin1D(_object):
         """
         getBinSize(Bin1D self) -> double
 
-        double Bin1D::getBinSize() const 
+        double Bin1D::getBinSize() const
 
         """
         return _libBornAgainCore.Bin1D_getBinSize(self)
@@ -3989,14 +3985,14 @@ class Bin1DKVector(_object):
         this = _libBornAgainCore.new_Bin1DKVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def getMidPoint(self):
         """
         getMidPoint(Bin1DKVector self) -> kvector_t
 
-        kvector_t Bin1DKVector::getMidPoint() const 
+        kvector_t Bin1DKVector::getMidPoint() const
 
         """
         return _libBornAgainCore.Bin1DKVector_getMidPoint(self)
@@ -4006,7 +4002,7 @@ class Bin1DKVector(_object):
         """
         getDelta(Bin1DKVector self) -> kvector_t
 
-        kvector_t Bin1DKVector::getDelta() const 
+        kvector_t Bin1DKVector::getDelta() const
 
         """
         return _libBornAgainCore.Bin1DKVector_getDelta(self)
@@ -4054,14 +4050,14 @@ class Bin1DCVector(_object):
         this = _libBornAgainCore.new_Bin1DCVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def getMidPoint(self):
         """
         getMidPoint(Bin1DCVector self) -> cvector_t
 
-        cvector_t Bin1DCVector::getMidPoint() const 
+        cvector_t Bin1DCVector::getMidPoint() const
 
         """
         return _libBornAgainCore.Bin1DCVector_getMidPoint(self)
@@ -4071,7 +4067,7 @@ class Bin1DCVector(_object):
         """
         getDelta(Bin1DCVector self) -> cvector_t
 
-        cvector_t Bin1DCVector::getDelta() const 
+        cvector_t Bin1DCVector::getDelta() const
 
         """
         return _libBornAgainCore.Bin1DCVector_getDelta(self)
@@ -4254,7 +4250,7 @@ class IAxis(_object):
         """
         getBinCenters(IAxis self) -> vdouble1d_t
 
-        std::vector< double > IAxis::getBinCenters() const 
+        std::vector< double > IAxis::getBinCenters() const
 
         """
         return _libBornAgainCore.IAxis_getBinCenters(self)
@@ -4264,7 +4260,7 @@ class IAxis(_object):
         """
         getBinBoundaries(IAxis self) -> vdouble1d_t
 
-        std::vector< double > IAxis::getBinBoundaries() const 
+        std::vector< double > IAxis::getBinBoundaries() const
 
         """
         return _libBornAgainCore.IAxis_getBinBoundaries(self)
@@ -4351,7 +4347,7 @@ class VariableBinAxis(IAxis):
         this = _libBornAgainCore.new_VariableBinAxis(name, nbins, bin_boundaries)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_VariableBinAxis
     __del__ = lambda self: None
@@ -4420,7 +4416,7 @@ class VariableBinAxis(IAxis):
         """
         getBinCenter(VariableBinAxis self, size_t index) -> double
 
-        double VariableBinAxis::getBinCenter(size_t index) const 
+        double VariableBinAxis::getBinCenter(size_t index) const
 
         """
         return _libBornAgainCore.VariableBinAxis_getBinCenter(self, index)
@@ -4442,7 +4438,7 @@ class VariableBinAxis(IAxis):
         """
         getBinCenters(VariableBinAxis self) -> vdouble1d_t
 
-        std::vector< double > VariableBinAxis::getBinCenters() const 
+        std::vector< double > VariableBinAxis::getBinCenters() const
 
         """
         return _libBornAgainCore.VariableBinAxis_getBinCenters(self)
@@ -4452,7 +4448,7 @@ class VariableBinAxis(IAxis):
         """
         getBinBoundaries(VariableBinAxis self) -> vdouble1d_t
 
-        std::vector<double> VariableBinAxis::getBinBoundaries() const 
+        std::vector<double> VariableBinAxis::getBinBoundaries() const
 
         """
         return _libBornAgainCore.VariableBinAxis_getBinBoundaries(self)
@@ -4524,7 +4520,7 @@ class ConstKBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_ConstKBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ConstKBinAxis
     __del__ = lambda self: None
@@ -4602,7 +4598,7 @@ class CustomBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_CustomBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_CustomBinAxis
     __del__ = lambda self: None
@@ -4635,7 +4631,7 @@ class CustomBinAxis(VariableBinAxis):
         """
         getBinCenters(CustomBinAxis self) -> vdouble1d_t
 
-        std::vector< double > CustomBinAxis::getBinCenters() const 
+        std::vector< double > CustomBinAxis::getBinCenters() const
 
         """
         return _libBornAgainCore.CustomBinAxis_getBinCenters(self)
@@ -4779,7 +4775,7 @@ class ISample(ICloneable, INode):
         this = _libBornAgainCore.new_ISample(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ISample
     __del__ = lambda self: None
@@ -5008,7 +5004,7 @@ class IObservable(_object):
         this = _libBornAgainCore.new_IObservable(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -5051,7 +5047,7 @@ class IFitObserver(IObserver):
         this = _libBornAgainCore.new_IFitObserver(_self, update_every_nth)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def notify(self, subject):
@@ -5173,14 +5169,14 @@ class FitStrategyDefault(IFitStrategy):
         this = _libBornAgainCore.new_FitStrategyDefault()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FitStrategyDefault self) -> FitStrategyDefault
 
-        FitStrategyDefault * FitStrategyDefault::clone() const 
+        FitStrategyDefault * FitStrategyDefault::clone() const
 
         """
         return _libBornAgainCore.FitStrategyDefault_clone(self)
@@ -5269,7 +5265,7 @@ class IntensityFunctionLog(IIntensityFunction):
         """
         clone(IntensityFunctionLog self) -> IntensityFunctionLog
 
-        virtual IntensityFunctionLog* IntensityFunctionLog::clone() const 
+        virtual IntensityFunctionLog* IntensityFunctionLog::clone() const
 
         """
         return _libBornAgainCore.IntensityFunctionLog_clone(self)
@@ -5279,7 +5275,7 @@ class IntensityFunctionLog(IIntensityFunction):
         """
         evaluate(IntensityFunctionLog self, double value) -> double
 
-        double IntensityFunctionLog::evaluate(double value) const 
+        double IntensityFunctionLog::evaluate(double value) const
 
         """
         return _libBornAgainCore.IntensityFunctionLog_evaluate(self, value)
@@ -5299,7 +5295,7 @@ class IntensityFunctionLog(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionLog()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 IntensityFunctionLog_swigregister = _libBornAgainCore.IntensityFunctionLog_swigregister
 IntensityFunctionLog_swigregister(IntensityFunctionLog)
@@ -5330,7 +5326,7 @@ class IntensityFunctionSqrt(IIntensityFunction):
         """
         clone(IntensityFunctionSqrt self) -> IntensityFunctionSqrt
 
-        virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const 
+        virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const
 
         """
         return _libBornAgainCore.IntensityFunctionSqrt_clone(self)
@@ -5340,7 +5336,7 @@ class IntensityFunctionSqrt(IIntensityFunction):
         """
         evaluate(IntensityFunctionSqrt self, double value) -> double
 
-        double IntensityFunctionSqrt::evaluate(double value) const 
+        double IntensityFunctionSqrt::evaluate(double value) const
 
         """
         return _libBornAgainCore.IntensityFunctionSqrt_evaluate(self, value)
@@ -5360,7 +5356,7 @@ class IntensityFunctionSqrt(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionSqrt()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 IntensityFunctionSqrt_swigregister = _libBornAgainCore.IntensityFunctionSqrt_swigregister
 IntensityFunctionSqrt_swigregister(IntensityFunctionSqrt)
@@ -5464,7 +5460,7 @@ class IntensityNormalizer(IIntensityNormalizer):
         this = _libBornAgainCore.new_IntensityNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityNormalizer
     __del__ = lambda self: None
@@ -5473,7 +5469,7 @@ class IntensityNormalizer(IIntensityNormalizer):
         """
         clone(IntensityNormalizer self) -> IntensityNormalizer
 
-        IntensityNormalizer * IntensityNormalizer::clone() const 
+        IntensityNormalizer * IntensityNormalizer::clone() const
 
         """
         return _libBornAgainCore.IntensityNormalizer_clone(self)
@@ -5495,7 +5491,7 @@ class IntensityNormalizer(IIntensityNormalizer):
         """
         createNormalizedData(IntensityNormalizer self, IntensityData data) -> IntensityData
 
-        OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const 
+        OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const
 
         """
         return _libBornAgainCore.IntensityNormalizer_createNormalizedData(self, data)
@@ -5555,7 +5551,7 @@ class IntensityScaleAndShiftNormalizer(IntensityNormalizer):
         this = _libBornAgainCore.new_IntensityScaleAndShiftNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityScaleAndShiftNormalizer
     __del__ = lambda self: None
@@ -5678,7 +5674,7 @@ class SquaredFunctionDefault(ISquaredFunction):
         this = _libBornAgainCore.new_SquaredFunctionDefault()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SquaredFunctionDefault
     __del__ = lambda self: None
@@ -5975,7 +5971,7 @@ class ChiSquaredModule(IChiSquaredModule):
         this = _libBornAgainCore.new_ChiSquaredModule(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ChiSquaredModule
     __del__ = lambda self: None
@@ -6052,7 +6048,7 @@ class FitObject(INode):
         this = _libBornAgainCore.new_FitObject(simulation, real_data, weight)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitObject
     __del__ = lambda self: None
@@ -6182,7 +6178,7 @@ class FitOptions(_object):
         this = _libBornAgainCore.new_FitOptions()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitOptions
     __del__ = lambda self: None
@@ -6245,7 +6241,7 @@ class FitParameter(libBornAgainFit.IFitParameter):
         this = _libBornAgainCore.new_FitParameter(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitParameter
     __del__ = lambda self: None
@@ -6254,7 +6250,7 @@ class FitParameter(libBornAgainFit.IFitParameter):
         """
         clone(FitParameter self) -> FitParameter
 
-        FitParameter * FitParameter::clone() const 
+        FitParameter * FitParameter::clone() const
 
         """
         return _libBornAgainCore.FitParameter_clone(self)
@@ -6312,7 +6308,7 @@ class FitParameter(libBornAgainFit.IFitParameter):
         """
         patterns(FitParameter self) -> vector_string_t
 
-        std::vector< std::string > FitParameter::patterns() const 
+        std::vector< std::string > FitParameter::patterns() const
 
         """
         return _libBornAgainCore.FitParameter_patterns(self)
@@ -6386,7 +6382,7 @@ class FitSuite(IObservable):
         this = _libBornAgainCore.new_FitSuite()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuite
     __del__ = lambda self: None
@@ -6724,7 +6720,7 @@ class FitSuite(IObservable):
         getRealOutputData(FitSuite self, size_t i_item=0) -> IntensityData
         getRealOutputData(FitSuite self) -> IntensityData
 
-        const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const 
+        const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const
 
         """
         return _libBornAgainCore.FitSuite_getRealOutputData(self, i_item)
@@ -6735,7 +6731,7 @@ class FitSuite(IObservable):
         getSimulationOutputData(FitSuite self, size_t i_item=0) -> IntensityData
         getSimulationOutputData(FitSuite self) -> IntensityData
 
-        const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const 
+        const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const
 
         """
         return _libBornAgainCore.FitSuite_getSimulationOutputData(self, i_item)
@@ -6746,7 +6742,7 @@ class FitSuite(IObservable):
         getChiSquaredOutputData(FitSuite self, size_t i_item=0) -> IntensityData
         getChiSquaredOutputData(FitSuite self) -> IntensityData
 
-        const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const 
+        const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const
 
         """
         return _libBornAgainCore.FitSuite_getChiSquaredOutputData(self, i_item)
@@ -6820,7 +6816,7 @@ class FitSuiteObjects(INode):
         this = _libBornAgainCore.new_FitSuiteObjects()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuiteObjects
     __del__ = lambda self: None
@@ -7003,7 +6999,7 @@ class FitSuiteObjects(INode):
         """
         size(FitSuiteObjects self) -> size_t
 
-        size_t FitSuiteObjects::size() const 
+        size_t FitSuiteObjects::size() const
 
         """
         return _libBornAgainCore.FitSuiteObjects_size(self)
@@ -7171,11 +7167,7 @@ def Bessel_J1c(*args):
 
     """
     return _libBornAgainCore.Bessel_J1c(*args)
-
-_libBornAgainCore.FORWARD_FFT_swigconstant(_libBornAgainCore)
 FORWARD_FFT = _libBornAgainCore.FORWARD_FFT
-
-_libBornAgainCore.BACKWARD_FFT_swigconstant(_libBornAgainCore)
 BACKWARD_FFT = _libBornAgainCore.BACKWARD_FFT
 
 def FastFourierTransform(*args):
@@ -7269,14 +7261,14 @@ class AdjustMinimizerStrategy(IFitStrategy):
         this = _libBornAgainCore.new_AdjustMinimizerStrategy(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(AdjustMinimizerStrategy self) -> AdjustMinimizerStrategy
 
-        AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const 
+        AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const
 
         """
         return _libBornAgainCore.AdjustMinimizerStrategy_clone(self)
@@ -7342,7 +7334,7 @@ class IMultiLayerBuilder(IParameterized):
         this = _libBornAgainCore.new_IMultiLayerBuilder(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def buildSample(self):
@@ -7402,9 +7394,7 @@ class IMultiLayerBuilder(IParameterized):
         """isPythonBuilder() -> bool"""
         return _libBornAgainCore.IMultiLayerBuilder_isPythonBuilder()
 
-    if _newclass:
-        isPythonBuilder = staticmethod(isPythonBuilder)
-    __swig_getmethods__["isPythonBuilder"] = lambda x: isPythonBuilder
+    isPythonBuilder = staticmethod(isPythonBuilder)
     __swig_destroy__ = _libBornAgainCore.delete_IMultiLayerBuilder
     __del__ = lambda self: None
     def __disown__(self):
@@ -7446,7 +7436,7 @@ class INodeVisitor(_object):
         this = _libBornAgainCore.new_INodeVisitor()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INodeVisitor
     __del__ = lambda self: None
@@ -7723,7 +7713,7 @@ class Crystal(IClusteredParticles):
         this = _libBornAgainCore.new_Crystal(lattice_basis, lattice)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Crystal
     __del__ = lambda self: None
@@ -7732,7 +7722,7 @@ class Crystal(IClusteredParticles):
         """
         clone(Crystal self) -> Crystal
 
-        Crystal * Crystal::clone() const overridefinal
+        Crystal * Crystal::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -7744,7 +7734,7 @@ class Crystal(IClusteredParticles):
         """
         accept(Crystal self, INodeVisitor visitor)
 
-        void Crystal::accept(INodeVisitor *visitor) const overridefinal
+        void Crystal::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -7756,7 +7746,7 @@ class Crystal(IClusteredParticles):
         """
         createTotalFormFactor(Crystal self, IFormFactor meso_crystal_form_factor, IRotation p_rotation, kvector_t translation) -> IFormFactor
 
-        IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const overridefinal
+        IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const override final
 
         Creates a total form factor for the mesocrystal with a specific shape and content The bulk content of the mesocrystal is encapsulated by the  IClusteredParticles object itself 
 
@@ -7768,7 +7758,7 @@ class Crystal(IClusteredParticles):
         """
         homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >
 
-        std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const overridefinal
+        std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const override final
 
         Creates region information with volumetric densities instead of absolute volume These densities need to be multiplied by the total mesocrystal volume 
 
@@ -7781,7 +7771,7 @@ class Crystal(IClusteredParticles):
         transformedLattice(Crystal self, IRotation p_rotation=None) -> Lattice
         transformedLattice(Crystal self) -> Lattice
 
-        Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const 
+        Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const
 
         """
         return _libBornAgainCore.Crystal_transformedLattice(self, p_rotation)
@@ -7801,7 +7791,7 @@ class Crystal(IClusteredParticles):
         """
         getChildren(Crystal self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > Crystal::getChildren() const overridefinal
+        std::vector< const INode * > Crystal::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -7978,7 +7968,7 @@ class DistributionGate(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGate(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGate
     __del__ = lambda self: None
@@ -8021,7 +8011,7 @@ class DistributionGate(IDistribution1D):
         """
         getMin(DistributionGate self) -> double
 
-        double DistributionGate::getMin() const 
+        double DistributionGate::getMin() const
 
         """
         return _libBornAgainCore.DistributionGate_getMin(self)
@@ -8031,7 +8021,7 @@ class DistributionGate(IDistribution1D):
         """
         getMax(DistributionGate self) -> double
 
-        double DistributionGate::getMax() const 
+        double DistributionGate::getMax() const
 
         """
         return _libBornAgainCore.DistributionGate_getMax(self)
@@ -8107,7 +8097,7 @@ class DistributionLorentz(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLorentz(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLorentz
     __del__ = lambda self: None
@@ -8150,7 +8140,7 @@ class DistributionLorentz(IDistribution1D):
         """
         getHWHM(DistributionLorentz self) -> double
 
-        double DistributionLorentz::getHWHM() const 
+        double DistributionLorentz::getHWHM() const
 
         """
         return _libBornAgainCore.DistributionLorentz_getHWHM(self)
@@ -8226,7 +8216,7 @@ class DistributionGaussian(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGaussian(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGaussian
     __del__ = lambda self: None
@@ -8269,7 +8259,7 @@ class DistributionGaussian(IDistribution1D):
         """
         getStdDev(DistributionGaussian self) -> double
 
-        double DistributionGaussian::getStdDev() const 
+        double DistributionGaussian::getStdDev() const
 
         """
         return _libBornAgainCore.DistributionGaussian_getStdDev(self)
@@ -8345,7 +8335,7 @@ class DistributionLogNormal(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLogNormal(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLogNormal
     __del__ = lambda self: None
@@ -8388,7 +8378,7 @@ class DistributionLogNormal(IDistribution1D):
         """
         getMedian(DistributionLogNormal self) -> double
 
-        double DistributionLogNormal::getMedian() const 
+        double DistributionLogNormal::getMedian() const
 
         """
         return _libBornAgainCore.DistributionLogNormal_getMedian(self)
@@ -8398,7 +8388,7 @@ class DistributionLogNormal(IDistribution1D):
         """
         getScalePar(DistributionLogNormal self) -> double
 
-        double DistributionLogNormal::getScalePar() const 
+        double DistributionLogNormal::getScalePar() const
 
         """
         return _libBornAgainCore.DistributionLogNormal_getScalePar(self)
@@ -8486,7 +8476,7 @@ class DistributionCosine(IDistribution1D):
         this = _libBornAgainCore.new_DistributionCosine(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionCosine
     __del__ = lambda self: None
@@ -8529,7 +8519,7 @@ class DistributionCosine(IDistribution1D):
         """
         getSigma(DistributionCosine self) -> double
 
-        double DistributionCosine::getSigma() const 
+        double DistributionCosine::getSigma() const
 
         """
         return _libBornAgainCore.DistributionCosine_getSigma(self)
@@ -8605,7 +8595,7 @@ class DistributionTrapezoid(IDistribution1D):
         this = _libBornAgainCore.new_DistributionTrapezoid(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionTrapezoid
     __del__ = lambda self: None
@@ -8648,7 +8638,7 @@ class DistributionTrapezoid(IDistribution1D):
         """
         getLeftWidth(DistributionTrapezoid self) -> double
 
-        double DistributionTrapezoid::getLeftWidth() const 
+        double DistributionTrapezoid::getLeftWidth() const
 
         """
         return _libBornAgainCore.DistributionTrapezoid_getLeftWidth(self)
@@ -8658,7 +8648,7 @@ class DistributionTrapezoid(IDistribution1D):
         """
         getMiddleWidth(DistributionTrapezoid self) -> double
 
-        double DistributionTrapezoid::getMiddleWidth() const 
+        double DistributionTrapezoid::getMiddleWidth() const
 
         """
         return _libBornAgainCore.DistributionTrapezoid_getMiddleWidth(self)
@@ -8668,7 +8658,7 @@ class DistributionTrapezoid(IDistribution1D):
         """
         getRightWidth(DistributionTrapezoid self) -> double
 
-        double DistributionTrapezoid::getRightWidth() const 
+        double DistributionTrapezoid::getRightWidth() const
 
         """
         return _libBornAgainCore.DistributionTrapezoid_getRightWidth(self)
@@ -8740,7 +8730,7 @@ class DetectorMask(_object):
         this = _libBornAgainCore.new_DetectorMask(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def addMask(self, shape, mask_value):
@@ -8779,7 +8769,7 @@ class DetectorMask(_object):
         """
         isMasked(DetectorMask self, size_t index) -> bool
 
-        bool DetectorMask::isMasked(size_t index) const 
+        bool DetectorMask::isMasked(size_t index) const
 
         """
         return _libBornAgainCore.DetectorMask_isMasked(self, index)
@@ -8789,7 +8779,7 @@ class DetectorMask(_object):
         """
         getMaskData(DetectorMask self) -> OutputData< bool > const *
 
-        const OutputData<bool>* DetectorMask::getMaskData() const 
+        const OutputData<bool>* DetectorMask::getMaskData() const
 
         """
         return _libBornAgainCore.DetectorMask_getMaskData(self)
@@ -8799,7 +8789,7 @@ class DetectorMask(_object):
         """
         createHistogram(DetectorMask self) -> Histogram2D
 
-        Histogram2D * DetectorMask::createHistogram() const 
+        Histogram2D * DetectorMask::createHistogram() const
 
         """
         return _libBornAgainCore.DetectorMask_createHistogram(self)
@@ -8833,7 +8823,7 @@ class DetectorMask(_object):
         """
         numberOfMaskedChannels(DetectorMask self) -> int
 
-        int DetectorMask::numberOfMaskedChannels() const 
+        int DetectorMask::numberOfMaskedChannels() const
 
         """
         return _libBornAgainCore.DetectorMask_numberOfMaskedChannels(self)
@@ -8843,7 +8833,7 @@ class DetectorMask(_object):
         """
         numberOfMasks(DetectorMask self) -> size_t
 
-        size_t DetectorMask::numberOfMasks() const 
+        size_t DetectorMask::numberOfMasks() const
 
         """
         return _libBornAgainCore.DetectorMask_numberOfMasks(self)
@@ -8853,7 +8843,7 @@ class DetectorMask(_object):
         """
         getMaskShape(DetectorMask self, size_t mask_index, bool & mask_value) -> IShape2D
 
-        const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const 
+        const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const
 
         """
         return _libBornAgainCore.DetectorMask_getMaskShape(self, mask_index, mask_value)
@@ -8912,14 +8902,14 @@ class Ellipse(IShape2D):
         this = _libBornAgainCore.new_Ellipse(xcenter, ycenter, xradius, yradius, theta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(Ellipse self) -> Ellipse
 
-        Ellipse* Ellipse::clone() const 
+        Ellipse* Ellipse::clone() const
 
         """
         return _libBornAgainCore.Ellipse_clone(self)
@@ -8942,7 +8932,7 @@ class Ellipse(IShape2D):
         """
         getCenterX(Ellipse self) -> double
 
-        double Ellipse::getCenterX() const 
+        double Ellipse::getCenterX() const
 
         """
         return _libBornAgainCore.Ellipse_getCenterX(self)
@@ -8952,7 +8942,7 @@ class Ellipse(IShape2D):
         """
         getCenterY(Ellipse self) -> double
 
-        double Ellipse::getCenterY() const 
+        double Ellipse::getCenterY() const
 
         """
         return _libBornAgainCore.Ellipse_getCenterY(self)
@@ -8962,7 +8952,7 @@ class Ellipse(IShape2D):
         """
         getRadiusX(Ellipse self) -> double
 
-        double Ellipse::getRadiusX() const 
+        double Ellipse::getRadiusX() const
 
         """
         return _libBornAgainCore.Ellipse_getRadiusX(self)
@@ -8972,7 +8962,7 @@ class Ellipse(IShape2D):
         """
         getRadiusY(Ellipse self) -> double
 
-        double Ellipse::getRadiusY() const 
+        double Ellipse::getRadiusY() const
 
         """
         return _libBornAgainCore.Ellipse_getRadiusY(self)
@@ -8982,7 +8972,7 @@ class Ellipse(IShape2D):
         """
         getTheta(Ellipse self) -> double
 
-        double Ellipse::getTheta() const 
+        double Ellipse::getTheta() const
 
         """
         return _libBornAgainCore.Ellipse_getTheta(self)
@@ -9039,7 +9029,7 @@ class IFTDecayFunction1D(ICloneable, INode):
         """
         decayLength(IFTDecayFunction1D self) -> double
 
-        double IFTDecayFunction1D::decayLength() const 
+        double IFTDecayFunction1D::decayLength() const
 
         """
         return _libBornAgainCore.IFTDecayFunction1D_decayLength(self)
@@ -9079,14 +9069,14 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DCauchy(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy
 
-        FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const 
+        FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction1DCauchy_clone(self)
@@ -9148,14 +9138,14 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DGauss(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss
 
-        FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const 
+        FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction1DGauss_clone(self)
@@ -9217,14 +9207,14 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DTriangle(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle
 
-        FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const 
+        FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction1DTriangle_clone(self)
@@ -9297,14 +9287,14 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DVoigt(decay_length, eta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt
 
-        FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const 
+        FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction1DVoigt_clone(self)
@@ -9336,7 +9326,7 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
         """
         eEta(FTDecayFunction1DVoigt self) -> double
 
-        double FTDecayFunction1DVoigt::eEta() const 
+        double FTDecayFunction1DVoigt::eEta() const
 
         """
         return _libBornAgainCore.FTDecayFunction1DVoigt_eEta(self)
@@ -9498,14 +9488,14 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DCauchy(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy
 
-        FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const 
+        FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction2DCauchy_clone(self)
@@ -9570,14 +9560,14 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DGauss(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss
 
-        FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const 
+        FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction2DGauss_clone(self)
@@ -9659,14 +9649,14 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DVoigt(decay_length_x, decay_length_y, eta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt
 
-        FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const 
+        FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
 
         """
         return _libBornAgainCore.FTDecayFunction2DVoigt_clone(self)
@@ -9700,7 +9690,7 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
         """
         eta(FTDecayFunction2DVoigt self) -> double
 
-        double FTDecayFunction2DVoigt::eta() const 
+        double FTDecayFunction2DVoigt::eta() const
 
         """
         return _libBornAgainCore.FTDecayFunction2DVoigt_eta(self)
@@ -9769,7 +9759,7 @@ class IFTDistribution1D(ICloneable, INode):
         """
         omega(IFTDistribution1D self) -> double
 
-        double IFTDistribution1D::omega() const 
+        double IFTDistribution1D::omega() const
 
         """
         return _libBornAgainCore.IFTDistribution1D_omega(self)
@@ -9809,7 +9799,7 @@ class FTDistribution1DCauchy(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCauchy(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9880,7 +9870,7 @@ class FTDistribution1DGauss(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGauss(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9951,7 +9941,7 @@ class FTDistribution1DGate(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGate(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10022,7 +10012,7 @@ class FTDistribution1DTriangle(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DTriangle(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10093,7 +10083,7 @@ class FTDistribution1DCosine(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCosine(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10175,7 +10165,7 @@ class FTDistribution1DVoigt(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DVoigt(omega, eta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10216,7 +10206,7 @@ class FTDistribution1DVoigt(IFTDistribution1D):
         """
         eta(FTDistribution1DVoigt self) -> double
 
-        double FTDistribution1DVoigt::eta() const 
+        double FTDistribution1DVoigt::eta() const
 
         """
         return _libBornAgainCore.FTDistribution1DVoigt_eta(self)
@@ -10273,7 +10263,7 @@ class IFTDistribution2D(ICloneable, INode):
         """
         gamma(IFTDistribution2D self) -> double
 
-        double IFTDistribution2D::gamma() const 
+        double IFTDistribution2D::gamma() const
 
         """
         return _libBornAgainCore.IFTDistribution2D_gamma(self)
@@ -10283,7 +10273,7 @@ class IFTDistribution2D(ICloneable, INode):
         """
         delta(IFTDistribution2D self) -> double
 
-        double IFTDistribution2D::delta() const 
+        double IFTDistribution2D::delta() const
 
         """
         return _libBornAgainCore.IFTDistribution2D_delta(self)
@@ -10293,7 +10283,7 @@ class IFTDistribution2D(ICloneable, INode):
         """
         omegaX(IFTDistribution2D self) -> double
 
-        double IFTDistribution2D::omegaX() const 
+        double IFTDistribution2D::omegaX() const
 
         """
         return _libBornAgainCore.IFTDistribution2D_omegaX(self)
@@ -10303,7 +10293,7 @@ class IFTDistribution2D(ICloneable, INode):
         """
         omegaY(IFTDistribution2D self) -> double
 
-        double IFTDistribution2D::omegaY() const 
+        double IFTDistribution2D::omegaY() const
 
         """
         return _libBornAgainCore.IFTDistribution2D_omegaY(self)
@@ -10356,7 +10346,7 @@ class FTDistribution2DCauchy(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCauchy(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10428,7 +10418,7 @@ class FTDistribution2DGauss(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGauss(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10500,7 +10490,7 @@ class FTDistribution2DGate(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGate(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10572,7 +10562,7 @@ class FTDistribution2DCone(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCone(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10661,7 +10651,7 @@ class FTDistribution2DVoigt(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DVoigt(omega_x, omega_y, eta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10702,7 +10692,7 @@ class FTDistribution2DVoigt(IFTDistribution2D):
         """
         eta(FTDistribution2DVoigt self) -> double
 
-        double FTDistribution2DVoigt::eta() const 
+        double FTDistribution2DVoigt::eta() const
 
         """
         return _libBornAgainCore.FTDistribution2DVoigt_eta(self)
@@ -10759,7 +10749,7 @@ class FixedBinAxis(IAxis):
         this = _libBornAgainCore.new_FixedBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FixedBinAxis
     __del__ = lambda self: None
@@ -10828,7 +10818,7 @@ class FixedBinAxis(IAxis):
         """
         getBinCenter(FixedBinAxis self, size_t index) -> double
 
-        double FixedBinAxis::getBinCenter(size_t index) const 
+        double FixedBinAxis::getBinCenter(size_t index) const
 
         """
         return _libBornAgainCore.FixedBinAxis_getBinCenter(self, index)
@@ -10850,7 +10840,7 @@ class FixedBinAxis(IAxis):
         """
         getBinCenters(FixedBinAxis self) -> vdouble1d_t
 
-        std::vector< double > FixedBinAxis::getBinCenters() const 
+        std::vector< double > FixedBinAxis::getBinCenters() const
 
         """
         return _libBornAgainCore.FixedBinAxis_getBinCenters(self)
@@ -10860,7 +10850,7 @@ class FixedBinAxis(IAxis):
         """
         getBinBoundaries(FixedBinAxis self) -> vdouble1d_t
 
-        std::vector< double > FixedBinAxis::getBinBoundaries() const 
+        std::vector< double > FixedBinAxis::getBinBoundaries() const
 
         """
         return _libBornAgainCore.FixedBinAxis_getBinBoundaries(self)
@@ -10923,7 +10913,7 @@ class IFormFactor(ISample):
         this = _libBornAgainCore.new_IFormFactor(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactor
     __del__ = lambda self: None
@@ -11220,7 +11210,7 @@ class vector_IFormFactorPtr_t(_object):
         this = _libBornAgainCore.new_vector_IFormFactorPtr_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -11309,7 +11299,7 @@ class IFormFactorBorn(IFormFactor):
         this = _libBornAgainCore.new_IFormFactorBorn(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactorBorn
     __del__ = lambda self: None
@@ -11444,7 +11434,7 @@ class SlicingEffects(_object):
         this = _libBornAgainCore.new_SlicingEffects()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SlicingEffects
     __del__ = lambda self: None
@@ -11602,7 +11592,7 @@ class PolygonalTopology(_object):
         this = _libBornAgainCore.new_PolygonalTopology()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolygonalTopology
     __del__ = lambda self: None
@@ -11647,7 +11637,7 @@ class PolyhedralTopology(_object):
         this = _libBornAgainCore.new_PolyhedralTopology()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolyhedralTopology
     __del__ = lambda self: None
@@ -11680,14 +11670,14 @@ class PolyhedralEdge(_object):
         this = _libBornAgainCore.new_PolyhedralEdge(_Vlow, _Vhig)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def E(self):
         """
         E(PolyhedralEdge self) -> kvector_t
 
-        kvector_t PolyhedralEdge::E() const 
+        kvector_t PolyhedralEdge::E() const
 
         """
         return _libBornAgainCore.PolyhedralEdge_E(self)
@@ -11697,7 +11687,7 @@ class PolyhedralEdge(_object):
         """
         R(PolyhedralEdge self) -> kvector_t
 
-        kvector_t PolyhedralEdge::R() const 
+        kvector_t PolyhedralEdge::R() const
 
         """
         return _libBornAgainCore.PolyhedralEdge_R(self)
@@ -11707,7 +11697,7 @@ class PolyhedralEdge(_object):
         """
         qE(PolyhedralEdge self, cvector_t q) -> complex_t
 
-        complex_t PolyhedralEdge::qE(cvector_t q) const 
+        complex_t PolyhedralEdge::qE(cvector_t q) const
 
         """
         return _libBornAgainCore.PolyhedralEdge_qE(self, q)
@@ -11717,7 +11707,7 @@ class PolyhedralEdge(_object):
         """
         qR(PolyhedralEdge self, cvector_t q) -> complex_t
 
-        complex_t PolyhedralEdge::qR(cvector_t q) const 
+        complex_t PolyhedralEdge::qR(cvector_t q) const
 
         """
         return _libBornAgainCore.PolyhedralEdge_qR(self, q)
@@ -11759,9 +11749,7 @@ class PolyhedralFace(_object):
         """diameter(vector_kvector_t V) -> double"""
         return _libBornAgainCore.PolyhedralFace_diameter(V)
 
-    if _newclass:
-        diameter = staticmethod(diameter)
-    __swig_getmethods__["diameter"] = lambda x: diameter
+    diameter = staticmethod(diameter)
 
     def __init__(self, *args):
         """
@@ -11786,14 +11774,14 @@ class PolyhedralFace(_object):
         this = _libBornAgainCore.new_PolyhedralFace(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def area(self):
         """
         area(PolyhedralFace self) -> double
 
-        double PolyhedralFace::area() const 
+        double PolyhedralFace::area() const
 
         """
         return _libBornAgainCore.PolyhedralFace_area(self)
@@ -11803,7 +11791,7 @@ class PolyhedralFace(_object):
         """
         center(PolyhedralFace self) -> kvector_t
 
-        kvector_t PolyhedralFace::center() const 
+        kvector_t PolyhedralFace::center() const
 
         """
         return _libBornAgainCore.PolyhedralFace_center(self)
@@ -11813,7 +11801,7 @@ class PolyhedralFace(_object):
         """
         pyramidalVolume(PolyhedralFace self) -> double
 
-        double PolyhedralFace::pyramidalVolume() const 
+        double PolyhedralFace::pyramidalVolume() const
 
         """
         return _libBornAgainCore.PolyhedralFace_pyramidalVolume(self)
@@ -11823,7 +11811,7 @@ class PolyhedralFace(_object):
         """
         radius3d(PolyhedralFace self) -> double
 
-        double PolyhedralFace::radius3d() const 
+        double PolyhedralFace::radius3d() const
 
         """
         return _libBornAgainCore.PolyhedralFace_radius3d(self)
@@ -11924,7 +11912,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolyhedron self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const override final
 
         Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. 
 
@@ -11948,7 +11936,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         volume(FormFactorPolyhedron self) -> double
 
-        double FormFactorPolyhedron::volume() const overridefinal
+        double FormFactorPolyhedron::volume() const override final
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -11960,7 +11948,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         radialExtension(FormFactorPolyhedron self) -> double
 
-        double FormFactorPolyhedron::radialExtension() const overridefinal
+        double FormFactorPolyhedron::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12011,7 +11999,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolygonalPrism self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const override final
 
         Returns the form factor F(q) of this polyhedron, respecting the offset height/2. 
 
@@ -12023,7 +12011,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         volume(FormFactorPolygonalPrism self) -> double
 
-        double FormFactorPolygonalPrism::volume() const overridefinal
+        double FormFactorPolygonalPrism::volume() const override final
 
         Returns the volume of this prism. 
 
@@ -12035,7 +12023,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         getHeight(FormFactorPolygonalPrism self) -> double
 
-        double FormFactorPolygonalPrism::getHeight() const 
+        double FormFactorPolygonalPrism::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorPolygonalPrism_getHeight(self)
@@ -12045,7 +12033,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         radialExtension(FormFactorPolygonalPrism self) -> double
 
-        double FormFactorPolygonalPrism::radialExtension() const overridefinal
+        double FormFactorPolygonalPrism::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12084,7 +12072,7 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -12108,7 +12096,7 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
         """
         radialExtension(FormFactorPolygonalSurface self) -> double
 
-        double FormFactorPolygonalSurface::radialExtension() const overridefinal
+        double FormFactorPolygonalSurface::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12167,14 +12155,14 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorAnisoPyramid(length, width, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid
 
-        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal
+        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12186,7 +12174,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         accept(FormFactorAnisoPyramid self, INodeVisitor visitor)
 
-        void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12198,7 +12186,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         getLength(FormFactorAnisoPyramid self) -> double
 
-        double FormFactorAnisoPyramid::getLength() const 
+        double FormFactorAnisoPyramid::getLength() const
 
         """
         return _libBornAgainCore.FormFactorAnisoPyramid_getLength(self)
@@ -12208,7 +12196,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         getWidth(FormFactorAnisoPyramid self) -> double
 
-        double FormFactorAnisoPyramid::getWidth() const 
+        double FormFactorAnisoPyramid::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorAnisoPyramid_getWidth(self)
@@ -12218,7 +12206,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         getHeight(FormFactorAnisoPyramid self) -> double
 
-        double FormFactorAnisoPyramid::getHeight() const 
+        double FormFactorAnisoPyramid::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorAnisoPyramid_getHeight(self)
@@ -12228,7 +12216,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         getAlpha(FormFactorAnisoPyramid self) -> double
 
-        double FormFactorAnisoPyramid::getAlpha() const 
+        double FormFactorAnisoPyramid::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorAnisoPyramid_getAlpha(self)
@@ -12282,14 +12270,14 @@ class FormFactorBox(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorBox(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorBox self) -> FormFactorBox
 
-        FormFactorBox* FormFactorBox::clone() const overridefinal
+        FormFactorBox* FormFactorBox::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12301,7 +12289,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         accept(FormFactorBox self, INodeVisitor visitor)
 
-        void FormFactorBox::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorBox::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12313,7 +12301,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         getLength(FormFactorBox self) -> double
 
-        double FormFactorBox::getLength() const 
+        double FormFactorBox::getLength() const
 
         """
         return _libBornAgainCore.FormFactorBox_getLength(self)
@@ -12323,7 +12311,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         getHeight(FormFactorBox self) -> double
 
-        double FormFactorBox::getHeight() const 
+        double FormFactorBox::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorBox_getHeight(self)
@@ -12333,7 +12321,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         getWidth(FormFactorBox self) -> double
 
-        double FormFactorBox::getWidth() const 
+        double FormFactorBox::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorBox_getWidth(self)
@@ -12343,7 +12331,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         radialExtension(FormFactorBox self) -> double
 
-        double FormFactorBox::radialExtension() const overridefinal
+        double FormFactorBox::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12355,7 +12343,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorBox self, cvector_t q) -> complex_t
 
-        complex_t FormFactorBox::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorBox::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -12411,14 +12399,14 @@ class FormFactorCone(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCone(radius, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorCone self) -> FormFactorCone
 
-        FormFactorCone* FormFactorCone::clone() const overridefinal
+        FormFactorCone* FormFactorCone::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12430,7 +12418,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         accept(FormFactorCone self, INodeVisitor visitor)
 
-        void FormFactorCone::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorCone::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12442,7 +12430,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         getHeight(FormFactorCone self) -> double
 
-        double FormFactorCone::getHeight() const 
+        double FormFactorCone::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorCone_getHeight(self)
@@ -12452,7 +12440,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         getAlpha(FormFactorCone self) -> double
 
-        double FormFactorCone::getAlpha() const 
+        double FormFactorCone::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorCone_getAlpha(self)
@@ -12462,7 +12450,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         getRadius(FormFactorCone self) -> double
 
-        double FormFactorCone::getRadius() const 
+        double FormFactorCone::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorCone_getRadius(self)
@@ -12472,7 +12460,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         radialExtension(FormFactorCone self) -> double
 
-        double FormFactorCone::radialExtension() const overridefinal
+        double FormFactorCone::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12484,7 +12472,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorCone self, cvector_t q) -> complex_t
 
-        complex_t FormFactorCone::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorCone::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -12540,14 +12528,14 @@ class FormFactorCone6(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCone6(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorCone6 self) -> FormFactorCone6
 
-        FormFactorCone6* FormFactorCone6::clone() const overridefinal
+        FormFactorCone6* FormFactorCone6::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12559,7 +12547,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         accept(FormFactorCone6 self, INodeVisitor visitor)
 
-        void FormFactorCone6::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorCone6::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12571,7 +12559,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         getBaseEdge(FormFactorCone6 self) -> double
 
-        double FormFactorCone6::getBaseEdge() const 
+        double FormFactorCone6::getBaseEdge() const
 
         """
         return _libBornAgainCore.FormFactorCone6_getBaseEdge(self)
@@ -12581,7 +12569,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         getHeight(FormFactorCone6 self) -> double
 
-        double FormFactorCone6::getHeight() const 
+        double FormFactorCone6::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorCone6_getHeight(self)
@@ -12591,7 +12579,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         getAlpha(FormFactorCone6 self) -> double
 
-        double FormFactorCone6::getAlpha() const 
+        double FormFactorCone6::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorCone6_getAlpha(self)
@@ -12631,7 +12619,7 @@ class FormFactorCrystal(IFormFactor):
         this = _libBornAgainCore.new_FormFactorCrystal(lattice, basis_form_factor, meso_form_factor)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorCrystal
     __del__ = lambda self: None
@@ -12640,7 +12628,7 @@ class FormFactorCrystal(IFormFactor):
         """
         clone(FormFactorCrystal self) -> FormFactorCrystal
 
-        FormFactorCrystal* FormFactorCrystal::clone() const overridefinal
+        FormFactorCrystal* FormFactorCrystal::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12652,7 +12640,7 @@ class FormFactorCrystal(IFormFactor):
         """
         accept(FormFactorCrystal self, INodeVisitor visitor)
 
-        void FormFactorCrystal::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorCrystal::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12676,7 +12664,7 @@ class FormFactorCrystal(IFormFactor):
         """
         volume(FormFactorCrystal self) -> double
 
-        double FormFactorCrystal::volume() const overridefinal
+        double FormFactorCrystal::volume() const override final
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -12688,7 +12676,7 @@ class FormFactorCrystal(IFormFactor):
         """
         radialExtension(FormFactorCrystal self) -> double
 
-        double FormFactorCrystal::radialExtension() const overridefinal
+        double FormFactorCrystal::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12712,7 +12700,7 @@ class FormFactorCrystal(IFormFactor):
         """
         topZ(FormFactorCrystal self, IRotation rotation) -> double
 
-        double FormFactorCrystal::topZ(const IRotation &rotation) const overridefinal
+        double FormFactorCrystal::topZ(const IRotation &rotation) const override final
 
         Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 
@@ -12724,7 +12712,7 @@ class FormFactorCrystal(IFormFactor):
         """
         evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+        complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -12781,14 +12769,14 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCuboctahedron(length, height, height_ratio, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron
 
-        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal
+        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12800,7 +12788,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         accept(FormFactorCuboctahedron self, INodeVisitor visitor)
 
-        void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12812,7 +12800,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         getLength(FormFactorCuboctahedron self) -> double
 
-        double FormFactorCuboctahedron::getLength() const 
+        double FormFactorCuboctahedron::getLength() const
 
         """
         return _libBornAgainCore.FormFactorCuboctahedron_getLength(self)
@@ -12822,7 +12810,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         getHeight(FormFactorCuboctahedron self) -> double
 
-        double FormFactorCuboctahedron::getHeight() const 
+        double FormFactorCuboctahedron::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorCuboctahedron_getHeight(self)
@@ -12832,7 +12820,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         getHeightRatio(FormFactorCuboctahedron self) -> double
 
-        double FormFactorCuboctahedron::getHeightRatio() const 
+        double FormFactorCuboctahedron::getHeightRatio() const
 
         """
         return _libBornAgainCore.FormFactorCuboctahedron_getHeightRatio(self)
@@ -12842,7 +12830,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         getAlpha(FormFactorCuboctahedron self) -> double
 
-        double FormFactorCuboctahedron::getAlpha() const 
+        double FormFactorCuboctahedron::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorCuboctahedron_getAlpha(self)
@@ -12893,14 +12881,14 @@ class FormFactorCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCylinder(radius, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorCylinder self) -> FormFactorCylinder
 
-        FormFactorCylinder* FormFactorCylinder::clone() const overridefinal
+        FormFactorCylinder* FormFactorCylinder::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -12912,7 +12900,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         accept(FormFactorCylinder self, INodeVisitor visitor)
 
-        void FormFactorCylinder::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorCylinder::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -12924,7 +12912,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         getHeight(FormFactorCylinder self) -> double
 
-        double FormFactorCylinder::getHeight() const 
+        double FormFactorCylinder::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorCylinder_getHeight(self)
@@ -12934,7 +12922,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         getRadius(FormFactorCylinder self) -> double
 
-        double FormFactorCylinder::getRadius() const 
+        double FormFactorCylinder::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorCylinder_getRadius(self)
@@ -12944,7 +12932,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         radialExtension(FormFactorCylinder self) -> double
 
-        double FormFactorCylinder::radialExtension() const overridefinal
+        double FormFactorCylinder::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12956,7 +12944,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorCylinder self, cvector_t q) -> complex_t
 
-        complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13001,14 +12989,14 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         this = _libBornAgainCore.new_FormFactorDecoratorDebyeWaller(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorDecoratorDebyeWaller self) -> FormFactorDecoratorDebyeWaller
 
-        FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal
+        FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13020,7 +13008,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         """
         accept(FormFactorDecoratorDebyeWaller self, INodeVisitor visitor)
 
-        void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13032,7 +13020,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         """
         evaluate(FormFactorDecoratorDebyeWaller self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+        complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const override final
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -13090,14 +13078,14 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorDodecahedron(edge)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorDodecahedron self) -> FormFactorDodecahedron
 
-        FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal
+        FormFactorDodecahedron* FormFactorDodecahedron::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13109,7 +13097,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         """
         accept(FormFactorDodecahedron self, INodeVisitor visitor)
 
-        void FormFactorDodecahedron::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorDodecahedron::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13121,7 +13109,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         """
         getEdge(FormFactorDodecahedron self) -> double
 
-        double FormFactorDodecahedron::getEdge() const 
+        double FormFactorDodecahedron::getEdge() const
 
         """
         return _libBornAgainCore.FormFactorDodecahedron_getEdge(self)
@@ -13161,14 +13149,14 @@ class FormFactorDot(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorDot()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorDot self) -> FormFactorDot
 
-        FormFactorDot* FormFactorDot::clone() const overridefinal
+        FormFactorDot* FormFactorDot::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13180,7 +13168,7 @@ class FormFactorDot(IFormFactorBorn):
         """
         accept(FormFactorDot self, INodeVisitor visitor)
 
-        void FormFactorDot::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorDot::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13192,7 +13180,7 @@ class FormFactorDot(IFormFactorBorn):
         """
         radialExtension(FormFactorDot self) -> double
 
-        double FormFactorDot::radialExtension() const overridefinal
+        double FormFactorDot::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13204,7 +13192,7 @@ class FormFactorDot(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorDot self, cvector_t arg2) -> complex_t
 
-        complex_t FormFactorDot::evaluate_for_q(cvector_t) const overridefinal
+        complex_t FormFactorDot::evaluate_for_q(cvector_t) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13260,14 +13248,14 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorEllipsoidalCylinder(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder
 
-        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal
+        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13279,7 +13267,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         accept(FormFactorEllipsoidalCylinder self, INodeVisitor visitor)
 
-        void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13291,7 +13279,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         getRadiusX(FormFactorEllipsoidalCylinder self) -> double
 
-        double FormFactorEllipsoidalCylinder::getRadiusX() const 
+        double FormFactorEllipsoidalCylinder::getRadiusX() const
 
         """
         return _libBornAgainCore.FormFactorEllipsoidalCylinder_getRadiusX(self)
@@ -13301,7 +13289,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         getRadiusY(FormFactorEllipsoidalCylinder self) -> double
 
-        double FormFactorEllipsoidalCylinder::getRadiusY() const 
+        double FormFactorEllipsoidalCylinder::getRadiusY() const
 
         """
         return _libBornAgainCore.FormFactorEllipsoidalCylinder_getRadiusY(self)
@@ -13311,7 +13299,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         getHeight(FormFactorEllipsoidalCylinder self) -> double
 
-        double FormFactorEllipsoidalCylinder::getHeight() const 
+        double FormFactorEllipsoidalCylinder::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorEllipsoidalCylinder_getHeight(self)
@@ -13321,7 +13309,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         radialExtension(FormFactorEllipsoidalCylinder self) -> double
 
-        double FormFactorEllipsoidalCylinder::radialExtension() const overridefinal
+        double FormFactorEllipsoidalCylinder::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13333,7 +13321,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorEllipsoidalCylinder self, cvector_t q) -> complex_t
 
-        complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13383,14 +13371,14 @@ class FormFactorFullSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSphere(radius)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorFullSphere self) -> FormFactorFullSphere
 
-        FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal
+        FormFactorFullSphere* FormFactorFullSphere::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13402,7 +13390,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         accept(FormFactorFullSphere self, INodeVisitor visitor)
 
-        void FormFactorFullSphere::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorFullSphere::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13414,7 +13402,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         getRadius(FormFactorFullSphere self) -> double
 
-        double FormFactorFullSphere::getRadius() const 
+        double FormFactorFullSphere::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorFullSphere_getRadius(self)
@@ -13424,7 +13412,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         radialExtension(FormFactorFullSphere self) -> double
 
-        double FormFactorFullSphere::radialExtension() const overridefinal
+        double FormFactorFullSphere::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13436,7 +13424,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         bottomZ(FormFactorFullSphere self, IRotation rotation) -> double
 
-        double FormFactorFullSphere::bottomZ(const IRotation &rotation) const overridefinal
+        double FormFactorFullSphere::bottomZ(const IRotation &rotation) const override final
 
         Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 
@@ -13448,7 +13436,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         topZ(FormFactorFullSphere self, IRotation rotation) -> double
 
-        double FormFactorFullSphere::topZ(const IRotation &rotation) const overridefinal
+        double FormFactorFullSphere::topZ(const IRotation &rotation) const override final
 
         Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 
@@ -13460,7 +13448,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorFullSphere self, cvector_t q) -> complex_t
 
-        complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13513,14 +13501,14 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSpheroid(radius, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid
 
-        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal
+        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13532,7 +13520,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         accept(FormFactorFullSpheroid self, INodeVisitor visitor)
 
-        void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13544,7 +13532,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         getHeight(FormFactorFullSpheroid self) -> double
 
-        double FormFactorFullSpheroid::getHeight() const 
+        double FormFactorFullSpheroid::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorFullSpheroid_getHeight(self)
@@ -13554,7 +13542,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         getRadius(FormFactorFullSpheroid self) -> double
 
-        double FormFactorFullSpheroid::getRadius() const 
+        double FormFactorFullSpheroid::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorFullSpheroid_getRadius(self)
@@ -13564,7 +13552,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         radialExtension(FormFactorFullSpheroid self) -> double
 
-        double FormFactorFullSpheroid::radialExtension() const overridefinal
+        double FormFactorFullSpheroid::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13576,7 +13564,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorFullSpheroid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13619,14 +13607,14 @@ class FormFactorGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorGauss(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorGauss self) -> FormFactorGauss
 
-        FormFactorGauss* FormFactorGauss::clone() const overridefinal
+        FormFactorGauss* FormFactorGauss::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13638,7 +13626,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         accept(FormFactorGauss self, INodeVisitor visitor)
 
-        void FormFactorGauss::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorGauss::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13650,7 +13638,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         getWidth(FormFactorGauss self) -> double
 
-        double FormFactorGauss::getWidth() const 
+        double FormFactorGauss::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorGauss_getWidth(self)
@@ -13660,7 +13648,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         getHeight(FormFactorGauss self) -> double
 
-        double FormFactorGauss::getHeight() const 
+        double FormFactorGauss::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorGauss_getHeight(self)
@@ -13670,7 +13658,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         radialExtension(FormFactorGauss self) -> double
 
-        double FormFactorGauss::radialExtension() const overridefinal
+        double FormFactorGauss::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13682,7 +13670,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13738,7 +13726,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorHemiEllipsoid(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorHemiEllipsoid
     __del__ = lambda self: None
@@ -13747,7 +13735,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid
 
-        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal
+        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13759,7 +13747,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         accept(FormFactorHemiEllipsoid self, INodeVisitor visitor)
 
-        void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13771,7 +13759,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         getHeight(FormFactorHemiEllipsoid self) -> double
 
-        double FormFactorHemiEllipsoid::getHeight() const 
+        double FormFactorHemiEllipsoid::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorHemiEllipsoid_getHeight(self)
@@ -13781,7 +13769,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         getRadiusX(FormFactorHemiEllipsoid self) -> double
 
-        double FormFactorHemiEllipsoid::getRadiusX() const 
+        double FormFactorHemiEllipsoid::getRadiusX() const
 
         """
         return _libBornAgainCore.FormFactorHemiEllipsoid_getRadiusX(self)
@@ -13791,7 +13779,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         getRadiusY(FormFactorHemiEllipsoid self) -> double
 
-        double FormFactorHemiEllipsoid::getRadiusY() const 
+        double FormFactorHemiEllipsoid::getRadiusY() const
 
         """
         return _libBornAgainCore.FormFactorHemiEllipsoid_getRadiusY(self)
@@ -13801,7 +13789,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         radialExtension(FormFactorHemiEllipsoid self) -> double
 
-        double FormFactorHemiEllipsoid::radialExtension() const overridefinal
+        double FormFactorHemiEllipsoid::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13813,7 +13801,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorHemiEllipsoid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -13861,14 +13849,14 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorIcosahedron(edge)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorIcosahedron self) -> FormFactorIcosahedron
 
-        FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal
+        FormFactorIcosahedron* FormFactorIcosahedron::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13880,7 +13868,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         """
         accept(FormFactorIcosahedron self, INodeVisitor visitor)
 
-        void FormFactorIcosahedron::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorIcosahedron::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13892,7 +13880,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         """
         getEdge(FormFactorIcosahedron self) -> double
 
-        double FormFactorIcosahedron::getEdge() const 
+        double FormFactorIcosahedron::getEdge() const
 
         """
         return _libBornAgainCore.FormFactorIcosahedron_getEdge(self)
@@ -13946,14 +13934,14 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxGauss(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss
 
-        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal
+        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -13965,7 +13953,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         accept(FormFactorLongBoxGauss self, INodeVisitor visitor)
 
-        void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -13977,7 +13965,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         getLength(FormFactorLongBoxGauss self) -> double
 
-        double FormFactorLongBoxGauss::getLength() const 
+        double FormFactorLongBoxGauss::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxGauss_getLength(self)
@@ -13987,7 +13975,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         getHeight(FormFactorLongBoxGauss self) -> double
 
-        double FormFactorLongBoxGauss::getHeight() const 
+        double FormFactorLongBoxGauss::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxGauss_getHeight(self)
@@ -13997,7 +13985,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         getWidth(FormFactorLongBoxGauss self) -> double
 
-        double FormFactorLongBoxGauss::getWidth() const 
+        double FormFactorLongBoxGauss::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxGauss_getWidth(self)
@@ -14007,7 +13995,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         radialExtension(FormFactorLongBoxGauss self) -> double
 
-        double FormFactorLongBoxGauss::radialExtension() const overridefinal
+        double FormFactorLongBoxGauss::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14019,7 +14007,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongBoxGauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -14075,14 +14063,14 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxLorentz(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz
 
-        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal
+        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14094,7 +14082,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         accept(FormFactorLongBoxLorentz self, INodeVisitor visitor)
 
-        void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14106,7 +14094,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         getLength(FormFactorLongBoxLorentz self) -> double
 
-        double FormFactorLongBoxLorentz::getLength() const 
+        double FormFactorLongBoxLorentz::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxLorentz_getLength(self)
@@ -14116,7 +14104,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         getHeight(FormFactorLongBoxLorentz self) -> double
 
-        double FormFactorLongBoxLorentz::getHeight() const 
+        double FormFactorLongBoxLorentz::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxLorentz_getHeight(self)
@@ -14126,7 +14114,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         getWidth(FormFactorLongBoxLorentz self) -> double
 
-        double FormFactorLongBoxLorentz::getWidth() const 
+        double FormFactorLongBoxLorentz::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongBoxLorentz_getWidth(self)
@@ -14136,7 +14124,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         radialExtension(FormFactorLongBoxLorentz self) -> double
 
-        double FormFactorLongBoxLorentz::radialExtension() const overridefinal
+        double FormFactorLongBoxLorentz::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14148,7 +14136,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongBoxLorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -14204,14 +14192,14 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Gauss(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss
 
-        FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal
+        FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14223,7 +14211,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         accept(FormFactorLongRipple1Gauss self, INodeVisitor visitor)
 
-        void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14235,7 +14223,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         getHeight(FormFactorLongRipple1Gauss self) -> double
 
-        double FormFactorLongRipple1Gauss::getHeight() const 
+        double FormFactorLongRipple1Gauss::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Gauss_getHeight(self)
@@ -14245,7 +14233,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         getWidth(FormFactorLongRipple1Gauss self) -> double
 
-        double FormFactorLongRipple1Gauss::getWidth() const 
+        double FormFactorLongRipple1Gauss::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Gauss_getWidth(self)
@@ -14255,7 +14243,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         getLength(FormFactorLongRipple1Gauss self) -> double
 
-        double FormFactorLongRipple1Gauss::getLength() const 
+        double FormFactorLongRipple1Gauss::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Gauss_getLength(self)
@@ -14265,7 +14253,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         radialExtension(FormFactorLongRipple1Gauss self) -> double
 
-        double FormFactorLongRipple1Gauss::radialExtension() const overridefinal
+        double FormFactorLongRipple1Gauss::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14277,7 +14265,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -14333,14 +14321,14 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Lorentz(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz
 
-        FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal
+        FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14352,7 +14340,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         accept(FormFactorLongRipple1Lorentz self, INodeVisitor visitor)
 
-        void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14364,7 +14352,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         radialExtension(FormFactorLongRipple1Lorentz self) -> double
 
-        double FormFactorLongRipple1Lorentz::radialExtension() const overridefinal
+        double FormFactorLongRipple1Lorentz::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14376,7 +14364,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         getHeight(FormFactorLongRipple1Lorentz self) -> double
 
-        double FormFactorLongRipple1Lorentz::getHeight() const 
+        double FormFactorLongRipple1Lorentz::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Lorentz_getHeight(self)
@@ -14386,7 +14374,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         getWidth(FormFactorLongRipple1Lorentz self) -> double
 
-        double FormFactorLongRipple1Lorentz::getWidth() const 
+        double FormFactorLongRipple1Lorentz::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Lorentz_getWidth(self)
@@ -14396,7 +14384,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         getLength(FormFactorLongRipple1Lorentz self) -> double
 
-        double FormFactorLongRipple1Lorentz::getLength() const 
+        double FormFactorLongRipple1Lorentz::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple1Lorentz_getLength(self)
@@ -14406,7 +14394,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -14465,14 +14453,14 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Gauss(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss
 
-        FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal
+        FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14484,7 +14472,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         accept(FormFactorLongRipple2Gauss self, INodeVisitor visitor)
 
-        void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14496,7 +14484,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         getHeight(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::getHeight() const 
+        double FormFactorLongRipple2Gauss::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Gauss_getHeight(self)
@@ -14506,7 +14494,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         getWidth(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::getWidth() const 
+        double FormFactorLongRipple2Gauss::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Gauss_getWidth(self)
@@ -14516,7 +14504,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         getLength(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::getLength() const 
+        double FormFactorLongRipple2Gauss::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Gauss_getLength(self)
@@ -14526,7 +14514,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         getAsymmetry(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::getAsymmetry() const 
+        double FormFactorLongRipple2Gauss::getAsymmetry() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Gauss_getAsymmetry(self)
@@ -14536,7 +14524,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         radialExtension(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::radialExtension() const overridefinal
+        double FormFactorLongRipple2Gauss::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14548,7 +14536,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -14605,14 +14593,14 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Lorentz(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz
 
-        FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal
+        FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14624,7 +14612,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         accept(FormFactorLongRipple2Lorentz self, INodeVisitor visitor)
 
-        void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14636,7 +14624,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         getHeight(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::getHeight() const 
+        double FormFactorLongRipple2Lorentz::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Lorentz_getHeight(self)
@@ -14646,7 +14634,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         getWidth(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::getWidth() const 
+        double FormFactorLongRipple2Lorentz::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Lorentz_getWidth(self)
@@ -14656,7 +14644,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         getLength(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::getLength() const 
+        double FormFactorLongRipple2Lorentz::getLength() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Lorentz_getLength(self)
@@ -14666,7 +14654,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         getAsymmetry(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::getAsymmetry() const 
+        double FormFactorLongRipple2Lorentz::getAsymmetry() const
 
         """
         return _libBornAgainCore.FormFactorLongRipple2Lorentz_getAsymmetry(self)
@@ -14676,7 +14664,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         radialExtension(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::radialExtension() const overridefinal
+        double FormFactorLongRipple2Lorentz::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14688,7 +14676,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -14731,14 +14719,14 @@ class FormFactorLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLorentz(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorLorentz self) -> FormFactorLorentz
 
-        FormFactorLorentz* FormFactorLorentz::clone() const overridefinal
+        FormFactorLorentz* FormFactorLorentz::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14750,7 +14738,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         accept(FormFactorLorentz self, INodeVisitor visitor)
 
-        void FormFactorLorentz::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorLorentz::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14762,7 +14750,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         getWidth(FormFactorLorentz self) -> double
 
-        double FormFactorLorentz::getWidth() const 
+        double FormFactorLorentz::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorLorentz_getWidth(self)
@@ -14772,7 +14760,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         getHeight(FormFactorLorentz self) -> double
 
-        double FormFactorLorentz::getHeight() const 
+        double FormFactorLorentz::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorLorentz_getHeight(self)
@@ -14782,7 +14770,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         radialExtension(FormFactorLorentz self) -> double
 
-        double FormFactorLorentz::radialExtension() const overridefinal
+        double FormFactorLorentz::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14794,7 +14782,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -14847,14 +14835,14 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism3(base_edge, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorPrism3 self) -> FormFactorPrism3
 
-        FormFactorPrism3* FormFactorPrism3::clone() const overridefinal
+        FormFactorPrism3* FormFactorPrism3::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14866,7 +14854,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         """
         accept(FormFactorPrism3 self, INodeVisitor visitor)
 
-        void FormFactorPrism3::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorPrism3::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14878,7 +14866,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         """
         getBaseEdge(FormFactorPrism3 self) -> double
 
-        double FormFactorPrism3::getBaseEdge() const 
+        double FormFactorPrism3::getBaseEdge() const
 
         """
         return _libBornAgainCore.FormFactorPrism3_getBaseEdge(self)
@@ -14929,14 +14917,14 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism6(base_edge, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorPrism6 self) -> FormFactorPrism6
 
-        FormFactorPrism6* FormFactorPrism6::clone() const overridefinal
+        FormFactorPrism6* FormFactorPrism6::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -14948,7 +14936,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         """
         accept(FormFactorPrism6 self, INodeVisitor visitor)
 
-        void FormFactorPrism6::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorPrism6::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -14960,7 +14948,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         """
         getBaseEdge(FormFactorPrism6 self) -> double
 
-        double FormFactorPrism6::getBaseEdge() const 
+        double FormFactorPrism6::getBaseEdge() const
 
         """
         return _libBornAgainCore.FormFactorPrism6_getBaseEdge(self)
@@ -15014,14 +15002,14 @@ class FormFactorPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorPyramid(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorPyramid self) -> FormFactorPyramid
 
-        FormFactorPyramid* FormFactorPyramid::clone() const overridefinal
+        FormFactorPyramid* FormFactorPyramid::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15033,7 +15021,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         accept(FormFactorPyramid self, INodeVisitor visitor)
 
-        void FormFactorPyramid::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorPyramid::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15045,7 +15033,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         getHeight(FormFactorPyramid self) -> double
 
-        double FormFactorPyramid::getHeight() const 
+        double FormFactorPyramid::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorPyramid_getHeight(self)
@@ -15055,7 +15043,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         getBaseEdge(FormFactorPyramid self) -> double
 
-        double FormFactorPyramid::getBaseEdge() const 
+        double FormFactorPyramid::getBaseEdge() const
 
         """
         return _libBornAgainCore.FormFactorPyramid_getBaseEdge(self)
@@ -15065,7 +15053,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         getAlpha(FormFactorPyramid self) -> double
 
-        double FormFactorPyramid::getAlpha() const 
+        double FormFactorPyramid::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorPyramid_getAlpha(self)
@@ -15119,14 +15107,14 @@ class FormFactorRipple1(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple1(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorRipple1 self) -> FormFactorRipple1
 
-        FormFactorRipple1* FormFactorRipple1::clone() const overridefinal
+        FormFactorRipple1* FormFactorRipple1::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15138,7 +15126,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         accept(FormFactorRipple1 self, INodeVisitor visitor)
 
-        void FormFactorRipple1::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorRipple1::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15150,7 +15138,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         getLength(FormFactorRipple1 self) -> double
 
-        double FormFactorRipple1::getLength() const 
+        double FormFactorRipple1::getLength() const
 
         """
         return _libBornAgainCore.FormFactorRipple1_getLength(self)
@@ -15160,7 +15148,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         getHeight(FormFactorRipple1 self) -> double
 
-        double FormFactorRipple1::getHeight() const 
+        double FormFactorRipple1::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorRipple1_getHeight(self)
@@ -15170,7 +15158,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         getWidth(FormFactorRipple1 self) -> double
 
-        double FormFactorRipple1::getWidth() const 
+        double FormFactorRipple1::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorRipple1_getWidth(self)
@@ -15180,7 +15168,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         radialExtension(FormFactorRipple1 self) -> double
 
-        double FormFactorRipple1::radialExtension() const overridefinal
+        double FormFactorRipple1::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15192,7 +15180,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t
 
-        complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -15251,14 +15239,14 @@ class FormFactorRipple2(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple2(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorRipple2 self) -> FormFactorRipple2
 
-        FormFactorRipple2* FormFactorRipple2::clone() const overridefinal
+        FormFactorRipple2* FormFactorRipple2::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15270,7 +15258,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         accept(FormFactorRipple2 self, INodeVisitor visitor)
 
-        void FormFactorRipple2::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorRipple2::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15282,7 +15270,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         getHeight(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::getHeight() const 
+        double FormFactorRipple2::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorRipple2_getHeight(self)
@@ -15292,7 +15280,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         getWidth(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::getWidth() const 
+        double FormFactorRipple2::getWidth() const
 
         """
         return _libBornAgainCore.FormFactorRipple2_getWidth(self)
@@ -15302,7 +15290,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         getLength(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::getLength() const 
+        double FormFactorRipple2::getLength() const
 
         """
         return _libBornAgainCore.FormFactorRipple2_getLength(self)
@@ -15312,7 +15300,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         getAsymmetry(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::getAsymmetry() const 
+        double FormFactorRipple2::getAsymmetry() const
 
         """
         return _libBornAgainCore.FormFactorRipple2_getAsymmetry(self)
@@ -15322,7 +15310,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         radialExtension(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::radialExtension() const overridefinal
+        double FormFactorRipple2::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15334,7 +15322,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t
 
-        complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -15376,14 +15364,14 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereGaussianRadius(mean, sigma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius
 
-        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal
+        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15395,7 +15383,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereGaussianRadius self, INodeVisitor visitor)
 
-        void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15407,7 +15395,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         radialExtension(FormFactorSphereGaussianRadius self) -> double
 
-        double FormFactorSphereGaussianRadius::radialExtension() const overridefinal
+        double FormFactorSphereGaussianRadius::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15419,7 +15407,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -15461,14 +15449,14 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereLogNormalRadius(mean, scale_param, n_samples)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius
 
-        FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal
+        FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15480,7 +15468,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereLogNormalRadius self, INodeVisitor visitor)
 
-        void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15492,7 +15480,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         radialExtension(FormFactorSphereLogNormalRadius self) -> double
 
-        double FormFactorSphereLogNormalRadius::radialExtension() const overridefinal
+        double FormFactorSphereLogNormalRadius::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15504,7 +15492,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -15546,14 +15534,14 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereUniformRadius(mean, full_width)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorSphereUniformRadius self) -> FormFactorSphereUniformRadius
 
-        FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal
+        FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15565,7 +15553,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereUniformRadius self, INodeVisitor visitor)
 
-        void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15577,7 +15565,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         radialExtension(FormFactorSphereUniformRadius self) -> double
 
-        double FormFactorSphereUniformRadius::radialExtension() const overridefinal
+        double FormFactorSphereUniformRadius::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15589,7 +15577,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereUniformRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -15645,14 +15633,14 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTetrahedron(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorTetrahedron self) -> FormFactorTetrahedron
 
-        FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal
+        FormFactorTetrahedron* FormFactorTetrahedron::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15664,7 +15652,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         accept(FormFactorTetrahedron self, INodeVisitor visitor)
 
-        void FormFactorTetrahedron::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorTetrahedron::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15676,7 +15664,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         getBaseEdge(FormFactorTetrahedron self) -> double
 
-        double FormFactorTetrahedron::getBaseEdge() const 
+        double FormFactorTetrahedron::getBaseEdge() const
 
         """
         return _libBornAgainCore.FormFactorTetrahedron_getBaseEdge(self)
@@ -15686,7 +15674,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         getHeight(FormFactorTetrahedron self) -> double
 
-        double FormFactorTetrahedron::getHeight() const 
+        double FormFactorTetrahedron::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorTetrahedron_getHeight(self)
@@ -15696,7 +15684,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         getAlpha(FormFactorTetrahedron self) -> double
 
-        double FormFactorTetrahedron::getAlpha() const 
+        double FormFactorTetrahedron::getAlpha() const
 
         """
         return _libBornAgainCore.FormFactorTetrahedron_getAlpha(self)
@@ -15747,14 +15735,14 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTruncatedCube(length, removed_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube
 
-        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal
+        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15766,7 +15754,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         """
         accept(FormFactorTruncatedCube self, INodeVisitor visitor)
 
-        void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15778,7 +15766,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         """
         getLength(FormFactorTruncatedCube self) -> double
 
-        double FormFactorTruncatedCube::getLength() const 
+        double FormFactorTruncatedCube::getLength() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedCube_getLength(self)
@@ -15788,7 +15776,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         """
         getRemovedLength(FormFactorTruncatedCube self) -> double
 
-        double FormFactorTruncatedCube::getRemovedLength() const 
+        double FormFactorTruncatedCube::getRemovedLength() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedCube_getRemovedLength(self)
@@ -15843,14 +15831,14 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSphere(radius, height, dh)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere
 
-        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal
+        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15862,7 +15850,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         accept(FormFactorTruncatedSphere self, INodeVisitor visitor)
 
-        void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -15874,7 +15862,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         getHeight(FormFactorTruncatedSphere self) -> double
 
-        double FormFactorTruncatedSphere::getHeight() const 
+        double FormFactorTruncatedSphere::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSphere_getHeight(self)
@@ -15884,7 +15872,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         getRadius(FormFactorTruncatedSphere self) -> double
 
-        double FormFactorTruncatedSphere::getRadius() const 
+        double FormFactorTruncatedSphere::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSphere_getRadius(self)
@@ -15894,7 +15882,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         getRemovedTop(FormFactorTruncatedSphere self) -> double
 
-        double FormFactorTruncatedSphere::getRemovedTop() const 
+        double FormFactorTruncatedSphere::getRemovedTop() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSphere_getRemovedTop(self)
@@ -15904,7 +15892,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         radialExtension(FormFactorTruncatedSphere self) -> double
 
-        double FormFactorTruncatedSphere::radialExtension() const overridefinal
+        double FormFactorTruncatedSphere::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -15916,7 +15904,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorTruncatedSphere self, cvector_t q) -> complex_t
 
-        complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const override final
 
         Complex formfactor. 
 
@@ -15976,14 +15964,14 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSpheroid(radius, height, height_flattening, dh)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid
 
-        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal
+        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -15995,7 +15983,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         accept(FormFactorTruncatedSpheroid self, INodeVisitor visitor)
 
-        void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -16007,7 +15995,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         getRadius(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::getRadius() const 
+        double FormFactorTruncatedSpheroid::getRadius() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSpheroid_getRadius(self)
@@ -16017,7 +16005,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         getHeight(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::getHeight() const 
+        double FormFactorTruncatedSpheroid::getHeight() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSpheroid_getHeight(self)
@@ -16027,7 +16015,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         getHeightFlattening(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::getHeightFlattening() const 
+        double FormFactorTruncatedSpheroid::getHeightFlattening() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSpheroid_getHeightFlattening(self)
@@ -16037,7 +16025,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         getRemovedTop(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::getRemovedTop() const 
+        double FormFactorTruncatedSpheroid::getRemovedTop() const
 
         """
         return _libBornAgainCore.FormFactorTruncatedSpheroid_getRemovedTop(self)
@@ -16047,7 +16035,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         radialExtension(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::radialExtension() const overridefinal
+        double FormFactorTruncatedSpheroid::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -16059,7 +16047,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorTruncatedSpheroid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const overridefinal
+        complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const override final
 
         Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
@@ -16103,7 +16091,7 @@ class FormFactorWeighted(IFormFactor):
         this = _libBornAgainCore.new_FormFactorWeighted()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorWeighted
     __del__ = lambda self: None
@@ -16112,7 +16100,7 @@ class FormFactorWeighted(IFormFactor):
         """
         clone(FormFactorWeighted self) -> FormFactorWeighted
 
-        FormFactorWeighted * FormFactorWeighted::clone() const overridefinal
+        FormFactorWeighted * FormFactorWeighted::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -16124,7 +16112,7 @@ class FormFactorWeighted(IFormFactor):
         """
         accept(FormFactorWeighted self, INodeVisitor visitor)
 
-        void FormFactorWeighted::accept(INodeVisitor *visitor) const overridefinal
+        void FormFactorWeighted::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -16136,7 +16124,7 @@ class FormFactorWeighted(IFormFactor):
         """
         radialExtension(FormFactorWeighted self) -> double
 
-        double FormFactorWeighted::radialExtension() const overridefinal
+        double FormFactorWeighted::radialExtension() const override final
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -16148,7 +16136,7 @@ class FormFactorWeighted(IFormFactor):
         """
         bottomZ(FormFactorWeighted self, IRotation rotation) -> double
 
-        double FormFactorWeighted::bottomZ(const IRotation &rotation) const overridefinal
+        double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final
 
         Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 
@@ -16160,7 +16148,7 @@ class FormFactorWeighted(IFormFactor):
         """
         topZ(FormFactorWeighted self, IRotation rotation) -> double
 
-        double FormFactorWeighted::topZ(const IRotation &rotation) const overridefinal
+        double FormFactorWeighted::topZ(const IRotation &rotation) const override final
 
         Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 
@@ -16183,7 +16171,7 @@ class FormFactorWeighted(IFormFactor):
         """
         setAmbientMaterial(FormFactorWeighted self, Material material)
 
-        void FormFactorWeighted::setAmbientMaterial(Material material) overridefinal
+        void FormFactorWeighted::setAmbientMaterial(Material material) override final
 
         Passes the material in which this particle is embedded. 
 
@@ -16195,7 +16183,7 @@ class FormFactorWeighted(IFormFactor):
         """
         evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal
+        complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -16301,7 +16289,7 @@ class Simulation(ICloneable, INode):
         """
         getBeamIntensity(Simulation self) -> double
 
-        double Simulation::getBeamIntensity() const 
+        double Simulation::getBeamIntensity() const
 
         """
         return _libBornAgainCore.Simulation_getBeamIntensity(self)
@@ -16367,7 +16355,7 @@ class Simulation(ICloneable, INode):
         """
         sample(Simulation self) -> MultiLayer
 
-        const MultiLayer * Simulation::sample() const 
+        const MultiLayer * Simulation::sample() const
 
         """
         return _libBornAgainCore.Simulation_sample(self)
@@ -16397,7 +16385,7 @@ class Simulation(ICloneable, INode):
         """
         background(Simulation self) -> IBackground
 
-        const IBackground* Simulation::background() const 
+        const IBackground* Simulation::background() const
 
         """
         return _libBornAgainCore.Simulation_background(self)
@@ -16443,7 +16431,7 @@ class Simulation(ICloneable, INode):
         """
         getDistributionHandler(Simulation self) -> DistributionHandler const &
 
-        const DistributionHandler& Simulation::getDistributionHandler() const 
+        const DistributionHandler& Simulation::getDistributionHandler() const
 
         """
         return _libBornAgainCore.Simulation_getDistributionHandler(self)
@@ -16717,14 +16705,14 @@ class SimulationOptions(_object):
         this = _libBornAgainCore.new_SimulationOptions()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def isIntegrate(self):
         """
         isIntegrate(SimulationOptions self) -> bool
 
-        bool SimulationOptions::isIntegrate() const 
+        bool SimulationOptions::isIntegrate() const
 
         """
         return _libBornAgainCore.SimulationOptions_isIntegrate(self)
@@ -16734,7 +16722,7 @@ class SimulationOptions(_object):
         """
         getMcPoints(SimulationOptions self) -> size_t
 
-        size_t SimulationOptions::getMcPoints() const 
+        size_t SimulationOptions::getMcPoints() const
 
         """
         return _libBornAgainCore.SimulationOptions_getMcPoints(self)
@@ -16779,7 +16767,7 @@ class SimulationOptions(_object):
         """
         getNumberOfThreads(SimulationOptions self) -> unsigned int
 
-        unsigned SimulationOptions::getNumberOfThreads() const 
+        unsigned SimulationOptions::getNumberOfThreads() const
 
         """
         return _libBornAgainCore.SimulationOptions_getNumberOfThreads(self)
@@ -16801,7 +16789,7 @@ class SimulationOptions(_object):
         """
         getNumberOfBatches(SimulationOptions self) -> unsigned int
 
-        unsigned SimulationOptions::getNumberOfBatches() const 
+        unsigned SimulationOptions::getNumberOfBatches() const
 
         """
         return _libBornAgainCore.SimulationOptions_getNumberOfBatches(self)
@@ -16811,7 +16799,7 @@ class SimulationOptions(_object):
         """
         getCurrentBatch(SimulationOptions self) -> unsigned int
 
-        unsigned SimulationOptions::getCurrentBatch() const 
+        unsigned SimulationOptions::getCurrentBatch() const
 
         """
         return _libBornAgainCore.SimulationOptions_getCurrentBatch(self)
@@ -16833,7 +16821,7 @@ class SimulationOptions(_object):
         """
         getHardwareConcurrency(SimulationOptions self) -> unsigned int
 
-        unsigned SimulationOptions::getHardwareConcurrency() const 
+        unsigned SimulationOptions::getHardwareConcurrency() const
 
         """
         return _libBornAgainCore.SimulationOptions_getHardwareConcurrency(self)
@@ -16853,7 +16841,7 @@ class SimulationOptions(_object):
         """
         includeSpecular(SimulationOptions self) -> bool
 
-        bool SimulationOptions::includeSpecular() const 
+        bool SimulationOptions::includeSpecular() const
 
         """
         return _libBornAgainCore.SimulationOptions_includeSpecular(self)
@@ -16873,7 +16861,7 @@ class SimulationOptions(_object):
         """
         useAvgMaterials(SimulationOptions self) -> bool
 
-        bool SimulationOptions::useAvgMaterials() const 
+        bool SimulationOptions::useAvgMaterials() const
 
         """
         return _libBornAgainCore.SimulationOptions_useAvgMaterials(self)
@@ -16915,7 +16903,7 @@ class GISASSimulation(Simulation2D):
         this = _libBornAgainCore.new_GISASSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_GISASSimulation
     __del__ = lambda self: None
@@ -17452,9 +17440,7 @@ class IHistogram(_object):
         """createHistogram(IntensityData source) -> IHistogram"""
         return _libBornAgainCore.IHistogram_createHistogram(source)
 
-    if _newclass:
-        createHistogram = staticmethod(createHistogram)
-    __swig_getmethods__["createHistogram"] = lambda x: createHistogram
+    createHistogram = staticmethod(createHistogram)
 
     def createFrom(*args):
         """
@@ -17463,9 +17449,7 @@ class IHistogram(_object):
         """
         return _libBornAgainCore.IHistogram_createFrom(*args)
 
-    if _newclass:
-        createFrom = staticmethod(createFrom)
-    __swig_getmethods__["createFrom"] = lambda x: createFrom
+    createFrom = staticmethod(createFrom)
 
     def createOutputData(self, *args):
         """
@@ -17595,7 +17579,7 @@ class Histogram1D(IHistogram):
         this = _libBornAgainCore.new_Histogram1D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -17702,9 +17686,7 @@ class Histogram1D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram1D"""
         return _libBornAgainCore.Histogram1D_dynamicCast(pHistogram)
 
-    if _newclass:
-        dynamicCast = staticmethod(dynamicCast)
-    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
+    dynamicCast = staticmethod(dynamicCast)
     __swig_destroy__ = _libBornAgainCore.delete_Histogram1D
     __del__ = lambda self: None
 Histogram1D_swigregister = _libBornAgainCore.Histogram1D_swigregister
@@ -17750,7 +17732,7 @@ class Histogram2D(IHistogram):
         this = _libBornAgainCore.new_Histogram2D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -17876,9 +17858,7 @@ class Histogram2D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram2D"""
         return _libBornAgainCore.Histogram2D_dynamicCast(pHistogram)
 
-    if _newclass:
-        dynamicCast = staticmethod(dynamicCast)
-    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
+    dynamicCast = staticmethod(dynamicCast)
     __swig_destroy__ = _libBornAgainCore.delete_Histogram2D
     __del__ = lambda self: None
 Histogram2D_swigregister = _libBornAgainCore.Histogram2D_swigregister
@@ -17965,7 +17945,7 @@ class ConstantBackground(IBackground):
         this = _libBornAgainCore.new_ConstantBackground(background_value)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ConstantBackground
     __del__ = lambda self: None
@@ -17974,7 +17954,7 @@ class ConstantBackground(IBackground):
         """
         clone(ConstantBackground self) -> ConstantBackground
 
-        ConstantBackground * ConstantBackground::clone() const overridefinal
+        ConstantBackground * ConstantBackground::clone() const override final
 
         """
         return _libBornAgainCore.ConstantBackground_clone(self)
@@ -17984,7 +17964,7 @@ class ConstantBackground(IBackground):
         """
         backgroundValue(ConstantBackground self) -> double
 
-        double ConstantBackground::backgroundValue() const 
+        double ConstantBackground::backgroundValue() const
 
         """
         return _libBornAgainCore.ConstantBackground_backgroundValue(self)
@@ -18006,7 +17986,7 @@ class ConstantBackground(IBackground):
         """
         addBackGround(ConstantBackground self, double intensity) -> double
 
-        double ConstantBackground::addBackGround(double intensity) const overridefinal
+        double ConstantBackground::addBackGround(double intensity) const override final
 
         """
         return _libBornAgainCore.ConstantBackground_addBackGround(self, intensity)
@@ -18085,7 +18065,7 @@ class IDetector(ICloneable, INode):
         """
         getAxis(IDetector self, size_t index) -> IAxis
 
-        const IAxis & IDetector::getAxis(size_t index) const 
+        const IAxis & IDetector::getAxis(size_t index) const
 
         """
         return _libBornAgainCore.IDetector_getAxis(self, index)
@@ -18624,7 +18604,7 @@ class IInterferenceFunction(ISample):
         this = _libBornAgainCore.new_IInterferenceFunction(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -18823,7 +18803,7 @@ class IAbstractParticle(ISample):
         """
         abundance(IAbstractParticle self) -> double
 
-        double IAbstractParticle::abundance() const 
+        double IAbstractParticle::abundance() const
 
         """
         return _libBornAgainCore.IAbstractParticle_abundance(self)
@@ -18923,7 +18903,7 @@ class IParameterReal(INamed):
         """
         getData(IParameterReal self) -> double &
 
-        T& IParameter< T >::getData() const 
+        T& IParameter< T >::getData() const
 
         """
         return _libBornAgainCore.IParameterReal_getData(self)
@@ -18977,7 +18957,7 @@ class ParticleLimits(_object):
         this = _libBornAgainCore.new_ParticleLimits()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLimits
     __del__ = lambda self: None
@@ -19098,7 +19078,7 @@ class IParticle(IAbstractParticle):
         """
         translate(IParticle self, kvector_t translation)
 
-        void IParticle::translate(kvector_t translation) overridefinal
+        void IParticle::translate(kvector_t translation) override final
 
         Translates the particle. 
 
@@ -19134,7 +19114,7 @@ class IParticle(IAbstractParticle):
         """
         rotate(IParticle self, IRotation rotation)
 
-        void IParticle::rotate(const IRotation &rotation) overridefinal
+        void IParticle::rotate(const IRotation &rotation) override final
 
         Rotates the particle. 
 
@@ -19278,17 +19258,13 @@ class IRotation(ISample):
         """createRotation(Transform3D const & transform) -> IRotation"""
         return _libBornAgainCore.IRotation_createRotation(transform)
 
-    if _newclass:
-        createRotation = staticmethod(createRotation)
-    __swig_getmethods__["createRotation"] = lambda x: createRotation
+    createRotation = staticmethod(createRotation)
 
     def createIdentity():
         """createIdentity() -> IRotation"""
         return _libBornAgainCore.IRotation_createIdentity()
 
-    if _newclass:
-        createIdentity = staticmethod(createIdentity)
-    __swig_getmethods__["createIdentity"] = lambda x: createIdentity
+    createIdentity = staticmethod(createIdentity)
     __swig_destroy__ = _libBornAgainCore.delete_IRotation
     __del__ = lambda self: None
 
@@ -19405,7 +19381,7 @@ class IdentityRotation(IRotation):
         this = _libBornAgainCore.new_IdentityRotation()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19503,7 +19479,7 @@ class RotationX(IRotation):
         this = _libBornAgainCore.new_RotationX(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19546,7 +19522,7 @@ class RotationX(IRotation):
         """
         getAngle(RotationX self) -> double
 
-        double RotationX::getAngle() const 
+        double RotationX::getAngle() const
 
         """
         return _libBornAgainCore.RotationX_getAngle(self)
@@ -19599,7 +19575,7 @@ class RotationY(IRotation):
         this = _libBornAgainCore.new_RotationY(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19642,7 +19618,7 @@ class RotationY(IRotation):
         """
         getAngle(RotationY self) -> double
 
-        double RotationY::getAngle() const 
+        double RotationY::getAngle() const
 
         """
         return _libBornAgainCore.RotationY_getAngle(self)
@@ -19696,7 +19672,7 @@ class RotationZ(IRotation):
         this = _libBornAgainCore.new_RotationZ(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19739,7 +19715,7 @@ class RotationZ(IRotation):
         """
         getAngle(RotationZ self) -> double
 
-        double RotationZ::getAngle() const 
+        double RotationZ::getAngle() const
 
         """
         return _libBornAgainCore.RotationZ_getAngle(self)
@@ -19798,7 +19774,7 @@ class RotationEuler(IRotation):
         this = _libBornAgainCore.new_RotationEuler(alpha, beta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19841,7 +19817,7 @@ class RotationEuler(IRotation):
         """
         getAlpha(RotationEuler self) -> double
 
-        double RotationEuler::getAlpha() const 
+        double RotationEuler::getAlpha() const
 
         """
         return _libBornAgainCore.RotationEuler_getAlpha(self)
@@ -19851,7 +19827,7 @@ class RotationEuler(IRotation):
         """
         getBeta(RotationEuler self) -> double
 
-        double RotationEuler::getBeta() const 
+        double RotationEuler::getBeta() const
 
         """
         return _libBornAgainCore.RotationEuler_getBeta(self)
@@ -19861,7 +19837,7 @@ class RotationEuler(IRotation):
         """
         getGamma(RotationEuler self) -> double
 
-        double RotationEuler::getGamma() const 
+        double RotationEuler::getGamma() const
 
         """
         return _libBornAgainCore.RotationEuler_getGamma(self)
@@ -19956,7 +19932,7 @@ class SimpleSelectionRule(ISelectionRule):
         this = _libBornAgainCore.new_SimpleSelectionRule(a, b, c, modulus)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimpleSelectionRule
     __del__ = lambda self: None
@@ -19965,7 +19941,7 @@ class SimpleSelectionRule(ISelectionRule):
         """
         clone(SimpleSelectionRule self) -> SimpleSelectionRule
 
-        SimpleSelectionRule * SimpleSelectionRule::clone() const 
+        SimpleSelectionRule * SimpleSelectionRule::clone() const
 
         """
         return _libBornAgainCore.SimpleSelectionRule_clone(self)
@@ -19975,7 +19951,7 @@ class SimpleSelectionRule(ISelectionRule):
         """
         coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool
 
-        bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const 
+        bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const
 
         """
         return _libBornAgainCore.SimpleSelectionRule_coordinateSelected(self, coordinate)
@@ -20014,7 +19990,7 @@ class Instrument(INode):
         this = _libBornAgainCore.new_Instrument(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Instrument
     __del__ = lambda self: None
@@ -20036,7 +20012,7 @@ class Instrument(INode):
         getBeam(Instrument self) -> Beam
         getBeam(Instrument self) -> Beam
 
-        const Beam& Instrument::getBeam() const 
+        const Beam& Instrument::getBeam() const
 
         """
         return _libBornAgainCore.Instrument_getBeam(self, *args)
@@ -20115,7 +20091,7 @@ class Instrument(INode):
         """
         getDetectorMask(Instrument self) -> DetectorMask
 
-        const DetectorMask * Instrument::getDetectorMask() const 
+        const DetectorMask * Instrument::getDetectorMask() const
 
         """
         return _libBornAgainCore.Instrument_getDetectorMask(self)
@@ -20322,6 +20298,50 @@ def coordinateFromBinf(*args):
 
     """
     return _libBornAgainCore.coordinateFromBinf(*args)
+
+def create2DArrayfromOutputData(data):
+    """
+    create2DArrayfromOutputData(IntensityData data) -> vdouble2d_t
+
+    std::vector< std::vector< double > > IntensityDataFunctions::create2DArrayfromOutputData(const OutputData< double > &data)
+
+    Creates a vector of vectors of double (2D Array) from  OutputData. 
+
+    """
+    return _libBornAgainCore.create2DArrayfromOutputData(data)
+
+def FT2DArray(signal):
+    """
+    FT2DArray(vdouble2d_t signal) -> vdouble2d_t
+
+    std::vector< std::vector< double > > IntensityDataFunctions::FT2DArray(const std::vector< std::vector< double >> &signal)
+
+    Creates a Fourier Transform of a 2D Array (vector of vectors). 
+
+    """
+    return _libBornAgainCore.FT2DArray(signal)
+
+def createOutputDatafrom2DArray(array_2d):
+    """
+    createOutputDatafrom2DArray(vdouble2d_t array_2d) -> IntensityData
+
+    OutputData< double > * IntensityDataFunctions::createOutputDatafrom2DArray(const std::vector< std::vector< double >> &array_2d)
+
+    Creates  OutputData from a 2D Array. 
+
+    """
+    return _libBornAgainCore.createOutputDatafrom2DArray(array_2d)
+
+def getFourierTransform(data):
+    """
+    getFourierTransform(IntensityData data) -> IntensityData
+
+    OutputData< double > * IntensityDataFunctions::getFourierTransform(const OutputData< double > &data)
+
+    Creates Fourier Transform ( OutputData format) of intensity map ( OutputData format). 
+
+    """
+    return _libBornAgainCore.getFourierTransform(data)
 class IntensityDataIOFactory(_object):
     """
 
@@ -20342,33 +20362,25 @@ class IntensityDataIOFactory(_object):
         """readOutputData(std::string const & file_name) -> IntensityData"""
         return _libBornAgainCore.IntensityDataIOFactory_readOutputData(file_name)
 
-    if _newclass:
-        readOutputData = staticmethod(readOutputData)
-    __swig_getmethods__["readOutputData"] = lambda x: readOutputData
+    readOutputData = staticmethod(readOutputData)
 
     def readIntensityData(file_name):
         """readIntensityData(std::string const & file_name) -> IHistogram"""
         return _libBornAgainCore.IntensityDataIOFactory_readIntensityData(file_name)
 
-    if _newclass:
-        readIntensityData = staticmethod(readIntensityData)
-    __swig_getmethods__["readIntensityData"] = lambda x: readIntensityData
+    readIntensityData = staticmethod(readIntensityData)
 
     def writeOutputData(data, file_name):
         """writeOutputData(IntensityData data, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeOutputData(data, file_name)
 
-    if _newclass:
-        writeOutputData = staticmethod(writeOutputData)
-    __swig_getmethods__["writeOutputData"] = lambda x: writeOutputData
+    writeOutputData = staticmethod(writeOutputData)
 
     def writeIntensityData(histogram, file_name):
         """writeIntensityData(IHistogram histogram, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeIntensityData(histogram, file_name)
 
-    if _newclass:
-        writeIntensityData = staticmethod(writeIntensityData)
-    __swig_getmethods__["writeIntensityData"] = lambda x: writeIntensityData
+    writeIntensityData = staticmethod(writeIntensityData)
 
     def __init__(self):
         """
@@ -20384,7 +20396,7 @@ class IntensityDataIOFactory(_object):
         this = _libBornAgainCore.new_IntensityDataIOFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityDataIOFactory
     __del__ = lambda self: None
@@ -20448,7 +20460,7 @@ class InterferenceFunction1DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction1DLattice(length, xi)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction1DLattice
     __del__ = lambda self: None
@@ -20499,7 +20511,7 @@ class InterferenceFunction1DLattice(IInterferenceFunction):
         """
         getLatticeParameters(InterferenceFunction1DLattice self) -> Lattice1DParameters
 
-        Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const 
+        Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const
 
         """
         return _libBornAgainCore.InterferenceFunction1DLattice_getLatticeParameters(self)
@@ -20573,7 +20585,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionRadialParaCrystal(peak_distance, damping_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -20652,7 +20664,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         """
         domainSize(InterferenceFunctionRadialParaCrystal self) -> double
 
-        double InterferenceFunctionRadialParaCrystal::domainSize() const 
+        double InterferenceFunctionRadialParaCrystal::domainSize() const
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_domainSize(self)
@@ -20674,7 +20686,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         """
         FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t
 
-        complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const 
+        complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_FTPDF(self, qpar)
@@ -20702,7 +20714,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         """
         peakDistance(InterferenceFunctionRadialParaCrystal self) -> double
 
-        double InterferenceFunctionRadialParaCrystal::peakDistance() const 
+        double InterferenceFunctionRadialParaCrystal::peakDistance() const
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_peakDistance(self)
@@ -20712,7 +20724,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         """
         dampingLength(InterferenceFunctionRadialParaCrystal self) -> double
 
-        double InterferenceFunctionRadialParaCrystal::dampingLength() const 
+        double InterferenceFunctionRadialParaCrystal::dampingLength() const
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_dampingLength(self)
@@ -20783,7 +20795,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DLattice(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DLattice
     __del__ = lambda self: None
@@ -20819,9 +20831,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createSquare(lattice_length, xi)
 
-    if _newclass:
-        createSquare = staticmethod(createSquare)
-    __swig_getmethods__["createSquare"] = lambda x: createSquare
+    createSquare = staticmethod(createSquare)
 
     def createHexagonal(lattice_length, xi=0.0):
         """
@@ -20830,9 +20840,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createHexagonal(lattice_length, xi)
 
-    if _newclass:
-        createHexagonal = staticmethod(createHexagonal)
-    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
+    createHexagonal = staticmethod(createHexagonal)
 
     def setDecayFunction(self, decay):
         """
@@ -20878,7 +20886,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         integrationOverXi(InterferenceFunction2DLattice self) -> bool
 
-        bool InterferenceFunction2DLattice::integrationOverXi() const 
+        bool InterferenceFunction2DLattice::integrationOverXi() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_integrationOverXi(self)
@@ -20888,7 +20896,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         lattice(InterferenceFunction2DLattice self) -> Lattice2D
 
-        const Lattice2D & InterferenceFunction2DLattice::lattice() const 
+        const Lattice2D & InterferenceFunction2DLattice::lattice() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_lattice(self)
@@ -20922,7 +20930,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         onChange(InterferenceFunction2DLattice self)
 
-        void InterferenceFunction2DLattice::onChange() overridefinal
+        void InterferenceFunction2DLattice::onChange() override final
 
         Action to be taken in inherited class when a parameter has changed. 
 
@@ -21002,7 +21010,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DParaCrystal(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DParaCrystal
     __del__ = lambda self: None
@@ -21040,9 +21048,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createSquare(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    if _newclass:
-        createSquare = staticmethod(createSquare)
-    __swig_getmethods__["createSquare"] = lambda x: createSquare
+    createSquare = staticmethod(createSquare)
 
     def createHexagonal(lattice_length, damping_length=0.0, domain_size_1=0.0, domain_size_2=0.0):
         """
@@ -21053,9 +21059,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    if _newclass:
-        createHexagonal = staticmethod(createHexagonal)
-    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
+    createHexagonal = staticmethod(createHexagonal)
 
     def setDomainSizes(self, size_1, size_2):
         """
@@ -21133,7 +21137,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t
 
-        std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const 
+        std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_domainSizes(self)
@@ -21161,7 +21165,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool
 
-        bool InterferenceFunction2DParaCrystal::integrationOverXi() const 
+        bool InterferenceFunction2DParaCrystal::integrationOverXi() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_integrationOverXi(self)
@@ -21171,7 +21175,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         dampingLength(InterferenceFunction2DParaCrystal self) -> double
 
-        double InterferenceFunction2DParaCrystal::dampingLength() const 
+        double InterferenceFunction2DParaCrystal::dampingLength() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_dampingLength(self)
@@ -21181,7 +21185,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D
 
-        const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const 
+        const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const
 
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_lattice(self)
@@ -21261,7 +21265,7 @@ class InterferenceFunctionNone(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionNone()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21409,7 +21413,7 @@ class SphericalDetector(IDetector2D):
         this = _libBornAgainCore.new_SphericalDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21485,7 +21489,7 @@ class SphericalPixel(IPixel):
         this = _libBornAgainCore.new_SphericalPixel(alpha_bin, phi_bin)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SphericalPixel
     __del__ = lambda self: None
@@ -21574,7 +21578,7 @@ class IsGISAXSDetector(SphericalDetector):
         this = _libBornAgainCore.new_IsGISAXSDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21634,7 +21638,7 @@ class Lattice(INode):
         this = _libBornAgainCore.new_Lattice(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Lattice
     __del__ = lambda self: None
@@ -21787,17 +21791,13 @@ class Lattice(INode):
         """createFCCLattice(double a) -> Lattice"""
         return _libBornAgainCore.Lattice_createFCCLattice(a)
 
-    if _newclass:
-        createFCCLattice = staticmethod(createFCCLattice)
-    __swig_getmethods__["createFCCLattice"] = lambda x: createFCCLattice
+    createFCCLattice = staticmethod(createFCCLattice)
 
     def createTrigonalLattice(a, c):
         """createTrigonalLattice(double a, double c) -> Lattice"""
         return _libBornAgainCore.Lattice_createTrigonalLattice(a, c)
 
-    if _newclass:
-        createTrigonalLattice = staticmethod(createTrigonalLattice)
-    __swig_getmethods__["createTrigonalLattice"] = lambda x: createTrigonalLattice
+    createTrigonalLattice = staticmethod(createTrigonalLattice)
 
     def onChange(self):
         """
@@ -21857,7 +21857,7 @@ class Lattice1DParameters(_object):
         this = _libBornAgainCore.new_Lattice1DParameters(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_set
     __swig_getmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_get
@@ -21942,7 +21942,7 @@ class Lattice2D(ICloneable, INode):
         """
         rotationAngle(Lattice2D self) -> double
 
-        double Lattice2D::rotationAngle() const 
+        double Lattice2D::rotationAngle() const
 
         """
         return _libBornAgainCore.Lattice2D_rotationAngle(self)
@@ -21952,7 +21952,7 @@ class Lattice2D(ICloneable, INode):
         """
         reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases
 
-        Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const 
+        Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const
 
         """
         return _libBornAgainCore.Lattice2D_reciprocalBases(self)
@@ -21996,14 +21996,14 @@ class BasicLattice(Lattice2D):
         this = _libBornAgainCore.new_BasicLattice(length1, length2, angle, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(BasicLattice self) -> BasicLattice
 
-        BasicLattice * BasicLattice::clone() const 
+        BasicLattice * BasicLattice::clone() const
 
         """
         return _libBornAgainCore.BasicLattice_clone(self)
@@ -22025,7 +22025,7 @@ class BasicLattice(Lattice2D):
         """
         length1(BasicLattice self) -> double
 
-        virtual double BasicLattice::length1() const 
+        virtual double BasicLattice::length1() const
 
         """
         return _libBornAgainCore.BasicLattice_length1(self)
@@ -22035,7 +22035,7 @@ class BasicLattice(Lattice2D):
         """
         length2(BasicLattice self) -> double
 
-        virtual double BasicLattice::length2() const 
+        virtual double BasicLattice::length2() const
 
         """
         return _libBornAgainCore.BasicLattice_length2(self)
@@ -22045,7 +22045,7 @@ class BasicLattice(Lattice2D):
         """
         latticeAngle(BasicLattice self) -> double
 
-        virtual double BasicLattice::latticeAngle() const 
+        virtual double BasicLattice::latticeAngle() const
 
         """
         return _libBornAgainCore.BasicLattice_latticeAngle(self)
@@ -22055,7 +22055,7 @@ class BasicLattice(Lattice2D):
         """
         unitCellArea(BasicLattice self) -> double
 
-        double BasicLattice::unitCellArea() const 
+        double BasicLattice::unitCellArea() const
 
         """
         return _libBornAgainCore.BasicLattice_unitCellArea(self)
@@ -22089,14 +22089,14 @@ class SquareLattice(Lattice2D):
         this = _libBornAgainCore.new_SquareLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(SquareLattice self) -> SquareLattice
 
-        SquareLattice * SquareLattice::clone() const 
+        SquareLattice * SquareLattice::clone() const
 
         """
         return _libBornAgainCore.SquareLattice_clone(self)
@@ -22118,7 +22118,7 @@ class SquareLattice(Lattice2D):
         """
         length1(SquareLattice self) -> double
 
-        virtual double SquareLattice::length1() const 
+        virtual double SquareLattice::length1() const
 
         """
         return _libBornAgainCore.SquareLattice_length1(self)
@@ -22128,7 +22128,7 @@ class SquareLattice(Lattice2D):
         """
         length2(SquareLattice self) -> double
 
-        virtual double SquareLattice::length2() const 
+        virtual double SquareLattice::length2() const
 
         """
         return _libBornAgainCore.SquareLattice_length2(self)
@@ -22138,7 +22138,7 @@ class SquareLattice(Lattice2D):
         """
         latticeAngle(SquareLattice self) -> double
 
-        double SquareLattice::latticeAngle() const 
+        double SquareLattice::latticeAngle() const
 
         """
         return _libBornAgainCore.SquareLattice_latticeAngle(self)
@@ -22148,7 +22148,7 @@ class SquareLattice(Lattice2D):
         """
         unitCellArea(SquareLattice self) -> double
 
-        double SquareLattice::unitCellArea() const 
+        double SquareLattice::unitCellArea() const
 
         """
         return _libBornAgainCore.SquareLattice_unitCellArea(self)
@@ -22182,14 +22182,14 @@ class HexagonalLattice(Lattice2D):
         this = _libBornAgainCore.new_HexagonalLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(HexagonalLattice self) -> HexagonalLattice
 
-        HexagonalLattice * HexagonalLattice::clone() const 
+        HexagonalLattice * HexagonalLattice::clone() const
 
         """
         return _libBornAgainCore.HexagonalLattice_clone(self)
@@ -22211,7 +22211,7 @@ class HexagonalLattice(Lattice2D):
         """
         length1(HexagonalLattice self) -> double
 
-        virtual double HexagonalLattice::length1() const 
+        virtual double HexagonalLattice::length1() const
 
         """
         return _libBornAgainCore.HexagonalLattice_length1(self)
@@ -22221,7 +22221,7 @@ class HexagonalLattice(Lattice2D):
         """
         length2(HexagonalLattice self) -> double
 
-        virtual double HexagonalLattice::length2() const 
+        virtual double HexagonalLattice::length2() const
 
         """
         return _libBornAgainCore.HexagonalLattice_length2(self)
@@ -22231,7 +22231,7 @@ class HexagonalLattice(Lattice2D):
         """
         latticeAngle(HexagonalLattice self) -> double
 
-        double HexagonalLattice::latticeAngle() const 
+        double HexagonalLattice::latticeAngle() const
 
         """
         return _libBornAgainCore.HexagonalLattice_latticeAngle(self)
@@ -22241,7 +22241,7 @@ class HexagonalLattice(Lattice2D):
         """
         unitCellArea(HexagonalLattice self) -> double
 
-        double HexagonalLattice::unitCellArea() const 
+        double HexagonalLattice::unitCellArea() const
 
         """
         return _libBornAgainCore.HexagonalLattice_unitCellArea(self)
@@ -22297,7 +22297,7 @@ class Layer(ISample):
         this = _libBornAgainCore.new_Layer(material, thickness)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Layer
     __del__ = lambda self: None
@@ -22306,7 +22306,7 @@ class Layer(ISample):
         """
         clone(Layer self) -> Layer
 
-        Layer * Layer::clone() const overridefinal
+        Layer * Layer::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -22318,7 +22318,7 @@ class Layer(ISample):
         """
         cloneInvertB(Layer self) -> Layer
 
-        Layer * Layer::cloneInvertB() const 
+        Layer * Layer::cloneInvertB() const
 
         """
         return _libBornAgainCore.Layer_cloneInvertB(self)
@@ -22328,7 +22328,7 @@ class Layer(ISample):
         """
         accept(Layer self, INodeVisitor visitor)
 
-        void Layer::accept(INodeVisitor *visitor) const overridefinal
+        void Layer::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -22352,7 +22352,7 @@ class Layer(ISample):
         """
         thickness(Layer self) -> double
 
-        double Layer::thickness() const 
+        double Layer::thickness() const
 
         """
         return _libBornAgainCore.Layer_thickness(self)
@@ -22362,7 +22362,7 @@ class Layer(ISample):
         """
         material(Layer self) -> Material
 
-        const Material* Layer::material() const overridefinal
+        const Material* Layer::material() const override final
 
         Returns nullptr, unless overwritten to return a specific material. 
 
@@ -22394,7 +22394,7 @@ class Layer(ISample):
         """
         numberOfLayouts(Layer self) -> size_t
 
-        size_t Layer::numberOfLayouts() const 
+        size_t Layer::numberOfLayouts() const
 
         """
         return _libBornAgainCore.Layer_numberOfLayouts(self)
@@ -22404,7 +22404,7 @@ class Layer(ISample):
         """
         layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >
 
-        std::vector< const ILayout * > Layer::layouts() const 
+        std::vector< const ILayout * > Layer::layouts() const
 
         """
         return _libBornAgainCore.Layer_layouts(self)
@@ -22414,7 +22414,7 @@ class Layer(ISample):
         """
         getChildren(Layer self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > Layer::getChildren() const overridefinal
+        std::vector< const INode * > Layer::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -22447,7 +22447,7 @@ class Layer(ISample):
         """
         numberOfSlices(Layer self) -> unsigned int
 
-        unsigned int Layer::numberOfSlices() const 
+        unsigned int Layer::numberOfSlices() const
 
         """
         return _libBornAgainCore.Layer_numberOfSlices(self)
@@ -22457,7 +22457,7 @@ class Layer(ISample):
         """
         slice(Layer self, ZLimits limits, Layer::ELayerType layer_type) -> SafePointerVector< Layer >
 
-        SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const 
+        SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const
 
         """
         return _libBornAgainCore.Layer_slice(self, limits, layer_type)
@@ -22537,7 +22537,7 @@ class LayerRoughness(ISample):
         this = _libBornAgainCore.new_LayerRoughness(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -22698,14 +22698,14 @@ class Line(IShape2D):
         this = _libBornAgainCore.new_Line(x1, y1, x2, y2)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(Line self) -> Line
 
-        Line* Line::clone() const 
+        Line* Line::clone() const
 
         """
         return _libBornAgainCore.Line_clone(self)
@@ -22764,14 +22764,14 @@ class VerticalLine(IShape2D):
         this = _libBornAgainCore.new_VerticalLine(x)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(VerticalLine self) -> VerticalLine
 
-        VerticalLine* VerticalLine::clone() const 
+        VerticalLine* VerticalLine::clone() const
 
         """
         return _libBornAgainCore.VerticalLine_clone(self)
@@ -22794,7 +22794,7 @@ class VerticalLine(IShape2D):
         """
         getXpos(VerticalLine self) -> double
 
-        double VerticalLine::getXpos() const 
+        double VerticalLine::getXpos() const
 
         """
         return _libBornAgainCore.VerticalLine_getXpos(self)
@@ -22840,14 +22840,14 @@ class HorizontalLine(IShape2D):
         this = _libBornAgainCore.new_HorizontalLine(y)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(HorizontalLine self) -> HorizontalLine
 
-        HorizontalLine* HorizontalLine::clone() const 
+        HorizontalLine* HorizontalLine::clone() const
 
         """
         return _libBornAgainCore.HorizontalLine_clone(self)
@@ -22870,7 +22870,7 @@ class HorizontalLine(IShape2D):
         """
         getYpos(HorizontalLine self) -> double
 
-        double HorizontalLine::getYpos() const 
+        double HorizontalLine::getYpos() const
 
         """
         return _libBornAgainCore.HorizontalLine_getYpos(self)
@@ -22909,7 +22909,7 @@ class Material(_object):
         this = _libBornAgainCore.new_Material(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def inverted(self):
@@ -22964,7 +22964,7 @@ class Material(_object):
         """
         isMagneticMaterial(Material self) -> bool
 
-        bool Material::isMagneticMaterial() const 
+        bool Material::isMagneticMaterial() const
 
         """
         return _libBornAgainCore.Material_isMagneticMaterial(self)
@@ -23046,7 +23046,7 @@ class Material(_object):
         """
         transformedMaterial(Material self, Transform3D const & transform) -> Material
 
-        Material Material::transformedMaterial(const Transform3D &transform) const 
+        Material Material::transformedMaterial(const Transform3D &transform) const
 
         """
         return _libBornAgainCore.Material_transformedMaterial(self, transform)
@@ -23167,7 +23167,7 @@ class MesoCrystal(IParticle):
         this = _libBornAgainCore.new_MesoCrystal(particle_structure, form_factor)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MesoCrystal
     __del__ = lambda self: None
@@ -23176,7 +23176,7 @@ class MesoCrystal(IParticle):
         """
         clone(MesoCrystal self) -> MesoCrystal
 
-        MesoCrystal * MesoCrystal::clone() const overridefinal
+        MesoCrystal * MesoCrystal::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -23188,7 +23188,7 @@ class MesoCrystal(IParticle):
         """
         accept(MesoCrystal self, INodeVisitor visitor)
 
-        void MesoCrystal::accept(INodeVisitor *visitor) const overridefinal
+        void MesoCrystal::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -23200,7 +23200,7 @@ class MesoCrystal(IParticle):
         """
         createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle
 
-        SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const overridefinal
+        SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final
 
         Create a sliced form factor for this particle. 
 
@@ -23212,7 +23212,7 @@ class MesoCrystal(IParticle):
         """
         getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > MesoCrystal::getChildren() const overridefinal
+        std::vector< const INode * > MesoCrystal::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -23254,7 +23254,7 @@ class MultiLayer(ISample):
         this = _libBornAgainCore.new_MultiLayer()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MultiLayer
     __del__ = lambda self: None
@@ -23263,7 +23263,7 @@ class MultiLayer(ISample):
         """
         accept(MultiLayer self, INodeVisitor visitor)
 
-        void MultiLayer::accept(INodeVisitor *visitor) const finaloverride
+        void MultiLayer::accept(INodeVisitor *visitor) const final override
 
         Calls the  INodeVisitor's visit method. 
 
@@ -23275,7 +23275,7 @@ class MultiLayer(ISample):
         """
         numberOfLayers(MultiLayer self) -> size_t
 
-        size_t MultiLayer::numberOfLayers() const 
+        size_t MultiLayer::numberOfLayers() const
 
         """
         return _libBornAgainCore.MultiLayer_numberOfLayers(self)
@@ -23285,7 +23285,7 @@ class MultiLayer(ISample):
         """
         numberOfInterfaces(MultiLayer self) -> size_t
 
-        size_t MultiLayer::numberOfInterfaces() const 
+        size_t MultiLayer::numberOfInterfaces() const
 
         """
         return _libBornAgainCore.MultiLayer_numberOfInterfaces(self)
@@ -23433,7 +23433,7 @@ class MultiLayer(ISample):
         """
         clone(MultiLayer self) -> MultiLayer
 
-        MultiLayer * MultiLayer::clone() const finaloverride
+        MultiLayer * MultiLayer::clone() const final override
 
         Returns a clone of multilayer with clones of all layers and recreated interfaces between layers 
 
@@ -23567,7 +23567,7 @@ class MultiLayer(ISample):
         """
         containsMagneticMaterial(MultiLayer self) -> bool
 
-        bool MultiLayer::containsMagneticMaterial() const 
+        bool MultiLayer::containsMagneticMaterial() const
 
         """
         return _libBornAgainCore.MultiLayer_containsMagneticMaterial(self)
@@ -23601,7 +23601,7 @@ class MultiLayer(ISample):
         """
         hasRoughness(MultiLayer self) -> bool
 
-        bool MultiLayer::hasRoughness() const 
+        bool MultiLayer::hasRoughness() const
 
         """
         return _libBornAgainCore.MultiLayer_hasRoughness(self)
@@ -23611,7 +23611,7 @@ class MultiLayer(ISample):
         """
         totalNofLayouts(MultiLayer self) -> size_t
 
-        size_t MultiLayer::totalNofLayouts() const 
+        size_t MultiLayer::totalNofLayouts() const
 
         """
         return _libBornAgainCore.MultiLayer_totalNofLayouts(self)
@@ -23621,7 +23621,7 @@ class MultiLayer(ISample):
         """
         getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > MultiLayer::getChildren() const finaloverride
+        std::vector< const INode * > MultiLayer::getChildren() const final override
 
         Returns a vector of children (const). 
 
@@ -23663,7 +23663,7 @@ class OffSpecSimulation(Simulation2D):
         this = _libBornAgainCore.new_OffSpecSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_OffSpecSimulation
     __del__ = lambda self: None
@@ -23766,7 +23766,7 @@ class IntensityData(_object):
         this = _libBornAgainCore.new_IntensityData()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityData
     __del__ = lambda self: None
@@ -23775,7 +23775,7 @@ class IntensityData(_object):
         """
         clone(IntensityData self) -> IntensityData
 
-        OutputData< T > * OutputData< T >::clone() const 
+        OutputData< T > * OutputData< T >::clone() const
 
         """
         return _libBornAgainCore.IntensityData_clone(self)
@@ -23795,7 +23795,7 @@ class IntensityData(_object):
         """
         meanValues(IntensityData self) -> IntensityData
 
-        OutputData< double > * OutputData< T >::meanValues() const 
+        OutputData< double > * OutputData< T >::meanValues() const
 
         """
         return _libBornAgainCore.IntensityData_meanValues(self)
@@ -24145,9 +24145,10 @@ class IntensityData(_object):
         return _libBornAgainCore.IntensityData___isub__(self, right)
 
 
-    def __idiv__(self, right):
-        """__idiv__(IntensityData self, IntensityData right) -> IntensityData"""
-        return _libBornAgainCore.IntensityData___idiv__(self, right)
+    def __itruediv__(self, *args):
+        return _libBornAgainCore.IntensityData___itruediv__(self, *args)
+    __idiv__ = __itruediv__
+
 
 
     def __imul__(self, right):
@@ -24237,7 +24238,7 @@ class ParameterDistribution(IParameterized):
         this = _libBornAgainCore.new_ParameterDistribution(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterDistribution
     __del__ = lambda self: None
@@ -24327,7 +24328,7 @@ class ParameterDistribution(IParameterized):
         """
         getLimits(ParameterDistribution self) -> RealLimits
 
-        RealLimits ParameterDistribution::getLimits() const 
+        RealLimits ParameterDistribution::getLimits() const
 
         """
         return _libBornAgainCore.ParameterDistribution_getLimits(self)
@@ -24337,7 +24338,7 @@ class ParameterDistribution(IParameterized):
         """
         getMinValue(ParameterDistribution self) -> double
 
-        double ParameterDistribution::getMinValue() const 
+        double ParameterDistribution::getMinValue() const
 
         """
         return _libBornAgainCore.ParameterDistribution_getMinValue(self)
@@ -24347,7 +24348,7 @@ class ParameterDistribution(IParameterized):
         """
         getMaxValue(ParameterDistribution self) -> double
 
-        double ParameterDistribution::getMaxValue() const 
+        double ParameterDistribution::getMaxValue() const
 
         """
         return _libBornAgainCore.ParameterDistribution_getMaxValue(self)
@@ -24387,7 +24388,7 @@ class ParameterPool(ICloneable):
         this = _libBornAgainCore.new_ParameterPool()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterPool
     __del__ = lambda self: None
@@ -24543,7 +24544,7 @@ class ParameterPool(ICloneable):
         """
         parameterNames(ParameterPool self) -> vector_string_t
 
-        std::vector< std::string > ParameterPool::parameterNames() const 
+        std::vector< std::string > ParameterPool::parameterNames() const
 
         """
         return _libBornAgainCore.ParameterPool_parameterNames(self)
@@ -24600,7 +24601,7 @@ class ParameterSample(_object):
         this = _libBornAgainCore.new_ParameterSample(_value, _weight)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["value"] = _libBornAgainCore.ParameterSample_value_set
     __swig_getmethods__["value"] = _libBornAgainCore.ParameterSample_value_get
@@ -24774,7 +24775,7 @@ class ParameterSampleVector(_object):
         this = _libBornAgainCore.new_ParameterSampleVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -24860,14 +24861,14 @@ class Particle(IParticle):
         this = _libBornAgainCore.new_Particle(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(Particle self) -> Particle
 
-        Particle * Particle::clone() const overridefinal
+        Particle * Particle::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -24879,7 +24880,7 @@ class Particle(IParticle):
         """
         accept(Particle self, INodeVisitor visitor)
 
-        void Particle::accept(INodeVisitor *visitor) const overridefinal
+        void Particle::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -24891,7 +24892,7 @@ class Particle(IParticle):
         """
         createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle
 
-        SlicedParticle Particle::createSlicedParticle(ZLimits limits) const overridefinal
+        SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final
 
         Create a sliced form factor for this particle. 
 
@@ -24913,7 +24914,7 @@ class Particle(IParticle):
         """
         material(Particle self) -> Material
 
-        const Material* Particle::material() const overridefinal
+        const Material* Particle::material() const override final
 
         Returns nullptr, unless overwritten to return a specific material. 
 
@@ -24935,7 +24936,7 @@ class Particle(IParticle):
         """
         getChildren(Particle self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > Particle::getChildren() const overridefinal
+        std::vector< const INode * > Particle::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -24978,7 +24979,7 @@ class ParticleComposition(IParticle):
         this = _libBornAgainCore.new_ParticleComposition(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleComposition
     __del__ = lambda self: None
@@ -24987,7 +24988,7 @@ class ParticleComposition(IParticle):
         """
         clone(ParticleComposition self) -> ParticleComposition
 
-        ParticleComposition * ParticleComposition::clone() const overridefinal
+        ParticleComposition * ParticleComposition::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -24999,7 +25000,7 @@ class ParticleComposition(IParticle):
         """
         accept(ParticleComposition self, INodeVisitor visitor)
 
-        void ParticleComposition::accept(INodeVisitor *visitor) const overridefinal
+        void ParticleComposition::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -25011,7 +25012,7 @@ class ParticleComposition(IParticle):
         """
         createFormFactor(ParticleComposition self) -> IFormFactor
 
-        IFormFactor * ParticleComposition::createFormFactor() const overridefinal
+        IFormFactor * ParticleComposition::createFormFactor() const override final
 
         Create a form factor for this particle. 
 
@@ -25056,7 +25057,7 @@ class ParticleComposition(IParticle):
         """
         getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > ParticleComposition::getChildren() const overridefinal
+        std::vector< const INode * > ParticleComposition::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -25068,7 +25069,7 @@ class ParticleComposition(IParticle):
         """
         decompose(ParticleComposition self) -> SafePointerVector< IParticle >
 
-        SafePointerVector< IParticle > ParticleComposition::decompose() const overridefinal
+        SafePointerVector< IParticle > ParticleComposition::decompose() const override final
 
         Decompose in constituent  IParticle objects. 
 
@@ -25080,7 +25081,7 @@ class ParticleComposition(IParticle):
         """
         bottomTopZ(ParticleComposition self) -> ParticleLimits
 
-        ParticleLimits ParticleComposition::bottomTopZ() const overridefinal
+        ParticleLimits ParticleComposition::bottomTopZ() const override final
 
         Top and bottom z-coordinate. 
 
@@ -25121,7 +25122,7 @@ class ParticleCoreShell(IParticle):
         this = _libBornAgainCore.new_ParticleCoreShell(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleCoreShell
     __del__ = lambda self: None
@@ -25130,7 +25131,7 @@ class ParticleCoreShell(IParticle):
         """
         clone(ParticleCoreShell self) -> ParticleCoreShell
 
-        ParticleCoreShell * ParticleCoreShell::clone() const overridefinal
+        ParticleCoreShell * ParticleCoreShell::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -25142,7 +25143,7 @@ class ParticleCoreShell(IParticle):
         """
         accept(ParticleCoreShell self, INodeVisitor visitor)
 
-        void ParticleCoreShell::accept(INodeVisitor *visitor) const overridefinal
+        void ParticleCoreShell::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -25154,7 +25155,7 @@ class ParticleCoreShell(IParticle):
         """
         createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle
 
-        SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const overridefinal
+        SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final
 
         Create a sliced form factor for this particle. 
 
@@ -25166,7 +25167,7 @@ class ParticleCoreShell(IParticle):
         """
         coreParticle(ParticleCoreShell self) -> Particle
 
-        const Particle * ParticleCoreShell::coreParticle() const 
+        const Particle * ParticleCoreShell::coreParticle() const
 
         """
         return _libBornAgainCore.ParticleCoreShell_coreParticle(self)
@@ -25176,7 +25177,7 @@ class ParticleCoreShell(IParticle):
         """
         shellParticle(ParticleCoreShell self) -> Particle
 
-        const Particle * ParticleCoreShell::shellParticle() const 
+        const Particle * ParticleCoreShell::shellParticle() const
 
         """
         return _libBornAgainCore.ParticleCoreShell_shellParticle(self)
@@ -25186,7 +25187,7 @@ class ParticleCoreShell(IParticle):
         """
         getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > ParticleCoreShell::getChildren() const overridefinal
+        std::vector< const INode * > ParticleCoreShell::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -25226,14 +25227,14 @@ class ParticleDistribution(IAbstractParticle):
         this = _libBornAgainCore.new_ParticleDistribution(prototype, par_distr)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(ParticleDistribution self) -> ParticleDistribution
 
-        ParticleDistribution * ParticleDistribution::clone() const overridefinal
+        ParticleDistribution * ParticleDistribution::clone() const override final
 
         Returns a clone of this  ISample object. 
 
@@ -25245,7 +25246,7 @@ class ParticleDistribution(IAbstractParticle):
         """
         accept(ParticleDistribution self, INodeVisitor visitor)
 
-        void ParticleDistribution::accept(INodeVisitor *visitor) const overridefinal
+        void ParticleDistribution::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -25257,7 +25258,7 @@ class ParticleDistribution(IAbstractParticle):
         """
         translate(ParticleDistribution self, kvector_t translation)
 
-        void ParticleDistribution::translate(kvector_t translation) overridefinal
+        void ParticleDistribution::translate(kvector_t translation) override final
 
         Translates the particle with the given vector. 
 
@@ -25269,7 +25270,7 @@ class ParticleDistribution(IAbstractParticle):
         """
         rotate(ParticleDistribution self, IRotation rotation)
 
-        void ParticleDistribution::rotate(const IRotation &rotation) overridefinal
+        void ParticleDistribution::rotate(const IRotation &rotation) override final
 
         Applies the given rotation to the particle. 
 
@@ -25319,7 +25320,7 @@ class ParticleDistribution(IAbstractParticle):
         """
         getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > ParticleDistribution::getChildren() const overridefinal
+        std::vector< const INode * > ParticleDistribution::getChildren() const override final
 
         Returns a vector of children (const). 
 
@@ -25363,7 +25364,7 @@ class ParticleLayout(ILayout):
         this = _libBornAgainCore.new_ParticleLayout(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLayout
     __del__ = lambda self: None
@@ -25372,7 +25373,7 @@ class ParticleLayout(ILayout):
         """
         clone(ParticleLayout self) -> ParticleLayout
 
-        ParticleLayout * ParticleLayout::clone() const finaloverride
+        ParticleLayout * ParticleLayout::clone() const final override
 
         Returns a clone of this  ISample object. 
 
@@ -25384,7 +25385,7 @@ class ParticleLayout(ILayout):
         """
         cloneWithOffset(ParticleLayout self, double offset) -> ParticleLayout
 
-        ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const finaloverride
+        ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const final override
 
         """
         return _libBornAgainCore.ParticleLayout_cloneWithOffset(self, offset)
@@ -25394,7 +25395,7 @@ class ParticleLayout(ILayout):
         """
         accept(ParticleLayout self, INodeVisitor visitor)
 
-        void ParticleLayout::accept(INodeVisitor *visitor) const finaloverride
+        void ParticleLayout::accept(INodeVisitor *visitor) const final override
 
         Calls the  INodeVisitor's visit method. 
 
@@ -25436,7 +25437,7 @@ class ParticleLayout(ILayout):
         """
         particles(ParticleLayout self) -> SafePointerVector< IParticle const >
 
-        SafePointerVector< const IParticle > ParticleLayout::particles() const finaloverride
+        SafePointerVector< const IParticle > ParticleLayout::particles() const final override
 
         Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
 
@@ -25448,7 +25449,7 @@ class ParticleLayout(ILayout):
         """
         getTotalAbundance(ParticleLayout self) -> double
 
-        double ParticleLayout::getTotalAbundance() const finaloverride
+        double ParticleLayout::getTotalAbundance() const final override
 
         Get total abundance of all particles. 
 
@@ -25472,7 +25473,7 @@ class ParticleLayout(ILayout):
         """
         totalParticleSurfaceDensity(ParticleLayout self) -> double
 
-        double ParticleLayout::totalParticleSurfaceDensity() const finaloverride
+        double ParticleLayout::totalParticleSurfaceDensity() const final override
 
         Returns surface density of all particles. 
 
@@ -25484,7 +25485,7 @@ class ParticleLayout(ILayout):
         """
         setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)
 
-        void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) finaloverride
+        void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override
 
         Sets total particle surface density.  particle_density: number of particles per square nanometer 
 
@@ -25496,7 +25497,7 @@ class ParticleLayout(ILayout):
         """
         getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector
 
-        std::vector< const INode * > ParticleLayout::getChildren() const finaloverride
+        std::vector< const INode * > ParticleLayout::getChildren() const final override
 
         Returns a vector of children (const). 
 
@@ -25536,7 +25537,7 @@ class PoissonNoiseBackground(IBackground):
         this = _libBornAgainCore.new_PoissonNoiseBackground()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PoissonNoiseBackground
     __del__ = lambda self: None
@@ -25545,7 +25546,7 @@ class PoissonNoiseBackground(IBackground):
         """
         clone(PoissonNoiseBackground self) -> PoissonNoiseBackground
 
-        PoissonNoiseBackground * PoissonNoiseBackground::clone() const overridefinal
+        PoissonNoiseBackground * PoissonNoiseBackground::clone() const override final
 
         """
         return _libBornAgainCore.PoissonNoiseBackground_clone(self)
@@ -25567,7 +25568,7 @@ class PoissonNoiseBackground(IBackground):
         """
         addBackGround(PoissonNoiseBackground self, double intensity) -> double
 
-        double PoissonNoiseBackground::addBackGround(double intensity) const overridefinal
+        double PoissonNoiseBackground::addBackGround(double intensity) const override final
 
         """
         return _libBornAgainCore.PoissonNoiseBackground_addBackGround(self, intensity)
@@ -25607,7 +25608,7 @@ class Polygon(IShape2D):
         this = _libBornAgainCore.new_Polygon(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Polygon
     __del__ = lambda self: None
@@ -25616,7 +25617,7 @@ class Polygon(IShape2D):
         """
         clone(Polygon self) -> Polygon
 
-        virtual Polygon* Polygon::clone() const 
+        virtual Polygon* Polygon::clone() const
 
         """
         return _libBornAgainCore.Polygon_clone(self)
@@ -25639,7 +25640,7 @@ class Polygon(IShape2D):
         """
         getArea(Polygon self) -> double
 
-        double Polygon::getArea() const 
+        double Polygon::getArea() const
 
         """
         return _libBornAgainCore.Polygon_getArea(self)
@@ -25649,7 +25650,7 @@ class Polygon(IShape2D):
         """
         getPoints(Polygon self, vdouble1d_t xpos, vdouble1d_t ypos)
 
-        void Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const 
+        void Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const
 
         """
         return _libBornAgainCore.Polygon_getPoints(self, xpos, ypos)
@@ -25691,7 +25692,7 @@ class RealParameter(IParameterReal):
         this = _libBornAgainCore.new_RealParameter(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self, *args):
@@ -25699,7 +25700,7 @@ class RealParameter(IParameterReal):
         clone(RealParameter self, std::string const & new_name) -> RealParameter
         clone(RealParameter self) -> RealParameter
 
-        RealParameter * RealParameter::clone(const std::string &new_name="") const 
+        RealParameter * RealParameter::clone(const std::string &new_name="") const
 
         """
         return _libBornAgainCore.RealParameter_clone(self, *args)
@@ -25743,7 +25744,7 @@ class RealParameter(IParameterReal):
         """
         limits(RealParameter self) -> RealLimits
 
-        RealLimits RealParameter::limits() const 
+        RealLimits RealParameter::limits() const
 
         """
         return _libBornAgainCore.RealParameter_limits(self)
@@ -25793,7 +25794,7 @@ class RealParameter(IParameterReal):
         """
         unit(RealParameter self) -> std::string
 
-        std::string RealParameter::unit() const 
+        std::string RealParameter::unit() const
 
         """
         return _libBornAgainCore.RealParameter_unit(self)
@@ -25848,14 +25849,14 @@ class Rectangle(IShape2D):
         this = _libBornAgainCore.new_Rectangle(xlow, ylow, xup, yup)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
         """
         clone(Rectangle self) -> Rectangle
 
-        Rectangle* Rectangle::clone() const 
+        Rectangle* Rectangle::clone() const
 
         """
         return _libBornAgainCore.Rectangle_clone(self)
@@ -25878,7 +25879,7 @@ class Rectangle(IShape2D):
         """
         getArea(Rectangle self) -> double
 
-        double Rectangle::getArea() const 
+        double Rectangle::getArea() const
 
         """
         return _libBornAgainCore.Rectangle_getArea(self)
@@ -25888,7 +25889,7 @@ class Rectangle(IShape2D):
         """
         getXlow(Rectangle self) -> double
 
-        double Rectangle::getXlow() const 
+        double Rectangle::getXlow() const
 
         """
         return _libBornAgainCore.Rectangle_getXlow(self)
@@ -25898,7 +25899,7 @@ class Rectangle(IShape2D):
         """
         getYlow(Rectangle self) -> double
 
-        double Rectangle::getYlow() const 
+        double Rectangle::getYlow() const
 
         """
         return _libBornAgainCore.Rectangle_getYlow(self)
@@ -25908,7 +25909,7 @@ class Rectangle(IShape2D):
         """
         getXup(Rectangle self) -> double
 
-        double Rectangle::getXup() const 
+        double Rectangle::getXup() const
 
         """
         return _libBornAgainCore.Rectangle_getXup(self)
@@ -25918,7 +25919,7 @@ class Rectangle(IShape2D):
         """
         getYup(Rectangle self) -> double
 
-        double Rectangle::getYup() const 
+        double Rectangle::getYup() const
 
         """
         return _libBornAgainCore.Rectangle_getYup(self)
@@ -25964,7 +25965,7 @@ class RectangularDetector(IDetector2D):
         this = _libBornAgainCore.new_RectangularDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -26008,7 +26009,7 @@ class RectangularDetector(IDetector2D):
         setPosition(RectangularDetector self, kvector_t normal_to_detector, double u0, double v0, kvector_t direction)
         setPosition(RectangularDetector self, kvector_t normal_to_detector, double u0, double v0)
 
-        void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0,-1.0, 0.0))
+        void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0, -1.0, 0.0))
 
         """
         return _libBornAgainCore.RectangularDetector_setPosition(self, *args)
@@ -26060,7 +26061,7 @@ class RectangularDetector(IDetector2D):
         """
         getWidth(RectangularDetector self) -> double
 
-        double RectangularDetector::getWidth() const 
+        double RectangularDetector::getWidth() const
 
         """
         return _libBornAgainCore.RectangularDetector_getWidth(self)
@@ -26070,7 +26071,7 @@ class RectangularDetector(IDetector2D):
         """
         getHeight(RectangularDetector self) -> double
 
-        double RectangularDetector::getHeight() const 
+        double RectangularDetector::getHeight() const
 
         """
         return _libBornAgainCore.RectangularDetector_getHeight(self)
@@ -26080,7 +26081,7 @@ class RectangularDetector(IDetector2D):
         """
         getNbinsX(RectangularDetector self) -> size_t
 
-        size_t RectangularDetector::getNbinsX() const 
+        size_t RectangularDetector::getNbinsX() const
 
         """
         return _libBornAgainCore.RectangularDetector_getNbinsX(self)
@@ -26090,7 +26091,7 @@ class RectangularDetector(IDetector2D):
         """
         getNbinsY(RectangularDetector self) -> size_t
 
-        size_t RectangularDetector::getNbinsY() const 
+        size_t RectangularDetector::getNbinsY() const
 
         """
         return _libBornAgainCore.RectangularDetector_getNbinsY(self)
@@ -26100,7 +26101,7 @@ class RectangularDetector(IDetector2D):
         """
         getNormalVector(RectangularDetector self) -> kvector_t
 
-        kvector_t RectangularDetector::getNormalVector() const 
+        kvector_t RectangularDetector::getNormalVector() const
 
         """
         return _libBornAgainCore.RectangularDetector_getNormalVector(self)
@@ -26110,7 +26111,7 @@ class RectangularDetector(IDetector2D):
         """
         getU0(RectangularDetector self) -> double
 
-        double RectangularDetector::getU0() const 
+        double RectangularDetector::getU0() const
 
         """
         return _libBornAgainCore.RectangularDetector_getU0(self)
@@ -26120,7 +26121,7 @@ class RectangularDetector(IDetector2D):
         """
         getV0(RectangularDetector self) -> double
 
-        double RectangularDetector::getV0() const 
+        double RectangularDetector::getV0() const
 
         """
         return _libBornAgainCore.RectangularDetector_getV0(self)
@@ -26130,7 +26131,7 @@ class RectangularDetector(IDetector2D):
         """
         getDirectionVector(RectangularDetector self) -> kvector_t
 
-        kvector_t RectangularDetector::getDirectionVector() const 
+        kvector_t RectangularDetector::getDirectionVector() const
 
         """
         return _libBornAgainCore.RectangularDetector_getDirectionVector(self)
@@ -26140,7 +26141,7 @@ class RectangularDetector(IDetector2D):
         """
         getDistance(RectangularDetector self) -> double
 
-        double RectangularDetector::getDistance() const 
+        double RectangularDetector::getDistance() const
 
         """
         return _libBornAgainCore.RectangularDetector_getDistance(self)
@@ -26150,7 +26151,7 @@ class RectangularDetector(IDetector2D):
         """
         getDirectBeamU0(RectangularDetector self) -> double
 
-        double RectangularDetector::getDirectBeamU0() const 
+        double RectangularDetector::getDirectBeamU0() const
 
         """
         return _libBornAgainCore.RectangularDetector_getDirectBeamU0(self)
@@ -26160,7 +26161,7 @@ class RectangularDetector(IDetector2D):
         """
         getDirectBeamV0(RectangularDetector self) -> double
 
-        double RectangularDetector::getDirectBeamV0() const 
+        double RectangularDetector::getDirectBeamV0() const
 
         """
         return _libBornAgainCore.RectangularDetector_getDirectBeamV0(self)
@@ -26170,7 +26171,7 @@ class RectangularDetector(IDetector2D):
         """
         getDetectorArrangment(RectangularDetector self) -> RectangularDetector::EDetectorArrangement
 
-        RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const 
+        RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const
 
         """
         return _libBornAgainCore.RectangularDetector_getDetectorArrangment(self)
@@ -26204,7 +26205,7 @@ class RectangularDetector(IDetector2D):
         """
         regionOfInterestPixel(RectangularDetector self) -> RectangularPixel
 
-        RectangularPixel * RectangularDetector::regionOfInterestPixel() const 
+        RectangularPixel * RectangularDetector::regionOfInterestPixel() const
 
         """
         return _libBornAgainCore.RectangularDetector_regionOfInterestPixel(self)
@@ -26235,7 +26236,7 @@ class RectangularPixel(IPixel):
         this = _libBornAgainCore.new_RectangularPixel(corner_pos, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_RectangularPixel
     __del__ = lambda self: None
@@ -26274,7 +26275,7 @@ class RectangularPixel(IPixel):
         """
         getPosition(RectangularPixel self, double x, double y) -> kvector_t
 
-        kvector_t RectangularPixel::getPosition(double x, double y) const 
+        kvector_t RectangularPixel::getPosition(double x, double y) const
 
         """
         return _libBornAgainCore.RectangularPixel_getPosition(self, x, y)
@@ -26332,14 +26333,14 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         this = _libBornAgainCore.new_ResolutionFunction2DGaussian(sigma_x, sigma_y)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def evaluateCDF(self, x, y):
         """
         evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double
 
-        double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const 
+        double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
 
         """
         return _libBornAgainCore.ResolutionFunction2DGaussian_evaluateCDF(self, x, y)
@@ -26349,7 +26350,7 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         """
         clone(ResolutionFunction2DGaussian self) -> ResolutionFunction2DGaussian
 
-        ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const 
+        ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const
 
         """
         return _libBornAgainCore.ResolutionFunction2DGaussian_clone(self)
@@ -26371,7 +26372,7 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         """
         getSigmaX(ResolutionFunction2DGaussian self) -> double
 
-        double ResolutionFunction2DGaussian::getSigmaX() const 
+        double ResolutionFunction2DGaussian::getSigmaX() const
 
         """
         return _libBornAgainCore.ResolutionFunction2DGaussian_getSigmaX(self)
@@ -26381,7 +26382,7 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         """
         getSigmaY(ResolutionFunction2DGaussian self) -> double
 
-        double ResolutionFunction2DGaussian::getSigmaY() const 
+        double ResolutionFunction2DGaussian::getSigmaY() const
 
         """
         return _libBornAgainCore.ResolutionFunction2DGaussian_getSigmaY(self)
@@ -26423,7 +26424,7 @@ class SpecularSimulation(Simulation):
         this = _libBornAgainCore.new_SpecularSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SpecularSimulation
     __del__ = lambda self: None
@@ -26454,7 +26455,7 @@ class SpecularSimulation(Simulation):
         """
         accept(SpecularSimulation self, INodeVisitor visitor)
 
-        void SpecularSimulation::accept(INodeVisitor *visitor) const overridefinal
+        void SpecularSimulation::accept(INodeVisitor *visitor) const override final
 
         Calls the  INodeVisitor's visit method. 
 
@@ -26510,16 +26511,30 @@ class SpecularSimulation(Simulation):
         return _libBornAgainCore.SpecularSimulation_getDetectorIntensity(self, *args)
 
 
-    def getIntensityData(self):
+    def addParameterDistribution(self, *args):
+        """
+        addParameterDistribution(SpecularSimulation self, std::string const & param_name, IDistribution1D distribution, size_t nbr_samples, double sigma_factor=0.0, RealLimits limits)
+        addParameterDistribution(SpecularSimulation self, std::string const & param_name, IDistribution1D distribution, size_t nbr_samples, double sigma_factor=0.0)
+        addParameterDistribution(SpecularSimulation self, std::string const & param_name, IDistribution1D distribution, size_t nbr_samples)
+        addParameterDistribution(SpecularSimulation self, ParameterDistribution par_distr)
+
+        void SpecularSimulation::addParameterDistribution(const ParameterDistribution &par_distr) override
+
+        """
+        return _libBornAgainCore.SpecularSimulation_addParameterDistribution(self, *args)
+
+
+    def getIntensityData(self, *args):
         """
+        getIntensityData(SpecularSimulation self, AxesUnits units_type) -> Histogram1D
         getIntensityData(SpecularSimulation self) -> Histogram1D
 
-        Histogram1D * SpecularSimulation::getIntensityData() const
+        Histogram1D * SpecularSimulation::getIntensityData(AxesUnits units_type=AxesUnits::DEFAULT) const
 
         Returns detector signal (  $ \\propto |R|^2$) in the form of 1D Histogram. 
 
         """
-        return _libBornAgainCore.SpecularSimulation_getIntensityData(self)
+        return _libBornAgainCore.SpecularSimulation_getIntensityData(self, *args)
 
 
     def setSampleBuilder(self, ptr):
@@ -26555,7 +26570,7 @@ class ThreadInfo(_object):
         this = _libBornAgainCore.new_ThreadInfo()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_set
     __swig_getmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_get
@@ -26600,7 +26615,7 @@ class SampleBuilderFactoryTemp(_object):
         this = _libBornAgainCore.new_SampleBuilderFactoryTemp()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -26632,7 +26647,7 @@ class SampleBuilderFactoryTemp(_object):
         """
         contains(SampleBuilderFactoryTemp self, std::string const & item_key) -> bool
 
-        bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const 
+        bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const
 
         """
         return _libBornAgainCore.SampleBuilderFactoryTemp_contains(self, item_key)
@@ -26656,7 +26671,7 @@ class SampleBuilderFactoryTemp(_object):
         """
         begin(SampleBuilderFactoryTemp self) -> IFactory< std::string,IMultiLayerBuilder >::const_iterator
 
-        const_iterator IFactory< Key, AbstractProduct >::begin() const 
+        const_iterator IFactory< Key, AbstractProduct >::begin() const
 
         """
         return _libBornAgainCore.SampleBuilderFactoryTemp_begin(self)
@@ -26666,7 +26681,7 @@ class SampleBuilderFactoryTemp(_object):
         """
         end(SampleBuilderFactoryTemp self) -> IFactory< std::string,IMultiLayerBuilder >::const_iterator
 
-        const_iterator IFactory< Key, AbstractProduct >::end() const 
+        const_iterator IFactory< Key, AbstractProduct >::end() const
 
         """
         return _libBornAgainCore.SampleBuilderFactoryTemp_end(self)
@@ -26704,7 +26719,7 @@ class SampleBuilderFactory(SampleBuilderFactoryTemp):
         this = _libBornAgainCore.new_SampleBuilderFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createSample(self, name):
@@ -26749,7 +26764,7 @@ class SimulationFactoryTemp(_object):
         this = _libBornAgainCore.new_SimulationFactoryTemp()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -26781,7 +26796,7 @@ class SimulationFactoryTemp(_object):
         """
         contains(SimulationFactoryTemp self, std::string const & item_key) -> bool
 
-        bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const 
+        bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const
 
         """
         return _libBornAgainCore.SimulationFactoryTemp_contains(self, item_key)
@@ -26805,7 +26820,7 @@ class SimulationFactoryTemp(_object):
         """
         begin(SimulationFactoryTemp self) -> IFactory< std::string,Simulation >::const_iterator
 
-        const_iterator IFactory< Key, AbstractProduct >::begin() const 
+        const_iterator IFactory< Key, AbstractProduct >::begin() const
 
         """
         return _libBornAgainCore.SimulationFactoryTemp_begin(self)
@@ -26815,7 +26830,7 @@ class SimulationFactoryTemp(_object):
         """
         end(SimulationFactoryTemp self) -> IFactory< std::string,Simulation >::const_iterator
 
-        const_iterator IFactory< Key, AbstractProduct >::end() const 
+        const_iterator IFactory< Key, AbstractProduct >::end() const
 
         """
         return _libBornAgainCore.SimulationFactoryTemp_end(self)
@@ -26853,7 +26868,7 @@ class SimulationFactory(SimulationFactoryTemp):
         this = _libBornAgainCore.new_SimulationFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimulationFactory
     __del__ = lambda self: None
@@ -27085,7 +27100,7 @@ class SphericalConverter(UnitConverterSimple):
         this = _libBornAgainCore.new_SphericalConverter(detector, beam)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SphericalConverter
     __del__ = lambda self: None
@@ -27132,7 +27147,7 @@ class RectangularConverter(UnitConverterSimple):
         this = _libBornAgainCore.new_RectangularConverter(detector, beam)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_RectangularConverter
     __del__ = lambda self: None
@@ -27179,7 +27194,7 @@ class OffSpecularConverter(UnitConverterSimple):
         this = _libBornAgainCore.new_OffSpecularConverter(detector, beam, alpha_axis)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_OffSpecularConverter
     __del__ = lambda self: None
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 0ba622b124a..46e87ad7dac 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -107,9 +107,11 @@ template <typename T> T SwigValueInit() {
 #endif
 
 /* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
+#if defined(__GNUC__)
+#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#    ifndef GCC_HASCLASSVISIBILITY
+#      define GCC_HASCLASSVISIBILITY
+#    endif
 #  endif
 #endif
 
@@ -669,16 +671,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
+      uu = (unsigned char)((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
+      uu = (unsigned char)((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
+      uu |= (unsigned char)(d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
+      uu |= (unsigned char)(d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -861,10 +863,6 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -979,6 +977,7 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
+#define Py_hash_t long
 #endif
 
 /* -----------------------------------------------------------------------------
@@ -1927,7 +1926,6 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1938,7 +1936,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,				    /* tp_print */
+      0,                                    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1946,7 +1944,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1956,7 +1954,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,				    /* tp_str */
+      0,                                    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2119,7 +2117,6 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -3801,7 +3798,7 @@ static swig_module_info swig_module = {swig_types, 322, 0, 0, 0, 0};
 #endif
 #define SWIG_name    "_libBornAgainCore"
 
-#define SWIGVERSION 0x030008 
+#define SWIGVERSION 0x030012 
 #define SWIG_VERSION SWIGVERSION
 
 
@@ -3900,6 +3897,7 @@ namespace swig {
 #endif
 
 
+#include <typeinfo>
 #include <stdexcept>
 
 
@@ -4049,7 +4047,7 @@ SWIG_AsVal_double (PyObject *obj, double *val)
     return SWIG_OK;
 #if PY_VERSION_HEX < 0x03000000
   } else if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
+    if (val) *val = (double) PyInt_AsLong(obj);
     return SWIG_OK;
 #endif
   } else if (PyLong_Check(obj)) {
@@ -4170,23 +4168,109 @@ SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val)
 }
 
 
+#include <limits.h>
+#if !defined(SWIG_NO_LLONG_MAX)
+# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
+#   define LLONG_MAX __LONG_LONG_MAX__
+#   define LLONG_MIN (-LLONG_MAX - 1LL)
+#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
+# endif
+#endif
+
+
+#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
+#  define SWIG_LONG_LONG_AVAILABLE
+#endif
+
+
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERN int
+SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    unsigned long long v = PyLong_AsUnsignedLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+      res = SWIG_OverflowError;
+    }
+  } else {
+    unsigned long v;
+    res = SWIG_AsVal_unsigned_SS_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, 0, mant_max))
+      return SWIG_OverflowError;
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) {
+      if (val) *val = (unsigned long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+#endif
+
+
 SWIGINTERNINLINE int
 SWIG_AsVal_size_t (PyObject * obj, size_t *val)
 {
-  unsigned long v;
-  int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
-  if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+  int res = SWIG_TypeError;
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(size_t) <= sizeof(unsigned long)) {
+#endif
+    unsigned long v;
+    res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else if (sizeof(size_t) <= sizeof(unsigned long long)) {
+    unsigned long long v;
+    res = SWIG_AsVal_unsigned_SS_long_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+  }
+#endif
   return res;
 }
 
 
-  #define SWIG_From_long   PyLong_FromLong 
+  #define SWIG_From_long   PyInt_FromLong 
+
+
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERNINLINE PyObject* 
+SWIG_From_long_SS_long  (long long value)
+{
+  return ((value < LONG_MIN) || (value > LONG_MAX)) ?
+    PyLong_FromLongLong(value) : PyInt_FromLong(static_cast< long >(value));
+}
+#endif
 
 
 SWIGINTERNINLINE PyObject *
 SWIG_From_ptrdiff_t  (ptrdiff_t value)
 {    
-  return SWIG_From_long  (static_cast< long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(ptrdiff_t) <= sizeof(long)) {
+#endif
+    return SWIG_From_long  (static_cast< long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else {
+    /* assume sizeof(ptrdiff_t) <= sizeof(long long) */
+    return SWIG_From_long_SS_long  (static_cast< long long >(value));
+  }
+#endif
 }
 
 
@@ -4240,12 +4324,65 @@ SWIG_AsVal_long (PyObject *obj, long* val)
 }
 
 
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERN int
+SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    long long v = PyLong_AsLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+      res = SWIG_OverflowError;
+    }
+  } else {
+    long v;
+    res = SWIG_AsVal_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    const double mant_min = -mant_max;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, mant_min, mant_max))
+      return SWIG_OverflowError;
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
+      if (val) *val = (long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+#endif
+
+
 SWIGINTERNINLINE int
 SWIG_AsVal_ptrdiff_t (PyObject * obj, ptrdiff_t *val)
 {
-  long v;
-  int res = SWIG_AsVal_long (obj, val ? &v : 0);
-  if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+  int res = SWIG_TypeError;
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(ptrdiff_t) <= sizeof(long)) {
+#endif
+    long v;
+    res = SWIG_AsVal_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else if (sizeof(ptrdiff_t) <= sizeof(long long)) {
+    long long v;
+    res = SWIG_AsVal_long_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+  }
+#endif
   return res;
 }
 
@@ -4290,8 +4427,21 @@ namespace swig {
     return traits<typename noconst_traits<Type >::noconst_type >::type_name();
   }
 
-  template <class Type>
-  struct traits_info {
+  template <class Type> struct traits_info {
+    static swig_type_info *type_query(std::string name) {
+      name += " *";
+      return SWIG_TypeQuery(name.c_str());
+    }
+    static swig_type_info *type_info() {
+      static swig_type_info *info = type_query(type_name<Type>());
+      return info;
+    }
+  };
+
+  /*
+    Partial specialization for pointers (traits_info)
+  */
+  template <class Type> struct traits_info<Type *> {
     static swig_type_info *type_query(std::string name) {
       name += " *";
       return SWIG_TypeQuery(name.c_str());
@@ -4308,7 +4458,7 @@ namespace swig {
   }
 
   /*
-    Partial specialization for pointers
+    Partial specialization for pointers (traits)
   */
   template <class Type> struct traits <Type *> {
     typedef pointer_category category;
@@ -4378,7 +4528,8 @@ namespace swig {
   struct traits_asptr {   
     static int asptr(PyObject *obj, Type **val) {
       Type *p;
-      int res = SWIG_ConvertPtr(obj, (void**)&p, type_info<Type>(), 0);
+      swig_type_info *descriptor = type_info<Type>();
+      int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR;
       if (SWIG_IsOK(res)) {
 	if (val) *val = p;
       }
@@ -4526,7 +4677,7 @@ namespace swig {
 
 namespace std {
   template <>
-  struct less <PyObject *>: public binary_function<PyObject *, PyObject *, bool>
+  struct less <PyObject *>
   {
     bool
     operator()(PyObject * v, PyObject *w) const
@@ -4551,7 +4702,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigPtr_PyObject>: public binary_function<swig::SwigPtr_PyObject, swig::SwigPtr_PyObject, bool>
+  struct less <swig::SwigPtr_PyObject>
   {
     bool
     operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const
@@ -4561,7 +4712,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigVar_PyObject>: public binary_function<swig::SwigVar_PyObject, swig::SwigVar_PyObject, bool>
+  struct less <swig::SwigVar_PyObject>
   {
     bool
     operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const
@@ -4624,7 +4775,7 @@ namespace swig {
     if (step == 0) {
       throw std::invalid_argument("slice step cannot be zero");
     } else if (step > 0) {
-      // Required range: 0 <= i < size, 0 <= j < size
+      // Required range: 0 <= i < size, 0 <= j < size, i <= j
       if (i < 0) {
         ii = 0;
       } else if (i < (Difference)size) {
@@ -4632,13 +4783,15 @@ namespace swig {
       } else if (insert && (i >= (Difference)size)) {
         ii = (Difference)size;
       }
-      if ( j < 0 ) {
+      if (j < 0) {
         jj = 0;
       } else {
         jj = (j < (Difference)size) ? j : (Difference)size;
       }
+      if (jj < ii)
+        jj = ii;
     } else {
-      // Required range: -1 <= i < size-1, -1 <= j < size-1
+      // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j
       if (i < -1) {
         ii = -1;
       } else if (i < (Difference) size) {
@@ -4651,6 +4804,8 @@ namespace swig {
       } else {
         jj = (j < (Difference)size ) ? j : (Difference)(size-1);
       }
+      if (ii < jj)
+        ii = jj;
     }
   }
 
@@ -4676,6 +4831,13 @@ namespace swig {
     seq->erase(position);
   }
 
+  template <class Sequence>
+  struct traits_reserve {
+    static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) {
+      // This should be specialized for types that support reserve
+    }
+  };
+
   template <class Sequence, class Difference>
   inline Sequence*
   getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) {
@@ -4693,6 +4855,7 @@ namespace swig {
         return new Sequence(sb, se);
       } else {
         Sequence *sequence = new Sequence();
+        swig::traits_reserve<Sequence>::reserve(*sequence, (jj - ii + step - 1) / step);
         typename Sequence::const_iterator it = sb;
         while (it!=se) {
           sequence->push_back(*it);
@@ -4703,17 +4866,16 @@ namespace swig {
       } 
     } else {
       Sequence *sequence = new Sequence();
-      if (ii > jj) {
-        typename Sequence::const_reverse_iterator sb = self->rbegin();
-        typename Sequence::const_reverse_iterator se = self->rbegin();
-        std::advance(sb,size-ii-1);
-        std::advance(se,size-jj-1);
-        typename Sequence::const_reverse_iterator it = sb;
-        while (it!=se) {
-          sequence->push_back(*it);
-          for (Py_ssize_t c=0; c<-step && it!=se; ++c)
-            it++;
-        }
+      swig::traits_reserve<Sequence>::reserve(*sequence, (ii - jj - step - 1) / -step);
+      typename Sequence::const_reverse_iterator sb = self->rbegin();
+      typename Sequence::const_reverse_iterator se = self->rbegin();
+      std::advance(sb,size-ii-1);
+      std::advance(se,size-jj-1);
+      typename Sequence::const_reverse_iterator it = sb;
+      while (it!=se) {
+        sequence->push_back(*it);
+        for (Py_ssize_t c=0; c<-step && it!=se; ++c)
+          it++;
       }
       return sequence;
     }
@@ -4727,12 +4889,11 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
-      if (jj < ii)
-        jj = ii;
       if (step == 1) {
         size_t ssize = jj - ii;
         if (ssize <= is.size()) {
           // expanding/staying the same size
+          swig::traits_reserve<Sequence>::reserve(*self, self->size() - ssize + is.size());
           typename Sequence::iterator sb = self->begin();
           typename InputSeq::const_iterator isit = is.begin();
           std::advance(sb,ii);
@@ -4766,8 +4927,6 @@ namespace swig {
         }
       }
     } else {
-      if (jj > ii)
-        jj = ii;
       size_t replacecount = (ii - jj - step - 1) / -step;
       if (is.size() != replacecount) {
         char msg[1024];
@@ -4793,37 +4952,33 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
-      if (jj > ii) {
-        typename Sequence::iterator sb = self->begin();
-        std::advance(sb,ii);
-        if (step == 1) {
-          typename Sequence::iterator se = self->begin();
-          std::advance(se,jj);
-          self->erase(sb,se);
-        } else {
-          typename Sequence::iterator it = sb;
-          size_t delcount = (jj - ii + step - 1) / step;
-          while (delcount) {
-            it = self->erase(it);
-            for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
-              it++;
-            delcount--;
-          }
-        }
-      }
-    } else {
-      if (ii > jj) {
-        typename Sequence::reverse_iterator sb = self->rbegin();
-        std::advance(sb,size-ii-1);
-        typename Sequence::reverse_iterator it = sb;
-        size_t delcount = (ii - jj - step - 1) / -step;
+      typename Sequence::iterator sb = self->begin();
+      std::advance(sb,ii);
+      if (step == 1) {
+        typename Sequence::iterator se = self->begin();
+        std::advance(se,jj);
+        self->erase(sb,se);
+      } else {
+        typename Sequence::iterator it = sb;
+        size_t delcount = (jj - ii + step - 1) / step;
         while (delcount) {
-          it = typename Sequence::reverse_iterator(self->erase((++it).base()));
-          for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
+          it = self->erase(it);
+          for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
             it++;
           delcount--;
         }
       }
+    } else {
+      typename Sequence::reverse_iterator sb = self->rbegin();
+      std::advance(sb,size-ii-1);
+      typename Sequence::reverse_iterator it = sb;
+      size_t delcount = (ii - jj - step - 1) / -step;
+      while (delcount) {
+        it = typename Sequence::reverse_iterator(self->erase((++it).base()));
+        for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
+          it++;
+        delcount--;
+      }
     }
   }
 }
@@ -5322,8 +5477,8 @@ namespace swig {
     static int asptr(PyObject *obj, sequence **seq) {
       if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) {
 	sequence *p;
-	if (::SWIG_ConvertPtr(obj,(void**)&p,
-			      swig::type_info<sequence>(),0) == SWIG_OK) {
+	swig_type_info *descriptor = swig::type_info<sequence>();
+	if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) {
 	  if (seq) *seq = p;
 	  return SWIG_OLDOBJ;
 	}
@@ -5362,7 +5517,7 @@ namespace swig {
 #ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
       swig_type_info *desc = swig::type_info<sequence>();
       if (desc && desc->clientdata) {
-	return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
+	return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
       }
 #endif
       size_type size = seq.size();
@@ -5383,6 +5538,13 @@ namespace swig {
 
 
   namespace swig {
+    template <class T>
+    struct traits_reserve<std::vector<T> > {
+      static void reserve(std::vector<T> &seq, typename std::vector<T>::size_type n) {
+        seq.reserve(n);
+      }
+    };
+
     template <class T>
     struct traits_asptr<std::vector<T> >  {
       static int asptr(PyObject *obj, std::vector<T> **vec) {
@@ -5425,14 +5587,33 @@ SWIGINTERNINLINE PyObject*
 SWIG_From_unsigned_SS_long  (unsigned long value)
 {
   return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyLong_FromLong(static_cast< long >(value)); 
+    PyLong_FromUnsignedLong(value) : PyInt_FromLong(static_cast< long >(value));
 }
 
 
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERNINLINE PyObject* 
+SWIG_From_unsigned_SS_long_SS_long  (unsigned long long value)
+{
+  return (value > LONG_MAX) ?
+    PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(static_cast< long >(value));
+}
+#endif
+
+
 SWIGINTERNINLINE PyObject *
 SWIG_From_size_t  (size_t value)
 {    
-  return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(size_t) <= sizeof(unsigned long)) {
+#endif
+    return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else {
+    /* assume sizeof(size_t) <= sizeof(unsigned long long) */
+    return SWIG_From_unsigned_SS_long_SS_long  (static_cast< unsigned long long >(value));
+  }
+#endif
 }
 
 SWIGINTERN std::vector< double,std::allocator< double > > *std_vector_Sl_double_Sg____getslice__(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j){
@@ -5616,16 +5797,6 @@ SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vect
 SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_0(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::value_type const &x){ return self->insert(pos, x); }
 SWIGINTERN void std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_1(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::size_type n,std::vector< std::vector< double > >::value_type const &x){ self->insert(pos, n, x); }
 
-#include <limits.h>
-#if !defined(SWIG_NO_LLONG_MAX)
-# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
-#   define LLONG_MAX __LONG_LONG_MAX__
-#   define LLONG_MIN (-LLONG_MAX - 1LL)
-#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-# endif
-#endif
-
-
 SWIGINTERN int
 SWIG_AsVal_int (PyObject * obj, int *val)
 {
@@ -6004,7 +6175,7 @@ SWIG_AsVal_std_complex_Sl_double_Sg_  (PyObject *o, std::complex<double>* val)
 
 
 SWIGINTERNINLINE PyObject*
-SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/share/swig3.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/
+SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/local/share/swig/3.0.12/typemaps/swigmacros.swg,104,%ifcplusplus@*/
 
 const std::complex<double>&
 
@@ -6154,13 +6325,18 @@ SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
 #if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+  if (PyBytes_Check(obj))
+#else
   if (PyUnicode_Check(obj))
+#endif
 #else  
   if (PyString_Check(obj))
 #endif
   {
     char *cstr; Py_ssize_t len;
 #if PY_VERSION_HEX>=0x03000000
+#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
     if (!alloc && cptr) {
         /* We can't allow converting without allocation, since the internal
            representation of string in Python 3 is UCS-2/UCS-4 but we require
@@ -6169,8 +6345,9 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
         return SWIG_RuntimeError;
     }
     obj = PyUnicode_AsUTF8String(obj);
-    PyBytes_AsStringAndSize(obj, &cstr, &len);
     if(alloc) *alloc = SWIG_NEWOBJ;
+#endif
+    PyBytes_AsStringAndSize(obj, &cstr, &len);
 #else
     PyString_AsStringAndSize(obj, &cstr, &len);
 #endif
@@ -6191,26 +6368,34 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 	if (*alloc == SWIG_NEWOBJ) 
 #endif
 	{
-	  *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+	  *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
 	  *alloc = SWIG_NEWOBJ;
 	} else {
 	  *cptr = cstr;
 	  *alloc = SWIG_OLDOBJ;
 	}
       } else {
-	#if PY_VERSION_HEX>=0x03000000
-	assert(0); /* Should never reach here in Python 3 */
-	#endif
+#if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+	*cptr = PyBytes_AsString(obj);
+#else
+	assert(0); /* Should never reach here with Unicode strings in Python 3 */
+#endif
+#else
 	*cptr = SWIG_Python_str_AsChar(obj);
+#endif
       }
     }
     if (psize) *psize = len + 1;
-#if PY_VERSION_HEX>=0x03000000
+#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
     Py_XDECREF(obj);
 #endif
     return SWIG_OK;
   } else {
 #if defined(SWIG_PYTHON_2_UNICODE)
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
+#endif
 #if PY_VERSION_HEX<0x03000000
     if (PyUnicode_Check(obj)) {
       char *cstr; Py_ssize_t len;
@@ -6221,7 +6406,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
       if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
         if (cptr) {
           if (alloc) *alloc = SWIG_NEWOBJ;
-          *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+          *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
         }
         if (psize) *psize = len + 1;
 
@@ -6308,11 +6493,15 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
 	SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
 #if PY_VERSION_HEX >= 0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+      return PyBytes_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
+#else
 #if PY_VERSION_HEX >= 0x03010000
       return PyUnicode_DecodeUTF8(carray, static_cast< Py_ssize_t >(size), "surrogateescape");
 #else
       return PyUnicode_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
+#endif
 #else
       return PyString_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
@@ -7083,44 +7272,6 @@ struct SWIG_null_deleter {
 
 #define SWIG_NO_NULL_DELETER_SWIG_BUILTIN_INIT
 
-
-SWIGINTERN int
-SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
-{
-  int res = SWIG_TypeError;
-  if (PyLong_Check(obj)) {
-    long long v = PyLong_AsLongLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-      res = SWIG_OverflowError;
-    }
-  } else {
-    long v;
-    res = SWIG_AsVal_long (obj,&v);
-    if (SWIG_IsOK(res)) {
-      if (val) *val = v;
-      return res;
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    const double mant_max = 1LL << DBL_MANT_DIG;
-    const double mant_min = -mant_max;
-    double d;
-    res = SWIG_AsVal_double (obj,&d);
-    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
-      if (val) *val = (long long)(d);
-      return SWIG_AddCast(res);
-    }
-    res = SWIG_TypeError;
-  }
-#endif
-  return res;
-}
-
 SWIGINTERN RealParameter *IMultiLayerBuilder_registerParameter(IMultiLayerBuilder *self,std::string const &name,int64_t parpointer){
         return &((*(self)).registerParameter(name, (double*)parpointer)); }
 SWIGINTERN void IMultiLayerBuilder_setParameterValue(IMultiLayerBuilder *self,std::string const &name,double value){
@@ -7432,8 +7583,8 @@ ParameterPool *SwigDirector_IParameterized::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7466,8 +7617,8 @@ void SwigDirector_IParameterized::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7508,8 +7659,8 @@ ParameterPool *SwigDirector_INode::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7542,8 +7693,8 @@ void SwigDirector_INode::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7571,8 +7722,8 @@ void SwigDirector_INode::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7599,8 +7750,8 @@ std::string SwigDirector_INode::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -7638,8 +7789,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_INode:
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -7674,8 +7825,8 @@ void SwigDirector_INode::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -7716,8 +7867,8 @@ ISample *SwigDirector_ISample::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -7750,8 +7901,8 @@ void SwigDirector_ISample::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -7782,8 +7933,8 @@ ParameterPool *SwigDirector_ISample::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7816,8 +7967,8 @@ void SwigDirector_ISample::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7845,8 +7996,8 @@ void SwigDirector_ISample::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7873,8 +8024,8 @@ std::string SwigDirector_ISample::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -7909,8 +8060,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_ISampl
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -7946,8 +8097,8 @@ void SwigDirector_ISample::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -7978,8 +8129,8 @@ Material const *SwigDirector_ISample::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8018,14 +8169,14 @@ SwigDirector_IObservable::~SwigDirector_IObservable() {
 
 void SwigDirector_IObservable::attachObserver(IObservable::observer_t obj) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&obj), SWIGTYPE_p_std__shared_ptrT_IObserver_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new IObservable::observer_t((const IObservable::observer_t &)obj)), SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IObservable.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "attachObserver";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "attachObserver";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"attachObserver", (char *)"(O)" ,(PyObject *)obj0);
@@ -8051,8 +8202,8 @@ void SwigDirector_IObservable::notifyObservers() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "notifyObservers";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "notifyObservers";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "notifyObservers", NULL);
@@ -8090,8 +8241,8 @@ void SwigDirector_IFitObserver::notify(IObservable *subject) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "notify";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "notify";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"notify", (char *)"(O)" ,(PyObject *)obj0);
@@ -8119,8 +8270,8 @@ void SwigDirector_IFitObserver::update(FitSuite *fit_suite) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "update";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "update";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"update", (char *)"(O)" ,(PyObject *)obj0);
@@ -8161,8 +8312,8 @@ ParameterPool *SwigDirector_IMultiLayerBuilder::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8195,8 +8346,8 @@ void SwigDirector_IMultiLayerBuilder::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8227,8 +8378,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::buildSample() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "buildSample";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "buildSample";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "buildSample", NULL);
@@ -8268,8 +8419,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::createSample(size_t index) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "createSample";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createSample";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"createSample", (char *)"(O)" ,(PyObject *)obj0);
@@ -8303,8 +8454,8 @@ size_t SwigDirector_IMultiLayerBuilder::size() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "size";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "size";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "size", NULL);
@@ -8352,8 +8503,8 @@ IFormFactor *SwigDirector_IFormFactor::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -8386,8 +8537,8 @@ void SwigDirector_IFormFactor::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -8418,8 +8569,8 @@ ParameterPool *SwigDirector_IFormFactor::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8452,8 +8603,8 @@ void SwigDirector_IFormFactor::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8481,8 +8632,8 @@ void SwigDirector_IFormFactor::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -8509,8 +8660,8 @@ std::string SwigDirector_IFormFactor::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -8545,8 +8696,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -8582,8 +8733,8 @@ void SwigDirector_IFormFactor::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -8614,8 +8765,8 @@ Material const *SwigDirector_IFormFactor::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8644,14 +8795,14 @@ Material const *SwigDirector_IFormFactor::material() const {
 
 void SwigDirector_IFormFactor::setAmbientMaterial(Material arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_Material,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new Material((const Material &)arg0)), SWIGTYPE_p_Material, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "setAmbientMaterial";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setAmbientMaterial";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -8680,8 +8831,8 @@ complex_t SwigDirector_IFormFactor::evaluate(WavevectorInfo const &wavevectors)
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -8715,8 +8866,8 @@ double SwigDirector_IFormFactor::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "volume";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "volume";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -8750,8 +8901,8 @@ double SwigDirector_IFormFactor::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char * const swig_method_name = "radialExtension";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "radialExtension";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -8787,8 +8938,8 @@ double SwigDirector_IFormFactor::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char * const swig_method_name = "bottomZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "bottomZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8824,8 +8975,8 @@ double SwigDirector_IFormFactor::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char * const swig_method_name = "topZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "topZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8862,8 +9013,8 @@ void SwigDirector_IFormFactor::setSpecularInfo(ILayerRTCoefficients const *arg0,
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 15;
-  const char * const swig_method_name = "setSpecularInfo";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setSpecularInfo";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
@@ -8893,8 +9044,8 @@ bool SwigDirector_IFormFactor::canSliceAnalytically(IRotation const &rot) const
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 16;
-  const char * const swig_method_name = "canSliceAnalytically";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "canSliceAnalytically";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -8929,19 +9080,19 @@ IFormFactor *SwigDirector_IFormFactor::sliceFormFactor(ZLimits limits, IRotation
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 17;
-  const char * const swig_method_name = "sliceFormFactor";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "sliceFormFactor";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -8990,8 +9141,8 @@ IFormFactorBorn *SwigDirector_IFormFactorBorn::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -9024,8 +9175,8 @@ void SwigDirector_IFormFactorBorn::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -9056,8 +9207,8 @@ ParameterPool *SwigDirector_IFormFactorBorn::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -9090,8 +9241,8 @@ void SwigDirector_IFormFactorBorn::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -9119,8 +9270,8 @@ void SwigDirector_IFormFactorBorn::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -9147,8 +9298,8 @@ std::string SwigDirector_IFormFactorBorn::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9183,8 +9334,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -9220,8 +9371,8 @@ void SwigDirector_IFormFactorBorn::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -9252,8 +9403,8 @@ Material const *SwigDirector_IFormFactorBorn::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -9282,14 +9433,14 @@ Material const *SwigDirector_IFormFactorBorn::material() const {
 
 void SwigDirector_IFormFactorBorn::setAmbientMaterial(Material arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_Material,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new Material((const Material &)arg0)), SWIGTYPE_p_Material, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "setAmbientMaterial";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setAmbientMaterial";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -9318,8 +9469,8 @@ complex_t SwigDirector_IFormFactorBorn::evaluate(WavevectorInfo const &wavevecto
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -9353,8 +9504,8 @@ double SwigDirector_IFormFactorBorn::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "volume";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "volume";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -9388,8 +9539,8 @@ double SwigDirector_IFormFactorBorn::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char * const swig_method_name = "radialExtension";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "radialExtension";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -9425,8 +9576,8 @@ double SwigDirector_IFormFactorBorn::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char * const swig_method_name = "bottomZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "bottomZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9462,8 +9613,8 @@ double SwigDirector_IFormFactorBorn::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char * const swig_method_name = "topZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "topZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9500,8 +9651,8 @@ void SwigDirector_IFormFactorBorn::setSpecularInfo(ILayerRTCoefficients const *a
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 15;
-  const char * const swig_method_name = "setSpecularInfo";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setSpecularInfo";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
@@ -9531,8 +9682,8 @@ bool SwigDirector_IFormFactorBorn::canSliceAnalytically(IRotation const &rot) co
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 16;
-  const char * const swig_method_name = "canSliceAnalytically";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "canSliceAnalytically";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -9567,19 +9718,19 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 17;
-  const char * const swig_method_name = "sliceFormFactor";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "sliceFormFactor";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -9610,14 +9761,14 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
 complex_t SwigDirector_IFormFactorBorn::evaluate_for_q(cvector_t q) const {
   complex_t c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new cvector_t((const cvector_t &)q)), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 18;
-  const char * const swig_method_name = "evaluate_for_q";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate_for_q";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate_for_q", (char *)"(O)" ,(PyObject *)obj0);
@@ -9665,8 +9816,8 @@ IInterferenceFunction *SwigDirector_IInterferenceFunction::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -9699,8 +9850,8 @@ void SwigDirector_IInterferenceFunction::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -9731,8 +9882,8 @@ ParameterPool *SwigDirector_IInterferenceFunction::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -9765,8 +9916,8 @@ void SwigDirector_IInterferenceFunction::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -9794,8 +9945,8 @@ void SwigDirector_IInterferenceFunction::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -9822,8 +9973,8 @@ std::string SwigDirector_IInterferenceFunction::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9858,8 +10009,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IInter
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -9895,8 +10046,8 @@ void SwigDirector_IInterferenceFunction::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -9927,8 +10078,8 @@ Material const *SwigDirector_IInterferenceFunction::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -9958,14 +10109,14 @@ Material const *SwigDirector_IInterferenceFunction::material() const {
 double SwigDirector_IInterferenceFunction::evaluate(kvector_t const q) const {
   double c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)q)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IInterferenceFunction.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -9999,8 +10150,8 @@ double SwigDirector_IInterferenceFunction::kappa() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "kappa";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "kappa";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "kappa", NULL);
@@ -10034,8 +10185,8 @@ double SwigDirector_IInterferenceFunction::getParticleDensity() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "getParticleDensity";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getParticleDensity";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getParticleDensity", NULL);
@@ -10910,22 +11061,11 @@ fail:
 
 SWIGINTERN PyObject *SwigPyIterator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_swig__SwigPyIterator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *SHARED_PTR_DISOWN_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
-  return SWIG_Py_Void();
-}
-
-
 SWIGINTERN PyObject *_wrap_vdouble1d_t_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
@@ -12839,7 +12979,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble1d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -14787,7 +14927,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -16705,7 +16845,7 @@ fail:
 
 SWIGINTERN PyObject *vector_integer_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -18653,7 +18793,7 @@ fail:
 
 SWIGINTERN PyObject *vinteger2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -20571,7 +20711,7 @@ fail:
 
 SWIGINTERN PyObject *vector_longinteger_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -22489,7 +22629,7 @@ fail:
 
 SWIGINTERN PyObject *vector_complex_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24437,7 +24577,7 @@ fail:
 
 SWIGINTERN PyObject *vector_string_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24655,7 +24795,7 @@ fail:
 
 SWIGINTERN PyObject *ICloneable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ICloneable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24830,7 +24970,7 @@ fail:
 
 SWIGINTERN PyObject *INamed_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INamed, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -25659,7 +25799,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterized_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterized, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -26041,7 +26181,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INode_createParameterTree(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_INode_createParameterTree__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   INode *arg1 = (INode *) 0 ;
   void *argp1 = 0 ;
@@ -26078,6 +26218,82 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_INode_createParameterTree__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  INode *arg1 = (INode *) 0 ;
+  INode *arg2 = (INode *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  ParameterPool *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:INode_createParameterTree",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_INode, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_createParameterTree" "', argument " "1"" of type '" "INode const *""'"); 
+  }
+  arg1 = reinterpret_cast< INode * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_INode, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "INode_createParameterTree" "', argument " "2"" of type '" "INode const *""'"); 
+  }
+  arg2 = reinterpret_cast< INode * >(argp2);
+  result = (ParameterPool *)((INode const *)arg1)->createParameterTree((INode const *)arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ParameterPool, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_INode_createParameterTree(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[3] = {
+    0
+  };
+  Py_ssize_t ii;
+  
+  if (!PyTuple_Check(args)) SWIG_fail;
+  argc = args ? PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 2) && (ii < argc); ii++) {
+    argv[ii] = PyTuple_GET_ITEM(args,ii);
+  }
+  if (argc == 1) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_INode, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      return _wrap_INode_createParameterTree__SWIG_0(self, args);
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_INode, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_INode, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_INode_createParameterTree__SWIG_1(self, args);
+      }
+    }
+  }
+  
+fail:
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'INode_createParameterTree'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    INode::createParameterTree() const\n"
+    "    INode::createParameterTree(INode const *) const\n");
+  return 0;
+}
+
+
 SWIGINTERN PyObject *_wrap_disown_INode(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   INode *arg1 = (INode *) 0 ;
@@ -26105,7 +26321,7 @@ fail:
 
 SWIGINTERN PyObject *INode_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INode, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -28002,7 +28218,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -29899,7 +30115,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_const_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -30707,7 +30923,7 @@ fail:
 
 SWIGINTERN PyObject *kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -32623,7 +32839,7 @@ fail:
 
 SWIGINTERN PyObject *vector_kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -33169,7 +33385,7 @@ fail:
 
 SWIGINTERN PyObject *cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35085,7 +35301,7 @@ fail:
 
 SWIGINTERN PyObject *vector_cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35744,7 +35960,7 @@ fail:
 
 SWIGINTERN PyObject *WavevectorInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_WavevectorInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36206,7 +36422,7 @@ fail:
 
 SWIGINTERN PyObject *Beam_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Beam, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36467,7 +36683,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -36839,7 +37055,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DKVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DKVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37177,7 +37393,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DCVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DCVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37676,7 +37892,7 @@ fail:
 
 SWIGINTERN PyObject *IAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38091,7 +38307,7 @@ fail:
 
 SWIGINTERN PyObject *VariableBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VariableBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38237,7 +38453,7 @@ fail:
 
 SWIGINTERN PyObject *ConstKBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ConstKBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38436,7 +38652,7 @@ fail:
 
 SWIGINTERN PyObject *CustomBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_CustomBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38632,7 +38848,7 @@ fail:
 
 SWIGINTERN PyObject *IShape2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IShape2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38810,7 +39026,7 @@ fail:
 
 SWIGINTERN PyObject *ISample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39221,7 +39437,7 @@ fail:
 
 SWIGINTERN PyObject *IChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39303,7 +39519,7 @@ fail:
 
 SWIGINTERN PyObject *IObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39457,7 +39673,7 @@ fail:
 
 SWIGINTERN PyObject *IObservable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IObservable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39676,7 +39892,7 @@ fail:
 
 SWIGINTERN PyObject *IFitObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IFitObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39777,7 +39993,7 @@ fail:
 
 SWIGINTERN PyObject *IFitStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFitStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39861,7 +40077,7 @@ fail:
 
 SWIGINTERN PyObject *FitStrategyDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitStrategyDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39942,7 +40158,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40036,7 +40252,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionLog_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionLog, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40130,7 +40346,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionSqrt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionSqrt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40277,7 +40493,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40572,7 +40788,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40800,7 +41016,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityScaleAndShiftNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityScaleAndShiftNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41019,7 +41235,7 @@ fail:
 
 SWIGINTERN PyObject *ISquaredFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISquaredFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41251,7 +41467,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41381,7 +41597,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSimError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSimError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41511,7 +41727,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionMeanSquaredError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionMeanSquaredError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41641,7 +41857,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSystematicError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSystematicError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41771,7 +41987,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionGaussianError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionGaussianError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41947,7 +42163,7 @@ fail:
 
 SWIGINTERN PyObject *ChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42487,7 +42703,7 @@ fail:
 
 SWIGINTERN PyObject *FitObject_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitObject, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42632,7 +42848,7 @@ fail:
 
 SWIGINTERN PyObject *FitOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43317,7 +43533,7 @@ fail:
 
 SWIGINTERN PyObject *FitParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -45634,7 +45850,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuite_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuite, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -46433,7 +46649,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuiteObjects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuiteObjects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -47003,28 +47219,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FORWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
-  return SWIG_Py_Void();
-}
-
-
-SWIGINTERN PyObject *BACKWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
-  return SWIG_Py_Void();
-}
-
-
 SWIGINTERN PyObject *_wrap_FastFourierTransform__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< complex_t,std::allocator< complex_t > > *arg1 = 0 ;
@@ -47785,7 +47979,7 @@ fail:
 
 SWIGINTERN PyObject *AdjustMinimizerStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AdjustMinimizerStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -48309,7 +48503,7 @@ fail:
 
 SWIGINTERN PyObject *IMultiLayerBuilder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -53552,7 +53746,7 @@ fail:
 
 SWIGINTERN PyObject *INodeVisitor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INodeVisitor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -53781,7 +53975,7 @@ fail:
 
 SWIGINTERN PyObject *IClusteredParticles_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IClusteredParticles, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -54125,7 +54319,7 @@ fail:
 
 SWIGINTERN PyObject *Crystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Crystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -54752,7 +54946,7 @@ fail:
 
 SWIGINTERN PyObject *IDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55196,7 +55390,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55618,7 +55812,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56040,7 +56234,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56537,7 +56731,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLogNormal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLogNormal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56959,7 +57153,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57455,7 +57649,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionTrapezoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionTrapezoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57915,7 +58109,7 @@ fail:
 
 SWIGINTERN PyObject *DetectorMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DetectorMask, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58412,7 +58606,7 @@ fail:
 
 SWIGINTERN PyObject *Ellipse_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Ellipse, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58515,7 +58709,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58648,7 +58842,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58781,7 +58975,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58914,7 +59108,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59078,7 +59272,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59376,7 +59570,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59627,7 +59821,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59878,7 +60072,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60181,7 +60375,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60314,7 +60508,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60447,7 +60641,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60580,7 +60774,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60713,7 +60907,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60846,7 +61040,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60979,7 +61173,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61143,7 +61337,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61351,7 +61545,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61602,7 +61796,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61853,7 +62047,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62104,7 +62298,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62355,7 +62549,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62658,7 +62852,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63038,7 +63232,7 @@ fail:
 
 SWIGINTERN PyObject *FixedBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FixedBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63686,7 +63880,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65637,7 +65831,7 @@ fail:
 
 SWIGINTERN PyObject *vector_IFormFactorPtr_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66142,7 +66336,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorBorn_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorBorn, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66339,7 +66533,7 @@ fail:
 
 SWIGINTERN PyObject *SlicingEffects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SlicingEffects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66569,7 +66763,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorDecorator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorDecorator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66714,7 +66908,7 @@ fail:
 
 SWIGINTERN PyObject *PolygonalTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolygonalTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -66859,7 +67053,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67113,7 +67307,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralEdge_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralEdge, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67593,7 +67787,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralFace_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralFace, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67764,7 +67958,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolyhedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolyhedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67897,7 +68091,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalPrism_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalPrism, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68008,7 +68202,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalSurface, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68225,7 +68419,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorAnisoPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorAnisoPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68472,7 +68666,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorBox_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorBox, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68719,7 +68913,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68905,7 +69099,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69218,7 +69412,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69435,7 +69629,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCuboctahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCuboctahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69651,7 +69845,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69898,7 +70092,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDecoratorDebyeWaller_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDecoratorDebyeWaller, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70022,7 +70216,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDodecahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDodecahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70176,7 +70370,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDot_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDot, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70423,7 +70617,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorEllipsoidalCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorEllipsoidalCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70676,7 +70870,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70892,7 +71086,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71178,7 +71372,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71425,7 +71619,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorHemiEllipsoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorHemiEllipsoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71549,7 +71743,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorIcosahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorIcosahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71796,7 +71990,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72043,7 +72237,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72290,7 +72484,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72537,7 +72731,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72815,7 +73009,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73093,7 +73287,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73379,7 +73573,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73512,7 +73706,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism3_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism3, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73645,7 +73839,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73831,7 +74025,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74078,7 +74272,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74356,7 +74550,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple2_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74528,7 +74722,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereGaussianRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereGaussianRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74709,7 +74903,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereLogNormalRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereLogNormalRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74881,7 +75075,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereUniformRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereUniformRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75067,7 +75261,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTetrahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTetrahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75222,7 +75416,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedCube_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedCube, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75560,7 +75754,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75950,7 +76144,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76334,7 +76528,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorWeighted_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorWeighted, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -77587,7 +77781,7 @@ fail:
 
 SWIGINTERN PyObject *Simulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Simulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -78193,7 +78387,7 @@ fail:
 
 SWIGINTERN PyObject *Simulation2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Simulation2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -78721,7 +78915,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -79020,7 +79214,7 @@ fail:
 
 SWIGINTERN PyObject *GISASSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_GISASSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -80951,7 +81145,7 @@ fail:
 
 SWIGINTERN PyObject *IHistogram_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IHistogram, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -81550,7 +81744,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -82590,7 +82784,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -82671,7 +82865,7 @@ fail:
 
 SWIGINTERN PyObject *IBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -82826,7 +83020,7 @@ fail:
 
 SWIGINTERN PyObject *ConstantBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ConstantBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83644,7 +83838,7 @@ fail:
 
 SWIGINTERN PyObject *IDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84107,7 +84301,7 @@ fail:
 
 SWIGINTERN PyObject *IDetector2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetector2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84187,7 +84381,7 @@ fail:
 
 SWIGINTERN PyObject *IDetectorResolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetectorResolution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84467,7 +84661,7 @@ fail:
 
 SWIGINTERN PyObject *IInterferenceFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IInterferenceFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84726,7 +84920,7 @@ fail:
 
 SWIGINTERN PyObject *ILayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ILayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84929,7 +85123,7 @@ fail:
 
 SWIGINTERN PyObject *IAbstractParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAbstractParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85172,7 +85366,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterReal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85317,7 +85511,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLimits_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLimits, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86023,7 +86217,7 @@ fail:
 
 SWIGINTERN PyObject *IParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86113,7 +86307,7 @@ fail:
 
 SWIGINTERN PyObject *IResolutionFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IResolutionFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86297,7 +86491,7 @@ fail:
 
 SWIGINTERN PyObject *IRotation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IRotation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86518,7 +86712,7 @@ fail:
 
 SWIGINTERN PyObject *IdentityRotation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IdentityRotation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86686,7 +86880,7 @@ fail:
 
 SWIGINTERN PyObject *RotationX_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationX, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86854,7 +87048,7 @@ fail:
 
 SWIGINTERN PyObject *RotationY_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationY, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87070,7 +87264,7 @@ fail:
 
 SWIGINTERN PyObject *RotationZ_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationZ, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87300,7 +87494,7 @@ fail:
 
 SWIGINTERN PyObject *RotationEuler_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationEuler, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87384,7 +87578,7 @@ fail:
 
 SWIGINTERN PyObject *ISelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87517,7 +87711,7 @@ fail:
 
 SWIGINTERN PyObject *SimpleSelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimpleSelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88506,7 +88700,7 @@ fail:
 
 SWIGINTERN PyObject *Instrument_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Instrument, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89038,6 +89232,114 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_create2DArrayfromOutputData(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  OutputData< double > *arg1 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:create2DArrayfromOutputData",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_OutputDataT_double_t,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "create2DArrayfromOutputData" "', argument " "1"" of type '" "OutputData< double > const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "create2DArrayfromOutputData" "', argument " "1"" of type '" "OutputData< double > const &""'"); 
+  }
+  arg1 = reinterpret_cast< OutputData< double > * >(argp1);
+  result = IntensityDataFunctions::create2DArrayfromOutputData((OutputData< double > const &)*arg1);
+  resultobj = swig::from(static_cast< std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_FT2DArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  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 ;
+  std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:FT2DArray",&obj0)) SWIG_fail;
+  {
+    std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *ptr = (std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *)0;
+    res1 = swig::asptr(obj0, &ptr);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FT2DArray" "', argument " "1"" of type '" "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FT2DArray" "', argument " "1"" of type '" "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &""'"); 
+    }
+    arg1 = ptr;
+  }
+  result = IntensityDataFunctions::FT2DArray((std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &)*arg1);
+  resultobj = swig::from(static_cast< std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > >(result));
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_createOutputDatafrom2DArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  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 ;
+  OutputData< double > *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:createOutputDatafrom2DArray",&obj0)) SWIG_fail;
+  {
+    std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *ptr = (std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *)0;
+    res1 = swig::asptr(obj0, &ptr);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "createOutputDatafrom2DArray" "', argument " "1"" of type '" "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "createOutputDatafrom2DArray" "', argument " "1"" of type '" "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > const &""'"); 
+    }
+    arg1 = ptr;
+  }
+  result = (OutputData< double > *)IntensityDataFunctions::createOutputDatafrom2DArray((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_OutputDataT_double_t, 0 |  0 );
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res1)) delete arg1;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_getFourierTransform(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  OutputData< double > *arg1 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  OutputData< double > *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:getFourierTransform",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_OutputDataT_double_t,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "getFourierTransform" "', argument " "1"" of type '" "OutputData< double > const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "getFourierTransform" "', argument " "1"" of type '" "OutputData< double > const &""'"); 
+  }
+  arg1 = reinterpret_cast< OutputData< double > * >(argp1);
+  result = (OutputData< double > *)IntensityDataFunctions::getFourierTransform((OutputData< double > const &)*arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_OutputDataT_double_t, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_IntensityDataIOFactory_readOutputData(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::string *arg1 = 0 ;
@@ -89212,7 +89514,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityDataIOFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityDataIOFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89439,7 +89741,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction1DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction1DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89893,7 +90195,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionRadialParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionRadialParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -90581,7 +90883,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91940,7 +92242,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92072,7 +92374,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionNone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionNone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92273,7 +92575,7 @@ fail:
 
 SWIGINTERN PyObject *IPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92576,7 +92878,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92824,7 +93126,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93083,7 +93385,7 @@ fail:
 
 SWIGINTERN PyObject *IsGISAXSDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IsGISAXSDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93709,7 +94011,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93926,7 +94228,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice1DParameters_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice1DParameters, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94138,7 +94440,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94467,7 +94769,7 @@ fail:
 
 SWIGINTERN PyObject *BasicLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94736,7 +95038,7 @@ fail:
 
 SWIGINTERN PyObject *SquareLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquareLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95005,7 +95307,7 @@ fail:
 
 SWIGINTERN PyObject *HexagonalLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HexagonalLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95723,7 +96025,7 @@ fail:
 
 SWIGINTERN PyObject *Layer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Layer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96137,7 +96439,7 @@ fail:
 
 SWIGINTERN PyObject *LayerRoughness_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_LayerRoughness, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96382,7 +96684,7 @@ fail:
 
 SWIGINTERN PyObject *Line_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Line, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96622,7 +96924,7 @@ fail:
 
 SWIGINTERN PyObject *VerticalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VerticalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96862,7 +97164,7 @@ fail:
 
 SWIGINTERN PyObject *HorizontalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HorizontalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97285,7 +97587,7 @@ fail:
 
 SWIGINTERN PyObject *Material_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Material, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -98194,7 +98496,7 @@ fail:
 
 SWIGINTERN PyObject *MesoCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MesoCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99141,7 +99443,7 @@ fail:
 
 SWIGINTERN PyObject *MultiLayer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MultiLayer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99443,7 +99745,7 @@ fail:
 
 SWIGINTERN PyObject *OffSpecSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OffSpecSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -100959,7 +101261,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IntensityData___idiv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IntensityData___itruediv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   OutputData< double > *arg1 = (OutputData< double > *) 0 ;
   OutputData< double > *arg2 = 0 ;
@@ -100971,18 +101273,18 @@ SWIGINTERN PyObject *_wrap_IntensityData___idiv__(PyObject *SWIGUNUSEDPARM(self)
   PyObject * obj1 = 0 ;
   OutputData< double > *result = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___idiv__",&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___itruediv__",&obj0,&obj1)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_OutputDataT_double_t, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___idiv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___itruediv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
   }
   arg1 = reinterpret_cast< OutputData< double > * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_OutputDataT_double_t,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   arg2 = reinterpret_cast< OutputData< double > * >(argp2);
   result = (OutputData< double > *) &(arg1)->operator /=((OutputData< double > const &)*arg2);
@@ -101196,7 +101498,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityData_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OutputDataT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -101923,7 +102225,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -102557,7 +102859,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterPool_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterPool, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -102807,7 +103109,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterSample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104723,7 +105025,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSampleVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105161,7 +105463,7 @@ fail:
 
 SWIGINTERN PyObject *Particle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Particle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105623,7 +105925,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleComposition_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleComposition, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105951,7 +106253,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleCoreShell_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleCoreShell, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -106227,7 +106529,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -106920,7 +107222,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107044,7 +107346,7 @@ fail:
 
 SWIGINTERN PyObject *PoissonNoiseBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PoissonNoiseBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107440,7 +107742,7 @@ fail:
 
 SWIGINTERN PyObject *Polygon_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Polygon, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108280,7 +108582,7 @@ fail:
 
 SWIGINTERN PyObject *RealParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RealParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108635,7 +108937,7 @@ fail:
 
 SWIGINTERN PyObject *Rectangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Rectangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109753,7 +110055,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110058,7 +110360,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110253,7 +110555,7 @@ fail:
 
 SWIGINTERN PyObject *ResolutionFunction2DGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ResolutionFunction2DGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110955,7 +111257,397 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_SpecularSimulation_getIntensityData(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_SpecularSimulation_addParameterDistribution__SWIG_0_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
+  std::string *arg2 = 0 ;
+  IDistribution1D *arg3 = 0 ;
+  size_t arg4 ;
+  double arg5 ;
+  RealLimits *arg6 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 = SWIG_OLDOBJ ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  double val5 ;
+  int ecode5 = 0 ;
+  void *argp6 = 0 ;
+  int res6 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOO:SpecularSimulation_addParameterDistribution",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SpecularSimulation, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "1"" of type '" "SpecularSimulation *""'"); 
+  }
+  arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
+  {
+    std::string *ptr = (std::string *)0;
+    res2 = SWIG_AsPtr_std_string(obj1, &ptr);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    arg2 = ptr;
+  }
+  res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_IDistribution1D,  0  | 0);
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  if (!argp3) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  arg3 = reinterpret_cast< IDistribution1D * >(argp3);
+  ecode4 = SWIG_AsVal_size_t(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_double(obj4, &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "5"" of type '" "double""'");
+  } 
+  arg5 = static_cast< double >(val5);
+  res6 = SWIG_ConvertPtr(obj5, &argp6, SWIGTYPE_p_RealLimits,  0  | 0);
+  if (!SWIG_IsOK(res6)) {
+    SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "6"" of type '" "RealLimits const &""'"); 
+  }
+  if (!argp6) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "6"" of type '" "RealLimits const &""'"); 
+  }
+  arg6 = reinterpret_cast< RealLimits * >(argp6);
+  (arg1)->addParameterDistribution((std::string const &)*arg2,(IDistribution1D const &)*arg3,arg4,arg5,(RealLimits const &)*arg6);
+  resultobj = SWIG_Py_Void();
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_addParameterDistribution__SWIG_0_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
+  std::string *arg2 = 0 ;
+  IDistribution1D *arg3 = 0 ;
+  size_t arg4 ;
+  double arg5 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 = SWIG_OLDOBJ ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  double val5 ;
+  int ecode5 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOO:SpecularSimulation_addParameterDistribution",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SpecularSimulation, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "1"" of type '" "SpecularSimulation *""'"); 
+  }
+  arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
+  {
+    std::string *ptr = (std::string *)0;
+    res2 = SWIG_AsPtr_std_string(obj1, &ptr);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    arg2 = ptr;
+  }
+  res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_IDistribution1D,  0  | 0);
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  if (!argp3) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  arg3 = reinterpret_cast< IDistribution1D * >(argp3);
+  ecode4 = SWIG_AsVal_size_t(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  ecode5 = SWIG_AsVal_double(obj4, &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "5"" of type '" "double""'");
+  } 
+  arg5 = static_cast< double >(val5);
+  (arg1)->addParameterDistribution((std::string const &)*arg2,(IDistribution1D const &)*arg3,arg4,arg5);
+  resultobj = SWIG_Py_Void();
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_addParameterDistribution__SWIG_0_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
+  std::string *arg2 = 0 ;
+  IDistribution1D *arg3 = 0 ;
+  size_t arg4 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 = SWIG_OLDOBJ ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  size_t val4 ;
+  int ecode4 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOO:SpecularSimulation_addParameterDistribution",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SpecularSimulation, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "1"" of type '" "SpecularSimulation *""'"); 
+  }
+  arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
+  {
+    std::string *ptr = (std::string *)0;
+    res2 = SWIG_AsPtr_std_string(obj1, &ptr);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "std::string const &""'"); 
+    }
+    arg2 = ptr;
+  }
+  res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_IDistribution1D,  0  | 0);
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  if (!argp3) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "3"" of type '" "IDistribution1D const &""'"); 
+  }
+  arg3 = reinterpret_cast< IDistribution1D * >(argp3);
+  ecode4 = SWIG_AsVal_size_t(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "4"" of type '" "size_t""'");
+  } 
+  arg4 = static_cast< size_t >(val4);
+  (arg1)->addParameterDistribution((std::string const &)*arg2,(IDistribution1D const &)*arg3,arg4);
+  resultobj = SWIG_Py_Void();
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_addParameterDistribution__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
+  ParameterDistribution *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:SpecularSimulation_addParameterDistribution",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SpecularSimulation, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "1"" of type '" "SpecularSimulation *""'"); 
+  }
+  arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_ParameterDistribution,  0  | 0);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "ParameterDistribution const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SpecularSimulation_addParameterDistribution" "', argument " "2"" of type '" "ParameterDistribution const &""'"); 
+  }
+  arg2 = reinterpret_cast< ParameterDistribution * >(argp2);
+  (arg1)->addParameterDistribution((ParameterDistribution const &)*arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_addParameterDistribution(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[7] = {
+    0
+  };
+  Py_ssize_t ii;
+  
+  if (!PyTuple_Check(args)) SWIG_fail;
+  argc = args ? PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 6) && (ii < argc); ii++) {
+    argv[ii] = PyTuple_GET_ITEM(args,ii);
+  }
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_ParameterDistribution, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_SpecularSimulation_addParameterDistribution__SWIG_1(self, args);
+      }
+    }
+  }
+  if (argc == 4) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IDistribution1D, 0);
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            return _wrap_SpecularSimulation_addParameterDistribution__SWIG_0_2(self, args);
+          }
+        }
+      }
+    }
+  }
+  if (argc == 5) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IDistribution1D, 0);
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_double(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              return _wrap_SpecularSimulation_addParameterDistribution__SWIG_0_1(self, args);
+            }
+          }
+        }
+      }
+    }
+  }
+  if (argc == 6) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IDistribution1D, 0);
+        _v = SWIG_CheckState(res);
+        if (_v) {
+          {
+            int res = SWIG_AsVal_size_t(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_double(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              int res = SWIG_ConvertPtr(argv[5], 0, SWIGTYPE_p_RealLimits, 0);
+              _v = SWIG_CheckState(res);
+              if (_v) {
+                return _wrap_SpecularSimulation_addParameterDistribution__SWIG_0_0(self, args);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+fail:
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'SpecularSimulation_addParameterDistribution'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    addParameterDistribution(std::string const &,IDistribution1D const &,size_t,double,RealLimits const &)\n"
+    "    addParameterDistribution(std::string const &,IDistribution1D const &,size_t,double)\n"
+    "    addParameterDistribution(std::string const &,IDistribution1D const &,size_t)\n"
+    "    SpecularSimulation::addParameterDistribution(ParameterDistribution const &)\n");
+  return 0;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_getIntensityData__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
+  AxesUnits arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  Histogram1D *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:SpecularSimulation_getIntensityData",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SpecularSimulation, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SpecularSimulation_getIntensityData" "', argument " "1"" of type '" "SpecularSimulation const *""'"); 
+  }
+  arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
+  ecode2 = SWIG_AsVal_int(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SpecularSimulation_getIntensityData" "', argument " "2"" of type '" "AxesUnits""'");
+  } 
+  arg2 = static_cast< AxesUnits >(val2);
+  result = (Histogram1D *)((SpecularSimulation const *)arg1)->getIntensityData(arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Histogram1D, SWIG_POINTER_OWN |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SpecularSimulation_getIntensityData__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   SpecularSimulation *arg1 = (SpecularSimulation *) 0 ;
   void *argp1 = 0 ;
@@ -110970,16 +111662,62 @@ SWIGINTERN PyObject *_wrap_SpecularSimulation_getIntensityData(PyObject *SWIGUNU
   }
   arg1 = reinterpret_cast< SpecularSimulation * >(argp1);
   result = (Histogram1D *)((SpecularSimulation const *)arg1)->getIntensityData();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Histogram1D, 0 |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Histogram1D, SWIG_POINTER_OWN |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
+SWIGINTERN PyObject *_wrap_SpecularSimulation_getIntensityData(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[3] = {
+    0
+  };
+  Py_ssize_t ii;
+  
+  if (!PyTuple_Check(args)) SWIG_fail;
+  argc = args ? PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 2) && (ii < argc); ii++) {
+    argv[ii] = PyTuple_GET_ITEM(args,ii);
+  }
+  if (argc == 1) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      return _wrap_SpecularSimulation_getIntensityData__SWIG_1(self, args);
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SpecularSimulation, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        return _wrap_SpecularSimulation_getIntensityData__SWIG_0(self, args);
+      }
+    }
+  }
+  
+fail:
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'SpecularSimulation_getIntensityData'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    SpecularSimulation::getIntensityData(AxesUnits) const\n"
+    "    SpecularSimulation::getIntensityData() const\n");
+  return 0;
+}
+
+
 SWIGINTERN PyObject *SpecularSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SpecularSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -111176,7 +111914,7 @@ fail:
 
 SWIGINTERN PyObject *ThreadInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ThreadInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -111555,7 +112293,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -111634,7 +112372,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SampleBuilderFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112003,7 +112741,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_Simulation_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112044,7 +112782,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112072,7 +112810,7 @@ fail:
 
 SWIGINTERN PyObject *AxesUnits_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AxesUnitsWrap, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112384,7 +113122,7 @@ fail:
 
 SWIGINTERN PyObject *IUnitConverter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IUnitConverter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112674,7 +113412,7 @@ fail:
 
 SWIGINTERN PyObject *UnitConverterSimple_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_UnitConverterSimple, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112761,7 +113499,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalConverter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalConverter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112848,7 +113586,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularConverter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularConverter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112947,7 +113685,7 @@ fail:
 
 SWIGINTERN PyObject *OffSpecularConverter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OffSpecularConverter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112981,7 +113719,6 @@ static PyMethodDef SwigMethods[] = {
 		"SwigPyIterator___sub__(SwigPyIterator self, SwigPyIterator x) -> ptrdiff_t\n"
 		""},
 	 { (char *)"SwigPyIterator_swigregister", SwigPyIterator_swigregister, METH_VARARGS, NULL},
-	 { (char *)"SHARED_PTR_DISOWN_swigconstant", SHARED_PTR_DISOWN_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"vdouble1d_t_iterator", _wrap_vdouble1d_t_iterator, METH_VARARGS, (char *)"vdouble1d_t_iterator(vdouble1d_t self) -> SwigPyIterator"},
 	 { (char *)"vdouble1d_t___nonzero__", _wrap_vdouble1d_t___nonzero__, METH_VARARGS, (char *)"vdouble1d_t___nonzero__(vdouble1d_t self) -> bool"},
 	 { (char *)"vdouble1d_t___bool__", _wrap_vdouble1d_t___bool__, METH_VARARGS, (char *)"vdouble1d_t___bool__(vdouble1d_t self) -> bool"},
@@ -113508,7 +114245,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"INamed_getName", _wrap_INamed_getName, METH_VARARGS, (char *)"\n"
 		"INamed_getName(INamed self) -> std::string\n"
 		"\n"
-		"std::string INamed::getName() const \n"
+		"std::string INamed::getName() const\n"
 		"\n"
 		""},
 	 { (char *)"disown_INamed", _wrap_disown_INamed, METH_VARARGS, NULL},
@@ -113681,11 +114418,12 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"INode_createParameterTree", _wrap_INode_createParameterTree, METH_VARARGS, (char *)"\n"
-		"INode_createParameterTree(INode self) -> ParameterPool\n"
+		"createParameterTree() -> ParameterPool\n"
+		"INode_createParameterTree(INode self, INode node) -> ParameterPool\n"
 		"\n"
-		"ParameterPool * INode::createParameterTree() const\n"
+		"ParameterPool * INode::createParameterTree(const INode *node) const\n"
 		"\n"
-		"Creates new parameter pool, with all local parameters and those of its children. \n"
+		"Creates new parameter pool, with all local parameters and those of its children. Parameter names are derived relatively to the given  node. \n"
 		"\n"
 		""},
 	 { (char *)"disown_INode", _wrap_disown_INode, METH_VARARGS, NULL},
@@ -114291,31 +115029,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"WavevectorInfo_transformed", _wrap_WavevectorInfo_transformed, METH_VARARGS, (char *)"\n"
 		"WavevectorInfo_transformed(WavevectorInfo self, Transform3D const & transform) -> WavevectorInfo\n"
 		"\n"
-		"WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const \n"
+		"WavevectorInfo WavevectorInfo::transformed(const Transform3D &transform) const\n"
 		"\n"
 		""},
 	 { (char *)"WavevectorInfo_getKi", _wrap_WavevectorInfo_getKi, METH_VARARGS, (char *)"\n"
 		"WavevectorInfo_getKi(WavevectorInfo self) -> cvector_t\n"
 		"\n"
-		"cvector_t WavevectorInfo::getKi() const \n"
+		"cvector_t WavevectorInfo::getKi() const\n"
 		"\n"
 		""},
 	 { (char *)"WavevectorInfo_getKf", _wrap_WavevectorInfo_getKf, METH_VARARGS, (char *)"\n"
 		"WavevectorInfo_getKf(WavevectorInfo self) -> cvector_t\n"
 		"\n"
-		"cvector_t WavevectorInfo::getKf() const \n"
+		"cvector_t WavevectorInfo::getKf() const\n"
 		"\n"
 		""},
 	 { (char *)"WavevectorInfo_getQ", _wrap_WavevectorInfo_getQ, METH_VARARGS, (char *)"\n"
 		"WavevectorInfo_getQ(WavevectorInfo self) -> cvector_t\n"
 		"\n"
-		"cvector_t WavevectorInfo::getQ() const \n"
+		"cvector_t WavevectorInfo::getQ() const\n"
 		"\n"
 		""},
 	 { (char *)"WavevectorInfo_getWavelength", _wrap_WavevectorInfo_getWavelength, METH_VARARGS, (char *)"\n"
 		"WavevectorInfo_getWavelength(WavevectorInfo self) -> double\n"
 		"\n"
-		"double WavevectorInfo::getWavelength() const \n"
+		"double WavevectorInfo::getWavelength() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_WavevectorInfo", _wrap_delete_WavevectorInfo, METH_VARARGS, (char *)"delete_WavevectorInfo(WavevectorInfo self)"},
@@ -114400,25 +115138,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Beam_getBlochVector", _wrap_Beam_getBlochVector, METH_VARARGS, (char *)"\n"
 		"Beam_getBlochVector(Beam self) -> kvector_t\n"
 		"\n"
-		"kvector_t Beam::getBlochVector() const \n"
+		"kvector_t Beam::getBlochVector() const\n"
 		"\n"
 		""},
 	 { (char *)"Beam_getWavelength", _wrap_Beam_getWavelength, METH_VARARGS, (char *)"\n"
 		"Beam_getWavelength(Beam self) -> double\n"
 		"\n"
-		"double Beam::getWavelength() const \n"
+		"double Beam::getWavelength() const\n"
 		"\n"
 		""},
 	 { (char *)"Beam_getAlpha", _wrap_Beam_getAlpha, METH_VARARGS, (char *)"\n"
 		"Beam_getAlpha(Beam self) -> double\n"
 		"\n"
-		"double Beam::getAlpha() const \n"
+		"double Beam::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"Beam_getPhi", _wrap_Beam_getPhi, METH_VARARGS, (char *)"\n"
 		"Beam_getPhi(Beam self) -> double\n"
 		"\n"
-		"double Beam::getPhi() const \n"
+		"double Beam::getPhi() const\n"
 		"\n"
 		""},
 	 { (char *)"Beam_accept", _wrap_Beam_accept, METH_VARARGS, (char *)"\n"
@@ -114444,13 +115182,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Bin1D_getMidPoint", _wrap_Bin1D_getMidPoint, METH_VARARGS, (char *)"\n"
 		"Bin1D_getMidPoint(Bin1D self) -> double\n"
 		"\n"
-		"double Bin1D::getMidPoint() const \n"
+		"double Bin1D::getMidPoint() const\n"
 		"\n"
 		""},
 	 { (char *)"Bin1D_getBinSize", _wrap_Bin1D_getBinSize, METH_VARARGS, (char *)"\n"
 		"Bin1D_getBinSize(Bin1D self) -> double\n"
 		"\n"
-		"double Bin1D::getBinSize() const \n"
+		"double Bin1D::getBinSize() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_Bin1D", _wrap_delete_Bin1D, METH_VARARGS, (char *)"delete_Bin1D(Bin1D self)"},
@@ -114476,13 +115214,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Bin1DKVector_getMidPoint", _wrap_Bin1DKVector_getMidPoint, METH_VARARGS, (char *)"\n"
 		"Bin1DKVector_getMidPoint(Bin1DKVector self) -> kvector_t\n"
 		"\n"
-		"kvector_t Bin1DKVector::getMidPoint() const \n"
+		"kvector_t Bin1DKVector::getMidPoint() const\n"
 		"\n"
 		""},
 	 { (char *)"Bin1DKVector_getDelta", _wrap_Bin1DKVector_getDelta, METH_VARARGS, (char *)"\n"
 		"Bin1DKVector_getDelta(Bin1DKVector self) -> kvector_t\n"
 		"\n"
-		"kvector_t Bin1DKVector::getDelta() const \n"
+		"kvector_t Bin1DKVector::getDelta() const\n"
 		"\n"
 		""},
 	 { (char *)"Bin1DKVector_m_q_lower_set", _wrap_Bin1DKVector_m_q_lower_set, METH_VARARGS, (char *)"Bin1DKVector_m_q_lower_set(Bin1DKVector self, kvector_t m_q_lower)"},
@@ -114504,13 +115242,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Bin1DCVector_getMidPoint", _wrap_Bin1DCVector_getMidPoint, METH_VARARGS, (char *)"\n"
 		"Bin1DCVector_getMidPoint(Bin1DCVector self) -> cvector_t\n"
 		"\n"
-		"cvector_t Bin1DCVector::getMidPoint() const \n"
+		"cvector_t Bin1DCVector::getMidPoint() const\n"
 		"\n"
 		""},
 	 { (char *)"Bin1DCVector_getDelta", _wrap_Bin1DCVector_getDelta, METH_VARARGS, (char *)"\n"
 		"Bin1DCVector_getDelta(Bin1DCVector self) -> cvector_t\n"
 		"\n"
-		"cvector_t Bin1DCVector::getDelta() const \n"
+		"cvector_t Bin1DCVector::getDelta() const\n"
 		"\n"
 		""},
 	 { (char *)"Bin1DCVector_m_q_lower_set", _wrap_Bin1DCVector_m_q_lower_set, METH_VARARGS, (char *)"Bin1DCVector_m_q_lower_set(Bin1DCVector self, cvector_t m_q_lower)"},
@@ -114618,13 +115356,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IAxis_getBinCenters", _wrap_IAxis_getBinCenters, METH_VARARGS, (char *)"\n"
 		"IAxis_getBinCenters(IAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > IAxis::getBinCenters() const \n"
+		"std::vector< double > IAxis::getBinCenters() const\n"
 		"\n"
 		""},
 	 { (char *)"IAxis_getBinBoundaries", _wrap_IAxis_getBinBoundaries, METH_VARARGS, (char *)"\n"
 		"IAxis_getBinBoundaries(IAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > IAxis::getBinBoundaries() const \n"
+		"std::vector< double > IAxis::getBinBoundaries() const\n"
 		"\n"
 		""},
 	 { (char *)"IAxis_createClippedAxis", _wrap_IAxis_createClippedAxis, METH_VARARGS, (char *)"\n"
@@ -114721,7 +115459,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"VariableBinAxis_getBinCenter", _wrap_VariableBinAxis_getBinCenter, METH_VARARGS, (char *)"\n"
 		"VariableBinAxis_getBinCenter(VariableBinAxis self, size_t index) -> double\n"
 		"\n"
-		"double VariableBinAxis::getBinCenter(size_t index) const \n"
+		"double VariableBinAxis::getBinCenter(size_t index) const\n"
 		"\n"
 		""},
 	 { (char *)"VariableBinAxis_findClosestIndex", _wrap_VariableBinAxis_findClosestIndex, METH_VARARGS, (char *)"\n"
@@ -114735,13 +115473,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"VariableBinAxis_getBinCenters", _wrap_VariableBinAxis_getBinCenters, METH_VARARGS, (char *)"\n"
 		"VariableBinAxis_getBinCenters(VariableBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > VariableBinAxis::getBinCenters() const \n"
+		"std::vector< double > VariableBinAxis::getBinCenters() const\n"
 		"\n"
 		""},
 	 { (char *)"VariableBinAxis_getBinBoundaries", _wrap_VariableBinAxis_getBinBoundaries, METH_VARARGS, (char *)"\n"
 		"VariableBinAxis_getBinBoundaries(VariableBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector<double> VariableBinAxis::getBinBoundaries() const \n"
+		"std::vector<double> VariableBinAxis::getBinBoundaries() const\n"
 		"\n"
 		""},
 	 { (char *)"VariableBinAxis_createClippedAxis", _wrap_VariableBinAxis_createClippedAxis, METH_VARARGS, (char *)"\n"
@@ -114848,7 +115586,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"CustomBinAxis_getBinCenters", _wrap_CustomBinAxis_getBinCenters, METH_VARARGS, (char *)"\n"
 		"CustomBinAxis_getBinCenters(CustomBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > CustomBinAxis::getBinCenters() const \n"
+		"std::vector< double > CustomBinAxis::getBinCenters() const\n"
 		"\n"
 		""},
 	 { (char *)"CustomBinAxis_createClippedAxis", _wrap_CustomBinAxis_createClippedAxis, METH_VARARGS, (char *)"\n"
@@ -115091,7 +115829,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FitStrategyDefault_clone", _wrap_FitStrategyDefault_clone, METH_VARARGS, (char *)"\n"
 		"FitStrategyDefault_clone(FitStrategyDefault self) -> FitStrategyDefault\n"
 		"\n"
-		"FitStrategyDefault * FitStrategyDefault::clone() const \n"
+		"FitStrategyDefault * FitStrategyDefault::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FitStrategyDefault_execute", _wrap_FitStrategyDefault_execute, METH_VARARGS, (char *)"\n"
@@ -115130,13 +115868,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityFunctionLog_clone", _wrap_IntensityFunctionLog_clone, METH_VARARGS, (char *)"\n"
 		"IntensityFunctionLog_clone(IntensityFunctionLog self) -> IntensityFunctionLog\n"
 		"\n"
-		"virtual IntensityFunctionLog* IntensityFunctionLog::clone() const \n"
+		"virtual IntensityFunctionLog* IntensityFunctionLog::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityFunctionLog_evaluate", _wrap_IntensityFunctionLog_evaluate, METH_VARARGS, (char *)"\n"
 		"IntensityFunctionLog_evaluate(IntensityFunctionLog self, double value) -> double\n"
 		"\n"
-		"double IntensityFunctionLog::evaluate(double value) const \n"
+		"double IntensityFunctionLog::evaluate(double value) const\n"
 		"\n"
 		""},
 	 { (char *)"new_IntensityFunctionLog", _wrap_new_IntensityFunctionLog, METH_VARARGS, (char *)"\n"
@@ -115159,13 +115897,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityFunctionSqrt_clone", _wrap_IntensityFunctionSqrt_clone, METH_VARARGS, (char *)"\n"
 		"IntensityFunctionSqrt_clone(IntensityFunctionSqrt self) -> IntensityFunctionSqrt\n"
 		"\n"
-		"virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const \n"
+		"virtual IntensityFunctionSqrt* IntensityFunctionSqrt::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityFunctionSqrt_evaluate", _wrap_IntensityFunctionSqrt_evaluate, METH_VARARGS, (char *)"\n"
 		"IntensityFunctionSqrt_evaluate(IntensityFunctionSqrt self, double value) -> double\n"
 		"\n"
-		"double IntensityFunctionSqrt::evaluate(double value) const \n"
+		"double IntensityFunctionSqrt::evaluate(double value) const\n"
 		"\n"
 		""},
 	 { (char *)"new_IntensityFunctionSqrt", _wrap_new_IntensityFunctionSqrt, METH_VARARGS, (char *)"\n"
@@ -115227,7 +115965,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityNormalizer_clone", _wrap_IntensityNormalizer_clone, METH_VARARGS, (char *)"\n"
 		"IntensityNormalizer_clone(IntensityNormalizer self) -> IntensityNormalizer\n"
 		"\n"
-		"IntensityNormalizer * IntensityNormalizer::clone() const \n"
+		"IntensityNormalizer * IntensityNormalizer::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityNormalizer_accept", _wrap_IntensityNormalizer_accept, METH_VARARGS, (char *)"\n"
@@ -115241,7 +115979,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityNormalizer_createNormalizedData", _wrap_IntensityNormalizer_createNormalizedData, METH_VARARGS, (char *)"\n"
 		"IntensityNormalizer_createNormalizedData(IntensityNormalizer self, IntensityData data) -> IntensityData\n"
 		"\n"
-		"OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const \n"
+		"OutputData< double > * IntensityNormalizer::createNormalizedData(const OutputData< double > &data) const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityNormalizer_apply", _wrap_IntensityNormalizer_apply, METH_VARARGS, (char *)"\n"
@@ -115610,7 +116348,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FitParameter_clone", _wrap_FitParameter_clone, METH_VARARGS, (char *)"\n"
 		"FitParameter_clone(FitParameter self) -> FitParameter\n"
 		"\n"
-		"FitParameter * FitParameter::clone() const \n"
+		"FitParameter * FitParameter::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FitParameter_setValue", _wrap_FitParameter_setValue, METH_VARARGS, (char *)"\n"
@@ -115648,7 +116386,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FitParameter_patterns", _wrap_FitParameter_patterns, METH_VARARGS, (char *)"\n"
 		"FitParameter_patterns(FitParameter self) -> vector_string_t\n"
 		"\n"
-		"std::vector< std::string > FitParameter::patterns() const \n"
+		"std::vector< std::string > FitParameter::patterns() const\n"
 		"\n"
 		""},
 	 { (char *)"FitParameter_matchedParameterNames", _wrap_FitParameter_matchedParameterNames, METH_VARARGS, (char *)"\n"
@@ -115924,21 +116662,21 @@ static PyMethodDef SwigMethods[] = {
 		"getRealOutputData(size_t i_item=0) -> IntensityData\n"
 		"FitSuite_getRealOutputData(FitSuite self) -> IntensityData\n"
 		"\n"
-		"const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const \n"
+		"const OutputData< double > * FitSuite::getRealOutputData(size_t i_item=0) const\n"
 		"\n"
 		""},
 	 { (char *)"FitSuite_getSimulationOutputData", _wrap_FitSuite_getSimulationOutputData, METH_VARARGS, (char *)"\n"
 		"getSimulationOutputData(size_t i_item=0) -> IntensityData\n"
 		"FitSuite_getSimulationOutputData(FitSuite self) -> IntensityData\n"
 		"\n"
-		"const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const \n"
+		"const OutputData< double > * FitSuite::getSimulationOutputData(size_t i_item=0) const\n"
 		"\n"
 		""},
 	 { (char *)"FitSuite_getChiSquaredOutputData", _wrap_FitSuite_getChiSquaredOutputData, METH_VARARGS, (char *)"\n"
 		"getChiSquaredOutputData(size_t i_item=0) -> IntensityData\n"
 		"FitSuite_getChiSquaredOutputData(FitSuite self) -> IntensityData\n"
 		"\n"
-		"const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const \n"
+		"const OutputData< double > * FitSuite::getChiSquaredOutputData(size_t i_item=0) const\n"
 		"\n"
 		""},
 	 { (char *)"FitSuite_parametersToString", _wrap_FitSuite_parametersToString, METH_VARARGS, (char *)"\n"
@@ -116107,7 +116845,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FitSuiteObjects_size", _wrap_FitSuiteObjects_size, METH_VARARGS, (char *)"\n"
 		"FitSuiteObjects_size(FitSuiteObjects self) -> size_t\n"
 		"\n"
-		"size_t FitSuiteObjects::size() const \n"
+		"size_t FitSuiteObjects::size() const\n"
 		"\n"
 		""},
 	 { (char *)"FitSuiteObjects_begin", _wrap_FitSuiteObjects_begin, METH_VARARGS, (char *)"\n"
@@ -116223,8 +116961,6 @@ static PyMethodDef SwigMethods[] = {
 		"Complex Bessel function Bessel_J1(x)/x. \n"
 		"\n"
 		""},
-	 { (char *)"FORWARD_FFT_swigconstant", FORWARD_FFT_swigconstant, METH_VARARGS, NULL},
-	 { (char *)"BACKWARD_FFT_swigconstant", BACKWARD_FFT_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"FastFourierTransform", _wrap_FastFourierTransform, METH_VARARGS, (char *)"\n"
 		"FastFourierTransform(vector_complex_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
 		"FastFourierTransform(vdouble1d_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
@@ -116278,7 +117014,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"AdjustMinimizerStrategy_clone", _wrap_AdjustMinimizerStrategy_clone, METH_VARARGS, (char *)"\n"
 		"AdjustMinimizerStrategy_clone(AdjustMinimizerStrategy self) -> AdjustMinimizerStrategy\n"
 		"\n"
-		"AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const \n"
+		"AdjustMinimizerStrategy * AdjustMinimizerStrategy::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"AdjustMinimizerStrategy_setMinimizer", _wrap_AdjustMinimizerStrategy_setMinimizer, METH_VARARGS, (char *)"\n"
@@ -116545,7 +117281,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Crystal_clone", _wrap_Crystal_clone, METH_VARARGS, (char *)"\n"
 		"Crystal_clone(Crystal self) -> Crystal\n"
 		"\n"
-		"Crystal * Crystal::clone() const overridefinal\n"
+		"Crystal * Crystal::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -116553,7 +117289,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Crystal_accept", _wrap_Crystal_accept, METH_VARARGS, (char *)"\n"
 		"Crystal_accept(Crystal self, INodeVisitor visitor)\n"
 		"\n"
-		"void Crystal::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void Crystal::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -116561,7 +117297,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Crystal_createTotalFormFactor", _wrap_Crystal_createTotalFormFactor, METH_VARARGS, (char *)"\n"
 		"Crystal_createTotalFormFactor(Crystal self, IFormFactor meso_crystal_form_factor, IRotation p_rotation, kvector_t translation) -> IFormFactor\n"
 		"\n"
-		"IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const overridefinal\n"
+		"IFormFactor * Crystal::createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const override final\n"
 		"\n"
 		"Creates a total form factor for the mesocrystal with a specific shape and content The bulk content of the mesocrystal is encapsulated by the  IClusteredParticles object itself \n"
 		"\n"
@@ -116569,7 +117305,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Crystal_homogeneousRegions", _wrap_Crystal_homogeneousRegions, METH_VARARGS, (char *)"\n"
 		"Crystal_homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >\n"
 		"\n"
-		"std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const overridefinal\n"
+		"std::vector< HomogeneousRegion > Crystal::homogeneousRegions() const override final\n"
 		"\n"
 		"Creates region information with volumetric densities instead of absolute volume These densities need to be multiplied by the total mesocrystal volume \n"
 		"\n"
@@ -116578,7 +117314,7 @@ static PyMethodDef SwigMethods[] = {
 		"transformedLattice(IRotation p_rotation=None) -> Lattice\n"
 		"Crystal_transformedLattice(Crystal self) -> Lattice\n"
 		"\n"
-		"Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const \n"
+		"Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const\n"
 		"\n"
 		""},
 	 { (char *)"Crystal_setDWFactor", _wrap_Crystal_setDWFactor, METH_VARARGS, (char *)"\n"
@@ -116590,7 +117326,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Crystal_getChildren", _wrap_Crystal_getChildren, METH_VARARGS, (char *)"\n"
 		"Crystal_getChildren(Crystal self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > Crystal::getChildren() const overridefinal\n"
+		"std::vector< const INode * > Crystal::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -116714,13 +117450,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionGate_getMin", _wrap_DistributionGate_getMin, METH_VARARGS, (char *)"\n"
 		"DistributionGate_getMin(DistributionGate self) -> double\n"
 		"\n"
-		"double DistributionGate::getMin() const \n"
+		"double DistributionGate::getMin() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionGate_getMax", _wrap_DistributionGate_getMax, METH_VARARGS, (char *)"\n"
 		"DistributionGate_getMax(DistributionGate self) -> double\n"
 		"\n"
-		"double DistributionGate::getMax() const \n"
+		"double DistributionGate::getMax() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionGate_equidistantPoints", _wrap_DistributionGate_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -116787,7 +117523,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionLorentz_getHWHM", _wrap_DistributionLorentz_getHWHM, METH_VARARGS, (char *)"\n"
 		"DistributionLorentz_getHWHM(DistributionLorentz self) -> double\n"
 		"\n"
-		"double DistributionLorentz::getHWHM() const \n"
+		"double DistributionLorentz::getHWHM() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionLorentz_equidistantPoints", _wrap_DistributionLorentz_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -116854,7 +117590,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionGaussian_getStdDev", _wrap_DistributionGaussian_getStdDev, METH_VARARGS, (char *)"\n"
 		"DistributionGaussian_getStdDev(DistributionGaussian self) -> double\n"
 		"\n"
-		"double DistributionGaussian::getStdDev() const \n"
+		"double DistributionGaussian::getStdDev() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionGaussian_equidistantPoints", _wrap_DistributionGaussian_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -116921,13 +117657,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionLogNormal_getMedian", _wrap_DistributionLogNormal_getMedian, METH_VARARGS, (char *)"\n"
 		"DistributionLogNormal_getMedian(DistributionLogNormal self) -> double\n"
 		"\n"
-		"double DistributionLogNormal::getMedian() const \n"
+		"double DistributionLogNormal::getMedian() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionLogNormal_getScalePar", _wrap_DistributionLogNormal_getScalePar, METH_VARARGS, (char *)"\n"
 		"DistributionLogNormal_getScalePar(DistributionLogNormal self) -> double\n"
 		"\n"
-		"double DistributionLogNormal::getScalePar() const \n"
+		"double DistributionLogNormal::getScalePar() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionLogNormal_equidistantPoints", _wrap_DistributionLogNormal_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -117002,7 +117738,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionCosine_getSigma", _wrap_DistributionCosine_getSigma, METH_VARARGS, (char *)"\n"
 		"DistributionCosine_getSigma(DistributionCosine self) -> double\n"
 		"\n"
-		"double DistributionCosine::getSigma() const \n"
+		"double DistributionCosine::getSigma() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionCosine_equidistantPoints", _wrap_DistributionCosine_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -117069,19 +117805,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DistributionTrapezoid_getLeftWidth", _wrap_DistributionTrapezoid_getLeftWidth, METH_VARARGS, (char *)"\n"
 		"DistributionTrapezoid_getLeftWidth(DistributionTrapezoid self) -> double\n"
 		"\n"
-		"double DistributionTrapezoid::getLeftWidth() const \n"
+		"double DistributionTrapezoid::getLeftWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionTrapezoid_getMiddleWidth", _wrap_DistributionTrapezoid_getMiddleWidth, METH_VARARGS, (char *)"\n"
 		"DistributionTrapezoid_getMiddleWidth(DistributionTrapezoid self) -> double\n"
 		"\n"
-		"double DistributionTrapezoid::getMiddleWidth() const \n"
+		"double DistributionTrapezoid::getMiddleWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionTrapezoid_getRightWidth", _wrap_DistributionTrapezoid_getRightWidth, METH_VARARGS, (char *)"\n"
 		"DistributionTrapezoid_getRightWidth(DistributionTrapezoid self) -> double\n"
 		"\n"
-		"double DistributionTrapezoid::getRightWidth() const \n"
+		"double DistributionTrapezoid::getRightWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"DistributionTrapezoid_equidistantPoints", _wrap_DistributionTrapezoid_equidistantPoints, METH_VARARGS, (char *)"\n"
@@ -117144,19 +117880,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DetectorMask_isMasked", _wrap_DetectorMask_isMasked, METH_VARARGS, (char *)"\n"
 		"DetectorMask_isMasked(DetectorMask self, size_t index) -> bool\n"
 		"\n"
-		"bool DetectorMask::isMasked(size_t index) const \n"
+		"bool DetectorMask::isMasked(size_t index) const\n"
 		"\n"
 		""},
 	 { (char *)"DetectorMask_getMaskData", _wrap_DetectorMask_getMaskData, METH_VARARGS, (char *)"\n"
 		"DetectorMask_getMaskData(DetectorMask self) -> OutputData< bool > const *\n"
 		"\n"
-		"const OutputData<bool>* DetectorMask::getMaskData() const \n"
+		"const OutputData<bool>* DetectorMask::getMaskData() const\n"
 		"\n"
 		""},
 	 { (char *)"DetectorMask_createHistogram", _wrap_DetectorMask_createHistogram, METH_VARARGS, (char *)"\n"
 		"DetectorMask_createHistogram(DetectorMask self) -> Histogram2D\n"
 		"\n"
-		"Histogram2D * DetectorMask::createHistogram() const \n"
+		"Histogram2D * DetectorMask::createHistogram() const\n"
 		"\n"
 		""},
 	 { (char *)"DetectorMask_removeMasks", _wrap_DetectorMask_removeMasks, METH_VARARGS, (char *)"\n"
@@ -117178,19 +117914,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"DetectorMask_numberOfMaskedChannels", _wrap_DetectorMask_numberOfMaskedChannels, METH_VARARGS, (char *)"\n"
 		"DetectorMask_numberOfMaskedChannels(DetectorMask self) -> int\n"
 		"\n"
-		"int DetectorMask::numberOfMaskedChannels() const \n"
+		"int DetectorMask::numberOfMaskedChannels() const\n"
 		"\n"
 		""},
 	 { (char *)"DetectorMask_numberOfMasks", _wrap_DetectorMask_numberOfMasks, METH_VARARGS, (char *)"\n"
 		"DetectorMask_numberOfMasks(DetectorMask self) -> size_t\n"
 		"\n"
-		"size_t DetectorMask::numberOfMasks() const \n"
+		"size_t DetectorMask::numberOfMasks() const\n"
 		"\n"
 		""},
 	 { (char *)"DetectorMask_getMaskShape", _wrap_DetectorMask_getMaskShape, METH_VARARGS, (char *)"\n"
 		"DetectorMask_getMaskShape(DetectorMask self, size_t mask_index, bool & mask_value) -> IShape2D\n"
 		"\n"
-		"const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const \n"
+		"const IShape2D * DetectorMask::getMaskShape(size_t mask_index, bool &mask_value) const\n"
 		"\n"
 		""},
 	 { (char *)"delete_DetectorMask", _wrap_delete_DetectorMask, METH_VARARGS, (char *)"delete_DetectorMask(DetectorMask self)"},
@@ -117223,7 +117959,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Ellipse_clone", _wrap_Ellipse_clone, METH_VARARGS, (char *)"\n"
 		"Ellipse_clone(Ellipse self) -> Ellipse\n"
 		"\n"
-		"Ellipse* Ellipse::clone() const \n"
+		"Ellipse* Ellipse::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_contains", _wrap_Ellipse_contains, METH_VARARGS, (char *)"\n"
@@ -117238,31 +117974,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Ellipse_getCenterX", _wrap_Ellipse_getCenterX, METH_VARARGS, (char *)"\n"
 		"Ellipse_getCenterX(Ellipse self) -> double\n"
 		"\n"
-		"double Ellipse::getCenterX() const \n"
+		"double Ellipse::getCenterX() const\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_getCenterY", _wrap_Ellipse_getCenterY, METH_VARARGS, (char *)"\n"
 		"Ellipse_getCenterY(Ellipse self) -> double\n"
 		"\n"
-		"double Ellipse::getCenterY() const \n"
+		"double Ellipse::getCenterY() const\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_getRadiusX", _wrap_Ellipse_getRadiusX, METH_VARARGS, (char *)"\n"
 		"Ellipse_getRadiusX(Ellipse self) -> double\n"
 		"\n"
-		"double Ellipse::getRadiusX() const \n"
+		"double Ellipse::getRadiusX() const\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_getRadiusY", _wrap_Ellipse_getRadiusY, METH_VARARGS, (char *)"\n"
 		"Ellipse_getRadiusY(Ellipse self) -> double\n"
 		"\n"
-		"double Ellipse::getRadiusY() const \n"
+		"double Ellipse::getRadiusY() const\n"
 		"\n"
 		""},
 	 { (char *)"Ellipse_getTheta", _wrap_Ellipse_getTheta, METH_VARARGS, (char *)"\n"
 		"Ellipse_getTheta(Ellipse self) -> double\n"
 		"\n"
-		"double Ellipse::getTheta() const \n"
+		"double Ellipse::getTheta() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_Ellipse", _wrap_delete_Ellipse, METH_VARARGS, (char *)"delete_Ellipse(Ellipse self)"},
@@ -117282,7 +118018,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFTDecayFunction1D_decayLength", _wrap_IFTDecayFunction1D_decayLength, METH_VARARGS, (char *)"\n"
 		"IFTDecayFunction1D_decayLength(IFTDecayFunction1D self) -> double\n"
 		"\n"
-		"double IFTDecayFunction1D::decayLength() const \n"
+		"double IFTDecayFunction1D::decayLength() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_IFTDecayFunction1D", _wrap_delete_IFTDecayFunction1D, METH_VARARGS, (char *)"delete_IFTDecayFunction1D(IFTDecayFunction1D self)"},
@@ -117296,7 +118032,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction1DCauchy_clone", _wrap_FTDecayFunction1DCauchy_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction1DCauchy_clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy\n"
 		"\n"
-		"FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const \n"
+		"FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction1DCauchy_accept", _wrap_FTDecayFunction1DCauchy_accept, METH_VARARGS, (char *)"\n"
@@ -117324,7 +118060,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction1DGauss_clone", _wrap_FTDecayFunction1DGauss_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction1DGauss_clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss\n"
 		"\n"
-		"FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const \n"
+		"FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction1DGauss_accept", _wrap_FTDecayFunction1DGauss_accept, METH_VARARGS, (char *)"\n"
@@ -117352,7 +118088,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction1DTriangle_clone", _wrap_FTDecayFunction1DTriangle_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction1DTriangle_clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle\n"
 		"\n"
-		"FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const \n"
+		"FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction1DTriangle_accept", _wrap_FTDecayFunction1DTriangle_accept, METH_VARARGS, (char *)"\n"
@@ -117391,7 +118127,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction1DVoigt_clone", _wrap_FTDecayFunction1DVoigt_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction1DVoigt_clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt\n"
 		"\n"
-		"FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const \n"
+		"FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction1DVoigt_accept", _wrap_FTDecayFunction1DVoigt_accept, METH_VARARGS, (char *)"\n"
@@ -117411,7 +118147,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction1DVoigt_eEta", _wrap_FTDecayFunction1DVoigt_eEta, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction1DVoigt_eEta(FTDecayFunction1DVoigt self) -> double\n"
 		"\n"
-		"double FTDecayFunction1DVoigt::eEta() const \n"
+		"double FTDecayFunction1DVoigt::eEta() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FTDecayFunction1DVoigt", _wrap_delete_FTDecayFunction1DVoigt, METH_VARARGS, (char *)"delete_FTDecayFunction1DVoigt(FTDecayFunction1DVoigt self)"},
@@ -117490,7 +118226,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction2DCauchy_clone", _wrap_FTDecayFunction2DCauchy_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction2DCauchy_clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy\n"
 		"\n"
-		"FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const \n"
+		"FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction2DCauchy_accept", _wrap_FTDecayFunction2DCauchy_accept, METH_VARARGS, (char *)"\n"
@@ -117521,7 +118257,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction2DGauss_clone", _wrap_FTDecayFunction2DGauss_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction2DGauss_clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss\n"
 		"\n"
-		"FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const \n"
+		"FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction2DGauss_accept", _wrap_FTDecayFunction2DGauss_accept, METH_VARARGS, (char *)"\n"
@@ -117569,7 +118305,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction2DVoigt_clone", _wrap_FTDecayFunction2DVoigt_clone, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction2DVoigt_clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt\n"
 		"\n"
-		"FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const \n"
+		"FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"FTDecayFunction2DVoigt_accept", _wrap_FTDecayFunction2DVoigt_accept, METH_VARARGS, (char *)"\n"
@@ -117591,7 +118327,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDecayFunction2DVoigt_eta", _wrap_FTDecayFunction2DVoigt_eta, METH_VARARGS, (char *)"\n"
 		"FTDecayFunction2DVoigt_eta(FTDecayFunction2DVoigt self) -> double\n"
 		"\n"
-		"double FTDecayFunction2DVoigt::eta() const \n"
+		"double FTDecayFunction2DVoigt::eta() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FTDecayFunction2DVoigt", _wrap_delete_FTDecayFunction2DVoigt, METH_VARARGS, (char *)"delete_FTDecayFunction2DVoigt(FTDecayFunction2DVoigt self)"},
@@ -117619,7 +118355,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFTDistribution1D_omega", _wrap_IFTDistribution1D_omega, METH_VARARGS, (char *)"\n"
 		"IFTDistribution1D_omega(IFTDistribution1D self) -> double\n"
 		"\n"
-		"double IFTDistribution1D::omega() const \n"
+		"double IFTDistribution1D::omega() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_IFTDistribution1D", _wrap_delete_IFTDistribution1D, METH_VARARGS, (char *)"delete_IFTDistribution1D(IFTDistribution1D self)"},
@@ -117816,7 +118552,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDistribution1DVoigt_eta", _wrap_FTDistribution1DVoigt_eta, METH_VARARGS, (char *)"\n"
 		"FTDistribution1DVoigt_eta(FTDistribution1DVoigt self) -> double\n"
 		"\n"
-		"double FTDistribution1DVoigt::eta() const \n"
+		"double FTDistribution1DVoigt::eta() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FTDistribution1DVoigt", _wrap_delete_FTDistribution1DVoigt, METH_VARARGS, (char *)"delete_FTDistribution1DVoigt(FTDistribution1DVoigt self)"},
@@ -117836,25 +118572,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFTDistribution2D_gamma", _wrap_IFTDistribution2D_gamma, METH_VARARGS, (char *)"\n"
 		"IFTDistribution2D_gamma(IFTDistribution2D self) -> double\n"
 		"\n"
-		"double IFTDistribution2D::gamma() const \n"
+		"double IFTDistribution2D::gamma() const\n"
 		"\n"
 		""},
 	 { (char *)"IFTDistribution2D_delta", _wrap_IFTDistribution2D_delta, METH_VARARGS, (char *)"\n"
 		"IFTDistribution2D_delta(IFTDistribution2D self) -> double\n"
 		"\n"
-		"double IFTDistribution2D::delta() const \n"
+		"double IFTDistribution2D::delta() const\n"
 		"\n"
 		""},
 	 { (char *)"IFTDistribution2D_omegaX", _wrap_IFTDistribution2D_omegaX, METH_VARARGS, (char *)"\n"
 		"IFTDistribution2D_omegaX(IFTDistribution2D self) -> double\n"
 		"\n"
-		"double IFTDistribution2D::omegaX() const \n"
+		"double IFTDistribution2D::omegaX() const\n"
 		"\n"
 		""},
 	 { (char *)"IFTDistribution2D_omegaY", _wrap_IFTDistribution2D_omegaY, METH_VARARGS, (char *)"\n"
 		"IFTDistribution2D_omegaY(IFTDistribution2D self) -> double\n"
 		"\n"
-		"double IFTDistribution2D::omegaY() const \n"
+		"double IFTDistribution2D::omegaY() const\n"
 		"\n"
 		""},
 	 { (char *)"IFTDistribution2D_evaluate", _wrap_IFTDistribution2D_evaluate, METH_VARARGS, (char *)"\n"
@@ -118040,7 +118776,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FTDistribution2DVoigt_eta", _wrap_FTDistribution2DVoigt_eta, METH_VARARGS, (char *)"\n"
 		"FTDistribution2DVoigt_eta(FTDistribution2DVoigt self) -> double\n"
 		"\n"
-		"double FTDistribution2DVoigt::eta() const \n"
+		"double FTDistribution2DVoigt::eta() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FTDistribution2DVoigt", _wrap_delete_FTDistribution2DVoigt, METH_VARARGS, (char *)"delete_FTDistribution2DVoigt(FTDistribution2DVoigt self)"},
@@ -118117,7 +118853,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FixedBinAxis_getBinCenter", _wrap_FixedBinAxis_getBinCenter, METH_VARARGS, (char *)"\n"
 		"FixedBinAxis_getBinCenter(FixedBinAxis self, size_t index) -> double\n"
 		"\n"
-		"double FixedBinAxis::getBinCenter(size_t index) const \n"
+		"double FixedBinAxis::getBinCenter(size_t index) const\n"
 		"\n"
 		""},
 	 { (char *)"FixedBinAxis_findClosestIndex", _wrap_FixedBinAxis_findClosestIndex, METH_VARARGS, (char *)"\n"
@@ -118131,13 +118867,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FixedBinAxis_getBinCenters", _wrap_FixedBinAxis_getBinCenters, METH_VARARGS, (char *)"\n"
 		"FixedBinAxis_getBinCenters(FixedBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > FixedBinAxis::getBinCenters() const \n"
+		"std::vector< double > FixedBinAxis::getBinCenters() const\n"
 		"\n"
 		""},
 	 { (char *)"FixedBinAxis_getBinBoundaries", _wrap_FixedBinAxis_getBinBoundaries, METH_VARARGS, (char *)"\n"
 		"FixedBinAxis_getBinBoundaries(FixedBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > FixedBinAxis::getBinBoundaries() const \n"
+		"std::vector< double > FixedBinAxis::getBinBoundaries() const\n"
 		"\n"
 		""},
 	 { (char *)"FixedBinAxis_createClippedAxis", _wrap_FixedBinAxis_createClippedAxis, METH_VARARGS, (char *)"\n"
@@ -118498,25 +119234,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"PolyhedralEdge_E", _wrap_PolyhedralEdge_E, METH_VARARGS, (char *)"\n"
 		"PolyhedralEdge_E(PolyhedralEdge self) -> kvector_t\n"
 		"\n"
-		"kvector_t PolyhedralEdge::E() const \n"
+		"kvector_t PolyhedralEdge::E() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralEdge_R", _wrap_PolyhedralEdge_R, METH_VARARGS, (char *)"\n"
 		"PolyhedralEdge_R(PolyhedralEdge self) -> kvector_t\n"
 		"\n"
-		"kvector_t PolyhedralEdge::R() const \n"
+		"kvector_t PolyhedralEdge::R() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralEdge_qE", _wrap_PolyhedralEdge_qE, METH_VARARGS, (char *)"\n"
 		"PolyhedralEdge_qE(PolyhedralEdge self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t PolyhedralEdge::qE(cvector_t q) const \n"
+		"complex_t PolyhedralEdge::qE(cvector_t q) const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralEdge_qR", _wrap_PolyhedralEdge_qR, METH_VARARGS, (char *)"\n"
 		"PolyhedralEdge_qR(PolyhedralEdge self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t PolyhedralEdge::qR(cvector_t q) const \n"
+		"complex_t PolyhedralEdge::qR(cvector_t q) const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralEdge_contrib", _wrap_PolyhedralEdge_contrib, METH_VARARGS, (char *)"\n"
@@ -118552,25 +119288,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"PolyhedralFace_area", _wrap_PolyhedralFace_area, METH_VARARGS, (char *)"\n"
 		"PolyhedralFace_area(PolyhedralFace self) -> double\n"
 		"\n"
-		"double PolyhedralFace::area() const \n"
+		"double PolyhedralFace::area() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralFace_center", _wrap_PolyhedralFace_center, METH_VARARGS, (char *)"\n"
 		"PolyhedralFace_center(PolyhedralFace self) -> kvector_t\n"
 		"\n"
-		"kvector_t PolyhedralFace::center() const \n"
+		"kvector_t PolyhedralFace::center() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralFace_pyramidalVolume", _wrap_PolyhedralFace_pyramidalVolume, METH_VARARGS, (char *)"\n"
 		"PolyhedralFace_pyramidalVolume(PolyhedralFace self) -> double\n"
 		"\n"
-		"double PolyhedralFace::pyramidalVolume() const \n"
+		"double PolyhedralFace::pyramidalVolume() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralFace_radius3d", _wrap_PolyhedralFace_radius3d, METH_VARARGS, (char *)"\n"
 		"PolyhedralFace_radius3d(PolyhedralFace self) -> double\n"
 		"\n"
-		"double PolyhedralFace::radius3d() const \n"
+		"double PolyhedralFace::radius3d() const\n"
 		"\n"
 		""},
 	 { (char *)"PolyhedralFace_normalProjectionConj", _wrap_PolyhedralFace_normalProjectionConj, METH_VARARGS, (char *)"\n"
@@ -118618,7 +119354,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_evaluate_for_q", _wrap_FormFactorPolyhedron_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_evaluate_for_q(FormFactorPolyhedron self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorPolyhedron::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. \n"
 		"\n"
@@ -118634,7 +119370,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_volume", _wrap_FormFactorPolyhedron_volume, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_volume(FormFactorPolyhedron self) -> double\n"
 		"\n"
-		"double FormFactorPolyhedron::volume() const overridefinal\n"
+		"double FormFactorPolyhedron::volume() const override final\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -118642,7 +119378,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_radialExtension", _wrap_FormFactorPolyhedron_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_radialExtension(FormFactorPolyhedron self) -> double\n"
 		"\n"
-		"double FormFactorPolyhedron::radialExtension() const overridefinal\n"
+		"double FormFactorPolyhedron::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -118660,7 +119396,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalPrism_evaluate_for_q", _wrap_FormFactorPolygonalPrism_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_evaluate_for_q(FormFactorPolygonalPrism self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorPolygonalPrism::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns the form factor F(q) of this polyhedron, respecting the offset height/2. \n"
 		"\n"
@@ -118668,7 +119404,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalPrism_volume", _wrap_FormFactorPolygonalPrism_volume, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_volume(FormFactorPolygonalPrism self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalPrism::volume() const overridefinal\n"
+		"double FormFactorPolygonalPrism::volume() const override final\n"
 		"\n"
 		"Returns the volume of this prism. \n"
 		"\n"
@@ -118676,13 +119412,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalPrism_getHeight", _wrap_FormFactorPolygonalPrism_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_getHeight(FormFactorPolygonalPrism self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalPrism::getHeight() const \n"
+		"double FormFactorPolygonalPrism::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorPolygonalPrism_radialExtension", _wrap_FormFactorPolygonalPrism_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_radialExtension(FormFactorPolygonalPrism self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalPrism::radialExtension() const overridefinal\n"
+		"double FormFactorPolygonalPrism::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -118692,7 +119428,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalSurface_evaluate_for_q", _wrap_FormFactorPolygonalSurface_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalSurface_evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorPolygonalSurface::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -118708,7 +119444,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalSurface_radialExtension", _wrap_FormFactorPolygonalSurface_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalSurface_radialExtension(FormFactorPolygonalSurface self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalSurface::radialExtension() const overridefinal\n"
+		"double FormFactorPolygonalSurface::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -118741,7 +119477,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorAnisoPyramid_clone", _wrap_FormFactorAnisoPyramid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid\n"
 		"\n"
-		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal\n"
+		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -118749,7 +119485,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorAnisoPyramid_accept", _wrap_FormFactorAnisoPyramid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_accept(FormFactorAnisoPyramid self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorAnisoPyramid::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -118757,25 +119493,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorAnisoPyramid_getLength", _wrap_FormFactorAnisoPyramid_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_getLength(FormFactorAnisoPyramid self) -> double\n"
 		"\n"
-		"double FormFactorAnisoPyramid::getLength() const \n"
+		"double FormFactorAnisoPyramid::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorAnisoPyramid_getWidth", _wrap_FormFactorAnisoPyramid_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_getWidth(FormFactorAnisoPyramid self) -> double\n"
 		"\n"
-		"double FormFactorAnisoPyramid::getWidth() const \n"
+		"double FormFactorAnisoPyramid::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorAnisoPyramid_getHeight", _wrap_FormFactorAnisoPyramid_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_getHeight(FormFactorAnisoPyramid self) -> double\n"
 		"\n"
-		"double FormFactorAnisoPyramid::getHeight() const \n"
+		"double FormFactorAnisoPyramid::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorAnisoPyramid_getAlpha", _wrap_FormFactorAnisoPyramid_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_getAlpha(FormFactorAnisoPyramid self) -> double\n"
 		"\n"
-		"double FormFactorAnisoPyramid::getAlpha() const \n"
+		"double FormFactorAnisoPyramid::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorAnisoPyramid", _wrap_delete_FormFactorAnisoPyramid, METH_VARARGS, (char *)"delete_FormFactorAnisoPyramid(FormFactorAnisoPyramid self)"},
@@ -118803,7 +119539,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_clone", _wrap_FormFactorBox_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_clone(FormFactorBox self) -> FormFactorBox\n"
 		"\n"
-		"FormFactorBox* FormFactorBox::clone() const overridefinal\n"
+		"FormFactorBox* FormFactorBox::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -118811,7 +119547,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_accept", _wrap_FormFactorBox_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_accept(FormFactorBox self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorBox::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorBox::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -118819,25 +119555,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_getLength", _wrap_FormFactorBox_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_getLength(FormFactorBox self) -> double\n"
 		"\n"
-		"double FormFactorBox::getLength() const \n"
+		"double FormFactorBox::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorBox_getHeight", _wrap_FormFactorBox_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_getHeight(FormFactorBox self) -> double\n"
 		"\n"
-		"double FormFactorBox::getHeight() const \n"
+		"double FormFactorBox::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorBox_getWidth", _wrap_FormFactorBox_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_getWidth(FormFactorBox self) -> double\n"
 		"\n"
-		"double FormFactorBox::getWidth() const \n"
+		"double FormFactorBox::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorBox_radialExtension", _wrap_FormFactorBox_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_radialExtension(FormFactorBox self) -> double\n"
 		"\n"
-		"double FormFactorBox::radialExtension() const overridefinal\n"
+		"double FormFactorBox::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -118845,7 +119581,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_evaluate_for_q", _wrap_FormFactorBox_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_evaluate_for_q(FormFactorBox self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorBox::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorBox::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -118875,7 +119611,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_clone", _wrap_FormFactorCone_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_clone(FormFactorCone self) -> FormFactorCone\n"
 		"\n"
-		"FormFactorCone* FormFactorCone::clone() const overridefinal\n"
+		"FormFactorCone* FormFactorCone::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -118883,7 +119619,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_accept", _wrap_FormFactorCone_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_accept(FormFactorCone self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorCone::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorCone::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -118891,25 +119627,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_getHeight", _wrap_FormFactorCone_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_getHeight(FormFactorCone self) -> double\n"
 		"\n"
-		"double FormFactorCone::getHeight() const \n"
+		"double FormFactorCone::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCone_getAlpha", _wrap_FormFactorCone_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_getAlpha(FormFactorCone self) -> double\n"
 		"\n"
-		"double FormFactorCone::getAlpha() const \n"
+		"double FormFactorCone::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCone_getRadius", _wrap_FormFactorCone_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_getRadius(FormFactorCone self) -> double\n"
 		"\n"
-		"double FormFactorCone::getRadius() const \n"
+		"double FormFactorCone::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCone_radialExtension", _wrap_FormFactorCone_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_radialExtension(FormFactorCone self) -> double\n"
 		"\n"
-		"double FormFactorCone::radialExtension() const overridefinal\n"
+		"double FormFactorCone::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -118917,7 +119653,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_evaluate_for_q", _wrap_FormFactorCone_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_evaluate_for_q(FormFactorCone self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCone::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorCone::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -118947,7 +119683,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone6_clone", _wrap_FormFactorCone6_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_clone(FormFactorCone6 self) -> FormFactorCone6\n"
 		"\n"
-		"FormFactorCone6* FormFactorCone6::clone() const overridefinal\n"
+		"FormFactorCone6* FormFactorCone6::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -118955,7 +119691,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone6_accept", _wrap_FormFactorCone6_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_accept(FormFactorCone6 self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorCone6::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorCone6::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -118963,19 +119699,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone6_getBaseEdge", _wrap_FormFactorCone6_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_getBaseEdge(FormFactorCone6 self) -> double\n"
 		"\n"
-		"double FormFactorCone6::getBaseEdge() const \n"
+		"double FormFactorCone6::getBaseEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCone6_getHeight", _wrap_FormFactorCone6_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_getHeight(FormFactorCone6 self) -> double\n"
 		"\n"
-		"double FormFactorCone6::getHeight() const \n"
+		"double FormFactorCone6::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCone6_getAlpha", _wrap_FormFactorCone6_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_getAlpha(FormFactorCone6 self) -> double\n"
 		"\n"
-		"double FormFactorCone6::getAlpha() const \n"
+		"double FormFactorCone6::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorCone6", _wrap_delete_FormFactorCone6, METH_VARARGS, (char *)"delete_FormFactorCone6(FormFactorCone6 self)"},
@@ -118989,13 +119725,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_FormFactorCrystal", _wrap_delete_FormFactorCrystal, METH_VARARGS, (char *)"\n"
 		"delete_FormFactorCrystal(FormFactorCrystal self)\n"
 		"\n"
-		"FormFactorCrystal::~FormFactorCrystal() overridefinal\n"
+		"FormFactorCrystal::~FormFactorCrystal() override final\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCrystal_clone", _wrap_FormFactorCrystal_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_clone(FormFactorCrystal self) -> FormFactorCrystal\n"
 		"\n"
-		"FormFactorCrystal* FormFactorCrystal::clone() const overridefinal\n"
+		"FormFactorCrystal* FormFactorCrystal::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119003,7 +119739,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_accept", _wrap_FormFactorCrystal_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_accept(FormFactorCrystal self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorCrystal::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorCrystal::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119019,7 +119755,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_volume", _wrap_FormFactorCrystal_volume, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_volume(FormFactorCrystal self) -> double\n"
 		"\n"
-		"double FormFactorCrystal::volume() const overridefinal\n"
+		"double FormFactorCrystal::volume() const override final\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -119027,7 +119763,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_radialExtension", _wrap_FormFactorCrystal_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_radialExtension(FormFactorCrystal self) -> double\n"
 		"\n"
-		"double FormFactorCrystal::radialExtension() const overridefinal\n"
+		"double FormFactorCrystal::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119043,7 +119779,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_topZ", _wrap_FormFactorCrystal_topZ, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_topZ(FormFactorCrystal self, IRotation rotation) -> double\n"
 		"\n"
-		"double FormFactorCrystal::topZ(const IRotation &rotation) const overridefinal\n"
+		"double FormFactorCrystal::topZ(const IRotation &rotation) const override final\n"
 		"\n"
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
@@ -119051,7 +119787,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_evaluate", _wrap_FormFactorCrystal_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
+		"complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -119083,7 +119819,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCuboctahedron_clone", _wrap_FormFactorCuboctahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron\n"
 		"\n"
-		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal\n"
+		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119091,7 +119827,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCuboctahedron_accept", _wrap_FormFactorCuboctahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_accept(FormFactorCuboctahedron self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorCuboctahedron::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119099,25 +119835,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCuboctahedron_getLength", _wrap_FormFactorCuboctahedron_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_getLength(FormFactorCuboctahedron self) -> double\n"
 		"\n"
-		"double FormFactorCuboctahedron::getLength() const \n"
+		"double FormFactorCuboctahedron::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCuboctahedron_getHeight", _wrap_FormFactorCuboctahedron_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_getHeight(FormFactorCuboctahedron self) -> double\n"
 		"\n"
-		"double FormFactorCuboctahedron::getHeight() const \n"
+		"double FormFactorCuboctahedron::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCuboctahedron_getHeightRatio", _wrap_FormFactorCuboctahedron_getHeightRatio, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_getHeightRatio(FormFactorCuboctahedron self) -> double\n"
 		"\n"
-		"double FormFactorCuboctahedron::getHeightRatio() const \n"
+		"double FormFactorCuboctahedron::getHeightRatio() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCuboctahedron_getAlpha", _wrap_FormFactorCuboctahedron_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_getAlpha(FormFactorCuboctahedron self) -> double\n"
 		"\n"
-		"double FormFactorCuboctahedron::getAlpha() const \n"
+		"double FormFactorCuboctahedron::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorCuboctahedron", _wrap_delete_FormFactorCuboctahedron, METH_VARARGS, (char *)"delete_FormFactorCuboctahedron(FormFactorCuboctahedron self)"},
@@ -119142,7 +119878,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_clone", _wrap_FormFactorCylinder_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_clone(FormFactorCylinder self) -> FormFactorCylinder\n"
 		"\n"
-		"FormFactorCylinder* FormFactorCylinder::clone() const overridefinal\n"
+		"FormFactorCylinder* FormFactorCylinder::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119150,7 +119886,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_accept", _wrap_FormFactorCylinder_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_accept(FormFactorCylinder self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorCylinder::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorCylinder::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119158,19 +119894,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_getHeight", _wrap_FormFactorCylinder_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_getHeight(FormFactorCylinder self) -> double\n"
 		"\n"
-		"double FormFactorCylinder::getHeight() const \n"
+		"double FormFactorCylinder::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCylinder_getRadius", _wrap_FormFactorCylinder_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_getRadius(FormFactorCylinder self) -> double\n"
 		"\n"
-		"double FormFactorCylinder::getRadius() const \n"
+		"double FormFactorCylinder::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCylinder_radialExtension", _wrap_FormFactorCylinder_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_radialExtension(FormFactorCylinder self) -> double\n"
 		"\n"
-		"double FormFactorCylinder::radialExtension() const overridefinal\n"
+		"double FormFactorCylinder::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119178,7 +119914,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_evaluate_for_q", _wrap_FormFactorCylinder_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_evaluate_for_q(FormFactorCylinder self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorCylinder::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119197,7 +119933,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_clone", _wrap_FormFactorDecoratorDebyeWaller_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_clone(FormFactorDecoratorDebyeWaller self) -> FormFactorDecoratorDebyeWaller\n"
 		"\n"
-		"FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal\n"
+		"FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119205,7 +119941,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_accept", _wrap_FormFactorDecoratorDebyeWaller_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_accept(FormFactorDecoratorDebyeWaller self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorDecoratorDebyeWaller::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119213,7 +119949,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_evaluate", _wrap_FormFactorDecoratorDebyeWaller_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_evaluate(FormFactorDecoratorDebyeWaller self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
+		"complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -119245,7 +119981,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDodecahedron_clone", _wrap_FormFactorDodecahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorDodecahedron_clone(FormFactorDodecahedron self) -> FormFactorDodecahedron\n"
 		"\n"
-		"FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal\n"
+		"FormFactorDodecahedron* FormFactorDodecahedron::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119253,7 +119989,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDodecahedron_accept", _wrap_FormFactorDodecahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorDodecahedron_accept(FormFactorDodecahedron self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorDodecahedron::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorDodecahedron::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119261,7 +119997,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDodecahedron_getEdge", _wrap_FormFactorDodecahedron_getEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorDodecahedron_getEdge(FormFactorDodecahedron self) -> double\n"
 		"\n"
-		"double FormFactorDodecahedron::getEdge() const \n"
+		"double FormFactorDodecahedron::getEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorDodecahedron", _wrap_delete_FormFactorDodecahedron, METH_VARARGS, (char *)"delete_FormFactorDodecahedron(FormFactorDodecahedron self)"},
@@ -119275,7 +120011,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDot_clone", _wrap_FormFactorDot_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorDot_clone(FormFactorDot self) -> FormFactorDot\n"
 		"\n"
-		"FormFactorDot* FormFactorDot::clone() const overridefinal\n"
+		"FormFactorDot* FormFactorDot::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119283,7 +120019,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDot_accept", _wrap_FormFactorDot_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorDot_accept(FormFactorDot self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorDot::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorDot::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119291,7 +120027,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDot_radialExtension", _wrap_FormFactorDot_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorDot_radialExtension(FormFactorDot self) -> double\n"
 		"\n"
-		"double FormFactorDot::radialExtension() const overridefinal\n"
+		"double FormFactorDot::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119299,7 +120035,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDot_evaluate_for_q", _wrap_FormFactorDot_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorDot_evaluate_for_q(FormFactorDot self, cvector_t arg3) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorDot::evaluate_for_q(cvector_t) const overridefinal\n"
+		"complex_t FormFactorDot::evaluate_for_q(cvector_t) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119329,7 +120065,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_clone", _wrap_FormFactorEllipsoidalCylinder_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder\n"
 		"\n"
-		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal\n"
+		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119337,7 +120073,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_accept", _wrap_FormFactorEllipsoidalCylinder_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_accept(FormFactorEllipsoidalCylinder self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorEllipsoidalCylinder::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119345,25 +120081,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_getRadiusX", _wrap_FormFactorEllipsoidalCylinder_getRadiusX, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_getRadiusX(FormFactorEllipsoidalCylinder self) -> double\n"
 		"\n"
-		"double FormFactorEllipsoidalCylinder::getRadiusX() const \n"
+		"double FormFactorEllipsoidalCylinder::getRadiusX() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorEllipsoidalCylinder_getRadiusY", _wrap_FormFactorEllipsoidalCylinder_getRadiusY, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_getRadiusY(FormFactorEllipsoidalCylinder self) -> double\n"
 		"\n"
-		"double FormFactorEllipsoidalCylinder::getRadiusY() const \n"
+		"double FormFactorEllipsoidalCylinder::getRadiusY() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorEllipsoidalCylinder_getHeight", _wrap_FormFactorEllipsoidalCylinder_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_getHeight(FormFactorEllipsoidalCylinder self) -> double\n"
 		"\n"
-		"double FormFactorEllipsoidalCylinder::getHeight() const \n"
+		"double FormFactorEllipsoidalCylinder::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorEllipsoidalCylinder_radialExtension", _wrap_FormFactorEllipsoidalCylinder_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_radialExtension(FormFactorEllipsoidalCylinder self) -> double\n"
 		"\n"
-		"double FormFactorEllipsoidalCylinder::radialExtension() const overridefinal\n"
+		"double FormFactorEllipsoidalCylinder::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119371,7 +120107,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_evaluate_for_q", _wrap_FormFactorEllipsoidalCylinder_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_evaluate_for_q(FormFactorEllipsoidalCylinder self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119395,7 +120131,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_clone", _wrap_FormFactorFullSphere_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_clone(FormFactorFullSphere self) -> FormFactorFullSphere\n"
 		"\n"
-		"FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal\n"
+		"FormFactorFullSphere* FormFactorFullSphere::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119403,7 +120139,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_accept", _wrap_FormFactorFullSphere_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_accept(FormFactorFullSphere self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorFullSphere::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorFullSphere::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119411,13 +120147,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_getRadius", _wrap_FormFactorFullSphere_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_getRadius(FormFactorFullSphere self) -> double\n"
 		"\n"
-		"double FormFactorFullSphere::getRadius() const \n"
+		"double FormFactorFullSphere::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorFullSphere_radialExtension", _wrap_FormFactorFullSphere_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_radialExtension(FormFactorFullSphere self) -> double\n"
 		"\n"
-		"double FormFactorFullSphere::radialExtension() const overridefinal\n"
+		"double FormFactorFullSphere::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119425,7 +120161,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_bottomZ", _wrap_FormFactorFullSphere_bottomZ, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_bottomZ(FormFactorFullSphere self, IRotation rotation) -> double\n"
 		"\n"
-		"double FormFactorFullSphere::bottomZ(const IRotation &rotation) const overridefinal\n"
+		"double FormFactorFullSphere::bottomZ(const IRotation &rotation) const override final\n"
 		"\n"
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
@@ -119433,7 +120169,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_topZ", _wrap_FormFactorFullSphere_topZ, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_topZ(FormFactorFullSphere self, IRotation rotation) -> double\n"
 		"\n"
-		"double FormFactorFullSphere::topZ(const IRotation &rotation) const overridefinal\n"
+		"double FormFactorFullSphere::topZ(const IRotation &rotation) const override final\n"
 		"\n"
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
@@ -119441,7 +120177,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_evaluate_for_q", _wrap_FormFactorFullSphere_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_evaluate_for_q(FormFactorFullSphere self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorFullSphere::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119468,7 +120204,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_clone", _wrap_FormFactorFullSpheroid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid\n"
 		"\n"
-		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal\n"
+		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119476,7 +120212,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_accept", _wrap_FormFactorFullSpheroid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_accept(FormFactorFullSpheroid self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorFullSpheroid::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119484,19 +120220,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_getHeight", _wrap_FormFactorFullSpheroid_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_getHeight(FormFactorFullSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorFullSpheroid::getHeight() const \n"
+		"double FormFactorFullSpheroid::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorFullSpheroid_getRadius", _wrap_FormFactorFullSpheroid_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_getRadius(FormFactorFullSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorFullSpheroid::getRadius() const \n"
+		"double FormFactorFullSpheroid::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorFullSpheroid_radialExtension", _wrap_FormFactorFullSpheroid_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_radialExtension(FormFactorFullSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorFullSpheroid::radialExtension() const overridefinal\n"
+		"double FormFactorFullSpheroid::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119504,7 +120240,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_evaluate_for_q", _wrap_FormFactorFullSpheroid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_evaluate_for_q(FormFactorFullSpheroid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorFullSpheroid::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119521,7 +120257,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_clone", _wrap_FormFactorGauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_clone(FormFactorGauss self) -> FormFactorGauss\n"
 		"\n"
-		"FormFactorGauss* FormFactorGauss::clone() const overridefinal\n"
+		"FormFactorGauss* FormFactorGauss::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119529,7 +120265,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_accept", _wrap_FormFactorGauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_accept(FormFactorGauss self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorGauss::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorGauss::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119537,19 +120273,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_getWidth", _wrap_FormFactorGauss_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_getWidth(FormFactorGauss self) -> double\n"
 		"\n"
-		"double FormFactorGauss::getWidth() const \n"
+		"double FormFactorGauss::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorGauss_getHeight", _wrap_FormFactorGauss_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_getHeight(FormFactorGauss self) -> double\n"
 		"\n"
-		"double FormFactorGauss::getHeight() const \n"
+		"double FormFactorGauss::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorGauss_radialExtension", _wrap_FormFactorGauss_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_radialExtension(FormFactorGauss self) -> double\n"
 		"\n"
-		"double FormFactorGauss::radialExtension() const overridefinal\n"
+		"double FormFactorGauss::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119557,7 +120293,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_evaluate_for_q", _wrap_FormFactorGauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorGauss::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119593,7 +120329,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_clone", _wrap_FormFactorHemiEllipsoid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid\n"
 		"\n"
-		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal\n"
+		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119601,7 +120337,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_accept", _wrap_FormFactorHemiEllipsoid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_accept(FormFactorHemiEllipsoid self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorHemiEllipsoid::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119609,25 +120345,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_getHeight", _wrap_FormFactorHemiEllipsoid_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_getHeight(FormFactorHemiEllipsoid self) -> double\n"
 		"\n"
-		"double FormFactorHemiEllipsoid::getHeight() const \n"
+		"double FormFactorHemiEllipsoid::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorHemiEllipsoid_getRadiusX", _wrap_FormFactorHemiEllipsoid_getRadiusX, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_getRadiusX(FormFactorHemiEllipsoid self) -> double\n"
 		"\n"
-		"double FormFactorHemiEllipsoid::getRadiusX() const \n"
+		"double FormFactorHemiEllipsoid::getRadiusX() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorHemiEllipsoid_getRadiusY", _wrap_FormFactorHemiEllipsoid_getRadiusY, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_getRadiusY(FormFactorHemiEllipsoid self) -> double\n"
 		"\n"
-		"double FormFactorHemiEllipsoid::getRadiusY() const \n"
+		"double FormFactorHemiEllipsoid::getRadiusY() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorHemiEllipsoid_radialExtension", _wrap_FormFactorHemiEllipsoid_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_radialExtension(FormFactorHemiEllipsoid self) -> double\n"
 		"\n"
-		"double FormFactorHemiEllipsoid::radialExtension() const overridefinal\n"
+		"double FormFactorHemiEllipsoid::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119635,7 +120371,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_evaluate_for_q", _wrap_FormFactorHemiEllipsoid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_evaluate_for_q(FormFactorHemiEllipsoid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorHemiEllipsoid::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119658,7 +120394,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorIcosahedron_clone", _wrap_FormFactorIcosahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorIcosahedron_clone(FormFactorIcosahedron self) -> FormFactorIcosahedron\n"
 		"\n"
-		"FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal\n"
+		"FormFactorIcosahedron* FormFactorIcosahedron::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119666,7 +120402,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorIcosahedron_accept", _wrap_FormFactorIcosahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorIcosahedron_accept(FormFactorIcosahedron self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorIcosahedron::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorIcosahedron::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119674,7 +120410,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorIcosahedron_getEdge", _wrap_FormFactorIcosahedron_getEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorIcosahedron_getEdge(FormFactorIcosahedron self) -> double\n"
 		"\n"
-		"double FormFactorIcosahedron::getEdge() const \n"
+		"double FormFactorIcosahedron::getEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorIcosahedron", _wrap_delete_FormFactorIcosahedron, METH_VARARGS, (char *)"delete_FormFactorIcosahedron(FormFactorIcosahedron self)"},
@@ -119702,7 +120438,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_clone", _wrap_FormFactorLongBoxGauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss\n"
 		"\n"
-		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal\n"
+		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119710,7 +120446,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_accept", _wrap_FormFactorLongBoxGauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_accept(FormFactorLongBoxGauss self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongBoxGauss::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119718,25 +120454,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_getLength", _wrap_FormFactorLongBoxGauss_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_getLength(FormFactorLongBoxGauss self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxGauss::getLength() const \n"
+		"double FormFactorLongBoxGauss::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxGauss_getHeight", _wrap_FormFactorLongBoxGauss_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_getHeight(FormFactorLongBoxGauss self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxGauss::getHeight() const \n"
+		"double FormFactorLongBoxGauss::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxGauss_getWidth", _wrap_FormFactorLongBoxGauss_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_getWidth(FormFactorLongBoxGauss self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxGauss::getWidth() const \n"
+		"double FormFactorLongBoxGauss::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxGauss_radialExtension", _wrap_FormFactorLongBoxGauss_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_radialExtension(FormFactorLongBoxGauss self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxGauss::radialExtension() const overridefinal\n"
+		"double FormFactorLongBoxGauss::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119744,7 +120480,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_evaluate_for_q", _wrap_FormFactorLongBoxGauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_evaluate_for_q(FormFactorLongBoxGauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongBoxGauss::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119774,7 +120510,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_clone", _wrap_FormFactorLongBoxLorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz\n"
 		"\n"
-		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal\n"
+		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119782,7 +120518,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_accept", _wrap_FormFactorLongBoxLorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_accept(FormFactorLongBoxLorentz self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongBoxLorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119790,25 +120526,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_getLength", _wrap_FormFactorLongBoxLorentz_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_getLength(FormFactorLongBoxLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxLorentz::getLength() const \n"
+		"double FormFactorLongBoxLorentz::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxLorentz_getHeight", _wrap_FormFactorLongBoxLorentz_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_getHeight(FormFactorLongBoxLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxLorentz::getHeight() const \n"
+		"double FormFactorLongBoxLorentz::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxLorentz_getWidth", _wrap_FormFactorLongBoxLorentz_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_getWidth(FormFactorLongBoxLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxLorentz::getWidth() const \n"
+		"double FormFactorLongBoxLorentz::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongBoxLorentz_radialExtension", _wrap_FormFactorLongBoxLorentz_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_radialExtension(FormFactorLongBoxLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxLorentz::radialExtension() const overridefinal\n"
+		"double FormFactorLongBoxLorentz::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119816,7 +120552,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_evaluate_for_q", _wrap_FormFactorLongBoxLorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_evaluate_for_q(FormFactorLongBoxLorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongBoxLorentz::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -119846,7 +120582,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_clone", _wrap_FormFactorLongRipple1Gauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss\n"
 		"\n"
-		"FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal\n"
+		"FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119854,7 +120590,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_accept", _wrap_FormFactorLongRipple1Gauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_accept(FormFactorLongRipple1Gauss self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongRipple1Gauss::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119862,25 +120598,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_getHeight", _wrap_FormFactorLongRipple1Gauss_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_getHeight(FormFactorLongRipple1Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Gauss::getHeight() const \n"
+		"double FormFactorLongRipple1Gauss::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Gauss_getWidth", _wrap_FormFactorLongRipple1Gauss_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_getWidth(FormFactorLongRipple1Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Gauss::getWidth() const \n"
+		"double FormFactorLongRipple1Gauss::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Gauss_getLength", _wrap_FormFactorLongRipple1Gauss_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_getLength(FormFactorLongRipple1Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Gauss::getLength() const \n"
+		"double FormFactorLongRipple1Gauss::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Gauss_radialExtension", _wrap_FormFactorLongRipple1Gauss_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_radialExtension(FormFactorLongRipple1Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Gauss::radialExtension() const overridefinal\n"
+		"double FormFactorLongRipple1Gauss::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119888,7 +120624,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_evaluate_for_q", _wrap_FormFactorLongRipple1Gauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongRipple1Gauss::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -119918,7 +120654,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_clone", _wrap_FormFactorLongRipple1Lorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz\n"
 		"\n"
-		"FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal\n"
+		"FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -119926,7 +120662,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_accept", _wrap_FormFactorLongRipple1Lorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_accept(FormFactorLongRipple1Lorentz self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongRipple1Lorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -119934,7 +120670,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_radialExtension", _wrap_FormFactorLongRipple1Lorentz_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_radialExtension(FormFactorLongRipple1Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Lorentz::radialExtension() const overridefinal\n"
+		"double FormFactorLongRipple1Lorentz::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -119942,25 +120678,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_getHeight", _wrap_FormFactorLongRipple1Lorentz_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_getHeight(FormFactorLongRipple1Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Lorentz::getHeight() const \n"
+		"double FormFactorLongRipple1Lorentz::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Lorentz_getWidth", _wrap_FormFactorLongRipple1Lorentz_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_getWidth(FormFactorLongRipple1Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Lorentz::getWidth() const \n"
+		"double FormFactorLongRipple1Lorentz::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Lorentz_getLength", _wrap_FormFactorLongRipple1Lorentz_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_getLength(FormFactorLongRipple1Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Lorentz::getLength() const \n"
+		"double FormFactorLongRipple1Lorentz::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple1Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple1Lorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -119993,7 +120729,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_clone", _wrap_FormFactorLongRipple2Gauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss\n"
 		"\n"
-		"FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal\n"
+		"FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120001,7 +120737,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_accept", _wrap_FormFactorLongRipple2Gauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_accept(FormFactorLongRipple2Gauss self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongRipple2Gauss::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120009,31 +120745,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_getHeight", _wrap_FormFactorLongRipple2Gauss_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_getHeight(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::getHeight() const \n"
+		"double FormFactorLongRipple2Gauss::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Gauss_getWidth", _wrap_FormFactorLongRipple2Gauss_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_getWidth(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::getWidth() const \n"
+		"double FormFactorLongRipple2Gauss::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Gauss_getLength", _wrap_FormFactorLongRipple2Gauss_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_getLength(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::getLength() const \n"
+		"double FormFactorLongRipple2Gauss::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Gauss_getAsymmetry", _wrap_FormFactorLongRipple2Gauss_getAsymmetry, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_getAsymmetry(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::getAsymmetry() const \n"
+		"double FormFactorLongRipple2Gauss::getAsymmetry() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Gauss_radialExtension", _wrap_FormFactorLongRipple2Gauss_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_radialExtension(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::radialExtension() const overridefinal\n"
+		"double FormFactorLongRipple2Gauss::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120041,7 +120777,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_evaluate_for_q", _wrap_FormFactorLongRipple2Gauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongRipple2Gauss::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -120072,7 +120808,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_clone", _wrap_FormFactorLongRipple2Lorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz\n"
 		"\n"
-		"FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal\n"
+		"FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120080,7 +120816,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_accept", _wrap_FormFactorLongRipple2Lorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_accept(FormFactorLongRipple2Lorentz self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLongRipple2Lorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120088,31 +120824,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_getHeight", _wrap_FormFactorLongRipple2Lorentz_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_getHeight(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::getHeight() const \n"
+		"double FormFactorLongRipple2Lorentz::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Lorentz_getWidth", _wrap_FormFactorLongRipple2Lorentz_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_getWidth(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::getWidth() const \n"
+		"double FormFactorLongRipple2Lorentz::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Lorentz_getLength", _wrap_FormFactorLongRipple2Lorentz_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_getLength(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::getLength() const \n"
+		"double FormFactorLongRipple2Lorentz::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Lorentz_getAsymmetry", _wrap_FormFactorLongRipple2Lorentz_getAsymmetry, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_getAsymmetry(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::getAsymmetry() const \n"
+		"double FormFactorLongRipple2Lorentz::getAsymmetry() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLongRipple2Lorentz_radialExtension", _wrap_FormFactorLongRipple2Lorentz_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_radialExtension(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::radialExtension() const overridefinal\n"
+		"double FormFactorLongRipple2Lorentz::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120120,7 +120856,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple2Lorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -120137,7 +120873,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_clone", _wrap_FormFactorLorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_clone(FormFactorLorentz self) -> FormFactorLorentz\n"
 		"\n"
-		"FormFactorLorentz* FormFactorLorentz::clone() const overridefinal\n"
+		"FormFactorLorentz* FormFactorLorentz::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120145,7 +120881,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_accept", _wrap_FormFactorLorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_accept(FormFactorLorentz self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorLorentz::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorLorentz::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120153,19 +120889,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_getWidth", _wrap_FormFactorLorentz_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_getWidth(FormFactorLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLorentz::getWidth() const \n"
+		"double FormFactorLorentz::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLorentz_getHeight", _wrap_FormFactorLorentz_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_getHeight(FormFactorLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLorentz::getHeight() const \n"
+		"double FormFactorLorentz::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorLorentz_radialExtension", _wrap_FormFactorLorentz_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_radialExtension(FormFactorLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLorentz::radialExtension() const overridefinal\n"
+		"double FormFactorLorentz::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120173,7 +120909,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_evaluate_for_q", _wrap_FormFactorLorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorLorentz::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -120200,7 +120936,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism3_clone", _wrap_FormFactorPrism3_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism3_clone(FormFactorPrism3 self) -> FormFactorPrism3\n"
 		"\n"
-		"FormFactorPrism3* FormFactorPrism3::clone() const overridefinal\n"
+		"FormFactorPrism3* FormFactorPrism3::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120208,7 +120944,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism3_accept", _wrap_FormFactorPrism3_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism3_accept(FormFactorPrism3 self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorPrism3::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorPrism3::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120216,7 +120952,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism3_getBaseEdge", _wrap_FormFactorPrism3_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism3_getBaseEdge(FormFactorPrism3 self) -> double\n"
 		"\n"
-		"double FormFactorPrism3::getBaseEdge() const \n"
+		"double FormFactorPrism3::getBaseEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorPrism3", _wrap_delete_FormFactorPrism3, METH_VARARGS, (char *)"delete_FormFactorPrism3(FormFactorPrism3 self)"},
@@ -120241,7 +120977,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_clone", _wrap_FormFactorPrism6_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_clone(FormFactorPrism6 self) -> FormFactorPrism6\n"
 		"\n"
-		"FormFactorPrism6* FormFactorPrism6::clone() const overridefinal\n"
+		"FormFactorPrism6* FormFactorPrism6::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120249,7 +120985,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_accept", _wrap_FormFactorPrism6_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_accept(FormFactorPrism6 self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorPrism6::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorPrism6::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120257,7 +120993,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_getBaseEdge", _wrap_FormFactorPrism6_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_getBaseEdge(FormFactorPrism6 self) -> double\n"
 		"\n"
-		"double FormFactorPrism6::getBaseEdge() const \n"
+		"double FormFactorPrism6::getBaseEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorPrism6", _wrap_delete_FormFactorPrism6, METH_VARARGS, (char *)"delete_FormFactorPrism6(FormFactorPrism6 self)"},
@@ -120285,7 +121021,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPyramid_clone", _wrap_FormFactorPyramid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_clone(FormFactorPyramid self) -> FormFactorPyramid\n"
 		"\n"
-		"FormFactorPyramid* FormFactorPyramid::clone() const overridefinal\n"
+		"FormFactorPyramid* FormFactorPyramid::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120293,7 +121029,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPyramid_accept", _wrap_FormFactorPyramid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_accept(FormFactorPyramid self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorPyramid::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorPyramid::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120301,19 +121037,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPyramid_getHeight", _wrap_FormFactorPyramid_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_getHeight(FormFactorPyramid self) -> double\n"
 		"\n"
-		"double FormFactorPyramid::getHeight() const \n"
+		"double FormFactorPyramid::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorPyramid_getBaseEdge", _wrap_FormFactorPyramid_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_getBaseEdge(FormFactorPyramid self) -> double\n"
 		"\n"
-		"double FormFactorPyramid::getBaseEdge() const \n"
+		"double FormFactorPyramid::getBaseEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorPyramid_getAlpha", _wrap_FormFactorPyramid_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_getAlpha(FormFactorPyramid self) -> double\n"
 		"\n"
-		"double FormFactorPyramid::getAlpha() const \n"
+		"double FormFactorPyramid::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorPyramid", _wrap_delete_FormFactorPyramid, METH_VARARGS, (char *)"delete_FormFactorPyramid(FormFactorPyramid self)"},
@@ -120341,7 +121077,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_clone", _wrap_FormFactorRipple1_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_clone(FormFactorRipple1 self) -> FormFactorRipple1\n"
 		"\n"
-		"FormFactorRipple1* FormFactorRipple1::clone() const overridefinal\n"
+		"FormFactorRipple1* FormFactorRipple1::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120349,7 +121085,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_accept", _wrap_FormFactorRipple1_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_accept(FormFactorRipple1 self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorRipple1::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorRipple1::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120357,25 +121093,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_getLength", _wrap_FormFactorRipple1_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_getLength(FormFactorRipple1 self) -> double\n"
 		"\n"
-		"double FormFactorRipple1::getLength() const \n"
+		"double FormFactorRipple1::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple1_getHeight", _wrap_FormFactorRipple1_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_getHeight(FormFactorRipple1 self) -> double\n"
 		"\n"
-		"double FormFactorRipple1::getHeight() const \n"
+		"double FormFactorRipple1::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple1_getWidth", _wrap_FormFactorRipple1_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_getWidth(FormFactorRipple1 self) -> double\n"
 		"\n"
-		"double FormFactorRipple1::getWidth() const \n"
+		"double FormFactorRipple1::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple1_radialExtension", _wrap_FormFactorRipple1_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_radialExtension(FormFactorRipple1 self) -> double\n"
 		"\n"
-		"double FormFactorRipple1::radialExtension() const overridefinal\n"
+		"double FormFactorRipple1::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120383,7 +121119,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_evaluate_for_q", _wrap_FormFactorRipple1_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorRipple1::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -120416,7 +121152,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_clone", _wrap_FormFactorRipple2_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_clone(FormFactorRipple2 self) -> FormFactorRipple2\n"
 		"\n"
-		"FormFactorRipple2* FormFactorRipple2::clone() const overridefinal\n"
+		"FormFactorRipple2* FormFactorRipple2::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120424,7 +121160,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_accept", _wrap_FormFactorRipple2_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_accept(FormFactorRipple2 self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorRipple2::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorRipple2::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120432,31 +121168,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_getHeight", _wrap_FormFactorRipple2_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_getHeight(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::getHeight() const \n"
+		"double FormFactorRipple2::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple2_getWidth", _wrap_FormFactorRipple2_getWidth, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_getWidth(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::getWidth() const \n"
+		"double FormFactorRipple2::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple2_getLength", _wrap_FormFactorRipple2_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_getLength(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::getLength() const \n"
+		"double FormFactorRipple2::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple2_getAsymmetry", _wrap_FormFactorRipple2_getAsymmetry, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_getAsymmetry(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::getAsymmetry() const \n"
+		"double FormFactorRipple2::getAsymmetry() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorRipple2_radialExtension", _wrap_FormFactorRipple2_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_radialExtension(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::radialExtension() const overridefinal\n"
+		"double FormFactorRipple2::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120464,7 +121200,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_evaluate_for_q", _wrap_FormFactorRipple2_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorRipple2::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -120480,7 +121216,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_clone", _wrap_FormFactorSphereGaussianRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius\n"
 		"\n"
-		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal\n"
+		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120488,7 +121224,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_accept", _wrap_FormFactorSphereGaussianRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_accept(FormFactorSphereGaussianRadius self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120496,7 +121232,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_radialExtension", _wrap_FormFactorSphereGaussianRadius_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_radialExtension(FormFactorSphereGaussianRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereGaussianRadius::radialExtension() const overridefinal\n"
+		"double FormFactorSphereGaussianRadius::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120504,7 +121240,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_evaluate_for_q", _wrap_FormFactorSphereGaussianRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -120520,7 +121256,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_clone", _wrap_FormFactorSphereLogNormalRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius\n"
 		"\n"
-		"FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal\n"
+		"FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120528,7 +121264,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_accept", _wrap_FormFactorSphereLogNormalRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_accept(FormFactorSphereLogNormalRadius self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120536,7 +121272,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_radialExtension", _wrap_FormFactorSphereLogNormalRadius_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_radialExtension(FormFactorSphereLogNormalRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereLogNormalRadius::radialExtension() const overridefinal\n"
+		"double FormFactorSphereLogNormalRadius::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120544,7 +121280,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_evaluate_for_q", _wrap_FormFactorSphereLogNormalRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -120560,7 +121296,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_clone", _wrap_FormFactorSphereUniformRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_clone(FormFactorSphereUniformRadius self) -> FormFactorSphereUniformRadius\n"
 		"\n"
-		"FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal\n"
+		"FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120568,7 +121304,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_accept", _wrap_FormFactorSphereUniformRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_accept(FormFactorSphereUniformRadius self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorSphereUniformRadius::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120576,7 +121312,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_radialExtension", _wrap_FormFactorSphereUniformRadius_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_radialExtension(FormFactorSphereUniformRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereUniformRadius::radialExtension() const overridefinal\n"
+		"double FormFactorSphereUniformRadius::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120584,7 +121320,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_evaluate_for_q", _wrap_FormFactorSphereUniformRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_evaluate_for_q(FormFactorSphereUniformRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorSphereUniformRadius::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -120614,7 +121350,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTetrahedron_clone", _wrap_FormFactorTetrahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_clone(FormFactorTetrahedron self) -> FormFactorTetrahedron\n"
 		"\n"
-		"FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal\n"
+		"FormFactorTetrahedron* FormFactorTetrahedron::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120622,7 +121358,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTetrahedron_accept", _wrap_FormFactorTetrahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_accept(FormFactorTetrahedron self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorTetrahedron::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorTetrahedron::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120630,19 +121366,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTetrahedron_getBaseEdge", _wrap_FormFactorTetrahedron_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_getBaseEdge(FormFactorTetrahedron self) -> double\n"
 		"\n"
-		"double FormFactorTetrahedron::getBaseEdge() const \n"
+		"double FormFactorTetrahedron::getBaseEdge() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTetrahedron_getHeight", _wrap_FormFactorTetrahedron_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_getHeight(FormFactorTetrahedron self) -> double\n"
 		"\n"
-		"double FormFactorTetrahedron::getHeight() const \n"
+		"double FormFactorTetrahedron::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTetrahedron_getAlpha", _wrap_FormFactorTetrahedron_getAlpha, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_getAlpha(FormFactorTetrahedron self) -> double\n"
 		"\n"
-		"double FormFactorTetrahedron::getAlpha() const \n"
+		"double FormFactorTetrahedron::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorTetrahedron", _wrap_delete_FormFactorTetrahedron, METH_VARARGS, (char *)"delete_FormFactorTetrahedron(FormFactorTetrahedron self)"},
@@ -120667,7 +121403,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedCube_clone", _wrap_FormFactorTruncatedCube_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube\n"
 		"\n"
-		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal\n"
+		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120675,7 +121411,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedCube_accept", _wrap_FormFactorTruncatedCube_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_accept(FormFactorTruncatedCube self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorTruncatedCube::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120683,13 +121419,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedCube_getLength", _wrap_FormFactorTruncatedCube_getLength, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_getLength(FormFactorTruncatedCube self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedCube::getLength() const \n"
+		"double FormFactorTruncatedCube::getLength() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedCube_getRemovedLength", _wrap_FormFactorTruncatedCube_getRemovedLength, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_getRemovedLength(FormFactorTruncatedCube self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedCube::getRemovedLength() const \n"
+		"double FormFactorTruncatedCube::getRemovedLength() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorTruncatedCube", _wrap_delete_FormFactorTruncatedCube, METH_VARARGS, (char *)"delete_FormFactorTruncatedCube(FormFactorTruncatedCube self)"},
@@ -120718,7 +121454,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_clone", _wrap_FormFactorTruncatedSphere_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere\n"
 		"\n"
-		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal\n"
+		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120726,7 +121462,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_accept", _wrap_FormFactorTruncatedSphere_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_accept(FormFactorTruncatedSphere self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorTruncatedSphere::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120734,25 +121470,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_getHeight", _wrap_FormFactorTruncatedSphere_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_getHeight(FormFactorTruncatedSphere self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSphere::getHeight() const \n"
+		"double FormFactorTruncatedSphere::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSphere_getRadius", _wrap_FormFactorTruncatedSphere_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_getRadius(FormFactorTruncatedSphere self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSphere::getRadius() const \n"
+		"double FormFactorTruncatedSphere::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSphere_getRemovedTop", _wrap_FormFactorTruncatedSphere_getRemovedTop, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_getRemovedTop(FormFactorTruncatedSphere self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSphere::getRemovedTop() const \n"
+		"double FormFactorTruncatedSphere::getRemovedTop() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSphere_radialExtension", _wrap_FormFactorTruncatedSphere_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_radialExtension(FormFactorTruncatedSphere self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSphere::radialExtension() const overridefinal\n"
+		"double FormFactorTruncatedSphere::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120760,7 +121496,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_evaluate_for_q", _wrap_FormFactorTruncatedSphere_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_evaluate_for_q(FormFactorTruncatedSphere self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorTruncatedSphere::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
@@ -120794,7 +121530,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_clone", _wrap_FormFactorTruncatedSpheroid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid\n"
 		"\n"
-		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal\n"
+		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120802,7 +121538,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_accept", _wrap_FormFactorTruncatedSpheroid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_accept(FormFactorTruncatedSpheroid self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorTruncatedSpheroid::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120810,31 +121546,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_getRadius", _wrap_FormFactorTruncatedSpheroid_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_getRadius(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::getRadius() const \n"
+		"double FormFactorTruncatedSpheroid::getRadius() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSpheroid_getHeight", _wrap_FormFactorTruncatedSpheroid_getHeight, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_getHeight(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::getHeight() const \n"
+		"double FormFactorTruncatedSpheroid::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSpheroid_getHeightFlattening", _wrap_FormFactorTruncatedSpheroid_getHeightFlattening, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_getHeightFlattening(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::getHeightFlattening() const \n"
+		"double FormFactorTruncatedSpheroid::getHeightFlattening() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSpheroid_getRemovedTop", _wrap_FormFactorTruncatedSpheroid_getRemovedTop, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_getRemovedTop(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::getRemovedTop() const \n"
+		"double FormFactorTruncatedSpheroid::getRemovedTop() const\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorTruncatedSpheroid_radialExtension", _wrap_FormFactorTruncatedSpheroid_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_radialExtension(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::radialExtension() const overridefinal\n"
+		"double FormFactorTruncatedSpheroid::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120842,7 +121578,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_evaluate_for_q", _wrap_FormFactorTruncatedSpheroid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_evaluate_for_q(FormFactorTruncatedSpheroid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const overridefinal\n"
+		"complex_t FormFactorTruncatedSpheroid::evaluate_for_q(cvector_t q) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
@@ -120858,13 +121594,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_FormFactorWeighted", _wrap_delete_FormFactorWeighted, METH_VARARGS, (char *)"\n"
 		"delete_FormFactorWeighted(FormFactorWeighted self)\n"
 		"\n"
-		"FormFactorWeighted::~FormFactorWeighted() overridefinal\n"
+		"FormFactorWeighted::~FormFactorWeighted() override final\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorWeighted_clone", _wrap_FormFactorWeighted_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_clone(FormFactorWeighted self) -> FormFactorWeighted\n"
 		"\n"
-		"FormFactorWeighted * FormFactorWeighted::clone() const overridefinal\n"
+		"FormFactorWeighted * FormFactorWeighted::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -120872,7 +121608,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_accept", _wrap_FormFactorWeighted_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_accept(FormFactorWeighted self, INodeVisitor visitor)\n"
 		"\n"
-		"void FormFactorWeighted::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void FormFactorWeighted::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -120880,7 +121616,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_radialExtension", _wrap_FormFactorWeighted_radialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_radialExtension(FormFactorWeighted self) -> double\n"
 		"\n"
-		"double FormFactorWeighted::radialExtension() const overridefinal\n"
+		"double FormFactorWeighted::radialExtension() const override final\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -120888,7 +121624,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_bottomZ", _wrap_FormFactorWeighted_bottomZ, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_bottomZ(FormFactorWeighted self, IRotation rotation) -> double\n"
 		"\n"
-		"double FormFactorWeighted::bottomZ(const IRotation &rotation) const overridefinal\n"
+		"double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final\n"
 		"\n"
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
@@ -120896,7 +121632,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_topZ", _wrap_FormFactorWeighted_topZ, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_topZ(FormFactorWeighted self, IRotation rotation) -> double\n"
 		"\n"
-		"double FormFactorWeighted::topZ(const IRotation &rotation) const overridefinal\n"
+		"double FormFactorWeighted::topZ(const IRotation &rotation) const override final\n"
 		"\n"
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
@@ -120911,7 +121647,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_setAmbientMaterial", _wrap_FormFactorWeighted_setAmbientMaterial, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_setAmbientMaterial(FormFactorWeighted self, Material material)\n"
 		"\n"
-		"void FormFactorWeighted::setAmbientMaterial(Material material) overridefinal\n"
+		"void FormFactorWeighted::setAmbientMaterial(Material material) override final\n"
 		"\n"
 		"Passes the material in which this particle is embedded. \n"
 		"\n"
@@ -120919,7 +121655,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_evaluate", _wrap_FormFactorWeighted_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
+		"complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -120977,7 +121713,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_getBeamIntensity", _wrap_Simulation_getBeamIntensity, METH_VARARGS, (char *)"\n"
 		"Simulation_getBeamIntensity(Simulation self) -> double\n"
 		"\n"
-		"double Simulation::getBeamIntensity() const \n"
+		"double Simulation::getBeamIntensity() const\n"
 		"\n"
 		""},
 	 { (char *)"Simulation_setBeamPolarization", _wrap_Simulation_setBeamPolarization, METH_VARARGS, (char *)"\n"
@@ -121019,7 +121755,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_sample", _wrap_Simulation_sample, METH_VARARGS, (char *)"\n"
 		"Simulation_sample(Simulation self) -> MultiLayer\n"
 		"\n"
-		"const MultiLayer * Simulation::sample() const \n"
+		"const MultiLayer * Simulation::sample() const\n"
 		"\n"
 		""},
 	 { (char *)"Simulation_setSampleBuilderCpp", _wrap_Simulation_setSampleBuilderCpp, METH_VARARGS, (char *)"\n"
@@ -121037,7 +121773,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_background", _wrap_Simulation_background, METH_VARARGS, (char *)"\n"
 		"Simulation_background(Simulation self) -> IBackground\n"
 		"\n"
-		"const IBackground* Simulation::background() const \n"
+		"const IBackground* Simulation::background() const\n"
 		"\n"
 		""},
 	 { (char *)"Simulation_numberOfSimulationElements", _wrap_Simulation_numberOfSimulationElements, METH_VARARGS, (char *)"\n"
@@ -121067,7 +121803,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_getDistributionHandler", _wrap_Simulation_getDistributionHandler, METH_VARARGS, (char *)"\n"
 		"Simulation_getDistributionHandler(Simulation self) -> DistributionHandler const &\n"
 		"\n"
-		"const DistributionHandler& Simulation::getDistributionHandler() const \n"
+		"const DistributionHandler& Simulation::getDistributionHandler() const\n"
 		"\n"
 		""},
 	 { (char *)"Simulation_setOptions", _wrap_Simulation_setOptions, METH_VARARGS, (char *)"\n"
@@ -121233,13 +121969,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_isIntegrate", _wrap_SimulationOptions_isIntegrate, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_isIntegrate(SimulationOptions self) -> bool\n"
 		"\n"
-		"bool SimulationOptions::isIntegrate() const \n"
+		"bool SimulationOptions::isIntegrate() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_getMcPoints", _wrap_SimulationOptions_getMcPoints, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_getMcPoints(SimulationOptions self) -> size_t\n"
 		"\n"
-		"size_t SimulationOptions::getMcPoints() const \n"
+		"size_t SimulationOptions::getMcPoints() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_setMonteCarloIntegration", _wrap_SimulationOptions_setMonteCarloIntegration, METH_VARARGS, (char *)"\n"
@@ -121272,7 +122008,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_getNumberOfThreads", _wrap_SimulationOptions_getNumberOfThreads, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_getNumberOfThreads(SimulationOptions self) -> unsigned int\n"
 		"\n"
-		"unsigned SimulationOptions::getNumberOfThreads() const \n"
+		"unsigned SimulationOptions::getNumberOfThreads() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_setNumberOfBatches", _wrap_SimulationOptions_setNumberOfBatches, METH_VARARGS, (char *)"\n"
@@ -121286,13 +122022,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_getNumberOfBatches", _wrap_SimulationOptions_getNumberOfBatches, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_getNumberOfBatches(SimulationOptions self) -> unsigned int\n"
 		"\n"
-		"unsigned SimulationOptions::getNumberOfBatches() const \n"
+		"unsigned SimulationOptions::getNumberOfBatches() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_getCurrentBatch", _wrap_SimulationOptions_getCurrentBatch, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_getCurrentBatch(SimulationOptions self) -> unsigned int\n"
 		"\n"
-		"unsigned SimulationOptions::getCurrentBatch() const \n"
+		"unsigned SimulationOptions::getCurrentBatch() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_setThreadInfo", _wrap_SimulationOptions_setThreadInfo, METH_VARARGS, (char *)"\n"
@@ -121306,7 +122042,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_getHardwareConcurrency", _wrap_SimulationOptions_getHardwareConcurrency, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_getHardwareConcurrency(SimulationOptions self) -> unsigned int\n"
 		"\n"
-		"unsigned SimulationOptions::getHardwareConcurrency() const \n"
+		"unsigned SimulationOptions::getHardwareConcurrency() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_setIncludeSpecular", _wrap_SimulationOptions_setIncludeSpecular, METH_VARARGS, (char *)"\n"
@@ -121318,7 +122054,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_includeSpecular", _wrap_SimulationOptions_includeSpecular, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_includeSpecular(SimulationOptions self) -> bool\n"
 		"\n"
-		"bool SimulationOptions::includeSpecular() const \n"
+		"bool SimulationOptions::includeSpecular() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationOptions_setUseAvgMaterials", _wrap_SimulationOptions_setUseAvgMaterials, METH_VARARGS, (char *)"\n"
@@ -121330,7 +122066,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationOptions_useAvgMaterials", _wrap_SimulationOptions_useAvgMaterials, METH_VARARGS, (char *)"\n"
 		"SimulationOptions_useAvgMaterials(SimulationOptions self) -> bool\n"
 		"\n"
-		"bool SimulationOptions::useAvgMaterials() const \n"
+		"bool SimulationOptions::useAvgMaterials() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_SimulationOptions", _wrap_delete_SimulationOptions, METH_VARARGS, (char *)"delete_SimulationOptions(SimulationOptions self)"},
@@ -121973,13 +122709,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ConstantBackground_clone", _wrap_ConstantBackground_clone, METH_VARARGS, (char *)"\n"
 		"ConstantBackground_clone(ConstantBackground self) -> ConstantBackground\n"
 		"\n"
-		"ConstantBackground * ConstantBackground::clone() const overridefinal\n"
+		"ConstantBackground * ConstantBackground::clone() const override final\n"
 		"\n"
 		""},
 	 { (char *)"ConstantBackground_backgroundValue", _wrap_ConstantBackground_backgroundValue, METH_VARARGS, (char *)"\n"
 		"ConstantBackground_backgroundValue(ConstantBackground self) -> double\n"
 		"\n"
-		"double ConstantBackground::backgroundValue() const \n"
+		"double ConstantBackground::backgroundValue() const\n"
 		"\n"
 		""},
 	 { (char *)"ConstantBackground_accept", _wrap_ConstantBackground_accept, METH_VARARGS, (char *)"\n"
@@ -121993,7 +122729,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ConstantBackground_addBackGround", _wrap_ConstantBackground_addBackGround, METH_VARARGS, (char *)"\n"
 		"ConstantBackground_addBackGround(ConstantBackground self, double intensity) -> double\n"
 		"\n"
-		"double ConstantBackground::addBackGround(double intensity) const overridefinal\n"
+		"double ConstantBackground::addBackGround(double intensity) const override final\n"
 		"\n"
 		""},
 	 { (char *)"ConstantBackground_swigregister", ConstantBackground_swigregister, METH_VARARGS, NULL},
@@ -122032,7 +122768,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IDetector_getAxis", _wrap_IDetector_getAxis, METH_VARARGS, (char *)"\n"
 		"IDetector_getAxis(IDetector self, size_t index) -> IAxis\n"
 		"\n"
-		"const IAxis & IDetector::getAxis(size_t index) const \n"
+		"const IAxis & IDetector::getAxis(size_t index) const\n"
 		"\n"
 		""},
 	 { (char *)"IDetector_dimension", _wrap_IDetector_dimension, METH_VARARGS, (char *)"\n"
@@ -122463,7 +123199,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IAbstractParticle_abundance", _wrap_IAbstractParticle_abundance, METH_VARARGS, (char *)"\n"
 		"IAbstractParticle_abundance(IAbstractParticle self) -> double\n"
 		"\n"
-		"double IAbstractParticle::abundance() const \n"
+		"double IAbstractParticle::abundance() const\n"
 		"\n"
 		""},
 	 { (char *)"IAbstractParticle_setAbundance", _wrap_IAbstractParticle_setAbundance, METH_VARARGS, (char *)"\n"
@@ -122515,7 +123251,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IParameterReal_getData", _wrap_IParameterReal_getData, METH_VARARGS, (char *)"\n"
 		"IParameterReal_getData(IParameterReal self) -> double &\n"
 		"\n"
-		"T& IParameter< T >::getData() const \n"
+		"T& IParameter< T >::getData() const\n"
 		"\n"
 		""},
 	 { (char *)"IParameterReal_setData", _wrap_IParameterReal_setData, METH_VARARGS, (char *)"\n"
@@ -122611,7 +123347,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IParticle_translate", _wrap_IParticle_translate, METH_VARARGS, (char *)"\n"
 		"IParticle_translate(IParticle self, kvector_t translation)\n"
 		"\n"
-		"void IParticle::translate(kvector_t translation) overridefinal\n"
+		"void IParticle::translate(kvector_t translation) override final\n"
 		"\n"
 		"Translates the particle. \n"
 		"\n"
@@ -122635,7 +123371,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IParticle_rotate", _wrap_IParticle_rotate, METH_VARARGS, (char *)"\n"
 		"IParticle_rotate(IParticle self, IRotation rotation)\n"
 		"\n"
-		"void IParticle::rotate(const IRotation &rotation) overridefinal\n"
+		"void IParticle::rotate(const IRotation &rotation) override final\n"
 		"\n"
 		"Rotates the particle. \n"
 		"\n"
@@ -122852,7 +123588,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RotationX_getAngle", _wrap_RotationX_getAngle, METH_VARARGS, (char *)"\n"
 		"RotationX_getAngle(RotationX self) -> double\n"
 		"\n"
-		"double RotationX::getAngle() const \n"
+		"double RotationX::getAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationX_getTransform3D", _wrap_RotationX_getTransform3D, METH_VARARGS, (char *)"\n"
@@ -122906,7 +123642,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RotationY_getAngle", _wrap_RotationY_getAngle, METH_VARARGS, (char *)"\n"
 		"RotationY_getAngle(RotationY self) -> double\n"
 		"\n"
-		"double RotationY::getAngle() const \n"
+		"double RotationY::getAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationY_getTransform3D", _wrap_RotationY_getTransform3D, METH_VARARGS, (char *)"\n"
@@ -122961,7 +123697,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RotationZ_getAngle", _wrap_RotationZ_getAngle, METH_VARARGS, (char *)"\n"
 		"RotationZ_getAngle(RotationZ self) -> double\n"
 		"\n"
-		"double RotationZ::getAngle() const \n"
+		"double RotationZ::getAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationZ_getTransform3D", _wrap_RotationZ_getTransform3D, METH_VARARGS, (char *)"\n"
@@ -123021,19 +123757,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RotationEuler_getAlpha", _wrap_RotationEuler_getAlpha, METH_VARARGS, (char *)"\n"
 		"RotationEuler_getAlpha(RotationEuler self) -> double\n"
 		"\n"
-		"double RotationEuler::getAlpha() const \n"
+		"double RotationEuler::getAlpha() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationEuler_getBeta", _wrap_RotationEuler_getBeta, METH_VARARGS, (char *)"\n"
 		"RotationEuler_getBeta(RotationEuler self) -> double\n"
 		"\n"
-		"double RotationEuler::getBeta() const \n"
+		"double RotationEuler::getBeta() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationEuler_getGamma", _wrap_RotationEuler_getGamma, METH_VARARGS, (char *)"\n"
 		"RotationEuler_getGamma(RotationEuler self) -> double\n"
 		"\n"
-		"double RotationEuler::getGamma() const \n"
+		"double RotationEuler::getGamma() const\n"
 		"\n"
 		""},
 	 { (char *)"RotationEuler_getTransform3D", _wrap_RotationEuler_getTransform3D, METH_VARARGS, (char *)"\n"
@@ -123080,13 +123816,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimpleSelectionRule_clone", _wrap_SimpleSelectionRule_clone, METH_VARARGS, (char *)"\n"
 		"SimpleSelectionRule_clone(SimpleSelectionRule self) -> SimpleSelectionRule\n"
 		"\n"
-		"SimpleSelectionRule * SimpleSelectionRule::clone() const \n"
+		"SimpleSelectionRule * SimpleSelectionRule::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"SimpleSelectionRule_coordinateSelected", _wrap_SimpleSelectionRule_coordinateSelected, METH_VARARGS, (char *)"\n"
 		"SimpleSelectionRule_coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool\n"
 		"\n"
-		"bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const \n"
+		"bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const\n"
 		"\n"
 		""},
 	 { (char *)"SimpleSelectionRule_swigregister", SimpleSelectionRule_swigregister, METH_VARARGS, NULL},
@@ -123115,7 +123851,7 @@ static PyMethodDef SwigMethods[] = {
 		"getBeam() -> Beam\n"
 		"Instrument_getBeam(Instrument self) -> Beam\n"
 		"\n"
-		"const Beam& Instrument::getBeam() const \n"
+		"const Beam& Instrument::getBeam() const\n"
 		"\n"
 		""},
 	 { (char *)"Instrument_setBeam", _wrap_Instrument_setBeam, METH_VARARGS, (char *)"\n"
@@ -123166,7 +123902,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Instrument_getDetectorMask", _wrap_Instrument_getDetectorMask, METH_VARARGS, (char *)"\n"
 		"Instrument_getDetectorMask(Instrument self) -> DetectorMask\n"
 		"\n"
-		"const DetectorMask * Instrument::getDetectorMask() const \n"
+		"const DetectorMask * Instrument::getDetectorMask() const\n"
 		"\n"
 		""},
 	 { (char *)"Instrument_getDetectorAxis", _wrap_Instrument_getDetectorAxis, METH_VARARGS, (char *)"\n"
@@ -123307,6 +124043,38 @@ static PyMethodDef SwigMethods[] = {
 		"Transforms x,y coordinate from bin-fraction-coordinates to  OutputData's axes coordinates. \n"
 		"\n"
 		""},
+	 { (char *)"create2DArrayfromOutputData", _wrap_create2DArrayfromOutputData, METH_VARARGS, (char *)"\n"
+		"create2DArrayfromOutputData(IntensityData data) -> vdouble2d_t\n"
+		"\n"
+		"std::vector< std::vector< double > > IntensityDataFunctions::create2DArrayfromOutputData(const OutputData< double > &data)\n"
+		"\n"
+		"Creates a vector of vectors of double (2D Array) from  OutputData. \n"
+		"\n"
+		""},
+	 { (char *)"FT2DArray", _wrap_FT2DArray, METH_VARARGS, (char *)"\n"
+		"FT2DArray(vdouble2d_t signal) -> vdouble2d_t\n"
+		"\n"
+		"std::vector< std::vector< double > > IntensityDataFunctions::FT2DArray(const std::vector< std::vector< double >> &signal)\n"
+		"\n"
+		"Creates a Fourier Transform of a 2D Array (vector of vectors). \n"
+		"\n"
+		""},
+	 { (char *)"createOutputDatafrom2DArray", _wrap_createOutputDatafrom2DArray, METH_VARARGS, (char *)"\n"
+		"createOutputDatafrom2DArray(vdouble2d_t array_2d) -> IntensityData\n"
+		"\n"
+		"OutputData< double > * IntensityDataFunctions::createOutputDatafrom2DArray(const std::vector< std::vector< double >> &array_2d)\n"
+		"\n"
+		"Creates  OutputData from a 2D Array. \n"
+		"\n"
+		""},
+	 { (char *)"getFourierTransform", _wrap_getFourierTransform, METH_VARARGS, (char *)"\n"
+		"getFourierTransform(IntensityData data) -> IntensityData\n"
+		"\n"
+		"OutputData< double > * IntensityDataFunctions::getFourierTransform(const OutputData< double > &data)\n"
+		"\n"
+		"Creates Fourier Transform ( OutputData format) of intensity map ( OutputData format). \n"
+		"\n"
+		""},
 	 { (char *)"IntensityDataIOFactory_readOutputData", _wrap_IntensityDataIOFactory_readOutputData, METH_VARARGS, (char *)"IntensityDataIOFactory_readOutputData(std::string const & file_name) -> IntensityData"},
 	 { (char *)"IntensityDataIOFactory_readIntensityData", _wrap_IntensityDataIOFactory_readIntensityData, METH_VARARGS, (char *)"IntensityDataIOFactory_readIntensityData(std::string const & file_name) -> IHistogram"},
 	 { (char *)"IntensityDataIOFactory_writeOutputData", _wrap_IntensityDataIOFactory_writeOutputData, METH_VARARGS, (char *)"IntensityDataIOFactory_writeOutputData(IntensityData data, std::string const & file_name)"},
@@ -123379,7 +124147,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction1DLattice_getLatticeParameters", _wrap_InterferenceFunction1DLattice_getLatticeParameters, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction1DLattice_getLatticeParameters(InterferenceFunction1DLattice self) -> Lattice1DParameters\n"
 		"\n"
-		"Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const \n"
+		"Lattice1DParameters InterferenceFunction1DLattice::getLatticeParameters() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction1DLattice_evaluate", _wrap_InterferenceFunction1DLattice_evaluate, METH_VARARGS, (char *)"\n"
@@ -123472,7 +124240,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunctionRadialParaCrystal_domainSize", _wrap_InterferenceFunctionRadialParaCrystal_domainSize, METH_VARARGS, (char *)"\n"
 		"InterferenceFunctionRadialParaCrystal_domainSize(InterferenceFunctionRadialParaCrystal self) -> double\n"
 		"\n"
-		"double InterferenceFunctionRadialParaCrystal::domainSize() const \n"
+		"double InterferenceFunctionRadialParaCrystal::domainSize() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_evaluate", _wrap_InterferenceFunctionRadialParaCrystal_evaluate, METH_VARARGS, (char *)"\n"
@@ -123486,7 +124254,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunctionRadialParaCrystal_FTPDF", _wrap_InterferenceFunctionRadialParaCrystal_FTPDF, METH_VARARGS, (char *)"\n"
 		"InterferenceFunctionRadialParaCrystal_FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t\n"
 		"\n"
-		"complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const \n"
+		"complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_setProbabilityDistribution", _wrap_InterferenceFunctionRadialParaCrystal_setProbabilityDistribution, METH_VARARGS, (char *)"\n"
@@ -123506,13 +124274,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunctionRadialParaCrystal_peakDistance", _wrap_InterferenceFunctionRadialParaCrystal_peakDistance, METH_VARARGS, (char *)"\n"
 		"InterferenceFunctionRadialParaCrystal_peakDistance(InterferenceFunctionRadialParaCrystal self) -> double\n"
 		"\n"
-		"double InterferenceFunctionRadialParaCrystal::peakDistance() const \n"
+		"double InterferenceFunctionRadialParaCrystal::peakDistance() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_dampingLength", _wrap_InterferenceFunctionRadialParaCrystal_dampingLength, METH_VARARGS, (char *)"\n"
 		"InterferenceFunctionRadialParaCrystal_dampingLength(InterferenceFunctionRadialParaCrystal self) -> double\n"
 		"\n"
-		"double InterferenceFunctionRadialParaCrystal::dampingLength() const \n"
+		"double InterferenceFunctionRadialParaCrystal::dampingLength() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_getChildren", _wrap_InterferenceFunctionRadialParaCrystal_getChildren, METH_VARARGS, (char *)"\n"
@@ -123611,13 +124379,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction2DLattice_integrationOverXi", _wrap_InterferenceFunction2DLattice_integrationOverXi, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DLattice_integrationOverXi(InterferenceFunction2DLattice self) -> bool\n"
 		"\n"
-		"bool InterferenceFunction2DLattice::integrationOverXi() const \n"
+		"bool InterferenceFunction2DLattice::integrationOverXi() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DLattice_lattice", _wrap_InterferenceFunction2DLattice_lattice, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DLattice_lattice(InterferenceFunction2DLattice self) -> Lattice2D\n"
 		"\n"
-		"const Lattice2D & InterferenceFunction2DLattice::lattice() const \n"
+		"const Lattice2D & InterferenceFunction2DLattice::lattice() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DLattice_getParticleDensity", _wrap_InterferenceFunction2DLattice_getParticleDensity, METH_VARARGS, (char *)"\n"
@@ -123639,7 +124407,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction2DLattice_onChange", _wrap_InterferenceFunction2DLattice_onChange, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DLattice_onChange(InterferenceFunction2DLattice self)\n"
 		"\n"
-		"void InterferenceFunction2DLattice::onChange() overridefinal\n"
+		"void InterferenceFunction2DLattice::onChange() override final\n"
 		"\n"
 		"Action to be taken in inherited class when a parameter has changed. \n"
 		"\n"
@@ -123770,7 +124538,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction2DParaCrystal_domainSizes", _wrap_InterferenceFunction2DParaCrystal_domainSizes, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DParaCrystal_domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const \n"
+		"std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DParaCrystal_setIntegrationOverXi", _wrap_InterferenceFunction2DParaCrystal_setIntegrationOverXi, METH_VARARGS, (char *)"\n"
@@ -123790,19 +124558,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction2DParaCrystal_integrationOverXi", _wrap_InterferenceFunction2DParaCrystal_integrationOverXi, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DParaCrystal_integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool\n"
 		"\n"
-		"bool InterferenceFunction2DParaCrystal::integrationOverXi() const \n"
+		"bool InterferenceFunction2DParaCrystal::integrationOverXi() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DParaCrystal_dampingLength", _wrap_InterferenceFunction2DParaCrystal_dampingLength, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DParaCrystal_dampingLength(InterferenceFunction2DParaCrystal self) -> double\n"
 		"\n"
-		"double InterferenceFunction2DParaCrystal::dampingLength() const \n"
+		"double InterferenceFunction2DParaCrystal::dampingLength() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DParaCrystal_lattice", _wrap_InterferenceFunction2DParaCrystal_lattice, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DParaCrystal_lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D\n"
 		"\n"
-		"const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const \n"
+		"const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const\n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunction2DParaCrystal_getParticleDensity", _wrap_InterferenceFunction2DParaCrystal_getParticleDensity, METH_VARARGS, (char *)"\n"
@@ -124178,13 +124946,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Lattice2D_rotationAngle", _wrap_Lattice2D_rotationAngle, METH_VARARGS, (char *)"\n"
 		"Lattice2D_rotationAngle(Lattice2D self) -> double\n"
 		"\n"
-		"double Lattice2D::rotationAngle() const \n"
+		"double Lattice2D::rotationAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"Lattice2D_reciprocalBases", _wrap_Lattice2D_reciprocalBases, METH_VARARGS, (char *)"\n"
 		"Lattice2D_reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases\n"
 		"\n"
-		"Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const \n"
+		"Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const\n"
 		"\n"
 		""},
 	 { (char *)"Lattice2D_setRotationEnabled", _wrap_Lattice2D_setRotationEnabled, METH_VARARGS, (char *)"\n"
@@ -124205,7 +124973,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"BasicLattice_clone", _wrap_BasicLattice_clone, METH_VARARGS, (char *)"\n"
 		"BasicLattice_clone(BasicLattice self) -> BasicLattice\n"
 		"\n"
-		"BasicLattice * BasicLattice::clone() const \n"
+		"BasicLattice * BasicLattice::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"BasicLattice_accept", _wrap_BasicLattice_accept, METH_VARARGS, (char *)"\n"
@@ -124219,25 +124987,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"BasicLattice_length1", _wrap_BasicLattice_length1, METH_VARARGS, (char *)"\n"
 		"BasicLattice_length1(BasicLattice self) -> double\n"
 		"\n"
-		"virtual double BasicLattice::length1() const \n"
+		"virtual double BasicLattice::length1() const\n"
 		"\n"
 		""},
 	 { (char *)"BasicLattice_length2", _wrap_BasicLattice_length2, METH_VARARGS, (char *)"\n"
 		"BasicLattice_length2(BasicLattice self) -> double\n"
 		"\n"
-		"virtual double BasicLattice::length2() const \n"
+		"virtual double BasicLattice::length2() const\n"
 		"\n"
 		""},
 	 { (char *)"BasicLattice_latticeAngle", _wrap_BasicLattice_latticeAngle, METH_VARARGS, (char *)"\n"
 		"BasicLattice_latticeAngle(BasicLattice self) -> double\n"
 		"\n"
-		"virtual double BasicLattice::latticeAngle() const \n"
+		"virtual double BasicLattice::latticeAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"BasicLattice_unitCellArea", _wrap_BasicLattice_unitCellArea, METH_VARARGS, (char *)"\n"
 		"BasicLattice_unitCellArea(BasicLattice self) -> double\n"
 		"\n"
-		"double BasicLattice::unitCellArea() const \n"
+		"double BasicLattice::unitCellArea() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_BasicLattice", _wrap_delete_BasicLattice, METH_VARARGS, (char *)"delete_BasicLattice(BasicLattice self)"},
@@ -124252,7 +125020,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SquareLattice_clone", _wrap_SquareLattice_clone, METH_VARARGS, (char *)"\n"
 		"SquareLattice_clone(SquareLattice self) -> SquareLattice\n"
 		"\n"
-		"SquareLattice * SquareLattice::clone() const \n"
+		"SquareLattice * SquareLattice::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"SquareLattice_accept", _wrap_SquareLattice_accept, METH_VARARGS, (char *)"\n"
@@ -124266,25 +125034,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SquareLattice_length1", _wrap_SquareLattice_length1, METH_VARARGS, (char *)"\n"
 		"SquareLattice_length1(SquareLattice self) -> double\n"
 		"\n"
-		"virtual double SquareLattice::length1() const \n"
+		"virtual double SquareLattice::length1() const\n"
 		"\n"
 		""},
 	 { (char *)"SquareLattice_length2", _wrap_SquareLattice_length2, METH_VARARGS, (char *)"\n"
 		"SquareLattice_length2(SquareLattice self) -> double\n"
 		"\n"
-		"virtual double SquareLattice::length2() const \n"
+		"virtual double SquareLattice::length2() const\n"
 		"\n"
 		""},
 	 { (char *)"SquareLattice_latticeAngle", _wrap_SquareLattice_latticeAngle, METH_VARARGS, (char *)"\n"
 		"SquareLattice_latticeAngle(SquareLattice self) -> double\n"
 		"\n"
-		"double SquareLattice::latticeAngle() const \n"
+		"double SquareLattice::latticeAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"SquareLattice_unitCellArea", _wrap_SquareLattice_unitCellArea, METH_VARARGS, (char *)"\n"
 		"SquareLattice_unitCellArea(SquareLattice self) -> double\n"
 		"\n"
-		"double SquareLattice::unitCellArea() const \n"
+		"double SquareLattice::unitCellArea() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_SquareLattice", _wrap_delete_SquareLattice, METH_VARARGS, (char *)"delete_SquareLattice(SquareLattice self)"},
@@ -124299,7 +125067,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"HexagonalLattice_clone", _wrap_HexagonalLattice_clone, METH_VARARGS, (char *)"\n"
 		"HexagonalLattice_clone(HexagonalLattice self) -> HexagonalLattice\n"
 		"\n"
-		"HexagonalLattice * HexagonalLattice::clone() const \n"
+		"HexagonalLattice * HexagonalLattice::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"HexagonalLattice_accept", _wrap_HexagonalLattice_accept, METH_VARARGS, (char *)"\n"
@@ -124313,25 +125081,25 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"HexagonalLattice_length1", _wrap_HexagonalLattice_length1, METH_VARARGS, (char *)"\n"
 		"HexagonalLattice_length1(HexagonalLattice self) -> double\n"
 		"\n"
-		"virtual double HexagonalLattice::length1() const \n"
+		"virtual double HexagonalLattice::length1() const\n"
 		"\n"
 		""},
 	 { (char *)"HexagonalLattice_length2", _wrap_HexagonalLattice_length2, METH_VARARGS, (char *)"\n"
 		"HexagonalLattice_length2(HexagonalLattice self) -> double\n"
 		"\n"
-		"virtual double HexagonalLattice::length2() const \n"
+		"virtual double HexagonalLattice::length2() const\n"
 		"\n"
 		""},
 	 { (char *)"HexagonalLattice_latticeAngle", _wrap_HexagonalLattice_latticeAngle, METH_VARARGS, (char *)"\n"
 		"HexagonalLattice_latticeAngle(HexagonalLattice self) -> double\n"
 		"\n"
-		"double HexagonalLattice::latticeAngle() const \n"
+		"double HexagonalLattice::latticeAngle() const\n"
 		"\n"
 		""},
 	 { (char *)"HexagonalLattice_unitCellArea", _wrap_HexagonalLattice_unitCellArea, METH_VARARGS, (char *)"\n"
 		"HexagonalLattice_unitCellArea(HexagonalLattice self) -> double\n"
 		"\n"
-		"double HexagonalLattice::unitCellArea() const \n"
+		"double HexagonalLattice::unitCellArea() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_HexagonalLattice", _wrap_delete_HexagonalLattice, METH_VARARGS, (char *)"delete_HexagonalLattice(HexagonalLattice self)"},
@@ -124363,7 +125131,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Layer_clone", _wrap_Layer_clone, METH_VARARGS, (char *)"\n"
 		"Layer_clone(Layer self) -> Layer\n"
 		"\n"
-		"Layer * Layer::clone() const overridefinal\n"
+		"Layer * Layer::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -124371,13 +125139,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Layer_cloneInvertB", _wrap_Layer_cloneInvertB, METH_VARARGS, (char *)"\n"
 		"Layer_cloneInvertB(Layer self) -> Layer\n"
 		"\n"
-		"Layer * Layer::cloneInvertB() const \n"
+		"Layer * Layer::cloneInvertB() const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_accept", _wrap_Layer_accept, METH_VARARGS, (char *)"\n"
 		"Layer_accept(Layer self, INodeVisitor visitor)\n"
 		"\n"
-		"void Layer::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void Layer::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -124393,13 +125161,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Layer_thickness", _wrap_Layer_thickness, METH_VARARGS, (char *)"\n"
 		"Layer_thickness(Layer self) -> double\n"
 		"\n"
-		"double Layer::thickness() const \n"
+		"double Layer::thickness() const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_material", _wrap_Layer_material, METH_VARARGS, (char *)"\n"
 		"Layer_material(Layer self) -> Material\n"
 		"\n"
-		"const Material* Layer::material() const overridefinal\n"
+		"const Material* Layer::material() const override final\n"
 		"\n"
 		"Returns nullptr, unless overwritten to return a specific material. \n"
 		"\n"
@@ -124419,19 +125187,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Layer_numberOfLayouts", _wrap_Layer_numberOfLayouts, METH_VARARGS, (char *)"\n"
 		"Layer_numberOfLayouts(Layer self) -> size_t\n"
 		"\n"
-		"size_t Layer::numberOfLayouts() const \n"
+		"size_t Layer::numberOfLayouts() const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_layouts", _wrap_Layer_layouts, METH_VARARGS, (char *)"\n"
 		"Layer_layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >\n"
 		"\n"
-		"std::vector< const ILayout * > Layer::layouts() const \n"
+		"std::vector< const ILayout * > Layer::layouts() const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_getChildren", _wrap_Layer_getChildren, METH_VARARGS, (char *)"\n"
 		"Layer_getChildren(Layer self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > Layer::getChildren() const overridefinal\n"
+		"std::vector< const INode * > Layer::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -124452,13 +125220,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Layer_numberOfSlices", _wrap_Layer_numberOfSlices, METH_VARARGS, (char *)"\n"
 		"Layer_numberOfSlices(Layer self) -> unsigned int\n"
 		"\n"
-		"unsigned int Layer::numberOfSlices() const \n"
+		"unsigned int Layer::numberOfSlices() const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_slice", _wrap_Layer_slice, METH_VARARGS, (char *)"\n"
 		"Layer_slice(Layer self, ZLimits limits, Layer::ELayerType layer_type) -> SafePointerVector< Layer >\n"
 		"\n"
-		"SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const \n"
+		"SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const\n"
 		"\n"
 		""},
 	 { (char *)"Layer_scalarReducedPotential", _wrap_Layer_scalarReducedPotential, METH_VARARGS, (char *)"\n"
@@ -124594,7 +125362,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Line_clone", _wrap_Line_clone, METH_VARARGS, (char *)"\n"
 		"Line_clone(Line self) -> Line\n"
 		"\n"
-		"Line* Line::clone() const \n"
+		"Line* Line::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"Line_contains", _wrap_Line_contains, METH_VARARGS, (char *)"\n"
@@ -124623,7 +125391,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"VerticalLine_clone", _wrap_VerticalLine_clone, METH_VARARGS, (char *)"\n"
 		"VerticalLine_clone(VerticalLine self) -> VerticalLine\n"
 		"\n"
-		"VerticalLine* VerticalLine::clone() const \n"
+		"VerticalLine* VerticalLine::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"VerticalLine_contains", _wrap_VerticalLine_contains, METH_VARARGS, (char *)"\n"
@@ -124638,7 +125406,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"VerticalLine_getXpos", _wrap_VerticalLine_getXpos, METH_VARARGS, (char *)"\n"
 		"VerticalLine_getXpos(VerticalLine self) -> double\n"
 		"\n"
-		"double VerticalLine::getXpos() const \n"
+		"double VerticalLine::getXpos() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_VerticalLine", _wrap_delete_VerticalLine, METH_VARARGS, (char *)"delete_VerticalLine(VerticalLine self)"},
@@ -124658,7 +125426,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"HorizontalLine_clone", _wrap_HorizontalLine_clone, METH_VARARGS, (char *)"\n"
 		"HorizontalLine_clone(HorizontalLine self) -> HorizontalLine\n"
 		"\n"
-		"HorizontalLine* HorizontalLine::clone() const \n"
+		"HorizontalLine* HorizontalLine::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"HorizontalLine_contains", _wrap_HorizontalLine_contains, METH_VARARGS, (char *)"\n"
@@ -124673,7 +125441,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"HorizontalLine_getYpos", _wrap_HorizontalLine_getYpos, METH_VARARGS, (char *)"\n"
 		"HorizontalLine_getYpos(HorizontalLine self) -> double\n"
 		"\n"
-		"double HorizontalLine::getYpos() const \n"
+		"double HorizontalLine::getYpos() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_HorizontalLine", _wrap_delete_HorizontalLine, METH_VARARGS, (char *)"delete_HorizontalLine(HorizontalLine self)"},
@@ -124722,7 +125490,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Material_isMagneticMaterial", _wrap_Material_isMagneticMaterial, METH_VARARGS, (char *)"\n"
 		"Material_isMagneticMaterial(Material self) -> bool\n"
 		"\n"
-		"bool Material::isMagneticMaterial() const \n"
+		"bool Material::isMagneticMaterial() const\n"
 		"\n"
 		""},
 	 { (char *)"Material_getName", _wrap_Material_getName, METH_VARARGS, (char *)"\n"
@@ -124776,7 +125544,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Material_transformedMaterial", _wrap_Material_transformedMaterial, METH_VARARGS, (char *)"\n"
 		"Material_transformedMaterial(Material self, Transform3D const & transform) -> Material\n"
 		"\n"
-		"Material Material::transformedMaterial(const Transform3D &transform) const \n"
+		"Material Material::transformedMaterial(const Transform3D &transform) const\n"
 		"\n"
 		""},
 	 { (char *)"delete_Material", _wrap_delete_Material, METH_VARARGS, (char *)"delete_Material(Material self)"},
@@ -124865,7 +125633,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MesoCrystal_clone", _wrap_MesoCrystal_clone, METH_VARARGS, (char *)"\n"
 		"MesoCrystal_clone(MesoCrystal self) -> MesoCrystal\n"
 		"\n"
-		"MesoCrystal * MesoCrystal::clone() const overridefinal\n"
+		"MesoCrystal * MesoCrystal::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -124873,7 +125641,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MesoCrystal_accept", _wrap_MesoCrystal_accept, METH_VARARGS, (char *)"\n"
 		"MesoCrystal_accept(MesoCrystal self, INodeVisitor visitor)\n"
 		"\n"
-		"void MesoCrystal::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void MesoCrystal::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -124881,7 +125649,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MesoCrystal_createSlicedParticle", _wrap_MesoCrystal_createSlicedParticle, METH_VARARGS, (char *)"\n"
 		"MesoCrystal_createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle\n"
 		"\n"
-		"SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const overridefinal\n"
+		"SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final\n"
 		"\n"
 		"Create a sliced form factor for this particle. \n"
 		"\n"
@@ -124889,7 +125657,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MesoCrystal_getChildren", _wrap_MesoCrystal_getChildren, METH_VARARGS, (char *)"\n"
 		"MesoCrystal_getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > MesoCrystal::getChildren() const overridefinal\n"
+		"std::vector< const INode * > MesoCrystal::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -124910,7 +125678,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MultiLayer_accept", _wrap_MultiLayer_accept, METH_VARARGS, (char *)"\n"
 		"MultiLayer_accept(MultiLayer self, INodeVisitor visitor)\n"
 		"\n"
-		"void MultiLayer::accept(INodeVisitor *visitor) const finaloverride\n"
+		"void MultiLayer::accept(INodeVisitor *visitor) const final override\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -124918,13 +125686,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MultiLayer_numberOfLayers", _wrap_MultiLayer_numberOfLayers, METH_VARARGS, (char *)"\n"
 		"MultiLayer_numberOfLayers(MultiLayer self) -> size_t\n"
 		"\n"
-		"size_t MultiLayer::numberOfLayers() const \n"
+		"size_t MultiLayer::numberOfLayers() const\n"
 		"\n"
 		""},
 	 { (char *)"MultiLayer_numberOfInterfaces", _wrap_MultiLayer_numberOfInterfaces, METH_VARARGS, (char *)"\n"
 		"MultiLayer_numberOfInterfaces(MultiLayer self) -> size_t\n"
 		"\n"
-		"size_t MultiLayer::numberOfInterfaces() const \n"
+		"size_t MultiLayer::numberOfInterfaces() const\n"
 		"\n"
 		""},
 	 { (char *)"MultiLayer_addLayer", _wrap_MultiLayer_addLayer, METH_VARARGS, (char *)"\n"
@@ -125024,7 +125792,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MultiLayer_clone", _wrap_MultiLayer_clone, METH_VARARGS, (char *)"\n"
 		"MultiLayer_clone(MultiLayer self) -> MultiLayer\n"
 		"\n"
-		"MultiLayer * MultiLayer::clone() const finaloverride\n"
+		"MultiLayer * MultiLayer::clone() const final override\n"
 		"\n"
 		"Returns a clone of multilayer with clones of all layers and recreated interfaces between layers \n"
 		"\n"
@@ -125114,7 +125882,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MultiLayer_containsMagneticMaterial", _wrap_MultiLayer_containsMagneticMaterial, METH_VARARGS, (char *)"\n"
 		"MultiLayer_containsMagneticMaterial(MultiLayer self) -> bool\n"
 		"\n"
-		"bool MultiLayer::containsMagneticMaterial() const \n"
+		"bool MultiLayer::containsMagneticMaterial() const\n"
 		"\n"
 		""},
 	 { (char *)"MultiLayer_containsCompatibleMaterials", _wrap_MultiLayer_containsCompatibleMaterials, METH_VARARGS, (char *)"\n"
@@ -125136,19 +125904,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"MultiLayer_hasRoughness", _wrap_MultiLayer_hasRoughness, METH_VARARGS, (char *)"\n"
 		"MultiLayer_hasRoughness(MultiLayer self) -> bool\n"
 		"\n"
-		"bool MultiLayer::hasRoughness() const \n"
+		"bool MultiLayer::hasRoughness() const\n"
 		"\n"
 		""},
 	 { (char *)"MultiLayer_totalNofLayouts", _wrap_MultiLayer_totalNofLayouts, METH_VARARGS, (char *)"\n"
 		"MultiLayer_totalNofLayouts(MultiLayer self) -> size_t\n"
 		"\n"
-		"size_t MultiLayer::totalNofLayouts() const \n"
+		"size_t MultiLayer::totalNofLayouts() const\n"
 		"\n"
 		""},
 	 { (char *)"MultiLayer_getChildren", _wrap_MultiLayer_getChildren, METH_VARARGS, (char *)"\n"
 		"MultiLayer_getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > MultiLayer::getChildren() const finaloverride\n"
+		"std::vector< const INode * > MultiLayer::getChildren() const final override\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -125230,7 +125998,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityData_clone", _wrap_IntensityData_clone, METH_VARARGS, (char *)"\n"
 		"IntensityData_clone(IntensityData self) -> IntensityData\n"
 		"\n"
-		"OutputData< T > * OutputData< T >::clone() const \n"
+		"OutputData< T > * OutputData< T >::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityData_copyFrom", _wrap_IntensityData_copyFrom, METH_VARARGS, (char *)"\n"
@@ -125242,7 +126010,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IntensityData_meanValues", _wrap_IntensityData_meanValues, METH_VARARGS, (char *)"\n"
 		"IntensityData_meanValues(IntensityData self) -> IntensityData\n"
 		"\n"
-		"OutputData< double > * OutputData< T >::meanValues() const \n"
+		"OutputData< double > * OutputData< T >::meanValues() const\n"
 		"\n"
 		""},
 	 { (char *)"IntensityData_addAxis", _wrap_IntensityData_addAxis, METH_VARARGS, (char *)"\n"
@@ -125493,7 +126261,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"IntensityData___iadd__", _wrap_IntensityData___iadd__, METH_VARARGS, (char *)"IntensityData___iadd__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___isub__", _wrap_IntensityData___isub__, METH_VARARGS, (char *)"IntensityData___isub__(IntensityData self, IntensityData right) -> IntensityData"},
-	 { (char *)"IntensityData___idiv__", _wrap_IntensityData___idiv__, METH_VARARGS, (char *)"IntensityData___idiv__(IntensityData self, IntensityData right) -> IntensityData"},
+	 { (char *)"IntensityData___itruediv__", _wrap_IntensityData___itruediv__, METH_VARARGS, (char *)"IntensityData___itruediv__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___imul__", _wrap_IntensityData___imul__, METH_VARARGS, (char *)"IntensityData___imul__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData_getValue", _wrap_IntensityData_getValue, METH_VARARGS, (char *)"\n"
 		"IntensityData_getValue(IntensityData self, size_t index) -> double\n"
@@ -125597,19 +126365,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParameterDistribution_getLimits", _wrap_ParameterDistribution_getLimits, METH_VARARGS, (char *)"\n"
 		"ParameterDistribution_getLimits(ParameterDistribution self) -> RealLimits\n"
 		"\n"
-		"RealLimits ParameterDistribution::getLimits() const \n"
+		"RealLimits ParameterDistribution::getLimits() const\n"
 		"\n"
 		""},
 	 { (char *)"ParameterDistribution_getMinValue", _wrap_ParameterDistribution_getMinValue, METH_VARARGS, (char *)"\n"
 		"ParameterDistribution_getMinValue(ParameterDistribution self) -> double\n"
 		"\n"
-		"double ParameterDistribution::getMinValue() const \n"
+		"double ParameterDistribution::getMinValue() const\n"
 		"\n"
 		""},
 	 { (char *)"ParameterDistribution_getMaxValue", _wrap_ParameterDistribution_getMaxValue, METH_VARARGS, (char *)"\n"
 		"ParameterDistribution_getMaxValue(ParameterDistribution self) -> double\n"
 		"\n"
-		"double ParameterDistribution::getMaxValue() const \n"
+		"double ParameterDistribution::getMaxValue() const\n"
 		"\n"
 		""},
 	 { (char *)"ParameterDistribution_swigregister", ParameterDistribution_swigregister, METH_VARARGS, NULL},
@@ -125729,7 +126497,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParameterPool_parameterNames", _wrap_ParameterPool_parameterNames, METH_VARARGS, (char *)"\n"
 		"ParameterPool_parameterNames(ParameterPool self) -> vector_string_t\n"
 		"\n"
-		"std::vector< std::string > ParameterPool::parameterNames() const \n"
+		"std::vector< std::string > ParameterPool::parameterNames() const\n"
 		"\n"
 		""},
 	 { (char *)"ParameterPool_removeParameter", _wrap_ParameterPool_removeParameter, METH_VARARGS, (char *)"\n"
@@ -125836,7 +126604,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Particle_clone", _wrap_Particle_clone, METH_VARARGS, (char *)"\n"
 		"Particle_clone(Particle self) -> Particle\n"
 		"\n"
-		"Particle * Particle::clone() const overridefinal\n"
+		"Particle * Particle::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -125844,7 +126612,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Particle_accept", _wrap_Particle_accept, METH_VARARGS, (char *)"\n"
 		"Particle_accept(Particle self, INodeVisitor visitor)\n"
 		"\n"
-		"void Particle::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void Particle::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -125852,7 +126620,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Particle_createSlicedParticle", _wrap_Particle_createSlicedParticle, METH_VARARGS, (char *)"\n"
 		"Particle_createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle\n"
 		"\n"
-		"SlicedParticle Particle::createSlicedParticle(ZLimits limits) const overridefinal\n"
+		"SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final\n"
 		"\n"
 		"Create a sliced form factor for this particle. \n"
 		"\n"
@@ -125866,7 +126634,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Particle_material", _wrap_Particle_material, METH_VARARGS, (char *)"\n"
 		"Particle_material(Particle self) -> Material\n"
 		"\n"
-		"const Material* Particle::material() const overridefinal\n"
+		"const Material* Particle::material() const override final\n"
 		"\n"
 		"Returns nullptr, unless overwritten to return a specific material. \n"
 		"\n"
@@ -125880,7 +126648,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Particle_getChildren", _wrap_Particle_getChildren, METH_VARARGS, (char *)"\n"
 		"Particle_getChildren(Particle self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > Particle::getChildren() const overridefinal\n"
+		"std::vector< const INode * > Particle::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -125903,7 +126671,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_clone", _wrap_ParticleComposition_clone, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_clone(ParticleComposition self) -> ParticleComposition\n"
 		"\n"
-		"ParticleComposition * ParticleComposition::clone() const overridefinal\n"
+		"ParticleComposition * ParticleComposition::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -125911,7 +126679,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_accept", _wrap_ParticleComposition_accept, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_accept(ParticleComposition self, INodeVisitor visitor)\n"
 		"\n"
-		"void ParticleComposition::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void ParticleComposition::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -125919,7 +126687,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_createFormFactor", _wrap_ParticleComposition_createFormFactor, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_createFormFactor(ParticleComposition self) -> IFormFactor\n"
 		"\n"
-		"IFormFactor * ParticleComposition::createFormFactor() const overridefinal\n"
+		"IFormFactor * ParticleComposition::createFormFactor() const override final\n"
 		"\n"
 		"Create a form factor for this particle. \n"
 		"\n"
@@ -125948,7 +126716,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_getChildren", _wrap_ParticleComposition_getChildren, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > ParticleComposition::getChildren() const overridefinal\n"
+		"std::vector< const INode * > ParticleComposition::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -125956,7 +126724,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_decompose", _wrap_ParticleComposition_decompose, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_decompose(ParticleComposition self) -> SafePointerVector< IParticle >\n"
 		"\n"
-		"SafePointerVector< IParticle > ParticleComposition::decompose() const overridefinal\n"
+		"SafePointerVector< IParticle > ParticleComposition::decompose() const override final\n"
 		"\n"
 		"Decompose in constituent  IParticle objects. \n"
 		"\n"
@@ -125964,7 +126732,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleComposition_bottomTopZ", _wrap_ParticleComposition_bottomTopZ, METH_VARARGS, (char *)"\n"
 		"ParticleComposition_bottomTopZ(ParticleComposition self) -> ParticleLimits\n"
 		"\n"
-		"ParticleLimits ParticleComposition::bottomTopZ() const overridefinal\n"
+		"ParticleLimits ParticleComposition::bottomTopZ() const override final\n"
 		"\n"
 		"Top and bottom z-coordinate. \n"
 		"\n"
@@ -125986,7 +126754,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleCoreShell_clone", _wrap_ParticleCoreShell_clone, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_clone(ParticleCoreShell self) -> ParticleCoreShell\n"
 		"\n"
-		"ParticleCoreShell * ParticleCoreShell::clone() const overridefinal\n"
+		"ParticleCoreShell * ParticleCoreShell::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -125994,7 +126762,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleCoreShell_accept", _wrap_ParticleCoreShell_accept, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_accept(ParticleCoreShell self, INodeVisitor visitor)\n"
 		"\n"
-		"void ParticleCoreShell::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void ParticleCoreShell::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -126002,7 +126770,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleCoreShell_createSlicedParticle", _wrap_ParticleCoreShell_createSlicedParticle, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle\n"
 		"\n"
-		"SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const overridefinal\n"
+		"SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final\n"
 		"\n"
 		"Create a sliced form factor for this particle. \n"
 		"\n"
@@ -126010,19 +126778,19 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleCoreShell_coreParticle", _wrap_ParticleCoreShell_coreParticle, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_coreParticle(ParticleCoreShell self) -> Particle\n"
 		"\n"
-		"const Particle * ParticleCoreShell::coreParticle() const \n"
+		"const Particle * ParticleCoreShell::coreParticle() const\n"
 		"\n"
 		""},
 	 { (char *)"ParticleCoreShell_shellParticle", _wrap_ParticleCoreShell_shellParticle, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_shellParticle(ParticleCoreShell self) -> Particle\n"
 		"\n"
-		"const Particle * ParticleCoreShell::shellParticle() const \n"
+		"const Particle * ParticleCoreShell::shellParticle() const\n"
 		"\n"
 		""},
 	 { (char *)"ParticleCoreShell_getChildren", _wrap_ParticleCoreShell_getChildren, METH_VARARGS, (char *)"\n"
 		"ParticleCoreShell_getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > ParticleCoreShell::getChildren() const overridefinal\n"
+		"std::vector< const INode * > ParticleCoreShell::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -126037,7 +126805,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleDistribution_clone", _wrap_ParticleDistribution_clone, METH_VARARGS, (char *)"\n"
 		"ParticleDistribution_clone(ParticleDistribution self) -> ParticleDistribution\n"
 		"\n"
-		"ParticleDistribution * ParticleDistribution::clone() const overridefinal\n"
+		"ParticleDistribution * ParticleDistribution::clone() const override final\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -126045,7 +126813,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleDistribution_accept", _wrap_ParticleDistribution_accept, METH_VARARGS, (char *)"\n"
 		"ParticleDistribution_accept(ParticleDistribution self, INodeVisitor visitor)\n"
 		"\n"
-		"void ParticleDistribution::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void ParticleDistribution::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -126053,7 +126821,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleDistribution_translate", _wrap_ParticleDistribution_translate, METH_VARARGS, (char *)"\n"
 		"ParticleDistribution_translate(ParticleDistribution self, kvector_t translation)\n"
 		"\n"
-		"void ParticleDistribution::translate(kvector_t translation) overridefinal\n"
+		"void ParticleDistribution::translate(kvector_t translation) override final\n"
 		"\n"
 		"Translates the particle with the given vector. \n"
 		"\n"
@@ -126061,7 +126829,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleDistribution_rotate", _wrap_ParticleDistribution_rotate, METH_VARARGS, (char *)"\n"
 		"ParticleDistribution_rotate(ParticleDistribution self, IRotation rotation)\n"
 		"\n"
-		"void ParticleDistribution::rotate(const IRotation &rotation) overridefinal\n"
+		"void ParticleDistribution::rotate(const IRotation &rotation) override final\n"
 		"\n"
 		"Applies the given rotation to the particle. \n"
 		"\n"
@@ -126095,7 +126863,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleDistribution_getChildren", _wrap_ParticleDistribution_getChildren, METH_VARARGS, (char *)"\n"
 		"ParticleDistribution_getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > ParticleDistribution::getChildren() const overridefinal\n"
+		"std::vector< const INode * > ParticleDistribution::getChildren() const override final\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -126119,7 +126887,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_clone", _wrap_ParticleLayout_clone, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_clone(ParticleLayout self) -> ParticleLayout\n"
 		"\n"
-		"ParticleLayout * ParticleLayout::clone() const finaloverride\n"
+		"ParticleLayout * ParticleLayout::clone() const final override\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -126127,13 +126895,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_cloneWithOffset", _wrap_ParticleLayout_cloneWithOffset, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_cloneWithOffset(ParticleLayout self, double offset) -> ParticleLayout\n"
 		"\n"
-		"ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const finaloverride\n"
+		"ParticleLayout * ParticleLayout::cloneWithOffset(double offset) const final override\n"
 		"\n"
 		""},
 	 { (char *)"ParticleLayout_accept", _wrap_ParticleLayout_accept, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_accept(ParticleLayout self, INodeVisitor visitor)\n"
 		"\n"
-		"void ParticleLayout::accept(INodeVisitor *visitor) const finaloverride\n"
+		"void ParticleLayout::accept(INodeVisitor *visitor) const final override\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -126167,7 +126935,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_particles", _wrap_ParticleLayout_particles, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_particles(ParticleLayout self) -> SafePointerVector< IParticle const >\n"
 		"\n"
-		"SafePointerVector< const IParticle > ParticleLayout::particles() const finaloverride\n"
+		"SafePointerVector< const IParticle > ParticleLayout::particles() const final override\n"
 		"\n"
 		"Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection \n"
 		"\n"
@@ -126175,7 +126943,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_getTotalAbundance", _wrap_ParticleLayout_getTotalAbundance, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_getTotalAbundance(ParticleLayout self) -> double\n"
 		"\n"
-		"double ParticleLayout::getTotalAbundance() const finaloverride\n"
+		"double ParticleLayout::getTotalAbundance() const final override\n"
 		"\n"
 		"Get total abundance of all particles. \n"
 		"\n"
@@ -126191,7 +126959,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_totalParticleSurfaceDensity", _wrap_ParticleLayout_totalParticleSurfaceDensity, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_totalParticleSurfaceDensity(ParticleLayout self) -> double\n"
 		"\n"
-		"double ParticleLayout::totalParticleSurfaceDensity() const finaloverride\n"
+		"double ParticleLayout::totalParticleSurfaceDensity() const final override\n"
 		"\n"
 		"Returns surface density of all particles. \n"
 		"\n"
@@ -126199,7 +126967,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_setTotalParticleSurfaceDensity", _wrap_ParticleLayout_setTotalParticleSurfaceDensity, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)\n"
 		"\n"
-		"void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) finaloverride\n"
+		"void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override\n"
 		"\n"
 		"Sets total particle surface density.  particle_density: number of particles per square nanometer \n"
 		"\n"
@@ -126207,7 +126975,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_getChildren", _wrap_ParticleLayout_getChildren, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector\n"
 		"\n"
-		"std::vector< const INode * > ParticleLayout::getChildren() const finaloverride\n"
+		"std::vector< const INode * > ParticleLayout::getChildren() const final override\n"
 		"\n"
 		"Returns a vector of children (const). \n"
 		"\n"
@@ -126228,7 +126996,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"PoissonNoiseBackground_clone", _wrap_PoissonNoiseBackground_clone, METH_VARARGS, (char *)"\n"
 		"PoissonNoiseBackground_clone(PoissonNoiseBackground self) -> PoissonNoiseBackground\n"
 		"\n"
-		"PoissonNoiseBackground * PoissonNoiseBackground::clone() const overridefinal\n"
+		"PoissonNoiseBackground * PoissonNoiseBackground::clone() const override final\n"
 		"\n"
 		""},
 	 { (char *)"PoissonNoiseBackground_accept", _wrap_PoissonNoiseBackground_accept, METH_VARARGS, (char *)"\n"
@@ -126242,7 +127010,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"PoissonNoiseBackground_addBackGround", _wrap_PoissonNoiseBackground_addBackGround, METH_VARARGS, (char *)"\n"
 		"PoissonNoiseBackground_addBackGround(PoissonNoiseBackground self, double intensity) -> double\n"
 		"\n"
-		"double PoissonNoiseBackground::addBackGround(double intensity) const overridefinal\n"
+		"double PoissonNoiseBackground::addBackGround(double intensity) const override final\n"
 		"\n"
 		""},
 	 { (char *)"PoissonNoiseBackground_swigregister", PoissonNoiseBackground_swigregister, METH_VARARGS, NULL},
@@ -126263,7 +127031,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Polygon_clone", _wrap_Polygon_clone, METH_VARARGS, (char *)"\n"
 		"Polygon_clone(Polygon self) -> Polygon\n"
 		"\n"
-		"virtual Polygon* Polygon::clone() const \n"
+		"virtual Polygon* Polygon::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"Polygon_contains", _wrap_Polygon_contains, METH_VARARGS, (char *)"\n"
@@ -126278,13 +127046,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Polygon_getArea", _wrap_Polygon_getArea, METH_VARARGS, (char *)"\n"
 		"Polygon_getArea(Polygon self) -> double\n"
 		"\n"
-		"double Polygon::getArea() const \n"
+		"double 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 Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const \n"
+		"void Polygon::getPoints(std::vector< double > &xpos, std::vector< double > &ypos) const\n"
 		"\n"
 		""},
 	 { (char *)"Polygon_swigregister", Polygon_swigregister, METH_VARARGS, NULL},
@@ -126302,7 +127070,7 @@ static PyMethodDef SwigMethods[] = {
 		"clone(std::string const & new_name) -> RealParameter\n"
 		"RealParameter_clone(RealParameter self) -> RealParameter\n"
 		"\n"
-		"RealParameter * RealParameter::clone(const std::string &new_name=\"\") const \n"
+		"RealParameter * RealParameter::clone(const std::string &new_name=\"\") const\n"
 		"\n"
 		""},
 	 { (char *)"RealParameter_setValue", _wrap_RealParameter_setValue, METH_VARARGS, (char *)"\n"
@@ -126330,7 +127098,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RealParameter_limits", _wrap_RealParameter_limits, METH_VARARGS, (char *)"\n"
 		"RealParameter_limits(RealParameter self) -> RealLimits\n"
 		"\n"
-		"RealLimits RealParameter::limits() const \n"
+		"RealLimits RealParameter::limits() const\n"
 		"\n"
 		""},
 	 { (char *)"RealParameter_setLimited", _wrap_RealParameter_setLimited, METH_VARARGS, (char *)"\n"
@@ -126360,7 +127128,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RealParameter_unit", _wrap_RealParameter_unit, METH_VARARGS, (char *)"\n"
 		"RealParameter_unit(RealParameter self) -> std::string\n"
 		"\n"
-		"std::string RealParameter::unit() const \n"
+		"std::string RealParameter::unit() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_RealParameter", _wrap_delete_RealParameter, METH_VARARGS, (char *)"delete_RealParameter(RealParameter self)"},
@@ -126389,7 +127157,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Rectangle_clone", _wrap_Rectangle_clone, METH_VARARGS, (char *)"\n"
 		"Rectangle_clone(Rectangle self) -> Rectangle\n"
 		"\n"
-		"Rectangle* Rectangle::clone() const \n"
+		"Rectangle* Rectangle::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_contains", _wrap_Rectangle_contains, METH_VARARGS, (char *)"\n"
@@ -126404,31 +127172,31 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Rectangle_getArea", _wrap_Rectangle_getArea, METH_VARARGS, (char *)"\n"
 		"Rectangle_getArea(Rectangle self) -> double\n"
 		"\n"
-		"double Rectangle::getArea() const \n"
+		"double Rectangle::getArea() const\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_getXlow", _wrap_Rectangle_getXlow, METH_VARARGS, (char *)"\n"
 		"Rectangle_getXlow(Rectangle self) -> double\n"
 		"\n"
-		"double Rectangle::getXlow() const \n"
+		"double Rectangle::getXlow() const\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_getYlow", _wrap_Rectangle_getYlow, METH_VARARGS, (char *)"\n"
 		"Rectangle_getYlow(Rectangle self) -> double\n"
 		"\n"
-		"double Rectangle::getYlow() const \n"
+		"double Rectangle::getYlow() const\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_getXup", _wrap_Rectangle_getXup, METH_VARARGS, (char *)"\n"
 		"Rectangle_getXup(Rectangle self) -> double\n"
 		"\n"
-		"double Rectangle::getXup() const \n"
+		"double Rectangle::getXup() const\n"
 		"\n"
 		""},
 	 { (char *)"Rectangle_getYup", _wrap_Rectangle_getYup, METH_VARARGS, (char *)"\n"
 		"Rectangle_getYup(Rectangle self) -> double\n"
 		"\n"
-		"double Rectangle::getYup() const \n"
+		"double Rectangle::getYup() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_Rectangle", _wrap_delete_Rectangle, METH_VARARGS, (char *)"delete_Rectangle(Rectangle self)"},
@@ -126472,7 +127240,7 @@ static PyMethodDef SwigMethods[] = {
 		"setPosition(kvector_t normal_to_detector, double u0, double v0, kvector_t direction)\n"
 		"RectangularDetector_setPosition(RectangularDetector self, kvector_t normal_to_detector, double u0, double v0)\n"
 		"\n"
-		"void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0,-1.0, 0.0))\n"
+		"void RectangularDetector::setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0, -1.0, 0.0))\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_setPerpendicularToSampleX", _wrap_RectangularDetector_setPerpendicularToSampleX, METH_VARARGS, (char *)"\n"
@@ -126504,73 +127272,73 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RectangularDetector_getWidth", _wrap_RectangularDetector_getWidth, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getWidth(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getWidth() const \n"
+		"double RectangularDetector::getWidth() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getHeight", _wrap_RectangularDetector_getHeight, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getHeight(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getHeight() const \n"
+		"double RectangularDetector::getHeight() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getNbinsX", _wrap_RectangularDetector_getNbinsX, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getNbinsX(RectangularDetector self) -> size_t\n"
 		"\n"
-		"size_t RectangularDetector::getNbinsX() const \n"
+		"size_t RectangularDetector::getNbinsX() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getNbinsY", _wrap_RectangularDetector_getNbinsY, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getNbinsY(RectangularDetector self) -> size_t\n"
 		"\n"
-		"size_t RectangularDetector::getNbinsY() const \n"
+		"size_t RectangularDetector::getNbinsY() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getNormalVector", _wrap_RectangularDetector_getNormalVector, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getNormalVector(RectangularDetector self) -> kvector_t\n"
 		"\n"
-		"kvector_t RectangularDetector::getNormalVector() const \n"
+		"kvector_t RectangularDetector::getNormalVector() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getU0", _wrap_RectangularDetector_getU0, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getU0(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getU0() const \n"
+		"double RectangularDetector::getU0() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getV0", _wrap_RectangularDetector_getV0, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getV0(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getV0() const \n"
+		"double RectangularDetector::getV0() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getDirectionVector", _wrap_RectangularDetector_getDirectionVector, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getDirectionVector(RectangularDetector self) -> kvector_t\n"
 		"\n"
-		"kvector_t RectangularDetector::getDirectionVector() const \n"
+		"kvector_t RectangularDetector::getDirectionVector() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getDistance", _wrap_RectangularDetector_getDistance, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getDistance(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getDistance() const \n"
+		"double RectangularDetector::getDistance() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getDirectBeamU0", _wrap_RectangularDetector_getDirectBeamU0, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getDirectBeamU0(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getDirectBeamU0() const \n"
+		"double RectangularDetector::getDirectBeamU0() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getDirectBeamV0", _wrap_RectangularDetector_getDirectBeamV0, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getDirectBeamV0(RectangularDetector self) -> double\n"
 		"\n"
-		"double RectangularDetector::getDirectBeamV0() const \n"
+		"double RectangularDetector::getDirectBeamV0() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_getDetectorArrangment", _wrap_RectangularDetector_getDetectorArrangment, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_getDetectorArrangment(RectangularDetector self) -> RectangularDetector::EDetectorArrangement\n"
 		"\n"
-		"RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const \n"
+		"RectangularDetector::EDetectorArrangement RectangularDetector::getDetectorArrangment() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_validAxesUnits", _wrap_RectangularDetector_validAxesUnits, METH_VARARGS, (char *)"\n"
@@ -126592,7 +127360,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RectangularDetector_regionOfInterestPixel", _wrap_RectangularDetector_regionOfInterestPixel, METH_VARARGS, (char *)"\n"
 		"RectangularDetector_regionOfInterestPixel(RectangularDetector self) -> RectangularPixel\n"
 		"\n"
-		"RectangularPixel * RectangularDetector::regionOfInterestPixel() const \n"
+		"RectangularPixel * RectangularDetector::regionOfInterestPixel() const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularDetector_swigregister", RectangularDetector_swigregister, METH_VARARGS, NULL},
@@ -126629,7 +127397,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"RectangularPixel_getPosition", _wrap_RectangularPixel_getPosition, METH_VARARGS, (char *)"\n"
 		"RectangularPixel_getPosition(RectangularPixel self, double x, double y) -> kvector_t\n"
 		"\n"
-		"kvector_t RectangularPixel::getPosition(double x, double y) const \n"
+		"kvector_t RectangularPixel::getPosition(double x, double y) const\n"
 		"\n"
 		""},
 	 { (char *)"RectangularPixel_getIntegrationFactor", _wrap_RectangularPixel_getIntegrationFactor, METH_VARARGS, (char *)"\n"
@@ -126654,13 +127422,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ResolutionFunction2DGaussian_evaluateCDF", _wrap_ResolutionFunction2DGaussian_evaluateCDF, METH_VARARGS, (char *)"\n"
 		"ResolutionFunction2DGaussian_evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double\n"
 		"\n"
-		"double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const \n"
+		"double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const\n"
 		"\n"
 		""},
 	 { (char *)"ResolutionFunction2DGaussian_clone", _wrap_ResolutionFunction2DGaussian_clone, METH_VARARGS, (char *)"\n"
 		"ResolutionFunction2DGaussian_clone(ResolutionFunction2DGaussian self) -> ResolutionFunction2DGaussian\n"
 		"\n"
-		"ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const \n"
+		"ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const\n"
 		"\n"
 		""},
 	 { (char *)"ResolutionFunction2DGaussian_accept", _wrap_ResolutionFunction2DGaussian_accept, METH_VARARGS, (char *)"\n"
@@ -126674,13 +127442,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ResolutionFunction2DGaussian_getSigmaX", _wrap_ResolutionFunction2DGaussian_getSigmaX, METH_VARARGS, (char *)"\n"
 		"ResolutionFunction2DGaussian_getSigmaX(ResolutionFunction2DGaussian self) -> double\n"
 		"\n"
-		"double ResolutionFunction2DGaussian::getSigmaX() const \n"
+		"double ResolutionFunction2DGaussian::getSigmaX() const\n"
 		"\n"
 		""},
 	 { (char *)"ResolutionFunction2DGaussian_getSigmaY", _wrap_ResolutionFunction2DGaussian_getSigmaY, METH_VARARGS, (char *)"\n"
 		"ResolutionFunction2DGaussian_getSigmaY(ResolutionFunction2DGaussian self) -> double\n"
 		"\n"
-		"double ResolutionFunction2DGaussian::getSigmaY() const \n"
+		"double ResolutionFunction2DGaussian::getSigmaY() const\n"
 		"\n"
 		""},
 	 { (char *)"delete_ResolutionFunction2DGaussian", _wrap_delete_ResolutionFunction2DGaussian, METH_VARARGS, (char *)"delete_ResolutionFunction2DGaussian(ResolutionFunction2DGaussian self)"},
@@ -126716,7 +127484,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SpecularSimulation_accept", _wrap_SpecularSimulation_accept, METH_VARARGS, (char *)"\n"
 		"SpecularSimulation_accept(SpecularSimulation self, INodeVisitor visitor)\n"
 		"\n"
-		"void SpecularSimulation::accept(INodeVisitor *visitor) const overridefinal\n"
+		"void SpecularSimulation::accept(INodeVisitor *visitor) const override final\n"
 		"\n"
 		"Calls the  INodeVisitor's visit method. \n"
 		"\n"
@@ -126753,10 +127521,20 @@ static PyMethodDef SwigMethods[] = {
 		"Returns detector count values in the form of  OutputData<double>. Detector counts are proportional to  $Reflectivity = |R|^2$ from the upper layer. \n"
 		"\n"
 		""},
+	 { (char *)"SpecularSimulation_addParameterDistribution", _wrap_SpecularSimulation_addParameterDistribution, METH_VARARGS, (char *)"\n"
+		"addParameterDistribution(std::string const & param_name, IDistribution1D distribution, size_t nbr_samples, double sigma_factor=0.0, RealLimits limits)\n"
+		"addParameterDistribution(std::string const & param_name, IDistribution1D distribution, size_t nbr_samples, double sigma_factor=0.0)\n"
+		"addParameterDistribution(std::string const & param_name, IDistribution1D distribution, size_t nbr_samples)\n"
+		"SpecularSimulation_addParameterDistribution(SpecularSimulation self, ParameterDistribution par_distr)\n"
+		"\n"
+		"void Simulation::addParameterDistribution(const ParameterDistribution &par_distr)\n"
+		"\n"
+		""},
 	 { (char *)"SpecularSimulation_getIntensityData", _wrap_SpecularSimulation_getIntensityData, METH_VARARGS, (char *)"\n"
+		"getIntensityData(AxesUnits units_type) -> Histogram1D\n"
 		"SpecularSimulation_getIntensityData(SpecularSimulation self) -> Histogram1D\n"
 		"\n"
-		"Histogram1D * SpecularSimulation::getIntensityData() const\n"
+		"Histogram1D * SpecularSimulation::getIntensityData(AxesUnits units_type=AxesUnits::DEFAULT) const\n"
 		"\n"
 		"Returns detector signal (  $ \\\\propto |R|^2$) in the form of 1D Histogram. \n"
 		"\n"
@@ -126802,7 +127580,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SampleBuilderFactoryTemp_contains", _wrap_SampleBuilderFactoryTemp_contains, METH_VARARGS, (char *)"\n"
 		"SampleBuilderFactoryTemp_contains(SampleBuilderFactoryTemp self, std::string const & item_key) -> bool\n"
 		"\n"
-		"bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const \n"
+		"bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const\n"
 		"\n"
 		""},
 	 { (char *)"delete_SampleBuilderFactoryTemp", _wrap_delete_SampleBuilderFactoryTemp, METH_VARARGS, (char *)"\n"
@@ -126822,13 +127600,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SampleBuilderFactoryTemp_begin", _wrap_SampleBuilderFactoryTemp_begin, METH_VARARGS, (char *)"\n"
 		"SampleBuilderFactoryTemp_begin(SampleBuilderFactoryTemp self) -> IFactory< std::string,IMultiLayerBuilder >::const_iterator\n"
 		"\n"
-		"const_iterator IFactory< Key, AbstractProduct >::begin() const \n"
+		"const_iterator IFactory< Key, AbstractProduct >::begin() const\n"
 		"\n"
 		""},
 	 { (char *)"SampleBuilderFactoryTemp_end", _wrap_SampleBuilderFactoryTemp_end, METH_VARARGS, (char *)"\n"
 		"SampleBuilderFactoryTemp_end(SampleBuilderFactoryTemp self) -> IFactory< std::string,IMultiLayerBuilder >::const_iterator\n"
 		"\n"
-		"const_iterator IFactory< Key, AbstractProduct >::end() const \n"
+		"const_iterator IFactory< Key, AbstractProduct >::end() const\n"
 		"\n"
 		""},
 	 { (char *)"SampleBuilderFactoryTemp_swigregister", SampleBuilderFactoryTemp_swigregister, METH_VARARGS, NULL},
@@ -126874,7 +127652,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationFactoryTemp_contains", _wrap_SimulationFactoryTemp_contains, METH_VARARGS, (char *)"\n"
 		"SimulationFactoryTemp_contains(SimulationFactoryTemp self, std::string const & item_key) -> bool\n"
 		"\n"
-		"bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const \n"
+		"bool IFactory< Key, AbstractProduct >::contains(const Key &item_key) const\n"
 		"\n"
 		""},
 	 { (char *)"delete_SimulationFactoryTemp", _wrap_delete_SimulationFactoryTemp, METH_VARARGS, (char *)"\n"
@@ -126894,13 +127672,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SimulationFactoryTemp_begin", _wrap_SimulationFactoryTemp_begin, METH_VARARGS, (char *)"\n"
 		"SimulationFactoryTemp_begin(SimulationFactoryTemp self) -> IFactory< std::string,Simulation >::const_iterator\n"
 		"\n"
-		"const_iterator IFactory< Key, AbstractProduct >::begin() const \n"
+		"const_iterator IFactory< Key, AbstractProduct >::begin() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationFactoryTemp_end", _wrap_SimulationFactoryTemp_end, METH_VARARGS, (char *)"\n"
 		"SimulationFactoryTemp_end(SimulationFactoryTemp self) -> IFactory< std::string,Simulation >::const_iterator\n"
 		"\n"
-		"const_iterator IFactory< Key, AbstractProduct >::end() const \n"
+		"const_iterator IFactory< Key, AbstractProduct >::end() const\n"
 		"\n"
 		""},
 	 { (char *)"SimulationFactoryTemp_swigregister", SimulationFactoryTemp_swigregister, METH_VARARGS, NULL},
@@ -131130,7 +131908,6 @@ extern "C" {
     static int type_init = 0;
     if (!type_init) {
       const PyTypeObject tmp = {
-        /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
         PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -131362,13 +132139,13 @@ SWIG_init(void) {
   static PyGetSetDef thisown_getset_def = {
     (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
   };
-  PyObject *metatype_args;
   PyTypeObject *builtin_pytype;
   int builtin_base_count;
   swig_type_info *builtin_basetype;
   PyObject *tuple;
   PyGetSetDescrObject *static_getset;
   PyTypeObject *metatype;
+  PyTypeObject *swigpyobject;
   SwigPyClientData *cd;
   PyObject *public_interface, *public_symbol;
   PyObject *this_descr;
@@ -131383,14 +132160,9 @@ SWIG_init(void) {
   (void)static_getset;
   (void)self;
   
-  /* metatype is used to implement static member variables. */
-  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
-  assert(metatype_args);
-  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
+  /* Metaclass is used to implement static member variables */
+  metatype = SwigPyObjectType();
   assert(metatype);
-  Py_DECREF(metatype_args);
-  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
-  assert(PyType_Ready(metatype) >= 0);
 #endif
   
   /* Fix SwigMethods to carry the callback ptrs when needed */
@@ -131408,13 +132180,15 @@ SWIG_init(void) {
   SWIG_InitializeModule(0);
   
 #ifdef SWIGPYTHON_BUILTIN
+  swigpyobject = SwigPyObject_TypeOnce();
+  
   SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
   assert(SwigPyObject_stype);
   cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
   if (!cd) {
     SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
-    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
-  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
+    SwigPyObject_clientdata.pytype = swigpyobject;
+  } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) {
     PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
 # if PY_VERSION_HEX >= 0x03000000
     return NULL;
@@ -131445,30 +132219,33 @@ SWIG_init(void) {
   
   SWIG_InstallConstants(d,swig_const_table);
   
+  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
   
   import_array();
   
-  PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
-  SWIG_addvarlink(SWIG_globals(),(char*)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"meter",Swig_var_meter_get, Swig_var_meter_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"nm",Swig_var_nm_get, Swig_var_nm_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"barn",Swig_var_barn_get, Swig_var_barn_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"radian",Swig_var_radian_get, Swig_var_radian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"degree",Swig_var_degree_get, Swig_var_degree_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"rad",Swig_var_rad_get, Swig_var_rad_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"sr",Swig_var_sr_get, Swig_var_sr_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"deg",Swig_var_deg_get, Swig_var_deg_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
+  PyDict_SetItemString(md,(char *)"cvar", SWIG_globals());
+  SWIG_addvarlink(SWIG_globals(),(char *)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"meter",Swig_var_meter_get, Swig_var_meter_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"nm",Swig_var_nm_get, Swig_var_nm_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"barn",Swig_var_barn_get, Swig_var_barn_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"radian",Swig_var_radian_get, Swig_var_radian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"degree",Swig_var_degree_get, Swig_var_degree_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"rad",Swig_var_rad_get, Swig_var_rad_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"sr",Swig_var_sr_get, Swig_var_sr_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"deg",Swig_var_deg_get, Swig_var_deg_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
+  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
+  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
   SWIG_Python_SetConstant(d, "IHistogram_INTEGRAL",SWIG_From_int(static_cast< int >(IHistogram::INTEGRAL)));
   SWIG_Python_SetConstant(d, "IHistogram_AVERAGE",SWIG_From_int(static_cast< int >(IHistogram::AVERAGE)));
   SWIG_Python_SetConstant(d, "IHistogram_STANDARD_ERROR",SWIG_From_int(static_cast< int >(IHistogram::STANDARD_ERROR)));
diff --git a/auto/Wrap/libBornAgainCore_wrap.h b/auto/Wrap/libBornAgainCore_wrap.h
index 4901028c873..f35447d4844 100644
--- a/auto/Wrap/libBornAgainCore_wrap.h
+++ b/auto/Wrap/libBornAgainCore_wrap.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
diff --git a/auto/Wrap/swig_runtime.h b/auto/Wrap/swig_runtime.h
index 96d50bdb9a2..de3fda43582 100644
--- a/auto/Wrap/swig_runtime.h
+++ b/auto/Wrap/swig_runtime.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -75,9 +75,11 @@
 #endif
 
 /* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
+#if defined(__GNUC__)
+#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#    ifndef GCC_HASCLASSVISIBILITY
+#      define GCC_HASCLASSVISIBILITY
+#    endif
 #  endif
 #endif
 
@@ -642,16 +644,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
+      uu = (unsigned char)((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
+      uu = (unsigned char)((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
+      uu |= (unsigned char)(d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
+      uu |= (unsigned char)(d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -816,10 +818,6 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -934,6 +932,7 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
+#define Py_hash_t long
 #endif
 /* -----------------------------------------------------------------------------
  * error manipulation
@@ -1878,7 +1877,6 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1889,7 +1887,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,				    /* tp_print */
+      0,                                    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1897,7 +1895,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1907,7 +1905,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,				    /* tp_str */
+      0,                                    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2070,7 +2068,6 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
-- 
GitLab