From 1e017002f0f37edc4fdbf7bc891c95335243a741 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (l)" <j.wuttke@fz-juelich.de>
Date: Wed, 14 Oct 2020 20:15:12 +0200
Subject: [PATCH] all subdirs moved to lib Sample

---
 Core/Aggregate/InterferenceFunctions.h        |   30 -
 Core/Computation/DWBAComputation.cpp          |    4 +-
 Core/Computation/DWBASingleComputation.h      |    2 +-
 Core/Computation/DepthProbeComputation.cpp    |    2 +-
 .../Computation/DepthProbeComputationTerm.cpp |    2 +-
 Core/Computation/GISASSpecularComputation.cpp |    2 +-
 Core/Computation/IComputation.cpp             |    2 +-
 Core/Computation/IComputation.h               |    2 +-
 Core/Computation/LayoutStrategyBuilder.cpp    |    6 +-
 Core/Computation/LayoutStrategyBuilder.h      |    2 +-
 Core/Computation/MultiLayerFuncs.cpp          |    2 +-
 .../Computation/ParticleLayoutComputation.cpp |    2 +-
 Core/Computation/ParticleLayoutComputation.h  |    2 +-
 Core/Computation/ProcessedLayout.cpp          |   12 +-
 Core/Computation/ProcessedSample.cpp          |   14 +-
 Core/Computation/ProcessedSample.h            |    2 +-
 Core/Computation/ProfileHelper.cpp            |    2 +-
 .../RoughMultiLayerComputation.cpp            |   10 +-
 Core/Computation/SpecularComputation.cpp      |    2 +-
 Core/Computation/SpecularComputationTerm.cpp  |    4 +-
 Core/Computation/SpecularComputationTerm.h    |    2 +-
 Core/Computation/SpecularStrategyBuilder.cpp  |   10 +-
 Core/Computation/SpecularStrategyBuilder.h    |    4 +-
 Core/Export/SampleLabelHandler.cpp            |   16 +-
 Core/Export/SampleToPython.cpp                |   24 +-
 Core/SampleBuilderEngine/FixedBuilder.cpp     |    2 +-
 .../SampleBuilderEngine/SampleBuilderNode.cpp |    2 +-
 Core/SampleBuilderEngine/SampleComponents.h   |    2 +-
 Core/SampleBuilderEngine/SampleProvider.cpp   |    2 +-
 Core/Scan/AngularSpecScan.cpp                 |    2 +-
 Core/Scan/QSpecScan.cpp                       |    2 +-
 Core/Simulation/DepthProbeSimulation.cpp      |    2 +-
 Core/Simulation/DepthProbeSimulation.h        |    2 +-
 Core/Simulation/GISASSimulation.cpp           |    2 +-
 Core/Simulation/OffSpecSimulation.cpp         |    2 +-
 Core/Simulation/Simulation.cpp                |    4 +-
 Core/Simulation/Simulation.h                  |    2 +-
 Core/Simulation/SpecularSimulation.cpp        |    4 +-
 Core/Simulation/SpecularSimulation.h          |    2 +-
 .../StandardSamples/BoxCompositionBuilder.cpp |   10 +-
 .../BoxesSquareLatticeBuilder.cpp             |   10 +-
 .../CoreShellParticleBuilder.cpp              |   10 +-
 .../CustomMorphologyBuilder.cpp               |    8 +-
 .../CylindersAndPrismsBuilder.cpp             |    8 +-
 Core/StandardSamples/CylindersBuilder.cpp     |   10 +-
 Core/StandardSamples/FeNiBilayerBuilder.cpp   |    6 +-
 .../HomogeneousMultilayerBuilder.cpp          |    4 +-
 Core/StandardSamples/LatticeBuilder.cpp       |   14 +-
 .../LayersWithAbsorptionBuilder.cpp           |   10 +-
 .../LayersWithAbsorptionBySLDBuilder.cpp      |    8 +-
 .../StandardSamples/MagneticLayersBuilder.cpp |   10 +-
 Core/StandardSamples/MagneticLayersBuilder.h  |    2 +-
 .../MagneticParticlesBuilder.cpp              |   12 +-
 Core/StandardSamples/MesoCrystalBuilder.cpp   |   12 +-
 .../MultiLayerWithNCRoughnessBuilder.cpp      |    4 +-
 .../MultiLayerWithRoughnessBuilder.cpp        |    6 +-
 .../StandardSamples/MultipleLayoutBuilder.cpp |    8 +-
 Core/StandardSamples/ParaCrystalBuilder.cpp   |   12 +-
 .../ParticleCompositionBuilder.cpp            |   12 +-
 .../ParticleDistributionsBuilder.cpp          |   10 +-
 .../ParticleInVacuumBuilder.cpp               |    8 +-
 Core/StandardSamples/PercusYevickBuilder.cpp  |   10 +-
 .../PlainMultiLayerBySLDBuilder.cpp           |    4 +-
 Core/StandardSamples/ResonatorBuilder.cpp     |    6 +-
 Core/StandardSamples/RipplesBuilder.cpp       |   10 +-
 .../RotatedPyramidsBuilder.cpp                |    8 +-
 .../SizeDistributionModelsBuilder.cpp         |   12 +-
 .../SlicedCompositionBuilder.cpp              |   10 +-
 .../SlicedCylindersBuilder.cpp                |    8 +-
 .../ThickAbsorptiveSampleBuilder.cpp          |    6 +-
 .../TransformationsBuilder.cpp                |    8 +-
 Core/StandardSamples/TwoDimLatticeBuilder.cpp |   16 +-
 .../TwoLayerRoughnessBuilder.cpp              |    6 +-
 .../CylindersAndPrisms/CylindersAndPrisms.cpp |    8 +-
 GUI/coregui/Models/ApplicationModels.cpp      |    2 +-
 GUI/coregui/Models/FTDecayFunctionItems.h     |    4 +-
 GUI/coregui/Models/FTDistributionItems.h      |    4 +-
 GUI/coregui/Models/FormFactorItems.cpp        |    2 +-
 GUI/coregui/Models/GUIDomainSampleVisitor.cpp |   22 +-
 GUI/coregui/Models/GUIExamplesFactory.cpp     |    2 +-
 GUI/coregui/Models/GUIObjectBuilder.cpp       |    2 +-
 .../Models/InterferenceFunctionItems.cpp      |    2 +-
 GUI/coregui/Models/Lattice2DItems.cpp         |    2 +-
 GUI/coregui/Models/MesoCrystalItem.cpp        |    8 +-
 GUI/coregui/Models/MesoCrystalItem.h          |    2 +-
 .../Models/ParticleCompositionItem.cpp        |    6 +-
 GUI/coregui/Models/ParticleCompositionItem.h  |    2 +-
 GUI/coregui/Models/ParticleCoreShellItem.cpp  |    4 +-
 GUI/coregui/Models/ParticleDistributionItem.h |    2 +-
 GUI/coregui/Models/ParticleItem.cpp           |    2 +-
 GUI/coregui/Models/TransformFromDomain.cpp    |   10 +-
 GUI/coregui/Models/TransformToDomain.cpp      |    8 +-
 GUI/coregui/Models/TransformToDomain.h        |   14 +-
 .../Views/InfoWidgets/PySampleWidget.cpp      |    2 +-
 .../PropertyEditor/TestComponentView.cpp      |    2 +-
 .../RealSpaceWidgets/IPositionBuilder.cpp     |    2 +-
 .../RealSpace2DParacrystalUtils.cpp           |    2 +-
 .../RealSpaceWidgets/RealSpaceBuilder.cpp     |    6 +-
 .../RealSpaceBuilderUtils.cpp                 |   10 +-
 .../RealSpaceMesoCrystalUtils.cpp             |    6 +-
 GUI/coregui/mainwindow/PyImportAssistant.cpp  |    4 +-
 .../Aggregate/IInterferenceFunction.cpp       |    4 +-
 .../Aggregate/IInterferenceFunction.h         |    2 +-
 .../InterferenceFunction1DLattice.cpp         |    8 +-
 .../Aggregate/InterferenceFunction1DLattice.h |    4 +-
 .../InterferenceFunction2DLattice.cpp         |    4 +-
 .../Aggregate/InterferenceFunction2DLattice.h |   10 +-
 .../InterferenceFunction2DParaCrystal.cpp     |    4 +-
 .../InterferenceFunction2DParaCrystal.h       |    8 +-
 .../InterferenceFunction2DSuperLattice.cpp    |    6 +-
 .../InterferenceFunction2DSuperLattice.h      |    6 +-
 .../InterferenceFunction3DLattice.cpp         |    6 +-
 .../Aggregate/InterferenceFunction3DLattice.h |    6 +-
 .../InterferenceFunctionFinite2DLattice.cpp   |    4 +-
 .../InterferenceFunctionFinite2DLattice.h     |    6 +-
 .../InterferenceFunctionFinite3DLattice.cpp   |    4 +-
 .../InterferenceFunctionFinite3DLattice.h     |    6 +-
 .../InterferenceFunctionHardDisk.cpp          |    4 +-
 .../Aggregate/InterferenceFunctionHardDisk.h  |    4 +-
 .../Aggregate/InterferenceFunctionNone.cpp    |    4 +-
 .../Aggregate/InterferenceFunctionNone.h      |    4 +-
 .../InterferenceFunctionRadialParaCrystal.cpp |    4 +-
 .../InterferenceFunctionRadialParaCrystal.h   |    6 +-
 .../Aggregate/InterferenceFunctionTwin.cpp    |    4 +-
 .../Aggregate/InterferenceFunctionTwin.h      |    4 +-
 Sample/Aggregate/InterferenceFunctions.h      |   30 +
 {Core => Sample}/Aggregate/ParticleLayout.cpp |   10 +-
 {Core => Sample}/Aggregate/ParticleLayout.h   |    4 +-
 {Core => Sample}/Correlations/FTDecay1D.cpp   |    4 +-
 {Core => Sample}/Correlations/FTDecay1D.h     |    2 +-
 {Core => Sample}/Correlations/FTDecay2D.cpp   |    4 +-
 {Core => Sample}/Correlations/FTDecay2D.h     |    2 +-
 .../Correlations/FTDistributions1D.cpp        |    4 +-
 .../Correlations/FTDistributions1D.h          |    4 +-
 .../Correlations/FTDistributions2D.cpp        |    4 +-
 .../Correlations/FTDistributions2D.h          |    4 +-
 .../Correlations/IDistribution1DSampler.cpp   |    4 +-
 .../Correlations/IDistribution1DSampler.h     |    2 +-
 .../Correlations/IDistribution2DSampler.cpp   |    4 +-
 .../Correlations/IDistribution2DSampler.h     |    2 +-
 {Core => Sample}/Correlations/ILayout.cpp     |    4 +-
 {Core => Sample}/Correlations/ILayout.h       |    2 +-
 {Core => Sample}/Correlations/IPeakShape.cpp  |    4 +-
 {Core => Sample}/Correlations/IPeakShape.h    |    2 +-
 .../Lattice/ILatticeOrientation.cpp           |    4 +-
 .../Lattice/ILatticeOrientation.h             |    4 +-
 {Core => Sample}/Lattice/ISelectionRule.h     |    2 +-
 {Core => Sample}/Lattice/Lattice.cpp          |    6 +-
 {Core => Sample}/Lattice/Lattice.h            |    2 +-
 {Core => Sample}/Lattice/Lattice2D.cpp        |    4 +-
 {Core => Sample}/Lattice/Lattice2D.h          |    2 +-
 {Core => Sample}/Lattice/LatticeUtils.cpp     |    6 +-
 {Core => Sample}/Lattice/LatticeUtils.h       |    4 +-
 .../DecouplingApproximationStrategy.cpp       |   10 +-
 .../DecouplingApproximationStrategy.h         |    4 +-
 .../Multilayer/FormFactorCoherentPart.cpp     |    6 +-
 .../Multilayer/FormFactorCoherentPart.h       |    2 +-
 .../Multilayer/FormFactorCoherentSum.cpp      |    4 +-
 .../Multilayer/FormFactorCoherentSum.h        |    4 +-
 {Core => Sample}/Multilayer/IFresnelMap.cpp   |    6 +-
 {Core => Sample}/Multilayer/IFresnelMap.h     |    4 +-
 .../IInterferenceFunctionStrategy.cpp         |    8 +-
 .../IInterferenceFunctionStrategy.h           |    4 +-
 .../Multilayer/ISpecularStrategy.h            |    4 +-
 .../Multilayer/InterferenceFunctionUtils.cpp  |    6 +-
 .../Multilayer/InterferenceFunctionUtils.h    |    2 +-
 {Core => Sample}/Multilayer/KzComputation.cpp |    6 +-
 {Core => Sample}/Multilayer/KzComputation.h   |    2 +-
 {Core => Sample}/Multilayer/Layer.cpp         |    6 +-
 {Core => Sample}/Multilayer/Layer.h           |    2 +-
 .../Multilayer/LayerFillLimits.cpp            |    4 +-
 {Core => Sample}/Multilayer/LayerFillLimits.h |    2 +-
 .../Multilayer/LayerInterface.cpp             |    6 +-
 {Core => Sample}/Multilayer/LayerInterface.h  |    2 +-
 .../Multilayer/LayerRoughness.cpp             |    4 +-
 {Core => Sample}/Multilayer/LayerRoughness.h  |    2 +-
 .../Multilayer/MatrixFresnelMap.cpp           |    8 +-
 .../Multilayer/MatrixFresnelMap.h             |    8 +-
 {Core => Sample}/Multilayer/MultiLayer.cpp    |   16 +-
 {Core => Sample}/Multilayer/MultiLayer.h      |    4 +-
 .../Multilayer/MultiLayerUtils.cpp            |   16 +-
 {Core => Sample}/Multilayer/MultiLayerUtils.h |    2 +-
 {Core => Sample}/Multilayer/PyImport.cpp      |    6 +-
 {Core => Sample}/Multilayer/PyImport.h        |    2 +-
 .../Multilayer/RoughnessModels.cpp            |    4 +-
 {Core => Sample}/Multilayer/RoughnessModels.h |    2 +-
 {Core => Sample}/Multilayer/SSCAHelper.cpp    |    8 +-
 {Core => Sample}/Multilayer/SSCAHelper.h      |    6 +-
 .../Multilayer/SSCApproximationStrategy.cpp   |    8 +-
 .../Multilayer/SSCApproximationStrategy.h     |    4 +-
 .../Multilayer/ScalarFresnelMap.cpp           |    4 +-
 .../Multilayer/ScalarFresnelMap.h             |    6 +-
 {Core => Sample}/Multilayer/Slice.cpp         |    6 +-
 {Core => Sample}/Multilayer/Slice.h           |    2 +-
 .../Multilayer/SlicedFormFactorList.cpp       |   10 +-
 .../Multilayer/SlicedFormFactorList.h         |    4 +-
 .../SpecularMagneticNewNCStrategy.cpp         |    4 +-
 .../SpecularMagneticNewNCStrategy.h           |    4 +-
 .../SpecularMagneticNewStrategy.cpp           |   10 +-
 .../Multilayer/SpecularMagneticNewStrategy.h  |    6 +-
 .../SpecularMagneticNewTanhStrategy.cpp       |    4 +-
 .../SpecularMagneticNewTanhStrategy.h         |    4 +-
 .../SpecularMagneticOldStrategy.cpp           |   12 +-
 .../Multilayer/SpecularMagneticOldStrategy.h  |    6 +-
 .../Multilayer/SpecularMagneticStrategy.cpp   |    8 +-
 .../Multilayer/SpecularMagneticStrategy.h     |    6 +-
 .../Multilayer/SpecularScalarNCStrategy.cpp   |    4 +-
 .../Multilayer/SpecularScalarNCStrategy.h     |    4 +-
 .../Multilayer/SpecularScalarStrategy.cpp     |   12 +-
 .../Multilayer/SpecularScalarStrategy.h       |    6 +-
 .../Multilayer/SpecularScalarTanhStrategy.cpp |    4 +-
 .../Multilayer/SpecularScalarTanhStrategy.h   |    4 +-
 .../Multilayer/SpecularSimulationElement.cpp  |    6 +-
 .../Multilayer/SpecularSimulationElement.h    |    2 +-
 {Core => Sample}/Particle/Crystal.cpp         |   12 +-
 {Core => Sample}/Particle/Crystal.h           |    6 +-
 .../Particle/FormFactorCoreShell.cpp          |    4 +-
 .../Particle/FormFactorCoreShell.h            |    2 +-
 .../Particle/FormFactorCrystal.cpp            |    4 +-
 {Core => Sample}/Particle/FormFactorCrystal.h |    4 +-
 .../Particle/FormFactorWeighted.cpp           |    4 +-
 .../Particle/FormFactorWeighted.h             |    2 +-
 .../Particle/HomogeneousRegion.cpp            |    4 +-
 {Core => Sample}/Particle/HomogeneousRegion.h |    2 +-
 .../Particle/IAbstractParticle.cpp            |    4 +-
 {Core => Sample}/Particle/IAbstractParticle.h |    2 +-
 .../Particle/IClusteredParticles.h            |    4 +-
 {Core => Sample}/Particle/IParticle.cpp       |    6 +-
 {Core => Sample}/Particle/IParticle.h         |    4 +-
 {Core => Sample}/Particle/MesoCrystal.cpp     |    8 +-
 {Core => Sample}/Particle/MesoCrystal.h       |    4 +-
 {Core => Sample}/Particle/Particle.cpp        |    6 +-
 {Core => Sample}/Particle/Particle.h          |    4 +-
 .../Particle/ParticleComposition.cpp          |    8 +-
 .../Particle/ParticleComposition.h            |    4 +-
 .../Particle/ParticleCoreShell.cpp            |   10 +-
 {Core => Sample}/Particle/ParticleCoreShell.h |    4 +-
 .../Particle/ParticleDistribution.cpp         |    6 +-
 .../Particle/ParticleDistribution.h           |    4 +-
 {Core => Sample}/Particle/SlicedParticle.h    |    4 +-
 {Core => Sample}/Particle/TRange.h            |    2 +-
 {Core => Sample}/RT/ILayerRTCoefficients.h    |    2 +-
 {Core => Sample}/RT/MatrixRTCoefficients.cpp  |    4 +-
 {Core => Sample}/RT/MatrixRTCoefficients.h    |    4 +-
 .../RT/MatrixRTCoefficients_v2.cpp            |    4 +-
 {Core => Sample}/RT/MatrixRTCoefficients_v2.h |    4 +-
 .../RT/MatrixRTCoefficients_v3.cpp            |    4 +-
 {Core => Sample}/RT/MatrixRTCoefficients_v3.h |    4 +-
 {Core => Sample}/RT/ScalarRTCoefficients.h    |    4 +-
 {Core => Sample}/RT/SimulationOptions.cpp     |    4 +-
 {Core => Sample}/RT/SimulationOptions.h       |    2 +-
 Sample/Scattering/FormFactorDWBA.cpp          |    2 +-
 Sample/Scattering/FormFactorDWBAPol.cpp       |    2 +-
 Sample/Scattering/IFormFactor.cpp             |    2 +-
 .../SoftParticle/FormFactorGauss.cpp          |    4 +-
 .../SoftParticle/FormFactorGauss.h            |    2 +-
 .../FormFactorSphereGaussianRadius.cpp        |    4 +-
 .../FormFactorSphereGaussianRadius.h          |    2 +-
 .../FormFactorSphereLogNormalRadius.cpp       |    4 +-
 .../FormFactorSphereLogNormalRadius.h         |    2 +-
 {Core => Sample}/SoftParticle/SoftParticles.h |    8 +-
 Tests/Functional/Core/Fitting/Plan.cpp        |    2 +-
 Tests/Functional/Core/Fitting/PlanCases.cpp   |   10 +-
 Tests/Functional/Core/MPI/mpitest.cpp         |    2 +-
 Tests/Functional/Core/Std/Check.cpp           |    2 +-
 .../Functional/GUI/Other/SaveLoadProject.cpp  |    2 +-
 .../GUI/Translate/GUITranslationTest.cpp      |    2 +-
 Tests/Functional/Python/PyEmbedded/Tests.cpp  |    4 +-
 Tests/Functional/Std/Run.cpp                  |    2 +-
 Tests/Performance/Core/Mesocrystal.cpp        |   20 +-
 Tests/Performance/Core/Multilayer.cpp         |    2 +-
 Tests/Performance/Core/Threading.cpp          |    2 +-
 .../Performance/Core/ThreadingComponents.cpp  |   12 +-
 Tests/Performance/GUI/GUIPerformanceTest.cpp  |    2 +-
 .../Core/Fitting/FittingTestHelper.h          |    4 +-
 .../Core/Fresnel/DepthProbeSimulationTest.cpp |    4 +-
 .../Core/Fresnel/KzComputationTest.cpp        |    8 +-
 .../Core/Fresnel/MatrixRTCoefficientsTest.cpp |    2 +-
 .../Fresnel/MatrixRTCoefficients_v2Test.cpp   |    2 +-
 .../Fresnel/MatrixRTCoefficients_v3Test.cpp   |    2 +-
 .../Core/Fresnel/ScalarRTCoefficientsTest.cpp |    2 +-
 .../Core/Fresnel/SpecularMagneticOldTest.cpp  |   10 +-
 .../Core/Fresnel/SpecularMagneticTest.cpp     |   14 +-
 .../Core/Fresnel/SpecularScanTest.cpp         |    2 +-
 .../Core/Fresnel/SpecularSimulationTest.cpp   |    4 +-
 .../Core/Other/GISASSimulationTest.cpp        |    2 +-
 .../Core/Other/LayerFillLimitsTest.cpp        |    2 +-
 Tests/UnitTests/Core/Other/MaterialTest.cpp   |    2 +-
 .../Core/Other/SampleBuilderNodeTest.cpp      |    2 +-
 .../Core/Other/SampleProviderTest.cpp         |    2 +-
 Tests/UnitTests/Core/Other/TRangeTest.cpp     |    2 +-
 .../Core/Parameters/FTDistributionsTest.cpp   |    4 +-
 Tests/UnitTests/Core/Sample/CrystalTest.cpp   |    4 +-
 .../Core/Sample/FormFactorCoherentSumTest.cpp |    2 +-
 Tests/UnitTests/Core/Sample/Lattice2DTest.cpp |    2 +-
 Tests/UnitTests/Core/Sample/LatticeTest.cpp   |    2 +-
 .../Core/Sample/LatticeUtilsTest.cpp          |    4 +-
 .../Core/Sample/LayerInterfaceTest.cpp        |    6 +-
 .../Core/Sample/LayerRoughnessTest.cpp        |    2 +-
 Tests/UnitTests/Core/Sample/LayerTest.cpp     |    4 +-
 .../UnitTests/Core/Sample/MesoCrystalTest.cpp |    6 +-
 .../UnitTests/Core/Sample/MultiLayerTest.cpp  |   12 +-
 .../Core/Sample/MultilayerAveragingTest.cpp   |   12 +-
 .../Core/Sample/ParticleCompositionTest.cpp   |    4 +-
 .../Core/Sample/ParticleCoreShellTest.cpp     |    4 +-
 .../Core/Sample/ParticleDistributionTest.cpp  |    4 +-
 .../Core/Sample/ParticleLayoutTest.cpp        |    8 +-
 Tests/UnitTests/Core/Sample/ParticleTest.cpp  |    2 +-
 Tests/UnitTests/Core/Sample/RTTest.cpp        |   14 +-
 .../GUI/TestGUICoreObjectCorrespondence.cpp   |    2 +-
 Tests/UnitTests/GUI/TestParaCrystalItems.cpp  |    2 +-
 .../GUI/TestParticleDistributionItem.cpp      |    2 +-
 .../GUI/TestRealSpaceBuilderUtils.cpp         |    2 +-
 Wrap/swig/libBornAgainCore.i                  |  182 +-
 auto/Wrap/doxygenCore.i                       | 6665 +++--------------
 auto/Wrap/libBornAgainCore.py                 | 3855 ++--------
 auto/Wrap/libBornAgainCore_wrap.cpp           | 3525 ++-------
 317 files changed, 2949 insertions(+), 12926 deletions(-)
 delete mode 100644 Core/Aggregate/InterferenceFunctions.h
 rename {Core => Sample}/Aggregate/IInterferenceFunction.cpp (95%)
 rename {Core => Sample}/Aggregate/IInterferenceFunction.h (97%)
 rename {Core => Sample}/Aggregate/InterferenceFunction1DLattice.cpp (93%)
 rename {Core => Sample}/Aggregate/InterferenceFunction1DLattice.h (93%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DLattice.cpp (98%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DLattice.h (93%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DParaCrystal.cpp (98%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DParaCrystal.h (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DSuperLattice.cpp (96%)
 rename {Core => Sample}/Aggregate/InterferenceFunction2DSuperLattice.h (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunction3DLattice.cpp (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunction3DLattice.h (92%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionFinite2DLattice.cpp (97%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionFinite2DLattice.h (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionFinite3DLattice.cpp (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionFinite3DLattice.h (92%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionHardDisk.cpp (96%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionHardDisk.h (93%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionNone.cpp (88%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionNone.h (91%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionRadialParaCrystal.cpp (97%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionRadialParaCrystal.h (92%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionTwin.cpp (94%)
 rename {Core => Sample}/Aggregate/InterferenceFunctionTwin.h (92%)
 create mode 100644 Sample/Aggregate/InterferenceFunctions.h
 rename {Core => Sample}/Aggregate/ParticleLayout.cpp (96%)
 rename {Core => Sample}/Aggregate/ParticleLayout.h (96%)
 rename {Core => Sample}/Correlations/FTDecay1D.cpp (98%)
 rename {Core => Sample}/Correlations/FTDecay1D.h (98%)
 rename {Core => Sample}/Correlations/FTDecay2D.cpp (98%)
 rename {Core => Sample}/Correlations/FTDecay2D.h (98%)
 rename {Core => Sample}/Correlations/FTDistributions1D.cpp (98%)
 rename {Core => Sample}/Correlations/FTDistributions1D.h (98%)
 rename {Core => Sample}/Correlations/FTDistributions2D.cpp (98%)
 rename {Core => Sample}/Correlations/FTDistributions2D.h (97%)
 rename {Core => Sample}/Correlations/IDistribution1DSampler.cpp (96%)
 rename {Core => Sample}/Correlations/IDistribution1DSampler.h (97%)
 rename {Core => Sample}/Correlations/IDistribution2DSampler.cpp (98%)
 rename {Core => Sample}/Correlations/IDistribution2DSampler.h (97%)
 rename {Core => Sample}/Correlations/ILayout.cpp (87%)
 rename {Core => Sample}/Correlations/ILayout.h (98%)
 rename {Core => Sample}/Correlations/IPeakShape.cpp (99%)
 rename {Core => Sample}/Correlations/IPeakShape.h (99%)
 rename {Core => Sample}/Lattice/ILatticeOrientation.cpp (98%)
 rename {Core => Sample}/Lattice/ILatticeOrientation.h (95%)
 rename {Core => Sample}/Lattice/ISelectionRule.h (97%)
 rename {Core => Sample}/Lattice/Lattice.cpp (98%)
 rename {Core => Sample}/Lattice/Lattice.h (99%)
 rename {Core => Sample}/Lattice/Lattice2D.cpp (98%)
 rename {Core => Sample}/Lattice/Lattice2D.h (98%)
 rename {Core => Sample}/Lattice/LatticeUtils.cpp (93%)
 rename {Core => Sample}/Lattice/LatticeUtils.h (92%)
 rename {Core => Sample}/Multilayer/DecouplingApproximationStrategy.cpp (92%)
 rename {Core => Sample}/Multilayer/DecouplingApproximationStrategy.h (90%)
 rename {Core => Sample}/Multilayer/FormFactorCoherentPart.cpp (94%)
 rename {Core => Sample}/Multilayer/FormFactorCoherentPart.h (96%)
 rename {Core => Sample}/Multilayer/FormFactorCoherentSum.cpp (94%)
 rename {Core => Sample}/Multilayer/FormFactorCoherentSum.h (93%)
 rename {Core => Sample}/Multilayer/IFresnelMap.cpp (87%)
 rename {Core => Sample}/Multilayer/IFresnelMap.h (95%)
 rename {Core => Sample}/Multilayer/IInterferenceFunctionStrategy.cpp (92%)
 rename {Core => Sample}/Multilayer/IInterferenceFunctionStrategy.h (96%)
 rename {Core => Sample}/Multilayer/ISpecularStrategy.h (94%)
 rename {Core => Sample}/Multilayer/InterferenceFunctionUtils.cpp (88%)
 rename {Core => Sample}/Multilayer/InterferenceFunctionUtils.h (95%)
 rename {Core => Sample}/Multilayer/KzComputation.cpp (96%)
 rename {Core => Sample}/Multilayer/KzComputation.h (97%)
 rename {Core => Sample}/Multilayer/Layer.cpp (95%)
 rename {Core => Sample}/Multilayer/Layer.h (98%)
 rename {Core => Sample}/Multilayer/LayerFillLimits.cpp (97%)
 rename {Core => Sample}/Multilayer/LayerFillLimits.h (97%)
 rename {Core => Sample}/Multilayer/LayerInterface.cpp (94%)
 rename {Core => Sample}/Multilayer/LayerInterface.h (97%)
 rename {Core => Sample}/Multilayer/LayerRoughness.cpp (96%)
 rename {Core => Sample}/Multilayer/LayerRoughness.h (97%)
 rename {Core => Sample}/Multilayer/MatrixFresnelMap.cpp (93%)
 rename {Core => Sample}/Multilayer/MatrixFresnelMap.h (93%)
 rename {Core => Sample}/Multilayer/MultiLayer.cpp (93%)
 rename {Core => Sample}/Multilayer/MultiLayer.h (97%)
 rename {Core => Sample}/Multilayer/MultiLayerUtils.cpp (90%)
 rename {Core => Sample}/Multilayer/MultiLayerUtils.h (97%)
 rename {Core => Sample}/Multilayer/PyImport.cpp (96%)
 rename {Core => Sample}/Multilayer/PyImport.h (97%)
 rename {Core => Sample}/Multilayer/RoughnessModels.cpp (90%)
 rename {Core => Sample}/Multilayer/RoughnessModels.h (96%)
 rename {Core => Sample}/Multilayer/SSCAHelper.cpp (93%)
 rename {Core => Sample}/Multilayer/SSCAHelper.h (92%)
 rename {Core => Sample}/Multilayer/SSCApproximationStrategy.cpp (94%)
 rename {Core => Sample}/Multilayer/SSCApproximationStrategy.h (92%)
 rename {Core => Sample}/Multilayer/ScalarFresnelMap.cpp (95%)
 rename {Core => Sample}/Multilayer/ScalarFresnelMap.h (93%)
 rename {Core => Sample}/Multilayer/Slice.cpp (95%)
 rename {Core => Sample}/Multilayer/Slice.h (98%)
 rename {Core => Sample}/Multilayer/SlicedFormFactorList.cpp (96%)
 rename {Core => Sample}/Multilayer/SlicedFormFactorList.h (94%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewNCStrategy.cpp (96%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewNCStrategy.h (93%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewStrategy.cpp (96%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewStrategy.h (94%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewTanhStrategy.cpp (95%)
 rename {Core => Sample}/Multilayer/SpecularMagneticNewTanhStrategy.h (92%)
 rename {Core => Sample}/Multilayer/SpecularMagneticOldStrategy.cpp (95%)
 rename {Core => Sample}/Multilayer/SpecularMagneticOldStrategy.h (89%)
 rename {Core => Sample}/Multilayer/SpecularMagneticStrategy.cpp (98%)
 rename {Core => Sample}/Multilayer/SpecularMagneticStrategy.h (95%)
 rename {Core => Sample}/Multilayer/SpecularScalarNCStrategy.cpp (91%)
 rename {Core => Sample}/Multilayer/SpecularScalarNCStrategy.h (93%)
 rename {Core => Sample}/Multilayer/SpecularScalarStrategy.cpp (93%)
 rename {Core => Sample}/Multilayer/SpecularScalarStrategy.h (94%)
 rename {Core => Sample}/Multilayer/SpecularScalarTanhStrategy.cpp (91%)
 rename {Core => Sample}/Multilayer/SpecularScalarTanhStrategy.h (92%)
 rename {Core => Sample}/Multilayer/SpecularSimulationElement.cpp (94%)
 rename {Core => Sample}/Multilayer/SpecularSimulationElement.h (97%)
 rename {Core => Sample}/Particle/Crystal.cpp (92%)
 rename {Core => Sample}/Particle/Crystal.h (93%)
 rename {Core => Sample}/Particle/FormFactorCoreShell.cpp (94%)
 rename {Core => Sample}/Particle/FormFactorCoreShell.h (97%)
 rename {Core => Sample}/Particle/FormFactorCrystal.cpp (97%)
 rename {Core => Sample}/Particle/FormFactorCrystal.h (96%)
 rename {Core => Sample}/Particle/FormFactorWeighted.cpp (96%)
 rename {Core => Sample}/Particle/FormFactorWeighted.h (97%)
 rename {Core => Sample}/Particle/HomogeneousRegion.cpp (97%)
 rename {Core => Sample}/Particle/HomogeneousRegion.h (96%)
 rename {Core => Sample}/Particle/IAbstractParticle.cpp (88%)
 rename {Core => Sample}/Particle/IAbstractParticle.h (97%)
 rename {Core => Sample}/Particle/IClusteredParticles.h (94%)
 rename {Core => Sample}/Particle/IParticle.cpp (96%)
 rename {Core => Sample}/Particle/IParticle.h (97%)
 rename {Core => Sample}/Particle/MesoCrystal.cpp (93%)
 rename {Core => Sample}/Particle/MesoCrystal.h (94%)
 rename {Core => Sample}/Particle/Particle.cpp (95%)
 rename {Core => Sample}/Particle/Particle.h (95%)
 rename {Core => Sample}/Particle/ParticleComposition.cpp (95%)
 rename {Core => Sample}/Particle/ParticleComposition.h (95%)
 rename {Core => Sample}/Particle/ParticleCoreShell.cpp (94%)
 rename {Core => Sample}/Particle/ParticleCoreShell.h (95%)
 rename {Core => Sample}/Particle/ParticleDistribution.cpp (96%)
 rename {Core => Sample}/Particle/ParticleDistribution.h (95%)
 rename {Core => Sample}/Particle/SlicedParticle.h (91%)
 rename {Core => Sample}/Particle/TRange.h (97%)
 rename {Core => Sample}/RT/ILayerRTCoefficients.h (98%)
 rename {Core => Sample}/RT/MatrixRTCoefficients.cpp (99%)
 rename {Core => Sample}/RT/MatrixRTCoefficients.h (97%)
 rename {Core => Sample}/RT/MatrixRTCoefficients_v2.cpp (97%)
 rename {Core => Sample}/RT/MatrixRTCoefficients_v2.h (96%)
 rename {Core => Sample}/RT/MatrixRTCoefficients_v3.cpp (98%)
 rename {Core => Sample}/RT/MatrixRTCoefficients_v3.h (97%)
 rename {Core => Sample}/RT/ScalarRTCoefficients.h (97%)
 rename {Core => Sample}/RT/SimulationOptions.cpp (96%)
 rename {Core => Sample}/RT/SimulationOptions.h (98%)
 rename {Core => Sample}/SoftParticle/FormFactorGauss.cpp (94%)
 rename {Core => Sample}/SoftParticle/FormFactorGauss.h (96%)
 rename {Core => Sample}/SoftParticle/FormFactorSphereGaussianRadius.cpp (93%)
 rename {Core => Sample}/SoftParticle/FormFactorSphereGaussianRadius.h (96%)
 rename {Core => Sample}/SoftParticle/FormFactorSphereLogNormalRadius.cpp (94%)
 rename {Core => Sample}/SoftParticle/FormFactorSphereLogNormalRadius.h (96%)
 rename {Core => Sample}/SoftParticle/SoftParticles.h (75%)

diff --git a/Core/Aggregate/InterferenceFunctions.h b/Core/Aggregate/InterferenceFunctions.h
deleted file mode 100644
index c64bc5746d7..00000000000
--- a/Core/Aggregate/InterferenceFunctions.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/Aggregate/InterferenceFunctions.h
-//! @brief     Includes all interference function definitions.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
-
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
-#include "Core/Aggregate/InterferenceFunction3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionHardDisk.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunctionTwin.h"
-
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
diff --git a/Core/Computation/DWBAComputation.cpp b/Core/Computation/DWBAComputation.cpp
index f5da14f450f..0bfb839f749 100644
--- a/Core/Computation/DWBAComputation.cpp
+++ b/Core/Computation/DWBAComputation.cpp
@@ -20,8 +20,8 @@
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Computation/ProgressHandler.h"
 #include "Core/Computation/RoughMultiLayerComputation.h"
-#include "Core/Multilayer/IFresnelMap.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 static_assert(std::is_copy_constructible<DWBAComputation>::value == false,
               "DWBAComputation should not be copy constructable");
diff --git a/Core/Computation/DWBASingleComputation.h b/Core/Computation/DWBASingleComputation.h
index 508420b7e77..5c03bba3996 100644
--- a/Core/Computation/DWBASingleComputation.h
+++ b/Core/Computation/DWBASingleComputation.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_DWBASINGLECOMPUTATION_H
 #define BORNAGAIN_CORE_COMPUTATION_DWBASINGLECOMPUTATION_H
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include <map>
 #include <memory>
 #include <vector>
diff --git a/Core/Computation/DepthProbeComputation.cpp b/Core/Computation/DepthProbeComputation.cpp
index 72d5bbc06f8..4faf78cfc87 100644
--- a/Core/Computation/DepthProbeComputation.cpp
+++ b/Core/Computation/DepthProbeComputation.cpp
@@ -15,7 +15,7 @@
 #include "Core/Computation/DepthProbeComputation.h"
 #include "Core/Computation/DepthProbeElement.h"
 #include "Core/Computation/ProgressHandler.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 static_assert(std::is_copy_constructible<DepthProbeComputation>::value == false,
               "DepthProbeComputation should not be copy constructible");
diff --git a/Core/Computation/DepthProbeComputationTerm.cpp b/Core/Computation/DepthProbeComputationTerm.cpp
index e5aa0051f8f..893756e1443 100644
--- a/Core/Computation/DepthProbeComputationTerm.cpp
+++ b/Core/Computation/DepthProbeComputationTerm.cpp
@@ -17,7 +17,7 @@
 #include "Core/Computation/DelayedProgressCounter.h"
 #include "Core/Computation/DepthProbeElement.h"
 #include "Core/Computation/ProcessedSample.h"
-#include "Core/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/IFresnelMap.h"
 
 DepthProbeComputationTerm::DepthProbeComputationTerm(const ProcessedSample* p_sample)
     : mp_sample{p_sample}
diff --git a/Core/Computation/GISASSpecularComputation.cpp b/Core/Computation/GISASSpecularComputation.cpp
index 816fa311194..b014156c94d 100644
--- a/Core/Computation/GISASSpecularComputation.cpp
+++ b/Core/Computation/GISASSpecularComputation.cpp
@@ -14,7 +14,7 @@
 
 #include "Core/Computation/GISASSpecularComputation.h"
 #include "Base/Pixel/SimulationElement.h"
-#include "Core/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/IFresnelMap.h"
 
 GISASSpecularComputation::GISASSpecularComputation(const IFresnelMap* p_fresnel_map)
     : mp_fresnel_map{p_fresnel_map}
diff --git a/Core/Computation/IComputation.cpp b/Core/Computation/IComputation.cpp
index 8e3c96f226b..4464d0e51a5 100644
--- a/Core/Computation/IComputation.cpp
+++ b/Core/Computation/IComputation.cpp
@@ -16,7 +16,7 @@
 #include "Base/Pixel/SimulationElement.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Computation/ProgressHandler.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 IComputation::IComputation(const MultiLayer& sample, const SimulationOptions& options,
                            ProgressHandler& progress)
diff --git a/Core/Computation/IComputation.h b/Core/Computation/IComputation.h
index 8c437a9db38..0cef8bba27a 100644
--- a/Core/Computation/IComputation.h
+++ b/Core/Computation/IComputation.h
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_COMPUTATION_ICOMPUTATION_H
 
 #include "Core/Computation/ComputationStatus.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Computation/LayoutStrategyBuilder.cpp b/Core/Computation/LayoutStrategyBuilder.cpp
index 53165ca9fc4..85d529cb4cc 100644
--- a/Core/Computation/LayoutStrategyBuilder.cpp
+++ b/Core/Computation/LayoutStrategyBuilder.cpp
@@ -14,10 +14,10 @@
 
 #include "Core/Computation/LayoutStrategyBuilder.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Core/Computation/ProcessedLayout.h"
-#include "Core/Multilayer/DecouplingApproximationStrategy.h"
-#include "Core/Multilayer/SSCApproximationStrategy.h"
+#include "Sample/Multilayer/DecouplingApproximationStrategy.h"
+#include "Sample/Multilayer/SSCApproximationStrategy.h"
 
 LayoutStrategyBuilder::LayoutStrategyBuilder(const ProcessedLayout* p_layout,
                                              const SimulationOptions& sim_params, bool polarized)
diff --git a/Core/Computation/LayoutStrategyBuilder.h b/Core/Computation/LayoutStrategyBuilder.h
index 749df7fb80a..aa75464bfc5 100644
--- a/Core/Computation/LayoutStrategyBuilder.h
+++ b/Core/Computation/LayoutStrategyBuilder.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_LAYOUTSTRATEGYBUILDER_H
 #define BORNAGAIN_CORE_COMPUTATION_LAYOUTSTRATEGYBUILDER_H
 
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 #include <memory>
 
 class IInterferenceFunction;
diff --git a/Core/Computation/MultiLayerFuncs.cpp b/Core/Computation/MultiLayerFuncs.cpp
index 0d8df95def7..9f8398065a8 100644
--- a/Core/Computation/MultiLayerFuncs.cpp
+++ b/Core/Computation/MultiLayerFuncs.cpp
@@ -15,7 +15,7 @@
 #include "Core/Computation/MultiLayerFuncs.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Computation/ProfileHelper.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 
 std::vector<complex_t> MaterialProfile(const MultiLayer& multilayer, int n_points, double z_min,
                                        double z_max)
diff --git a/Core/Computation/ParticleLayoutComputation.cpp b/Core/Computation/ParticleLayoutComputation.cpp
index 54c1a9e0afe..945ba2b53f3 100644
--- a/Core/Computation/ParticleLayoutComputation.cpp
+++ b/Core/Computation/ParticleLayoutComputation.cpp
@@ -16,7 +16,7 @@
 #include "Base/Pixel/SimulationElement.h"
 #include "Core/Computation/LayoutStrategyBuilder.h"
 #include "Core/Computation/ProcessedLayout.h"
-#include "Core/Multilayer/IInterferenceFunctionStrategy.h"
+#include "Sample/Multilayer/IInterferenceFunctionStrategy.h"
 
 ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout* p_layout,
                                                      const SimulationOptions& options,
diff --git a/Core/Computation/ParticleLayoutComputation.h b/Core/Computation/ParticleLayoutComputation.h
index 596dd908aa5..b7e6ba1851f 100644
--- a/Core/Computation/ParticleLayoutComputation.h
+++ b/Core/Computation/ParticleLayoutComputation.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_PARTICLELAYOUTCOMPUTATION_H
 #define BORNAGAIN_CORE_COMPUTATION_PARTICLELAYOUTCOMPUTATION_H
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include <map>
 #include <memory>
 #include <vector>
diff --git a/Core/Computation/ProcessedLayout.cpp b/Core/Computation/ProcessedLayout.cpp
index 79ca1360077..20eb0ac0fe5 100644
--- a/Core/Computation/ProcessedLayout.cpp
+++ b/Core/Computation/ProcessedLayout.cpp
@@ -13,12 +13,12 @@
 // ************************************************************************** //
 
 #include "Core/Computation/ProcessedLayout.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Correlations/ILayout.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
-#include "Core/Multilayer/Slice.h"
-#include "Core/Multilayer/SlicedFormFactorList.h"
-#include "Core/Particle/IParticle.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Correlations/ILayout.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Multilayer/Slice.h"
+#include "Sample/Multilayer/SlicedFormFactorList.h"
+#include "Sample/Particle/IParticle.h"
 #include "Sample/Scattering/FormFactorBAPol.h"
 #include "Sample/Scattering/FormFactorDWBA.h"
 #include "Sample/Scattering/FormFactorDWBAPol.h"
diff --git a/Core/Computation/ProcessedSample.cpp b/Core/Computation/ProcessedSample.cpp
index c85f14ba422..32b2bbd2b82 100644
--- a/Core/Computation/ProcessedSample.cpp
+++ b/Core/Computation/ProcessedSample.cpp
@@ -15,13 +15,13 @@
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Computation/ProcessedLayout.h"
 #include "Core/Computation/SpecularStrategyBuilder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MatrixFresnelMap.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Multilayer/ScalarFresnelMap.h"
-#include "Core/Particle/HomogeneousRegion.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MatrixFresnelMap.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
+#include "Sample/Multilayer/ScalarFresnelMap.h"
+#include "Sample/Particle/HomogeneousRegion.h"
+#include "Sample/RT/SimulationOptions.h"
 
 namespace
 {
diff --git a/Core/Computation/ProcessedSample.h b/Core/Computation/ProcessedSample.h
index 4d3c61667d4..da833fd63c0 100644
--- a/Core/Computation/ProcessedSample.h
+++ b/Core/Computation/ProcessedSample.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_PROCESSEDSAMPLE_H
 #define BORNAGAIN_CORE_COMPUTATION_PROCESSEDSAMPLE_H
 
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/Slice.h"
 #include <map>
 #include <memory>
 #include <vector>
diff --git a/Core/Computation/ProfileHelper.cpp b/Core/Computation/ProfileHelper.cpp
index 17f7a68798f..42e42704863 100644
--- a/Core/Computation/ProfileHelper.cpp
+++ b/Core/Computation/ProfileHelper.cpp
@@ -14,7 +14,7 @@
 
 #include "Core/Computation/ProfileHelper.h"
 #include "Core/Computation/ProcessedSample.h"
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 
 namespace
 {
diff --git a/Core/Computation/RoughMultiLayerComputation.cpp b/Core/Computation/RoughMultiLayerComputation.cpp
index 11e7025e436..991f2324463 100644
--- a/Core/Computation/RoughMultiLayerComputation.cpp
+++ b/Core/Computation/RoughMultiLayerComputation.cpp
@@ -16,11 +16,11 @@
 #include "Base/Const/MathConstants.h"
 #include "Base/Pixel/SimulationElement.h"
 #include "Core/Computation/ProcessedSample.h"
-#include "Core/Multilayer/IFresnelMap.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 #include <cerf>
 
diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp
index 44b61de358d..dc9186f2fd9 100644
--- a/Core/Computation/SpecularComputation.cpp
+++ b/Core/Computation/SpecularComputation.cpp
@@ -16,7 +16,7 @@
 #include "Core/Computation/ProcessedSample.h"
 #include "Core/Computation/ProgressHandler.h"
 #include "Core/Computation/SpecularStrategyBuilder.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 
 static_assert(std::is_copy_constructible<SpecularComputation>::value == false,
               "SpecularComputation should not be copy constructible");
diff --git a/Core/Computation/SpecularComputationTerm.cpp b/Core/Computation/SpecularComputationTerm.cpp
index 299ee8ab3f6..a478a8cebbd 100644
--- a/Core/Computation/SpecularComputationTerm.cpp
+++ b/Core/Computation/SpecularComputationTerm.cpp
@@ -14,8 +14,8 @@
 
 #include "Core/Computation/SpecularComputationTerm.h"
 #include "Core/Computation/DelayedProgressCounter.h"
-#include "Core/Multilayer/SpecularScalarStrategy.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/SpecularScalarStrategy.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 
 SpecularComputationTerm::SpecularComputationTerm(std::unique_ptr<ISpecularStrategy> strategy)
     : m_Strategy(std::move(strategy)){};
diff --git a/Core/Computation/SpecularComputationTerm.h b/Core/Computation/SpecularComputationTerm.h
index d86ca1edfac..e6967cf690c 100644
--- a/Core/Computation/SpecularComputationTerm.h
+++ b/Core/Computation/SpecularComputationTerm.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_SPECULARCOMPUTATIONTERM_H
 #define BORNAGAIN_CORE_COMPUTATION_SPECULARCOMPUTATIONTERM_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
 
 #include <memory>
 #include <vector>
diff --git a/Core/Computation/SpecularStrategyBuilder.cpp b/Core/Computation/SpecularStrategyBuilder.cpp
index e4b5e61ab2a..3af0d1ca4d5 100644
--- a/Core/Computation/SpecularStrategyBuilder.cpp
+++ b/Core/Computation/SpecularStrategyBuilder.cpp
@@ -13,11 +13,11 @@
 // ************************************************************************** //
 
 #include "Core/Computation/SpecularStrategyBuilder.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Multilayer/SpecularMagneticNewNCStrategy.h"
-#include "Core/Multilayer/SpecularMagneticNewTanhStrategy.h"
-#include "Core/Multilayer/SpecularScalarNCStrategy.h"
-#include "Core/Multilayer/SpecularScalarTanhStrategy.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
+#include "Sample/Multilayer/SpecularMagneticNewNCStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewTanhStrategy.h"
+#include "Sample/Multilayer/SpecularScalarNCStrategy.h"
+#include "Sample/Multilayer/SpecularScalarTanhStrategy.h"
 
 std::unique_ptr<ISpecularStrategy> SpecularStrategyBuilder::build(const MultiLayer& sample,
                                                                   const bool magnetic)
diff --git a/Core/Computation/SpecularStrategyBuilder.h b/Core/Computation/SpecularStrategyBuilder.h
index 9fdf655c2b1..a122ce6501c 100644
--- a/Core/Computation/SpecularStrategyBuilder.h
+++ b/Core/Computation/SpecularStrategyBuilder.h
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_COMPUTATION_SPECULARSTRATEGYBUILDER_H
 #define BORNAGAIN_CORE_COMPUTATION_SPECULARSTRATEGYBUILDER_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 class SpecularStrategyBuilder
 {
diff --git a/Core/Export/SampleLabelHandler.cpp b/Core/Export/SampleLabelHandler.cpp
index 688559b7898..ba92509c32c 100644
--- a/Core/Export/SampleLabelHandler.cpp
+++ b/Core/Export/SampleLabelHandler.cpp
@@ -13,14 +13,14 @@
 // ************************************************************************** //
 
 #include "Core/Export/SampleLabelHandler.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include <set>
 
 std::string SampleLabelHandler::labelCrystal(const Crystal* cr)
diff --git a/Core/Export/SampleToPython.cpp b/Core/Export/SampleToPython.cpp
index 08f63cea2c4..5758e186b4b 100644
--- a/Core/Export/SampleToPython.cpp
+++ b/Core/Export/SampleToPython.cpp
@@ -14,21 +14,21 @@
 
 #include "Core/Export/SampleToPython.h"
 #include "Base/Utils/PyFmt.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Export/INodeUtils.h"
 #include "Core/Export/SampleLabelHandler.h"
 #include "Core/Instrument/PyFmt2.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Param/Varia/ParameterUtils.h"
 #include <iomanip>
 #include <map>
diff --git a/Core/SampleBuilderEngine/FixedBuilder.cpp b/Core/SampleBuilderEngine/FixedBuilder.cpp
index b6e49805b41..27d3a02e67c 100644
--- a/Core/SampleBuilderEngine/FixedBuilder.cpp
+++ b/Core/SampleBuilderEngine/FixedBuilder.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Core/SampleBuilderEngine/FixedBuilder.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 FixedBuilder::FixedBuilder(const MultiLayer& sample) : m_sample(sample.clone()) {}
 
diff --git a/Core/SampleBuilderEngine/SampleBuilderNode.cpp b/Core/SampleBuilderEngine/SampleBuilderNode.cpp
index 87e3ff6ce81..579b3a37ef8 100644
--- a/Core/SampleBuilderEngine/SampleBuilderNode.cpp
+++ b/Core/SampleBuilderEngine/SampleBuilderNode.cpp
@@ -14,7 +14,7 @@
 
 #include "Core/SampleBuilderEngine/SampleBuilderNode.h"
 #include "Base/Utils/Assert.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/ParameterPool.h"
 #include <stdexcept>
diff --git a/Core/SampleBuilderEngine/SampleComponents.h b/Core/SampleBuilderEngine/SampleComponents.h
index 565d6ead1f1..751ac41d423 100644
--- a/Core/SampleBuilderEngine/SampleComponents.h
+++ b/Core/SampleBuilderEngine/SampleComponents.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
 #define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
 
-#include "Core/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
 #include "Core/SampleBuilderEngine/IRegistry.h"
 
 //! @class FTDistribution2DComponents
diff --git a/Core/SampleBuilderEngine/SampleProvider.cpp b/Core/SampleBuilderEngine/SampleProvider.cpp
index fcf27e366e6..d61301816e1 100644
--- a/Core/SampleBuilderEngine/SampleProvider.cpp
+++ b/Core/SampleBuilderEngine/SampleProvider.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Core/SampleBuilderEngine/SampleProvider.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 SampleProvider::SampleProvider() = default;
 
diff --git a/Core/Scan/AngularSpecScan.cpp b/Core/Scan/AngularSpecScan.cpp
index 0bc467e9489..78524e3bd71 100644
--- a/Core/Scan/AngularSpecScan.cpp
+++ b/Core/Scan/AngularSpecScan.cpp
@@ -18,7 +18,7 @@
 #include "Base/Utils/PyFmt.h"
 #include "Core/Beam/IFootprintFactor.h"
 #include "Core/Instrument/PyFmt2.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 #include "Core/Resolution/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 
diff --git a/Core/Scan/QSpecScan.cpp b/Core/Scan/QSpecScan.cpp
index b2da3030ef6..2129df58440 100644
--- a/Core/Scan/QSpecScan.cpp
+++ b/Core/Scan/QSpecScan.cpp
@@ -17,7 +17,7 @@
 #include "Base/Axis/PointwiseAxis.h"
 #include "Base/Utils/PyFmt.h"
 #include "Core/Instrument/PyFmt2.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 #include "Core/Resolution/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 
diff --git a/Core/Simulation/DepthProbeSimulation.cpp b/Core/Simulation/DepthProbeSimulation.cpp
index bcaecffd2a4..86142e47e08 100644
--- a/Core/Simulation/DepthProbeSimulation.cpp
+++ b/Core/Simulation/DepthProbeSimulation.cpp
@@ -21,7 +21,7 @@
 #include "Core/Detector/SpecularDetector1D.h"
 #include "Core/Histo/Histogram1D.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Simulation/DepthProbeSimulation.h b/Core/Simulation/DepthProbeSimulation.h
index 5eeb61fb357..70d24c28366 100644
--- a/Core/Simulation/DepthProbeSimulation.h
+++ b/Core/Simulation/DepthProbeSimulation.h
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_SIMULATION_DEPTHPROBESIMULATION_H
 
 #include "Core/Computation/DepthProbeElement.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include "Core/Simulation/Simulation.h"
 
 #include <vector>
diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp
index 5d8b67f38b6..422c160da38 100644
--- a/Core/Simulation/GISASSimulation.cpp
+++ b/Core/Simulation/GISASSimulation.cpp
@@ -16,7 +16,7 @@
 #include "Core/Computation/DWBAComputation.h"
 #include "Core/Computation/IBackground.h"
 #include "Core/Histo/Histogram2D.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Core/Simulation/UnitConverterUtils.h"
 
diff --git a/Core/Simulation/OffSpecSimulation.cpp b/Core/Simulation/OffSpecSimulation.cpp
index 2fd35ca754e..3eb3d2805ee 100644
--- a/Core/Simulation/OffSpecSimulation.cpp
+++ b/Core/Simulation/OffSpecSimulation.cpp
@@ -16,7 +16,7 @@
 #include "Core/Computation/DWBAComputation.h"
 #include "Core/Detector/SimpleUnitConverters.h"
 #include "Core/Histo/Histogram2D.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Simulation/Simulation.cpp b/Core/Simulation/Simulation.cpp
index 434d84f6ce7..74f2c2d7f90 100644
--- a/Core/Simulation/Simulation.cpp
+++ b/Core/Simulation/Simulation.cpp
@@ -16,8 +16,8 @@
 #include "Core/Computation/IBackground.h"
 #include "Core/Computation/IComputation.h"
 #include "Core/Detector/DetectorFunctions.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Core/Simulation/MPISimulation.h"
 #include "Core/Simulation/UnitConverterUtils.h"
diff --git a/Core/Simulation/Simulation.h b/Core/Simulation/Simulation.h
index 9627435a8ef..9f8e69e33d7 100644
--- a/Core/Simulation/Simulation.h
+++ b/Core/Simulation/Simulation.h
@@ -19,7 +19,7 @@
 #include "Core/Detector/IDetector2D.h"
 #include "Core/Histo/SimulationResult.h"
 #include "Core/Instrument/Instrument.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Core/SampleBuilderEngine/SampleProvider.h"
 #include "Param/Distrib/DistributionHandler.h"
 
diff --git a/Core/Simulation/SpecularSimulation.cpp b/Core/Simulation/SpecularSimulation.cpp
index 413d80893a2..a0501c44308 100644
--- a/Core/Simulation/SpecularSimulation.cpp
+++ b/Core/Simulation/SpecularSimulation.cpp
@@ -21,8 +21,8 @@
 #include "Core/Detector/SpecularDetector1D.h"
 #include "Core/Histo/Histogram1D.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Unit/UnitConverter1D.h"
diff --git a/Core/Simulation/SpecularSimulation.h b/Core/Simulation/SpecularSimulation.h
index 603792d0b32..73062397f2d 100644
--- a/Core/Simulation/SpecularSimulation.h
+++ b/Core/Simulation/SpecularSimulation.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_SIMULATION_SPECULARSIMULATION_H
 #define BORNAGAIN_CORE_SIMULATION_SPECULARSIMULATION_H
 
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include "Core/Simulation/Simulation.h"
 
 class IAxis;
diff --git a/Core/StandardSamples/BoxCompositionBuilder.cpp b/Core/StandardSamples/BoxCompositionBuilder.cpp
index c0c825a7186..27ceb791063 100644
--- a/Core/StandardSamples/BoxCompositionBuilder.cpp
+++ b/Core/StandardSamples/BoxCompositionBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/BoxCompositionBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 namespace
diff --git a/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp b/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
index b6cde7e9c82..fea7cdefed9 100644
--- a/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
+++ b/Core/StandardSamples/BoxesSquareLatticeBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/BoxesSquareLatticeBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* BoxesSquareLatticeBuilder::buildSample() const
diff --git a/Core/StandardSamples/CoreShellParticleBuilder.cpp b/Core/StandardSamples/CoreShellParticleBuilder.cpp
index 08ad152ffce..a813f72dcb1 100644
--- a/Core/StandardSamples/CoreShellParticleBuilder.cpp
+++ b/Core/StandardSamples/CoreShellParticleBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/CoreShellParticleBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 // --- CoreShellParticleBuilder ---
diff --git a/Core/StandardSamples/CustomMorphologyBuilder.cpp b/Core/StandardSamples/CustomMorphologyBuilder.cpp
index be8d1bb7b8a..94bb00ac847 100644
--- a/Core/StandardSamples/CustomMorphologyBuilder.cpp
+++ b/Core/StandardSamples/CustomMorphologyBuilder.cpp
@@ -14,11 +14,11 @@
 
 #include "Core/StandardSamples/CustomMorphologyBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* CustomMorphologyBuilder::buildSample() const
diff --git a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
index d2e4713eda6..9fbe13d0de5 100644
--- a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
+++ b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/CylindersAndPrismsBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorPrism3.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* CylindersAndPrismsBuilder::buildSample() const
diff --git a/Core/StandardSamples/CylindersBuilder.cpp b/Core/StandardSamples/CylindersBuilder.cpp
index 74eb84266f8..bc725e81791 100644
--- a/Core/StandardSamples/CylindersBuilder.cpp
+++ b/Core/StandardSamples/CylindersBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/CylindersBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 // -----------------------------------------------------------------------------
diff --git a/Core/StandardSamples/FeNiBilayerBuilder.cpp b/Core/StandardSamples/FeNiBilayerBuilder.cpp
index a9ece9d1ab9..cf7507f3b51 100644
--- a/Core/StandardSamples/FeNiBilayerBuilder.cpp
+++ b/Core/StandardSamples/FeNiBilayerBuilder.cpp
@@ -17,9 +17,9 @@
 #include "Base/Const/PhysicalConstants.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 namespace
 {
diff --git a/Core/StandardSamples/HomogeneousMultilayerBuilder.cpp b/Core/StandardSamples/HomogeneousMultilayerBuilder.cpp
index a469fedf1a4..e5d93b57f9b 100644
--- a/Core/StandardSamples/HomogeneousMultilayerBuilder.cpp
+++ b/Core/StandardSamples/HomogeneousMultilayerBuilder.cpp
@@ -14,8 +14,8 @@
 
 #include "Core/StandardSamples/HomogeneousMultilayerBuilder.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 MultiLayer* HomogeneousMultilayerBuilder::buildSample() const
 {
diff --git a/Core/StandardSamples/LatticeBuilder.cpp b/Core/StandardSamples/LatticeBuilder.cpp
index 2d1cf1a75eb..329c6aee3d8 100644
--- a/Core/StandardSamples/LatticeBuilder.cpp
+++ b/Core/StandardSamples/LatticeBuilder.cpp
@@ -14,14 +14,14 @@
 
 #include "Core/StandardSamples/LatticeBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* Lattice1DBuilder::buildSample() const
diff --git a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
index 5da802085c2..98210c90ff2 100644
--- a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
+++ b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/LayersWithAbsorptionBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/SampleBuilderEngine/SampleComponents.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
diff --git a/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp b/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
index dc84466c78b..db9ffb14da6 100644
--- a/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
+++ b/Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/LayersWithAbsorptionBySLDBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 
 const double middle_layer_thickness(60.0 * Units::nanometer);
 
diff --git a/Core/StandardSamples/MagneticLayersBuilder.cpp b/Core/StandardSamples/MagneticLayersBuilder.cpp
index 9f9c5484e15..c3bc605b922 100644
--- a/Core/StandardSamples/MagneticLayersBuilder.cpp
+++ b/Core/StandardSamples/MagneticLayersBuilder.cpp
@@ -15,13 +15,13 @@
 #include "Core/StandardSamples/MagneticLayersBuilder.h"
 #include "Base/Const/Units.h"
 #include "Base/Utils/Assert.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 
 namespace
 {
diff --git a/Core/StandardSamples/MagneticLayersBuilder.h b/Core/StandardSamples/MagneticLayersBuilder.h
index 8d51bc763df..5b7c09affa5 100644
--- a/Core/StandardSamples/MagneticLayersBuilder.h
+++ b/Core/StandardSamples/MagneticLayersBuilder.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
 #define BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
 
-#include "Core/Multilayer/RoughnessModels.h"
+#include "Sample/Multilayer/RoughnessModels.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 
 //! Builds sample: spheres in substrate layer with a zero magnetic field.
diff --git a/Core/StandardSamples/MagneticParticlesBuilder.cpp b/Core/StandardSamples/MagneticParticlesBuilder.cpp
index a4f9994c891..2edc01173aa 100644
--- a/Core/StandardSamples/MagneticParticlesBuilder.cpp
+++ b/Core/StandardSamples/MagneticParticlesBuilder.cpp
@@ -14,15 +14,15 @@
 
 #include "Core/StandardSamples/MagneticParticlesBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 
 // ----------------------------------------------------------------------------
 // Magnetic cylinders and zero magnetic field
diff --git a/Core/StandardSamples/MesoCrystalBuilder.cpp b/Core/StandardSamples/MesoCrystalBuilder.cpp
index b1ad1339dbd..6e164aef859 100644
--- a/Core/StandardSamples/MesoCrystalBuilder.cpp
+++ b/Core/StandardSamples/MesoCrystalBuilder.cpp
@@ -14,14 +14,14 @@
 
 #include "Core/StandardSamples/MesoCrystalBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* MesoCrystalBuilder::buildSample() const
diff --git a/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp b/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
index 13a13f0910e..eae091d24a0 100644
--- a/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
+++ b/Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "Core/StandardSamples/MultiLayerWithNCRoughnessBuilder.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 MultiLayer* MultiLayerWithNCRoughnessBuilder::buildSample() const
 {
diff --git a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
index 139d8338cfd..ade5e6c4812 100644
--- a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
+++ b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp
@@ -15,9 +15,9 @@
 #include "Core/StandardSamples/MultiLayerWithRoughnessBuilder.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 MultiLayer* MultiLayerWithRoughnessBuilder::buildSample() const
 {
diff --git a/Core/StandardSamples/MultipleLayoutBuilder.cpp b/Core/StandardSamples/MultipleLayoutBuilder.cpp
index 9862ac28c94..6e6949aa60c 100644
--- a/Core/StandardSamples/MultipleLayoutBuilder.cpp
+++ b/Core/StandardSamples/MultipleLayoutBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/MultipleLayoutBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorPrism3.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* MultipleLayoutBuilder::buildSample() const
diff --git a/Core/StandardSamples/ParaCrystalBuilder.cpp b/Core/StandardSamples/ParaCrystalBuilder.cpp
index fabf5a410cb..ef37dadd640 100644
--- a/Core/StandardSamples/ParaCrystalBuilder.cpp
+++ b/Core/StandardSamples/ParaCrystalBuilder.cpp
@@ -15,13 +15,13 @@
 #include "Core/StandardSamples/ParaCrystalBuilder.h"
 #include "Base/Const/Units.h"
 #include "Base/Utils/Assert.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/SampleBuilderEngine/SampleComponents.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
diff --git a/Core/StandardSamples/ParticleCompositionBuilder.cpp b/Core/StandardSamples/ParticleCompositionBuilder.cpp
index 0046011b643..b0f9f85499c 100644
--- a/Core/StandardSamples/ParticleCompositionBuilder.cpp
+++ b/Core/StandardSamples/ParticleCompositionBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/ParticleCompositionBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 // --- ParticleCompositionBuilder ---
diff --git a/Core/StandardSamples/ParticleDistributionsBuilder.cpp b/Core/StandardSamples/ParticleDistributionsBuilder.cpp
index e2efbd37796..e0a9fcfc634 100644
--- a/Core/StandardSamples/ParticleDistributionsBuilder.cpp
+++ b/Core/StandardSamples/ParticleDistributionsBuilder.cpp
@@ -14,16 +14,16 @@
 
 #include "Core/StandardSamples/ParticleDistributionsBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
 #include "Sample/HardParticle/FormFactorCone.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/HardParticle/FormFactorPyramid.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 #include "Param/Distrib/Distributions.h"
 #include "Param/Varia/ParameterPattern.h"
diff --git a/Core/StandardSamples/ParticleInVacuumBuilder.cpp b/Core/StandardSamples/ParticleInVacuumBuilder.cpp
index 017d48cf788..ae4366fe17d 100644
--- a/Core/StandardSamples/ParticleInVacuumBuilder.cpp
+++ b/Core/StandardSamples/ParticleInVacuumBuilder.cpp
@@ -14,11 +14,11 @@
 
 #include "Core/StandardSamples/ParticleInVacuumBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/SampleBuilderEngine/SampleComponents.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
diff --git a/Core/StandardSamples/PercusYevickBuilder.cpp b/Core/StandardSamples/PercusYevickBuilder.cpp
index 718b9c5dd95..6a5b9ab570d 100644
--- a/Core/StandardSamples/PercusYevickBuilder.cpp
+++ b/Core/StandardSamples/PercusYevickBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/PercusYevickBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctionHardDisk.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* HardDiskBuilder::buildSample() const
diff --git a/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp b/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
index 821b8b8d4db..a1d1fcf2405 100644
--- a/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
+++ b/Core/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
@@ -15,8 +15,8 @@
 #include "Core/StandardSamples/PlainMultiLayerBySLDBuilder.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 PlainMultiLayerBySLDBuilder::PlainMultiLayerBySLDBuilder(int n_layers)
     : m_number_of_layers(n_layers), m_si{2.0704e-06, 2.3726e-11}, m_ti{-1.9493e-06, 9.6013e-10},
diff --git a/Core/StandardSamples/ResonatorBuilder.cpp b/Core/StandardSamples/ResonatorBuilder.cpp
index 89fb988f097..c7b35149c33 100644
--- a/Core/StandardSamples/ResonatorBuilder.cpp
+++ b/Core/StandardSamples/ResonatorBuilder.cpp
@@ -15,9 +15,9 @@
 #include "Core/StandardSamples/ResonatorBuilder.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include <memory>
 
 ResonatorBuilder::ResonatorBuilder() : ISampleBuilder(), m_l_ti(13.0 * Units::nm)
diff --git a/Core/StandardSamples/RipplesBuilder.cpp b/Core/StandardSamples/RipplesBuilder.cpp
index fb820c57341..d0132181e90 100644
--- a/Core/StandardSamples/RipplesBuilder.cpp
+++ b/Core/StandardSamples/RipplesBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/RipplesBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCosineRipple.h"
 #include "Sample/HardParticle/FormFactorSawtoothRipple.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* CosineRippleBuilder::buildSample() const
diff --git a/Core/StandardSamples/RotatedPyramidsBuilder.cpp b/Core/StandardSamples/RotatedPyramidsBuilder.cpp
index d33772b4343..7320e40ff43 100644
--- a/Core/StandardSamples/RotatedPyramidsBuilder.cpp
+++ b/Core/StandardSamples/RotatedPyramidsBuilder.cpp
@@ -14,11 +14,11 @@
 
 #include "Core/StandardSamples/RotatedPyramidsBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorPyramid.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* RotatedPyramidsBuilder::buildSample() const
diff --git a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
index af435666ad1..f752b7a64a5 100644
--- a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
+++ b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
@@ -14,13 +14,13 @@
 
 #include "Core/StandardSamples/SizeDistributionModelsBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 #include "Param/Distrib/Distributions.h"
 #include "Param/Varia/ParameterPattern.h"
diff --git a/Core/StandardSamples/SlicedCompositionBuilder.cpp b/Core/StandardSamples/SlicedCompositionBuilder.cpp
index 52ffa2d8f83..bf9f127b56c 100644
--- a/Core/StandardSamples/SlicedCompositionBuilder.cpp
+++ b/Core/StandardSamples/SlicedCompositionBuilder.cpp
@@ -14,12 +14,12 @@
 
 #include "Core/StandardSamples/SlicedCompositionBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorTruncatedSphere.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* SlicedCompositionBuilder::buildSample() const
diff --git a/Core/StandardSamples/SlicedCylindersBuilder.cpp b/Core/StandardSamples/SlicedCylindersBuilder.cpp
index 4c354ab259b..df6ebab252f 100644
--- a/Core/StandardSamples/SlicedCylindersBuilder.cpp
+++ b/Core/StandardSamples/SlicedCylindersBuilder.cpp
@@ -15,12 +15,12 @@
 #include "Core/StandardSamples/SlicedCylindersBuilder.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 
 namespace
 {
diff --git a/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp b/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
index 610cff28bbc..d9e5efa14b4 100644
--- a/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
+++ b/Core/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
@@ -15,9 +15,9 @@
 #include "Core/StandardSamples/ThickAbsorptiveSampleBuilder.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 MultiLayer* ThickAbsorptiveSampleBuilder::buildSample() const
 {
diff --git a/Core/StandardSamples/TransformationsBuilder.cpp b/Core/StandardSamples/TransformationsBuilder.cpp
index 0b686c3f95b..5886f6043e7 100644
--- a/Core/StandardSamples/TransformationsBuilder.cpp
+++ b/Core/StandardSamples/TransformationsBuilder.cpp
@@ -14,11 +14,11 @@
 
 #include "Core/StandardSamples/TransformationsBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorBox.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* TransformBoxBuilder::buildSample() const
diff --git a/Core/StandardSamples/TwoDimLatticeBuilder.cpp b/Core/StandardSamples/TwoDimLatticeBuilder.cpp
index 2a665a8b2e1..43dbfc95d13 100644
--- a/Core/StandardSamples/TwoDimLatticeBuilder.cpp
+++ b/Core/StandardSamples/TwoDimLatticeBuilder.cpp
@@ -14,15 +14,15 @@
 
 #include "Core/StandardSamples/TwoDimLatticeBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* Basic2DLatticeBuilder::buildSample() const
diff --git a/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp b/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
index e9c0773066f..dbf78f05f2f 100644
--- a/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
+++ b/Core/StandardSamples/TwoLayerRoughnessBuilder.cpp
@@ -14,9 +14,9 @@
 
 #include "Core/StandardSamples/TwoLayerRoughnessBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/StandardSamples/ReferenceMaterials.h"
 
 MultiLayer* TwoLayerRoughnessBuilder::buildSample() const
diff --git a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
index b9c2688afa6..5eda0b1c3de 100644
--- a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
+++ b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
@@ -14,15 +14,15 @@
 // ********************************************************************************************** //
 
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorPrism3.h"
 #include "Core/Histo/Histogram2D.h"
 #include "Core/Histo/IntensityDataIOFactory.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/Simulation/GISASSimulation.h"
 
 int main()
diff --git a/GUI/coregui/Models/ApplicationModels.cpp b/GUI/coregui/Models/ApplicationModels.cpp
index 10b3ef00fa5..75b1fe1e509 100644
--- a/GUI/coregui/Models/ApplicationModels.cpp
+++ b/GUI/coregui/Models/ApplicationModels.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Models/ApplicationModels.h"
 #include "Core/Histo/IntensityDataIOFactory.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/OffSpecSimulation.h"
 #include "Core/Simulation/StandardSimulations.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
diff --git a/GUI/coregui/Models/FTDecayFunctionItems.h b/GUI/coregui/Models/FTDecayFunctionItems.h
index 5b4c7401412..e578f85aa9e 100644
--- a/GUI/coregui/Models/FTDecayFunctionItems.h
+++ b/GUI/coregui/Models/FTDecayFunctionItems.h
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_FTDECAYFUNCTIONITEMS_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_FTDECAYFUNCTIONITEMS_H
 
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
 #include "GUI/coregui/Models/SessionItem.h"
 
 class BA_CORE_API_ FTDecayFunction1DItem : public SessionItem
diff --git a/GUI/coregui/Models/FTDistributionItems.h b/GUI/coregui/Models/FTDistributionItems.h
index fc2a012fe6e..346bcc3c3ca 100644
--- a/GUI/coregui/Models/FTDistributionItems.h
+++ b/GUI/coregui/Models/FTDistributionItems.h
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_FTDISTRIBUTIONITEMS_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_FTDISTRIBUTIONITEMS_H
 
-#include "Core/Correlations/FTDistributions1D.h"
-#include "Core/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/FTDistributions1D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
 #include "GUI/coregui/Models/SessionItem.h"
 
 class BA_CORE_API_ FTDistribution1DItem : public SessionItem
diff --git a/GUI/coregui/Models/FormFactorItems.cpp b/GUI/coregui/Models/FormFactorItems.cpp
index 62b7ace19d5..946d00a210b 100644
--- a/GUI/coregui/Models/FormFactorItems.cpp
+++ b/GUI/coregui/Models/FormFactorItems.cpp
@@ -15,7 +15,7 @@
 #include "GUI/coregui/Models/FormFactorItems.h"
 #include "Base/Const/Units.h"
 #include "Sample/HardParticle/HardParticles.h"
-#include "Core/SoftParticle/SoftParticles.h"
+#include "Sample/SoftParticle/SoftParticles.h"
 
 /* ------------------------------------------------ */
 
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index 8034d50e246..ce7d6221e03 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -14,18 +14,18 @@
 
 #include "GUI/coregui/Models/GUIDomainSampleVisitor.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/HardParticle/HardParticles.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/ParticleDistribution.h"
-#include "Core/SoftParticle/SoftParticles.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleDistribution.h"
+#include "Sample/SoftParticle/SoftParticles.h"
 #include "GUI/coregui/Models/ComboProperty.h"
 #include "GUI/coregui/Models/FormFactorItems.h"
 #include "GUI/coregui/Models/LayerItem.h"
diff --git a/GUI/coregui/Models/GUIExamplesFactory.cpp b/GUI/coregui/Models/GUIExamplesFactory.cpp
index ff20643ffd6..358a673bed5 100644
--- a/GUI/coregui/Models/GUIExamplesFactory.cpp
+++ b/GUI/coregui/Models/GUIExamplesFactory.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/GUIExamplesFactory.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
 #include <memory>
diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp
index 672c5f3b01b..fa726024d48 100644
--- a/GUI/coregui/Models/GUIObjectBuilder.cpp
+++ b/GUI/coregui/Models/GUIObjectBuilder.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecSimulation.h"
 #include "Core/Simulation/SpecularSimulation.h"
diff --git a/GUI/coregui/Models/InterferenceFunctionItems.cpp b/GUI/coregui/Models/InterferenceFunctionItems.cpp
index 61ed2fd3f57..25f4ef6c7d1 100644
--- a/GUI/coregui/Models/InterferenceFunctionItems.cpp
+++ b/GUI/coregui/Models/InterferenceFunctionItems.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
 #include "GUI/coregui/Models/FTDecayFunctionItems.h"
 #include "GUI/coregui/Models/FTDistributionItems.h"
 #include "GUI/coregui/Models/GroupItem.h"
diff --git a/GUI/coregui/Models/Lattice2DItems.cpp b/GUI/coregui/Models/Lattice2DItems.cpp
index 5404cc0ff6c..78df94beb19 100644
--- a/GUI/coregui/Models/Lattice2DItems.cpp
+++ b/GUI/coregui/Models/Lattice2DItems.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Models/Lattice2DItems.h"
 #include "Base/Const/Units.h"
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Lattice/Lattice2D.h"
 
 namespace
 {
diff --git a/GUI/coregui/Models/MesoCrystalItem.cpp b/GUI/coregui/Models/MesoCrystalItem.cpp
index ac57f76980b..43ec88fd1a3 100644
--- a/GUI/coregui/Models/MesoCrystalItem.cpp
+++ b/GUI/coregui/Models/MesoCrystalItem.cpp
@@ -13,10 +13,10 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/MesoCrystalItem.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/ComboProperty.h"
 #include "GUI/coregui/Models/FormFactorItems.h"
 #include "GUI/coregui/Models/ModelPath.h"
diff --git a/GUI/coregui/Models/MesoCrystalItem.h b/GUI/coregui/Models/MesoCrystalItem.h
index a9af8f3295a..259236bf5b4 100644
--- a/GUI/coregui/Models/MesoCrystalItem.h
+++ b/GUI/coregui/Models/MesoCrystalItem.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_MESOCRYSTALITEM_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_MESOCRYSTALITEM_H
 
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 #include "GUI/coregui/Models/SessionGraphicsItem.h"
 
 class IFormFactor;
diff --git a/GUI/coregui/Models/ParticleCompositionItem.cpp b/GUI/coregui/Models/ParticleCompositionItem.cpp
index c57e3980b92..f922f7aa7b0 100644
--- a/GUI/coregui/Models/ParticleCompositionItem.cpp
+++ b/GUI/coregui/Models/ParticleCompositionItem.cpp
@@ -13,9 +13,9 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/ParticleCompositionItem.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/MesoCrystalItem.h"
 #include "GUI/coregui/Models/ModelPath.h"
 #include "GUI/coregui/Models/ParticleCoreShellItem.h"
diff --git a/GUI/coregui/Models/ParticleCompositionItem.h b/GUI/coregui/Models/ParticleCompositionItem.h
index 496d65aeebc..4d41b2a3c6b 100644
--- a/GUI/coregui/Models/ParticleCompositionItem.h
+++ b/GUI/coregui/Models/ParticleCompositionItem.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_PARTICLECOMPOSITIONITEM_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_PARTICLECOMPOSITIONITEM_H
 
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "GUI/coregui/Models/SessionGraphicsItem.h"
 
 class BA_CORE_API_ ParticleCompositionItem : public SessionGraphicsItem
diff --git a/GUI/coregui/Models/ParticleCoreShellItem.cpp b/GUI/coregui/Models/ParticleCoreShellItem.cpp
index b0f28e45f54..2e8f6d7614a 100644
--- a/GUI/coregui/Models/ParticleCoreShellItem.cpp
+++ b/GUI/coregui/Models/ParticleCoreShellItem.cpp
@@ -13,8 +13,8 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/ParticleCoreShellItem.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/ModelPath.h"
 #include "GUI/coregui/Models/ParticleItem.h"
 #include "GUI/coregui/Models/SessionItemUtils.h"
diff --git a/GUI/coregui/Models/ParticleDistributionItem.h b/GUI/coregui/Models/ParticleDistributionItem.h
index 1853788a69a..b16633ccf9d 100644
--- a/GUI/coregui/Models/ParticleDistributionItem.h
+++ b/GUI/coregui/Models/ParticleDistributionItem.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_PARTICLEDISTRIBUTIONITEM_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_PARTICLEDISTRIBUTIONITEM_H
 
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "GUI/coregui/Models/SessionGraphicsItem.h"
 #include <string>
 #include <vector>
diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp
index f9f02dbf454..9276c0b8f16 100644
--- a/GUI/coregui/Models/ParticleItem.cpp
+++ b/GUI/coregui/Models/ParticleItem.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Models/ParticleItem.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "GUI/coregui/Models/FormFactorItems.h"
 #include "GUI/coregui/Models/ModelPath.h"
 #include "GUI/coregui/Models/ParticleCoreShellItem.h"
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index 7a75db486a0..de3202b036e 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Models/TransformFromDomain.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
 #include "Core/Computation/ConstantBackground.h"
@@ -28,10 +28,10 @@
 #include "Device/Mask/Line.h"
 #include "Device/Mask/Polygon.h"
 #include "Device/Mask/Rectangle.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/Resolution/ConvolutionDetectorResolution.h"
 #include "Core/Resolution/ResolutionFunction2DGaussian.h"
 #include "Core/Resolution/ScanResolution.h"
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index 158787ff640..7bc14ccfdc3 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -14,10 +14,10 @@
 
 #include "GUI/coregui/Models/TransformToDomain.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "Core/Resolution/ScanResolution.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Simulation/GISASSimulation.h"
diff --git a/GUI/coregui/Models/TransformToDomain.h b/GUI/coregui/Models/TransformToDomain.h
index 002f88f096d..c8f9db484dc 100644
--- a/GUI/coregui/Models/TransformToDomain.h
+++ b/GUI/coregui/Models/TransformToDomain.h
@@ -15,14 +15,14 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_TRANSFORMTODOMAIN_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_TRANSFORMTODOMAIN_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Instrument/Instrument.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/IParticle.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/IParticle.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Param/Distrib/Distributions.h" // for IDistribution1D
 #include <memory>
 
diff --git a/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp b/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp
index f0cf245147d..c8465a6e300 100644
--- a/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp
+++ b/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/coregui/Views/InfoWidgets/PySampleWidget.h"
 #include "Core/Export/ExportToPython.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "GUI/coregui/Models/DomainObjectBuilder.h"
 #include "GUI/coregui/Models/MultiLayerItem.h"
 #include "GUI/coregui/Models/SampleModel.h"
diff --git a/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp b/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
index ca70d9c4601..6e23d853f60 100644
--- a/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
+++ b/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Views/PropertyEditor/TestComponentView.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
 #include "GUI/coregui/Models/MaterialDataItems.h"
diff --git a/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp b/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
index ca680c3f87d..78b2da66be9 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Views/RealSpaceWidgets/IPositionBuilder.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
 #include "GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.h"
 #include <cmath>
 #include <random>
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.cpp
index 217a1e1f1f6..df83d3a510f 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "GUI/coregui/Views/RealSpaceWidgets/RealSpace2DParacrystalUtils.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
 #include "GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.h"
 
 namespace
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilder.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilder.cpp
index 51a00ba4166..076fb5d6591 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilder.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilder.cpp
@@ -14,9 +14,9 @@
 
 #include "GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/Lattice2DItems.h"
 #include "GUI/coregui/Models/LayerItem.h"
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilderUtils.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilderUtils.cpp
index 338bcd3d73c..347b0cf9230 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilderUtils.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilderUtils.cpp
@@ -15,11 +15,11 @@
 #include "GUI/coregui/Views/RealSpaceWidgets/RealSpaceBuilderUtils.h"
 #include "Base/Const/Units.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
-#include "Core/Particle/FormFactorCrystal.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
+#include "Sample/Particle/FormFactorCrystal.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/Lattice2DItems.h"
 #include "GUI/coregui/Models/LayerItem.h"
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
index 3b7d605792b..ede15b66104 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceMesoCrystalUtils.cpp
@@ -16,9 +16,9 @@
 #include "Base/Const/Units.h"
 #include "Base/Types/Exceptions.h"
 #include "Sample/HardParticle/HardParticles.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "GUI/coregui/Models/Lattice2DItems.h"
 #include "GUI/coregui/Models/MesoCrystalItem.h"
 #include "GUI/coregui/Models/ParticleCompositionItem.h"
diff --git a/GUI/coregui/mainwindow/PyImportAssistant.cpp b/GUI/coregui/mainwindow/PyImportAssistant.cpp
index 11202ece0f8..ca6098387c1 100644
--- a/GUI/coregui/mainwindow/PyImportAssistant.cpp
+++ b/GUI/coregui/mainwindow/PyImportAssistant.cpp
@@ -17,8 +17,8 @@
 #include "GUI/coregui/mainwindow/PyImportAssistant.h"
 #include "BABuild.h"
 #include "Base/Utils/SysUtils.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/PyImport.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/PyImport.h"
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
 #include "GUI/coregui/Views/InfoWidgets/ComboSelectorDialog.h"
 #include "GUI/coregui/Views/InfoWidgets/DetailedMessageBox.h"
diff --git a/Core/Aggregate/IInterferenceFunction.cpp b/Sample/Aggregate/IInterferenceFunction.cpp
similarity index 95%
rename from Core/Aggregate/IInterferenceFunction.cpp
rename to Sample/Aggregate/IInterferenceFunction.cpp
index 24b8ba8f9f0..2d79914ef80 100644
--- a/Core/Aggregate/IInterferenceFunction.cpp
+++ b/Sample/Aggregate/IInterferenceFunction.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/IInterferenceFunction.cpp
+//! @file      Sample/Aggregate/IInterferenceFunction.cpp
 //! @brief     Implements the interface class IInterferenceFunction.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Param/Base/RealParameter.h"
 #include <algorithm>
 #include <stdexcept>
diff --git a/Core/Aggregate/IInterferenceFunction.h b/Sample/Aggregate/IInterferenceFunction.h
similarity index 97%
rename from Core/Aggregate/IInterferenceFunction.h
rename to Sample/Aggregate/IInterferenceFunction.h
index 923f7e1688e..f8ad14b72fb 100644
--- a/Core/Aggregate/IInterferenceFunction.h
+++ b/Sample/Aggregate/IInterferenceFunction.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/IInterferenceFunction.h
+//! @file      Sample/Aggregate/IInterferenceFunction.h
 //! @brief     Defines and implements the interface class IInterferenceFunction.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Aggregate/InterferenceFunction1DLattice.cpp b/Sample/Aggregate/InterferenceFunction1DLattice.cpp
similarity index 93%
rename from Core/Aggregate/InterferenceFunction1DLattice.cpp
rename to Sample/Aggregate/InterferenceFunction1DLattice.cpp
index dd3110176f1..f0c30143d5a 100644
--- a/Core/Aggregate/InterferenceFunction1DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunction1DLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction1DLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunction1DLattice.cpp
 //! @brief     Implements class InterferenceFunction1DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Assert.h"
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
 #include "Param/Base/RealParameter.h"
 #include <algorithm>
 
diff --git a/Core/Aggregate/InterferenceFunction1DLattice.h b/Sample/Aggregate/InterferenceFunction1DLattice.h
similarity index 93%
rename from Core/Aggregate/InterferenceFunction1DLattice.h
rename to Sample/Aggregate/InterferenceFunction1DLattice.h
index 4f1e1116c1f..ed4899f9e69 100644
--- a/Core/Aggregate/InterferenceFunction1DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction1DLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction1DLattice.h
+//! @file      Sample/Aggregate/InterferenceFunction1DLattice.h
 //! @brief     Defines class InterferenceFunction1DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
 
 class IFTDecayFunction1D;
 
diff --git a/Core/Aggregate/InterferenceFunction2DLattice.cpp b/Sample/Aggregate/InterferenceFunction2DLattice.cpp
similarity index 98%
rename from Core/Aggregate/InterferenceFunction2DLattice.cpp
rename to Sample/Aggregate/InterferenceFunction2DLattice.cpp
index b3e15d1b701..b103698ae81 100644
--- a/Core/Aggregate/InterferenceFunction2DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunction2DLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunction2DLattice.cpp
 //! @brief     Implements class InterferenceFunction2DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Integrator.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Aggregate/InterferenceFunction2DLattice.h b/Sample/Aggregate/InterferenceFunction2DLattice.h
similarity index 93%
rename from Core/Aggregate/InterferenceFunction2DLattice.h
rename to Sample/Aggregate/InterferenceFunction2DLattice.h
index 8671cd338ed..3df8ab38aaf 100644
--- a/Core/Aggregate/InterferenceFunction2DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction2DLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DLattice.h
+//! @file      Sample/Aggregate/InterferenceFunction2DLattice.h
 //! @brief     Defines class InterferenceFunction2DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,10 +15,10 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
+#include "Sample/Lattice/Lattice2D.h"
 
 //! Interference function of a 2D lattice.
 //! @ingroup interference
diff --git a/Core/Aggregate/InterferenceFunction2DParaCrystal.cpp b/Sample/Aggregate/InterferenceFunction2DParaCrystal.cpp
similarity index 98%
rename from Core/Aggregate/InterferenceFunction2DParaCrystal.cpp
rename to Sample/Aggregate/InterferenceFunction2DParaCrystal.cpp
index b58af7c1bd5..5546d50fdc8 100644
--- a/Core/Aggregate/InterferenceFunction2DParaCrystal.cpp
+++ b/Sample/Aggregate/InterferenceFunction2DParaCrystal.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DParaCrystal.cpp
+//! @file      Sample/Aggregate/InterferenceFunction2DParaCrystal.cpp
 //! @brief     Implements class InterferenceFunction2DParaCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Integrator.h"
 #include "Param/Base/ParameterPool.h"
diff --git a/Core/Aggregate/InterferenceFunction2DParaCrystal.h b/Sample/Aggregate/InterferenceFunction2DParaCrystal.h
similarity index 94%
rename from Core/Aggregate/InterferenceFunction2DParaCrystal.h
rename to Sample/Aggregate/InterferenceFunction2DParaCrystal.h
index d6693cb87dc..0bcc1680762 100644
--- a/Core/Aggregate/InterferenceFunction2DParaCrystal.h
+++ b/Sample/Aggregate/InterferenceFunction2DParaCrystal.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DParaCrystal.h
+//! @file      Sample/Aggregate/InterferenceFunction2DParaCrystal.h
 //! @brief     Defines class InterferenceFunction2DParaCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,9 +16,9 @@
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
 
 #include "Base/Types/Complex.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Correlations/FTDistributions2D.h"
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Correlations/FTDistributions2D.h"
+#include "Sample/Lattice/Lattice2D.h"
 #include <memory>
 
 class IFTDistribution2D;
diff --git a/Core/Aggregate/InterferenceFunction2DSuperLattice.cpp b/Sample/Aggregate/InterferenceFunction2DSuperLattice.cpp
similarity index 96%
rename from Core/Aggregate/InterferenceFunction2DSuperLattice.cpp
rename to Sample/Aggregate/InterferenceFunction2DSuperLattice.cpp
index ae18ba3e9e7..66420573d4b 100644
--- a/Core/Aggregate/InterferenceFunction2DSuperLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunction2DSuperLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DSuperLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunction2DSuperLattice.cpp
 //! @brief     Implements class InterferenceFunction2DSuperLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,12 +12,12 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Integrator.h"
 #include "Base/Utils/MathFunctions.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
 #include "Param/Base/RealParameter.h"
 
 #include <limits>
diff --git a/Core/Aggregate/InterferenceFunction2DSuperLattice.h b/Sample/Aggregate/InterferenceFunction2DSuperLattice.h
similarity index 94%
rename from Core/Aggregate/InterferenceFunction2DSuperLattice.h
rename to Sample/Aggregate/InterferenceFunction2DSuperLattice.h
index ab8d9bd4cde..74eac80657d 100644
--- a/Core/Aggregate/InterferenceFunction2DSuperLattice.h
+++ b/Sample/Aggregate/InterferenceFunction2DSuperLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction2DSuperLattice.h
+//! @file      Sample/Aggregate/InterferenceFunction2DSuperLattice.h
 //! @brief     Defines class InterferenceFunction2DSuperLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Lattice/Lattice2D.h"
 
 //! Interference function of a 2D superlattice with a configurable interference function for
 //! each lattice site.
diff --git a/Core/Aggregate/InterferenceFunction3DLattice.cpp b/Sample/Aggregate/InterferenceFunction3DLattice.cpp
similarity index 94%
rename from Core/Aggregate/InterferenceFunction3DLattice.cpp
rename to Sample/Aggregate/InterferenceFunction3DLattice.cpp
index 0e8f1116945..98fe8bd3edb 100644
--- a/Core/Aggregate/InterferenceFunction3DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunction3DLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction3DLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunction3DLattice.cpp
 //! @brief     Implements class InterferenceFunction3DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunction3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction3DLattice.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Correlations/IPeakShape.h"
+#include "Sample/Correlations/IPeakShape.h"
 #include <algorithm>
 
 InterferenceFunction3DLattice::InterferenceFunction3DLattice(const Lattice& lattice)
diff --git a/Core/Aggregate/InterferenceFunction3DLattice.h b/Sample/Aggregate/InterferenceFunction3DLattice.h
similarity index 92%
rename from Core/Aggregate/InterferenceFunction3DLattice.h
rename to Sample/Aggregate/InterferenceFunction3DLattice.h
index 79848beb6af..a28cfc61912 100644
--- a/Core/Aggregate/InterferenceFunction3DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction3DLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunction3DLattice.h
+//! @file      Sample/Aggregate/InterferenceFunction3DLattice.h
 //! @brief     Defines class InterferenceFunction3DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Lattice/Lattice.h"
 
 class IPeakShape;
 
diff --git a/Core/Aggregate/InterferenceFunctionFinite2DLattice.cpp b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.cpp
similarity index 97%
rename from Core/Aggregate/InterferenceFunctionFinite2DLattice.cpp
rename to Sample/Aggregate/InterferenceFunctionFinite2DLattice.cpp
index f241915d920..2fe668a66a4 100644
--- a/Core/Aggregate/InterferenceFunctionFinite2DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionFinite2DLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionFinite2DLattice.cpp
 //! @brief     Implements class InterferenceFunctionFinite2DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Integrator.h"
diff --git a/Core/Aggregate/InterferenceFunctionFinite2DLattice.h b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
similarity index 94%
rename from Core/Aggregate/InterferenceFunctionFinite2DLattice.h
rename to Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
index e1c97d17c94..9f1a6b5fe3a 100644
--- a/Core/Aggregate/InterferenceFunctionFinite2DLattice.h
+++ b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionFinite2DLattice.h
+//! @file      Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
 //! @brief     Defines class InterferenceFunctionFinite2DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Lattice/Lattice2D.h"
 
 //! Interference function of a finite 2D lattice.
 //! @ingroup interference
diff --git a/Core/Aggregate/InterferenceFunctionFinite3DLattice.cpp b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.cpp
similarity index 94%
rename from Core/Aggregate/InterferenceFunctionFinite3DLattice.cpp
rename to Sample/Aggregate/InterferenceFunctionFinite3DLattice.cpp
index 98c9635e466..8f333565e3d 100644
--- a/Core/Aggregate/InterferenceFunctionFinite3DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionFinite3DLattice.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionFinite3DLattice.cpp
 //! @brief     Implements class InterferenceFunctionFinite2DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionFinite3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite3DLattice.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/MathFunctions.h"
diff --git a/Core/Aggregate/InterferenceFunctionFinite3DLattice.h b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
similarity index 92%
rename from Core/Aggregate/InterferenceFunctionFinite3DLattice.h
rename to Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
index b84d77f251f..a94e8179e8f 100644
--- a/Core/Aggregate/InterferenceFunctionFinite3DLattice.h
+++ b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionFinite3DLattice.h
+//! @file      Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
 //! @brief     Defines class InterferenceFunctionFinite3DLattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Lattice/Lattice.h"
 
 //! Interference function of a finite 3D lattice.
 //! @ingroup interference
diff --git a/Core/Aggregate/InterferenceFunctionHardDisk.cpp b/Sample/Aggregate/InterferenceFunctionHardDisk.cpp
similarity index 96%
rename from Core/Aggregate/InterferenceFunctionHardDisk.cpp
rename to Sample/Aggregate/InterferenceFunctionHardDisk.cpp
index 60898ead718..b679b302885 100644
--- a/Core/Aggregate/InterferenceFunctionHardDisk.cpp
+++ b/Sample/Aggregate/InterferenceFunctionHardDisk.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionHardDisk.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionHardDisk.cpp
 //! @brief     Implements class InterferenceFunctionHardDisk.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionHardDisk.h"
+#include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
 #include "Base/Utils/Integrator.h"
 #include "Base/Utils/MathFunctions.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Aggregate/InterferenceFunctionHardDisk.h b/Sample/Aggregate/InterferenceFunctionHardDisk.h
similarity index 93%
rename from Core/Aggregate/InterferenceFunctionHardDisk.h
rename to Sample/Aggregate/InterferenceFunctionHardDisk.h
index 780af54965d..b6c05443644 100644
--- a/Core/Aggregate/InterferenceFunctionHardDisk.h
+++ b/Sample/Aggregate/InterferenceFunctionHardDisk.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionHardDisk.h
+//! @file      Sample/Aggregate/InterferenceFunctionHardDisk.h
 //! @brief     Defines class InterferenceFunctionHardDisk.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
 
 //! Percus-Yevick hard disk interference function.
 //!
diff --git a/Core/Aggregate/InterferenceFunctionNone.cpp b/Sample/Aggregate/InterferenceFunctionNone.cpp
similarity index 88%
rename from Core/Aggregate/InterferenceFunctionNone.cpp
rename to Sample/Aggregate/InterferenceFunctionNone.cpp
index 19d982a2f3f..e2e68e7e3f0 100644
--- a/Core/Aggregate/InterferenceFunctionNone.cpp
+++ b/Sample/Aggregate/InterferenceFunctionNone.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionNone.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionNone.cpp
 //! @brief     Implements class InterferenceFunctionNone.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
 
 InterferenceFunctionNone::InterferenceFunctionNone() : IInterferenceFunction(0)
 {
diff --git a/Core/Aggregate/InterferenceFunctionNone.h b/Sample/Aggregate/InterferenceFunctionNone.h
similarity index 91%
rename from Core/Aggregate/InterferenceFunctionNone.h
rename to Sample/Aggregate/InterferenceFunctionNone.h
index d5f5b69efcd..c3a20af5c94 100644
--- a/Core/Aggregate/InterferenceFunctionNone.h
+++ b/Sample/Aggregate/InterferenceFunctionNone.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionNone.h
+//! @file      Sample/Aggregate/InterferenceFunctionNone.h
 //! @brief     Defines class InterferenceFunctionNone.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
 
 //! Default interference function (i.e. absence of any interference).
 //! @ingroup interference
diff --git a/Core/Aggregate/InterferenceFunctionRadialParaCrystal.cpp b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
similarity index 97%
rename from Core/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
rename to Sample/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
index ecbff7a71ec..4661b1287ad 100644
--- a/Core/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
+++ b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionRadialParaCrystal.cpp
 //! @brief     Implements class InterferenceFunctionRadialParaCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Base/Types/Exceptions.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Aggregate/InterferenceFunctionRadialParaCrystal.h b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
similarity index 92%
rename from Core/Aggregate/InterferenceFunctionRadialParaCrystal.h
rename to Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
index 6fe185cb906..54639466aa6 100644
--- a/Core/Aggregate/InterferenceFunctionRadialParaCrystal.h
+++ b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionRadialParaCrystal.h
+//! @file      Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
 //! @brief     Defines class InterferenceFunctionRadialParaCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,8 +16,8 @@
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
 
 #include "Base/Types/Complex.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Correlations/FTDistributions1D.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Correlations/FTDistributions1D.h"
 #include <memory>
 
 //! Interference function of radial paracrystal.
diff --git a/Core/Aggregate/InterferenceFunctionTwin.cpp b/Sample/Aggregate/InterferenceFunctionTwin.cpp
similarity index 94%
rename from Core/Aggregate/InterferenceFunctionTwin.cpp
rename to Sample/Aggregate/InterferenceFunctionTwin.cpp
index 86c6f5b6eab..454f449d61b 100644
--- a/Core/Aggregate/InterferenceFunctionTwin.cpp
+++ b/Sample/Aggregate/InterferenceFunctionTwin.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionTwin.cpp
+//! @file      Sample/Aggregate/InterferenceFunctionTwin.cpp
 //! @brief     Implements class InterferenceFunctionTwin.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/InterferenceFunctionTwin.h"
+#include "Sample/Aggregate/InterferenceFunctionTwin.h"
 #include "Param/Base/RealParameter.h"
 #include <cmath>
 
diff --git a/Core/Aggregate/InterferenceFunctionTwin.h b/Sample/Aggregate/InterferenceFunctionTwin.h
similarity index 92%
rename from Core/Aggregate/InterferenceFunctionTwin.h
rename to Sample/Aggregate/InterferenceFunctionTwin.h
index 1ae81324938..89c6ac3f923 100644
--- a/Core/Aggregate/InterferenceFunctionTwin.h
+++ b/Sample/Aggregate/InterferenceFunctionTwin.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/InterferenceFunctionTwin.h
+//! @file      Sample/Aggregate/InterferenceFunctionTwin.h
 //! @brief     Defines class InterferenceFunctionTwin.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
 
-#include "Core/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
 
 //! Interference function for two particles at a mean distance and given standard deviation
 //! from each other in a given direction.
diff --git a/Sample/Aggregate/InterferenceFunctions.h b/Sample/Aggregate/InterferenceFunctions.h
new file mode 100644
index 00000000000..22b3ca51220
--- /dev/null
+++ b/Sample/Aggregate/InterferenceFunctions.h
@@ -0,0 +1,30 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Sample/Aggregate/InterferenceFunctions.h
+//! @brief     Includes all interference function definitions.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2018
+//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
+//
+// ************************************************************************** //
+
+#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
+#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
+
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
+#include "Sample/Aggregate/InterferenceFunction3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionTwin.h"
+
+#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
diff --git a/Core/Aggregate/ParticleLayout.cpp b/Sample/Aggregate/ParticleLayout.cpp
similarity index 96%
rename from Core/Aggregate/ParticleLayout.cpp
rename to Sample/Aggregate/ParticleLayout.cpp
index de602ace6c2..04ef28d88fc 100644
--- a/Core/Aggregate/ParticleLayout.cpp
+++ b/Sample/Aggregate/ParticleLayout.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/ParticleLayout.cpp
+//! @file      Sample/Aggregate/ParticleLayout.cpp
 //! @brief     Implements class ParticleLayout.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
 
diff --git a/Core/Aggregate/ParticleLayout.h b/Sample/Aggregate/ParticleLayout.h
similarity index 96%
rename from Core/Aggregate/ParticleLayout.h
rename to Sample/Aggregate/ParticleLayout.h
index ccf62dad841..07642d55906 100644
--- a/Core/Aggregate/ParticleLayout.h
+++ b/Sample/Aggregate/ParticleLayout.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Aggregate/ParticleLayout.h
+//! @file      Sample/Aggregate/ParticleLayout.h
 //! @brief     Defines class ParticleLayout.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_AGGREGATE_PARTICLELAYOUT_H
 #define BORNAGAIN_CORE_AGGREGATE_PARTICLELAYOUT_H
 
-#include "Core/Correlations/ILayout.h"
+#include "Sample/Correlations/ILayout.h"
 #include "Sample/Scattering/Rotations.h"
 #include <memory>
 
diff --git a/Core/Correlations/FTDecay1D.cpp b/Sample/Correlations/FTDecay1D.cpp
similarity index 98%
rename from Core/Correlations/FTDecay1D.cpp
rename to Sample/Correlations/FTDecay1D.cpp
index b77cb58fc8c..9a4ab5b4ff6 100644
--- a/Core/Correlations/FTDecay1D.cpp
+++ b/Sample/Correlations/FTDecay1D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDecay1D.cpp
+//! @file      Sample/Correlations/FTDecay1D.cpp
 //! @brief     Implements class FTDistribution2DCauchy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay1D.h"
 #include "Base/Utils/MathFunctions.h"
 #include <algorithm>
 
diff --git a/Core/Correlations/FTDecay1D.h b/Sample/Correlations/FTDecay1D.h
similarity index 98%
rename from Core/Correlations/FTDecay1D.h
rename to Sample/Correlations/FTDecay1D.h
index 30e8ad60fff..f72741bcbf4 100644
--- a/Core/Correlations/FTDecay1D.h
+++ b/Sample/Correlations/FTDecay1D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDecay1D.h
+//! @file      Sample/Correlations/FTDecay1D.h
 //! @brief     Defines classes IFTDecayFunction1D, IFTDecayFunction2D,
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Correlations/FTDecay2D.cpp b/Sample/Correlations/FTDecay2D.cpp
similarity index 98%
rename from Core/Correlations/FTDecay2D.cpp
rename to Sample/Correlations/FTDecay2D.cpp
index d7fc63cdfba..a5175bb518d 100644
--- a/Core/Correlations/FTDecay2D.cpp
+++ b/Sample/Correlations/FTDecay2D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDecay2D.cpp
+//! @file      Sample/Correlations/FTDecay2D.cpp
 //! @brief     Implements class FTDistribution2DCauchy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/FTDecay2D.h"
+#include "Sample/Correlations/FTDecay2D.h"
 #include "Base/Utils/MathFunctions.h"
 #include <algorithm>
 
diff --git a/Core/Correlations/FTDecay2D.h b/Sample/Correlations/FTDecay2D.h
similarity index 98%
rename from Core/Correlations/FTDecay2D.h
rename to Sample/Correlations/FTDecay2D.h
index 8f65be13cab..442546a9bb5 100644
--- a/Core/Correlations/FTDecay2D.h
+++ b/Sample/Correlations/FTDecay2D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDecay2D.h
+//! @file      Sample/Correlations/FTDecay2D.h
 //! @brief     Defines classes IFTDecayFunction1D, IFTDecayFunction2D,
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Correlations/FTDistributions1D.cpp b/Sample/Correlations/FTDistributions1D.cpp
similarity index 98%
rename from Core/Correlations/FTDistributions1D.cpp
rename to Sample/Correlations/FTDistributions1D.cpp
index 5995ac03200..3a7dcca741a 100644
--- a/Core/Correlations/FTDistributions1D.cpp
+++ b/Sample/Correlations/FTDistributions1D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDistributions1D.cpp
+//! @file      Sample/Correlations/FTDistributions1D.cpp
 //! @brief     Implements interface class IFTDistribution2D and children thereof.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/FTDistributions1D.h"
+#include "Sample/Correlations/FTDistributions1D.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/MathFunctions.h"
diff --git a/Core/Correlations/FTDistributions1D.h b/Sample/Correlations/FTDistributions1D.h
similarity index 98%
rename from Core/Correlations/FTDistributions1D.h
rename to Sample/Correlations/FTDistributions1D.h
index a1d0782c3dd..0fd879bd764 100644
--- a/Core/Correlations/FTDistributions1D.h
+++ b/Sample/Correlations/FTDistributions1D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDistributions1D.h
+//! @file      Sample/Correlations/FTDistributions1D.h
 //! @brief     Defines interface class IFTDistribution1D, and children thereof
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
 
 #include "Base/Types/ICloneable.h"
-#include "Core/Correlations/IDistribution1DSampler.h"
+#include "Sample/Correlations/IDistribution1DSampler.h"
 #include "Param/Node/INode.h"
 
 //! Interface for a one-dimensional distribution, with normalization adjusted so that
diff --git a/Core/Correlations/FTDistributions2D.cpp b/Sample/Correlations/FTDistributions2D.cpp
similarity index 98%
rename from Core/Correlations/FTDistributions2D.cpp
rename to Sample/Correlations/FTDistributions2D.cpp
index 01a724e43bb..032cccc198e 100644
--- a/Core/Correlations/FTDistributions2D.cpp
+++ b/Sample/Correlations/FTDistributions2D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDistributions2D.cpp
+//! @file      Sample/Correlations/FTDistributions2D.cpp
 //! @brief     Implements interface class IFTDistribution2D and children thereof.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/Integrator.h"
 #include "Base/Utils/MathFunctions.h"
diff --git a/Core/Correlations/FTDistributions2D.h b/Sample/Correlations/FTDistributions2D.h
similarity index 97%
rename from Core/Correlations/FTDistributions2D.h
rename to Sample/Correlations/FTDistributions2D.h
index 27c1ba098cc..f8f40dd5c03 100644
--- a/Core/Correlations/FTDistributions2D.h
+++ b/Sample/Correlations/FTDistributions2D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/FTDistributions2D.h
+//! @file      Sample/Correlations/FTDistributions2D.h
 //! @brief     Defines interface class IFTDistribution2D, and children thereof.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -17,7 +17,7 @@
 
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/ICloneable.h"
-#include "Core/Correlations/IDistribution2DSampler.h"
+#include "Sample/Correlations/IDistribution2DSampler.h"
 #include "Param/Node/INode.h"
 
 //! Interface for two-dimensional distributions in Fourier space.
diff --git a/Core/Correlations/IDistribution1DSampler.cpp b/Sample/Correlations/IDistribution1DSampler.cpp
similarity index 96%
rename from Core/Correlations/IDistribution1DSampler.cpp
rename to Sample/Correlations/IDistribution1DSampler.cpp
index 8d0fbce4faf..5036148dc68 100644
--- a/Core/Correlations/IDistribution1DSampler.cpp
+++ b/Sample/Correlations/IDistribution1DSampler.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IDistribution1DSampler.cpp
+//! @file      Sample/Correlations/IDistribution1DSampler.cpp
 //! @brief     Defines interface class IFTDistribution1D, and children thereof
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/IDistribution1DSampler.h"
+#include "Sample/Correlations/IDistribution1DSampler.h"
 #include <random>
 
 IDistribution1DSampler::~IDistribution1DSampler() = default;
diff --git a/Core/Correlations/IDistribution1DSampler.h b/Sample/Correlations/IDistribution1DSampler.h
similarity index 97%
rename from Core/Correlations/IDistribution1DSampler.h
rename to Sample/Correlations/IDistribution1DSampler.h
index 8592eb597c5..34bf7ea933c 100644
--- a/Core/Correlations/IDistribution1DSampler.h
+++ b/Sample/Correlations/IDistribution1DSampler.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IDistribution1DSampler.h
+//! @file      Sample/Correlations/IDistribution1DSampler.h
 //! @brief     Defines interface class IFTDistribution1D, and children thereof
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Correlations/IDistribution2DSampler.cpp b/Sample/Correlations/IDistribution2DSampler.cpp
similarity index 98%
rename from Core/Correlations/IDistribution2DSampler.cpp
rename to Sample/Correlations/IDistribution2DSampler.cpp
index 9e7cbbea49b..117586848c8 100644
--- a/Core/Correlations/IDistribution2DSampler.cpp
+++ b/Sample/Correlations/IDistribution2DSampler.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IDistribution2DSampler.cpp
+//! @file      Sample/Correlations/IDistribution2DSampler.cpp
 //! @brief     Defines interface class IFTDistribution1D, and children thereof
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/IDistribution2DSampler.h"
+#include "Sample/Correlations/IDistribution2DSampler.h"
 #include <random>
 
 namespace
diff --git a/Core/Correlations/IDistribution2DSampler.h b/Sample/Correlations/IDistribution2DSampler.h
similarity index 97%
rename from Core/Correlations/IDistribution2DSampler.h
rename to Sample/Correlations/IDistribution2DSampler.h
index b215b9383ca..77cd814a1a5 100644
--- a/Core/Correlations/IDistribution2DSampler.h
+++ b/Sample/Correlations/IDistribution2DSampler.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IDistribution2DSampler.h
+//! @file      Sample/Correlations/IDistribution2DSampler.h
 //! @brief     Defines interface class IFTDistribution1D, and children thereof
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Correlations/ILayout.cpp b/Sample/Correlations/ILayout.cpp
similarity index 87%
rename from Core/Correlations/ILayout.cpp
rename to Sample/Correlations/ILayout.cpp
index 3fb700e66f8..7c6009c9642 100644
--- a/Core/Correlations/ILayout.cpp
+++ b/Sample/Correlations/ILayout.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/ILayout.cpp
+//! @file      Sample/Correlations/ILayout.cpp
 //! @brief     Implements interface class ILayout.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/ILayout.h"
+#include "Sample/Correlations/ILayout.h"
 
 ILayout::ILayout() : m_weight(1.0) {}
 
diff --git a/Core/Correlations/ILayout.h b/Sample/Correlations/ILayout.h
similarity index 98%
rename from Core/Correlations/ILayout.h
rename to Sample/Correlations/ILayout.h
index a2f3964c772..34cc093403a 100644
--- a/Core/Correlations/ILayout.h
+++ b/Sample/Correlations/ILayout.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/ILayout.h
+//! @file      Sample/Correlations/ILayout.h
 //! @brief     Defines and implements interface class ILayout.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Correlations/IPeakShape.cpp b/Sample/Correlations/IPeakShape.cpp
similarity index 99%
rename from Core/Correlations/IPeakShape.cpp
rename to Sample/Correlations/IPeakShape.cpp
index 5684adc208d..495d4e2484d 100644
--- a/Core/Correlations/IPeakShape.cpp
+++ b/Sample/Correlations/IPeakShape.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IPeakShape.cpp
+//! @file      Sample/Correlations/IPeakShape.cpp
 //! @brief     Implements the interface IPeakShape and subclasses.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Correlations/IPeakShape.h"
+#include "Sample/Correlations/IPeakShape.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Utils/Integrator.h"
 #include "Base/Utils/MathFunctions.h"
diff --git a/Core/Correlations/IPeakShape.h b/Sample/Correlations/IPeakShape.h
similarity index 99%
rename from Core/Correlations/IPeakShape.h
rename to Sample/Correlations/IPeakShape.h
index b1f47e7e3c8..7dd1a85db4f 100644
--- a/Core/Correlations/IPeakShape.h
+++ b/Sample/Correlations/IPeakShape.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Correlations/IPeakShape.h
+//! @file      Sample/Correlations/IPeakShape.h
 //! @brief     Defines the interface IPeakShape and subclasses.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Lattice/ILatticeOrientation.cpp b/Sample/Lattice/ILatticeOrientation.cpp
similarity index 98%
rename from Core/Lattice/ILatticeOrientation.cpp
rename to Sample/Lattice/ILatticeOrientation.cpp
index fafe086e50c..5f463f26848 100644
--- a/Core/Lattice/ILatticeOrientation.cpp
+++ b/Sample/Lattice/ILatticeOrientation.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/ILatticeOrientation.cpp
+//! @file      Sample/Lattice/ILatticeOrientation.cpp
 //! @brief     Implements subclasses of ILatticeOrientation.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Lattice/ILatticeOrientation.h"
+#include "Sample/Lattice/ILatticeOrientation.h"
 
 namespace
 {
diff --git a/Core/Lattice/ILatticeOrientation.h b/Sample/Lattice/ILatticeOrientation.h
similarity index 95%
rename from Core/Lattice/ILatticeOrientation.h
rename to Sample/Lattice/ILatticeOrientation.h
index 329f49528ae..ceeaa037e04 100644
--- a/Core/Lattice/ILatticeOrientation.h
+++ b/Sample/Lattice/ILatticeOrientation.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/ILatticeOrientation.h
+//! @file      Sample/Lattice/ILatticeOrientation.h
 //! @brief     Defines interface ILatticeOrientation and subclasses.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_LATTICE_ILATTICEORIENTATION_H
 
 #include "Base/Vector/Transform3D.h"
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 
 class ILatticeOrientation
 {
diff --git a/Core/Lattice/ISelectionRule.h b/Sample/Lattice/ISelectionRule.h
similarity index 97%
rename from Core/Lattice/ISelectionRule.h
rename to Sample/Lattice/ISelectionRule.h
index 4016456f0d2..5f37754c4f2 100644
--- a/Core/Lattice/ISelectionRule.h
+++ b/Sample/Lattice/ISelectionRule.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/ISelectionRule.h
+//! @file      Sample/Lattice/ISelectionRule.h
 //! @brief     Defines classes ISelectionRule, SimpleSelectionRule
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Lattice/Lattice.cpp b/Sample/Lattice/Lattice.cpp
similarity index 98%
rename from Core/Lattice/Lattice.cpp
rename to Sample/Lattice/Lattice.cpp
index 6bb2b0e46bc..8e7a3cbf484 100644
--- a/Core/Lattice/Lattice.cpp
+++ b/Sample/Lattice/Lattice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/Lattice.cpp
+//! @file      Sample/Lattice/Lattice.cpp
 //! @brief     Implements class Lattice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Vector/Transform3D.h"
-#include "Core/Lattice/ISelectionRule.h"
+#include "Sample/Lattice/ISelectionRule.h"
 #include "Param/Base/RealParameter.h"
 #include <gsl/gsl_linalg.h>
 
diff --git a/Core/Lattice/Lattice.h b/Sample/Lattice/Lattice.h
similarity index 99%
rename from Core/Lattice/Lattice.h
rename to Sample/Lattice/Lattice.h
index c749abcef59..d5340e46e1d 100644
--- a/Core/Lattice/Lattice.h
+++ b/Sample/Lattice/Lattice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/Lattice.h
+//! @file      Sample/Lattice/Lattice.h
 //! @brief     Defines class Lattice.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Lattice/Lattice2D.cpp b/Sample/Lattice/Lattice2D.cpp
similarity index 98%
rename from Core/Lattice/Lattice2D.cpp
rename to Sample/Lattice/Lattice2D.cpp
index 4dd916e8d34..a7dee724f0b 100644
--- a/Core/Lattice/Lattice2D.cpp
+++ b/Sample/Lattice/Lattice2D.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/Lattice2D.cpp
+//! @file      Sample/Lattice/Lattice2D.cpp
 //! @brief     Implements classes of Lattice2D family.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Lattice/Lattice2D.h"
 #include "Base/Const/MathConstants.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Lattice/Lattice2D.h b/Sample/Lattice/Lattice2D.h
similarity index 98%
rename from Core/Lattice/Lattice2D.h
rename to Sample/Lattice/Lattice2D.h
index dde4e035681..038b96434d4 100644
--- a/Core/Lattice/Lattice2D.h
+++ b/Sample/Lattice/Lattice2D.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/Lattice2D.h
+//! @file      Sample/Lattice/Lattice2D.h
 //! @brief     Defines classes of Lattice2D family.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Lattice/LatticeUtils.cpp b/Sample/Lattice/LatticeUtils.cpp
similarity index 93%
rename from Core/Lattice/LatticeUtils.cpp
rename to Sample/Lattice/LatticeUtils.cpp
index 6915bf20a9c..79568358765 100644
--- a/Core/Lattice/LatticeUtils.cpp
+++ b/Sample/Lattice/LatticeUtils.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/LatticeUtils.cpp
+//! @file      Sample/Lattice/LatticeUtils.cpp
 //! @brief     Implements factory functions for different types of lattices and orientations.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#include "Core/Lattice/LatticeUtils.h"
-#include "Core/Lattice/ILatticeOrientation.h"
+#include "Sample/Lattice/LatticeUtils.h"
+#include "Sample/Lattice/ILatticeOrientation.h"
 
 Lattice LatticeUtils::createFCCLattice(double lattice_constant,
                                        const ILatticeOrientation& orientation)
diff --git a/Core/Lattice/LatticeUtils.h b/Sample/Lattice/LatticeUtils.h
similarity index 92%
rename from Core/Lattice/LatticeUtils.h
rename to Sample/Lattice/LatticeUtils.h
index 44df6e240bc..9dc6c846680 100644
--- a/Core/Lattice/LatticeUtils.h
+++ b/Sample/Lattice/LatticeUtils.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Lattice/LatticeUtils.h
+//! @file      Sample/Lattice/LatticeUtils.h
 //! @brief     Defines factory functions for different types of lattices and orientations.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_LATTICE_LATTICEUTILS_H
 #define BORNAGAIN_CORE_LATTICE_LATTICEUTILS_H
 
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 
 class ILatticeOrientation;
 
diff --git a/Core/Multilayer/DecouplingApproximationStrategy.cpp b/Sample/Multilayer/DecouplingApproximationStrategy.cpp
similarity index 92%
rename from Core/Multilayer/DecouplingApproximationStrategy.cpp
rename to Sample/Multilayer/DecouplingApproximationStrategy.cpp
index 230f0fa63ea..e1ae21f5055 100644
--- a/Core/Multilayer/DecouplingApproximationStrategy.cpp
+++ b/Sample/Multilayer/DecouplingApproximationStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/DecouplingApproximationStrategy.cpp
+//! @file      Sample/Multilayer/DecouplingApproximationStrategy.cpp
 //! @brief     Implements class DecouplingApproximationStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,13 +12,13 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/DecouplingApproximationStrategy.h"
+#include "Sample/Multilayer/DecouplingApproximationStrategy.h"
 #include "Base/Pixel/SimulationElement.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/MathFunctions.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
-#include "Core/Multilayer/InterferenceFunctionUtils.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Multilayer/InterferenceFunctionUtils.h"
 #include "Param/Base/RealParameter.h"
 
 using InterferenceFunctionUtils::PrecomputePolarizedFormFactors;
diff --git a/Core/Multilayer/DecouplingApproximationStrategy.h b/Sample/Multilayer/DecouplingApproximationStrategy.h
similarity index 90%
rename from Core/Multilayer/DecouplingApproximationStrategy.h
rename to Sample/Multilayer/DecouplingApproximationStrategy.h
index 6515f355b54..d114a8c1343 100644
--- a/Core/Multilayer/DecouplingApproximationStrategy.h
+++ b/Sample/Multilayer/DecouplingApproximationStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/DecouplingApproximationStrategy.h
+//! @file      Sample/Multilayer/DecouplingApproximationStrategy.h
 //! @brief     Defines class DecouplingApproximationStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_DECOUPLINGAPPROXIMATIONSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_DECOUPLINGAPPROXIMATIONSTRATEGY_H
 
-#include "Core/Multilayer/IInterferenceFunctionStrategy.h"
+#include "Sample/Multilayer/IInterferenceFunctionStrategy.h"
 
 class SimulationElement;
 
diff --git a/Core/Multilayer/FormFactorCoherentPart.cpp b/Sample/Multilayer/FormFactorCoherentPart.cpp
similarity index 94%
rename from Core/Multilayer/FormFactorCoherentPart.cpp
rename to Sample/Multilayer/FormFactorCoherentPart.cpp
index 5dc72b617a0..78ee426f3e8 100644
--- a/Core/Multilayer/FormFactorCoherentPart.cpp
+++ b/Sample/Multilayer/FormFactorCoherentPart.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/FormFactorCoherentPart.cpp
+//! @file      Sample/Multilayer/FormFactorCoherentPart.cpp
 //! @brief     Implements class FormFactorCoherentPart.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/FormFactorCoherentPart.h"
+#include "Sample/Multilayer/FormFactorCoherentPart.h"
 #include "Base/Pixel/SimulationElement.h"
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/IFresnelMap.h"
 #include "Sample/Scattering/IFormFactor.h"
 
 FormFactorCoherentPart::FormFactorCoherentPart(IFormFactor* p_ff) : mP_ff(p_ff) {}
diff --git a/Core/Multilayer/FormFactorCoherentPart.h b/Sample/Multilayer/FormFactorCoherentPart.h
similarity index 96%
rename from Core/Multilayer/FormFactorCoherentPart.h
rename to Sample/Multilayer/FormFactorCoherentPart.h
index e872f473c13..d63f75da2f7 100644
--- a/Core/Multilayer/FormFactorCoherentPart.h
+++ b/Sample/Multilayer/FormFactorCoherentPart.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/FormFactorCoherentPart.h
+//! @file      Sample/Multilayer/FormFactorCoherentPart.h
 //! @brief     Defines class FormFactorCoherentPart.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/FormFactorCoherentSum.cpp b/Sample/Multilayer/FormFactorCoherentSum.cpp
similarity index 94%
rename from Core/Multilayer/FormFactorCoherentSum.cpp
rename to Sample/Multilayer/FormFactorCoherentSum.cpp
index ba4b70b2bf3..a4141e3fee5 100644
--- a/Core/Multilayer/FormFactorCoherentSum.cpp
+++ b/Sample/Multilayer/FormFactorCoherentSum.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/FormFactorCoherentSum.cpp
+//! @file      Sample/Multilayer/FormFactorCoherentSum.cpp
 //! @brief     Implements class FormFactorCoherentSum.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 #include "Base/Pixel/SimulationElement.h"
 #include "Base/Types/Exceptions.h"
 
diff --git a/Core/Multilayer/FormFactorCoherentSum.h b/Sample/Multilayer/FormFactorCoherentSum.h
similarity index 93%
rename from Core/Multilayer/FormFactorCoherentSum.h
rename to Sample/Multilayer/FormFactorCoherentSum.h
index fbf32dadf54..afaef5d1852 100644
--- a/Core/Multilayer/FormFactorCoherentSum.h
+++ b/Sample/Multilayer/FormFactorCoherentSum.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/FormFactorCoherentSum.h
+//! @file      Sample/Multilayer/FormFactorCoherentSum.h
 //! @brief     Defines class FormFactorCoherentSum.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTSUM_H
 #define BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTSUM_H
 
-#include "Core/Multilayer/FormFactorCoherentPart.h"
+#include "Sample/Multilayer/FormFactorCoherentPart.h"
 #include <vector>
 
 class SimulationElement;
diff --git a/Core/Multilayer/IFresnelMap.cpp b/Sample/Multilayer/IFresnelMap.cpp
similarity index 87%
rename from Core/Multilayer/IFresnelMap.cpp
rename to Sample/Multilayer/IFresnelMap.cpp
index 56dc22cf40b..e912910dbc5 100644
--- a/Core/Multilayer/IFresnelMap.cpp
+++ b/Sample/Multilayer/IFresnelMap.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/IFresnelMap.cpp
+//! @file      Sample/Multilayer/IFresnelMap.cpp
 //! @brief     Implements class IFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/IFresnelMap.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/Slice.h"
 
 IFresnelMap::IFresnelMap(std::unique_ptr<ISpecularStrategy> strategy)
     : m_use_cache(true), m_Strategy(std::move(strategy))
diff --git a/Core/Multilayer/IFresnelMap.h b/Sample/Multilayer/IFresnelMap.h
similarity index 95%
rename from Core/Multilayer/IFresnelMap.h
rename to Sample/Multilayer/IFresnelMap.h
index 0310d960798..b611c56c3d6 100644
--- a/Core/Multilayer/IFresnelMap.h
+++ b/Sample/Multilayer/IFresnelMap.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/IFresnelMap.h
+//! @file      Sample/Multilayer/IFresnelMap.h
 //! @brief     Defines class IFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_IFRESNELMAP_H
 #define BORNAGAIN_CORE_MULTILAYER_IFRESNELMAP_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/IInterferenceFunctionStrategy.cpp b/Sample/Multilayer/IInterferenceFunctionStrategy.cpp
similarity index 92%
rename from Core/Multilayer/IInterferenceFunctionStrategy.cpp
rename to Sample/Multilayer/IInterferenceFunctionStrategy.cpp
index 5c44385eade..13ebdbd4d5b 100644
--- a/Core/Multilayer/IInterferenceFunctionStrategy.cpp
+++ b/Sample/Multilayer/IInterferenceFunctionStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/IInterferenceFunctionStrategy.cpp
+//! @file      Sample/Multilayer/IInterferenceFunctionStrategy.cpp
 //! @brief     Implements default behaviour of IInterferenceFunctionStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,12 +12,12 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/IInterferenceFunctionStrategy.h"
+#include "Sample/Multilayer/IInterferenceFunctionStrategy.h"
 #include "Base/Pixel/SimulationElement.h"
 #include "Base/Types/Exceptions.h"
 #include "Base/Utils/IntegratorMCMiser.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 
 IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(const SimulationOptions& sim_params,
                                                              bool polarized)
diff --git a/Core/Multilayer/IInterferenceFunctionStrategy.h b/Sample/Multilayer/IInterferenceFunctionStrategy.h
similarity index 96%
rename from Core/Multilayer/IInterferenceFunctionStrategy.h
rename to Sample/Multilayer/IInterferenceFunctionStrategy.h
index 6e3641e1fd2..d94980eb6c9 100644
--- a/Core/Multilayer/IInterferenceFunctionStrategy.h
+++ b/Sample/Multilayer/IInterferenceFunctionStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/IInterferenceFunctionStrategy.h
+//! @file      Sample/Multilayer/IInterferenceFunctionStrategy.h
 //! @brief     Defines class IInterferenceFunctionStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
 
 #include "Base/Types/Complex.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/ISpecularStrategy.h b/Sample/Multilayer/ISpecularStrategy.h
similarity index 94%
rename from Core/Multilayer/ISpecularStrategy.h
rename to Sample/Multilayer/ISpecularStrategy.h
index 025301a363e..d03ca1ca1a5 100644
--- a/Core/Multilayer/ISpecularStrategy.h
+++ b/Sample/Multilayer/ISpecularStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/ISpecularStrategy.h
+//! @file      Sample/Multilayer/ISpecularStrategy.h
 //! @brief     Defines and implements class ISpecularStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_MULTILAYER_ISPECULARSTRATEGY_H
 
 #include "Base/Vector/Vectors3D.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/InterferenceFunctionUtils.cpp b/Sample/Multilayer/InterferenceFunctionUtils.cpp
similarity index 88%
rename from Core/Multilayer/InterferenceFunctionUtils.cpp
rename to Sample/Multilayer/InterferenceFunctionUtils.cpp
index 2776938e824..d4dc2001ab2 100644
--- a/Core/Multilayer/InterferenceFunctionUtils.cpp
+++ b/Sample/Multilayer/InterferenceFunctionUtils.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/InterferenceFunctionUtils.cpp
+//! @file      Sample/Multilayer/InterferenceFunctionUtils.cpp
 //! @brief     Implements helper functions for InterferenceFunctions and Strategies.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/InterferenceFunctionUtils.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Multilayer/InterferenceFunctionUtils.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 
 namespace InterferenceFunctionUtils
 {
diff --git a/Core/Multilayer/InterferenceFunctionUtils.h b/Sample/Multilayer/InterferenceFunctionUtils.h
similarity index 95%
rename from Core/Multilayer/InterferenceFunctionUtils.h
rename to Sample/Multilayer/InterferenceFunctionUtils.h
index 477b3223e2c..8aba9870623 100644
--- a/Core/Multilayer/InterferenceFunctionUtils.h
+++ b/Sample/Multilayer/InterferenceFunctionUtils.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/InterferenceFunctionUtils.h
+//! @file      Sample/Multilayer/InterferenceFunctionUtils.h
 //! @brief     Defines helper functions for InterferenceFunctions and Strategies.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/KzComputation.cpp b/Sample/Multilayer/KzComputation.cpp
similarity index 96%
rename from Core/Multilayer/KzComputation.cpp
rename to Sample/Multilayer/KzComputation.cpp
index 26e897ba383..f7d05415ff5 100644
--- a/Core/Multilayer/KzComputation.cpp
+++ b/Sample/Multilayer/KzComputation.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/KzComputation.cpp
+//! @file      Sample/Multilayer/KzComputation.cpp
 //! @brief     Implements functions from KzComputation namespace.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/KzComputation.h"
 #include "Base/Const/Units.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/Slice.h"
 
 namespace
 {
diff --git a/Core/Multilayer/KzComputation.h b/Sample/Multilayer/KzComputation.h
similarity index 97%
rename from Core/Multilayer/KzComputation.h
rename to Sample/Multilayer/KzComputation.h
index dd1f5d4b7b0..60c22d80653 100644
--- a/Core/Multilayer/KzComputation.h
+++ b/Sample/Multilayer/KzComputation.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/KzComputation.h
+//! @file      Sample/Multilayer/KzComputation.h
 //! @brief     Declares functions from KzComputation namespace.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/Layer.cpp b/Sample/Multilayer/Layer.cpp
similarity index 95%
rename from Core/Multilayer/Layer.cpp
rename to Sample/Multilayer/Layer.cpp
index e767d88b06b..b78e23af3f6 100644
--- a/Core/Multilayer/Layer.cpp
+++ b/Sample/Multilayer/Layer.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/Layer.cpp
+//! @file      Sample/Multilayer/Layer.cpp
 //! @brief     Implements class Layer.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/Layer.h"
+#include "Sample/Multilayer/Layer.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Correlations/ILayout.h"
+#include "Sample/Correlations/ILayout.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
 
diff --git a/Core/Multilayer/Layer.h b/Sample/Multilayer/Layer.h
similarity index 98%
rename from Core/Multilayer/Layer.h
rename to Sample/Multilayer/Layer.h
index bf69d0f6254..c904c2f0016 100644
--- a/Core/Multilayer/Layer.h
+++ b/Sample/Multilayer/Layer.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/Layer.h
+//! @file      Sample/Multilayer/Layer.h
 //! @brief     Defines class Layer.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/LayerFillLimits.cpp b/Sample/Multilayer/LayerFillLimits.cpp
similarity index 97%
rename from Core/Multilayer/LayerFillLimits.cpp
rename to Sample/Multilayer/LayerFillLimits.cpp
index 8be060f283f..7da32c525cb 100644
--- a/Core/Multilayer/LayerFillLimits.cpp
+++ b/Sample/Multilayer/LayerFillLimits.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerFillLimits.cpp
+//! @file      Sample/Multilayer/LayerFillLimits.cpp
 //! @brief     Implements class LayerFillLimits.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/LayerFillLimits.h"
+#include "Sample/Multilayer/LayerFillLimits.h"
 #include <algorithm>
 #include <stdexcept>
 
diff --git a/Core/Multilayer/LayerFillLimits.h b/Sample/Multilayer/LayerFillLimits.h
similarity index 97%
rename from Core/Multilayer/LayerFillLimits.h
rename to Sample/Multilayer/LayerFillLimits.h
index 5e7335115f5..86de71c3874 100644
--- a/Core/Multilayer/LayerFillLimits.h
+++ b/Sample/Multilayer/LayerFillLimits.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerFillLimits.h
+//! @file      Sample/Multilayer/LayerFillLimits.h
 //! @brief     Defines class LayerFillLimits.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/LayerInterface.cpp b/Sample/Multilayer/LayerInterface.cpp
similarity index 94%
rename from Core/Multilayer/LayerInterface.cpp
rename to Sample/Multilayer/LayerInterface.cpp
index b4cfd616102..273eae4305f 100644
--- a/Core/Multilayer/LayerInterface.cpp
+++ b/Sample/Multilayer/LayerInterface.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerInterface.cpp
+//! @file      Sample/Multilayer/LayerInterface.cpp
 //! @brief     Implements class LayerInterface.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerInterface.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 
 LayerInterface::LayerInterface() : m_topLayer(nullptr), m_bottomLayer(nullptr)
 {
diff --git a/Core/Multilayer/LayerInterface.h b/Sample/Multilayer/LayerInterface.h
similarity index 97%
rename from Core/Multilayer/LayerInterface.h
rename to Sample/Multilayer/LayerInterface.h
index bf5975a1bda..7784f83326b 100644
--- a/Core/Multilayer/LayerInterface.h
+++ b/Sample/Multilayer/LayerInterface.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerInterface.h
+//! @file      Sample/Multilayer/LayerInterface.h
 //! @brief     Defines class LayerInterface.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/LayerRoughness.cpp b/Sample/Multilayer/LayerRoughness.cpp
similarity index 96%
rename from Core/Multilayer/LayerRoughness.cpp
rename to Sample/Multilayer/LayerRoughness.cpp
index ebdf4220e33..50ba3857723 100644
--- a/Core/Multilayer/LayerRoughness.cpp
+++ b/Sample/Multilayer/LayerRoughness.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerRoughness.cpp
+//! @file      Sample/Multilayer/LayerRoughness.cpp
 //! @brief     Implements class LayerRoughness.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 #include "Base/Const/MathConstants.h"
 #include "Param/Base/RealParameter.h"
 
diff --git a/Core/Multilayer/LayerRoughness.h b/Sample/Multilayer/LayerRoughness.h
similarity index 97%
rename from Core/Multilayer/LayerRoughness.h
rename to Sample/Multilayer/LayerRoughness.h
index 41ff5fd6be2..6f4114e5288 100644
--- a/Core/Multilayer/LayerRoughness.h
+++ b/Sample/Multilayer/LayerRoughness.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/LayerRoughness.h
+//! @file      Sample/Multilayer/LayerRoughness.h
 //! @brief     Defines class LayerRoughness.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/MatrixFresnelMap.cpp b/Sample/Multilayer/MatrixFresnelMap.cpp
similarity index 93%
rename from Core/Multilayer/MatrixFresnelMap.cpp
rename to Sample/Multilayer/MatrixFresnelMap.cpp
index abfada52462..f2b3417cc65 100644
--- a/Core/Multilayer/MatrixFresnelMap.cpp
+++ b/Sample/Multilayer/MatrixFresnelMap.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MatrixFresnelMap.cpp
+//! @file      Sample/Multilayer/MatrixFresnelMap.cpp
 //! @brief     Implements class MatrixFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/MatrixFresnelMap.h"
+#include "Sample/Multilayer/MatrixFresnelMap.h"
 #include "Base/Pixel/SimulationElement.h"
-#include "Core/Multilayer/Slice.h"
-#include "Core/Multilayer/SpecularMagneticOldStrategy.h"
+#include "Sample/Multilayer/Slice.h"
+#include "Sample/Multilayer/SpecularMagneticOldStrategy.h"
 #include <functional>
 
 MatrixFresnelMap::MatrixFresnelMap(std::unique_ptr<ISpecularStrategy> strategy)
diff --git a/Core/Multilayer/MatrixFresnelMap.h b/Sample/Multilayer/MatrixFresnelMap.h
similarity index 93%
rename from Core/Multilayer/MatrixFresnelMap.h
rename to Sample/Multilayer/MatrixFresnelMap.h
index ce0ab5fc5f2..d814136ab8a 100644
--- a/Core/Multilayer/MatrixFresnelMap.h
+++ b/Sample/Multilayer/MatrixFresnelMap.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MatrixFresnelMap.h
+//! @file      Sample/Multilayer/MatrixFresnelMap.h
 //! @brief     Defines class MatrixFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,9 +15,9 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_MATRIXFRESNELMAP_H
 #define BORNAGAIN_CORE_MULTILAYER_MATRIXFRESNELMAP_H
 
-#include "Core/Multilayer/IFresnelMap.h"
-#include "Core/Multilayer/SpecularMagneticStrategy.h"
-#include "Core/RT/MatrixRTCoefficients.h"
+#include "Sample/Multilayer/IFresnelMap.h"
+#include "Sample/Multilayer/SpecularMagneticStrategy.h"
+#include "Sample/RT/MatrixRTCoefficients.h"
 #include <cstddef>
 #include <memory>
 #include <unordered_map>
diff --git a/Core/Multilayer/MultiLayer.cpp b/Sample/Multilayer/MultiLayer.cpp
similarity index 93%
rename from Core/Multilayer/MultiLayer.cpp
rename to Sample/Multilayer/MultiLayer.cpp
index 777f72db43b..a2a577f2b7e 100644
--- a/Core/Multilayer/MultiLayer.cpp
+++ b/Sample/Multilayer/MultiLayer.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MultiLayer.cpp
+//! @file      Sample/Multilayer/MultiLayer.cpp
 //! @brief     Implements class MultiLayer.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,15 +12,15 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Correlations/ILayout.h"
+#include "Sample/Correlations/ILayout.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerFillLimits.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerFillLimits.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
 
diff --git a/Core/Multilayer/MultiLayer.h b/Sample/Multilayer/MultiLayer.h
similarity index 97%
rename from Core/Multilayer/MultiLayer.h
rename to Sample/Multilayer/MultiLayer.h
index d4c51e396f4..6e621844081 100644
--- a/Core/Multilayer/MultiLayer.h
+++ b/Sample/Multilayer/MultiLayer.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MultiLayer.h
+//! @file      Sample/Multilayer/MultiLayer.h
 //! @brief     Defines class MultiLayer.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
 
 #include "Base/Types/SafePointerVector.h"
-#include "Core/Multilayer/RoughnessModels.h"
+#include "Sample/Multilayer/RoughnessModels.h"
 #include "Sample/Scattering/ISample.h"
 #include "Sample/Scattering/ZLimits.h"
 
diff --git a/Core/Multilayer/MultiLayerUtils.cpp b/Sample/Multilayer/MultiLayerUtils.cpp
similarity index 90%
rename from Core/Multilayer/MultiLayerUtils.cpp
rename to Sample/Multilayer/MultiLayerUtils.cpp
index 2d103616903..ccce011f145 100644
--- a/Core/Multilayer/MultiLayerUtils.cpp
+++ b/Sample/Multilayer/MultiLayerUtils.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MultiLayerUtils.cpp
+//! @file      Sample/Multilayer/MultiLayerUtils.cpp
 //! @brief     Implements helper functions for MultiLayer objects.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,14 +12,14 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/MultiLayerUtils.h"
-#include "Core/Correlations/ILayout.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
+#include "Sample/Correlations/ILayout.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerFillLimits.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/IParticle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerFillLimits.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/IParticle.h"
 
 namespace
 {
diff --git a/Core/Multilayer/MultiLayerUtils.h b/Sample/Multilayer/MultiLayerUtils.h
similarity index 97%
rename from Core/Multilayer/MultiLayerUtils.h
rename to Sample/Multilayer/MultiLayerUtils.h
index a0514189c39..9ef842fd4e1 100644
--- a/Core/Multilayer/MultiLayerUtils.h
+++ b/Sample/Multilayer/MultiLayerUtils.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/MultiLayerUtils.h
+//! @file      Sample/Multilayer/MultiLayerUtils.h
 //! @brief     Defines helper functions for MultiLayer objects.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/PyImport.cpp b/Sample/Multilayer/PyImport.cpp
similarity index 96%
rename from Core/Multilayer/PyImport.cpp
rename to Sample/Multilayer/PyImport.cpp
index 741c8a4c8a4..73ad8bc4cee 100644
--- a/Core/Multilayer/PyImport.cpp
+++ b/Sample/Multilayer/PyImport.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/PyImport.cpp
+//! @file      Sample/Multilayer/PyImport.cpp
 //! @brief     Implements PyImport namespace
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -14,10 +14,10 @@
 
 #ifdef BORNAGAIN_PYTHON
 
-#include "Core/Multilayer/PyImport.h"
+#include "Sample/Multilayer/PyImport.h"
 #include "Base/Utils/PyEmbeddedUtils.h"
 #include "Base/Utils/PythonCore.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 
 namespace
 {
diff --git a/Core/Multilayer/PyImport.h b/Sample/Multilayer/PyImport.h
similarity index 97%
rename from Core/Multilayer/PyImport.h
rename to Sample/Multilayer/PyImport.h
index cb67d597ffc..b8fe77de467 100644
--- a/Core/Multilayer/PyImport.h
+++ b/Sample/Multilayer/PyImport.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/PyImport.h
+//! @file      Sample/Multilayer/PyImport.h
 //! @brief     Defines PyImport namespace
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/RoughnessModels.cpp b/Sample/Multilayer/RoughnessModels.cpp
similarity index 90%
rename from Core/Multilayer/RoughnessModels.cpp
rename to Sample/Multilayer/RoughnessModels.cpp
index d682ffacc81..a6c91c7af24 100644
--- a/Core/Multilayer/RoughnessModels.cpp
+++ b/Sample/Multilayer/RoughnessModels.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/RoughnessModels.cpp
+//! @file      Sample/Multilayer/RoughnessModels.cpp
 //! @brief     Implements RoughnessModels enumerator and Python wrapper.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/RoughnessModels.h"
+#include "Sample/Multilayer/RoughnessModels.h"
 
 #include <map>
 
diff --git a/Core/Multilayer/RoughnessModels.h b/Sample/Multilayer/RoughnessModels.h
similarity index 96%
rename from Core/Multilayer/RoughnessModels.h
rename to Sample/Multilayer/RoughnessModels.h
index a10a8d841b8..7c43a4a84a8 100644
--- a/Core/Multilayer/RoughnessModels.h
+++ b/Sample/Multilayer/RoughnessModels.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/RoughnessModels.h
+//! @file      Sample/Multilayer/RoughnessModels.h
 //! @brief     Define RoughnessModels enumerator and Python wrapper.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/SSCAHelper.cpp b/Sample/Multilayer/SSCAHelper.cpp
similarity index 93%
rename from Core/Multilayer/SSCAHelper.cpp
rename to Sample/Multilayer/SSCAHelper.cpp
index 364d3029812..5cfcd42540e 100644
--- a/Core/Multilayer/SSCAHelper.cpp
+++ b/Sample/Multilayer/SSCAHelper.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SSCAHelper.cpp
+//! @file      Sample/Multilayer/SSCAHelper.cpp
 //! @brief     Implements class SSCAHelper.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SSCAHelper.h"
+#include "Sample/Multilayer/SSCAHelper.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 
 SSCAHelper::SSCAHelper(double kappa) : m_kappa(kappa), m_mean_radius{} {}
 
diff --git a/Core/Multilayer/SSCAHelper.h b/Sample/Multilayer/SSCAHelper.h
similarity index 92%
rename from Core/Multilayer/SSCAHelper.h
rename to Sample/Multilayer/SSCAHelper.h
index 8752f7a5383..23bfa292586 100644
--- a/Core/Multilayer/SSCAHelper.h
+++ b/Sample/Multilayer/SSCAHelper.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SSCAHelper.h
+//! @file      Sample/Multilayer/SSCAHelper.h
 //! @brief     Defines class SSCAHelper.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
 #define BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
 
-#include "Core/Multilayer/IInterferenceFunctionStrategy.h"
-#include "Core/Multilayer/InterferenceFunctionUtils.h"
+#include "Sample/Multilayer/IInterferenceFunctionStrategy.h"
+#include "Sample/Multilayer/InterferenceFunctionUtils.h"
 #include <Eigen/StdVector>
 
 class FormFactorCoherentSum;
diff --git a/Core/Multilayer/SSCApproximationStrategy.cpp b/Sample/Multilayer/SSCApproximationStrategy.cpp
similarity index 94%
rename from Core/Multilayer/SSCApproximationStrategy.cpp
rename to Sample/Multilayer/SSCApproximationStrategy.cpp
index b3fc984eb5e..58f916c3fb0 100644
--- a/Core/Multilayer/SSCApproximationStrategy.cpp
+++ b/Sample/Multilayer/SSCApproximationStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SSCApproximationStrategy.cpp
+//! @file      Sample/Multilayer/SSCApproximationStrategy.cpp
 //! @brief     Implements class SSCApproximationStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SSCApproximationStrategy.h"
+#include "Sample/Multilayer/SSCApproximationStrategy.h"
 #include "Base/Pixel/SimulationElement.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 
 using InterferenceFunctionUtils::PrecomputePolarizedFormFactors;
 using InterferenceFunctionUtils::PrecomputeScalarFormFactors;
diff --git a/Core/Multilayer/SSCApproximationStrategy.h b/Sample/Multilayer/SSCApproximationStrategy.h
similarity index 92%
rename from Core/Multilayer/SSCApproximationStrategy.h
rename to Sample/Multilayer/SSCApproximationStrategy.h
index 4e2629951c9..55a47f4bd54 100644
--- a/Core/Multilayer/SSCApproximationStrategy.h
+++ b/Sample/Multilayer/SSCApproximationStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SSCApproximationStrategy.h
+//! @file      Sample/Multilayer/SSCApproximationStrategy.h
 //! @brief     Defines class SSCApproximationStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SSCAPPROXIMATIONSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SSCAPPROXIMATIONSTRATEGY_H
 
-#include "Core/Multilayer/SSCAHelper.h"
+#include "Sample/Multilayer/SSCAHelper.h"
 
 class SimulationElement;
 
diff --git a/Core/Multilayer/ScalarFresnelMap.cpp b/Sample/Multilayer/ScalarFresnelMap.cpp
similarity index 95%
rename from Core/Multilayer/ScalarFresnelMap.cpp
rename to Sample/Multilayer/ScalarFresnelMap.cpp
index 9189866d6a8..b90dd82bf3d 100644
--- a/Core/Multilayer/ScalarFresnelMap.cpp
+++ b/Sample/Multilayer/ScalarFresnelMap.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/ScalarFresnelMap.cpp
+//! @file      Sample/Multilayer/ScalarFresnelMap.cpp
 //! @brief     Implements class ScalarFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/ScalarFresnelMap.h"
+#include "Sample/Multilayer/ScalarFresnelMap.h"
 #include "Base/Pixel/SimulationElement.h"
 #include <functional>
 
diff --git a/Core/Multilayer/ScalarFresnelMap.h b/Sample/Multilayer/ScalarFresnelMap.h
similarity index 93%
rename from Core/Multilayer/ScalarFresnelMap.h
rename to Sample/Multilayer/ScalarFresnelMap.h
index a797642f3d5..e94da1133dd 100644
--- a/Core/Multilayer/ScalarFresnelMap.h
+++ b/Sample/Multilayer/ScalarFresnelMap.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/ScalarFresnelMap.h
+//! @file      Sample/Multilayer/ScalarFresnelMap.h
 //! @brief     Defines class ScalarFresnelMap.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SCALARFRESNELMAP_H
 #define BORNAGAIN_CORE_MULTILAYER_SCALARFRESNELMAP_H
 
-#include "Core/Multilayer/IFresnelMap.h"
-#include "Core/RT/ScalarRTCoefficients.h"
+#include "Sample/Multilayer/IFresnelMap.h"
+#include "Sample/RT/ScalarRTCoefficients.h"
 #include <cstddef>
 #include <unordered_map>
 #include <utility>
diff --git a/Core/Multilayer/Slice.cpp b/Sample/Multilayer/Slice.cpp
similarity index 95%
rename from Core/Multilayer/Slice.cpp
rename to Sample/Multilayer/Slice.cpp
index de5f37b5420..d253be011a6 100644
--- a/Core/Multilayer/Slice.cpp
+++ b/Sample/Multilayer/Slice.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/Slice.cpp
+//! @file      Sample/Multilayer/Slice.cpp
 //! @brief     Implements class Slice.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/Slice.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 
 Slice::Slice(double thickness, const Material& material)
     : m_thickness{thickness}, m_material{material}, m_B_field{}, mP_top_roughness{nullptr}
diff --git a/Core/Multilayer/Slice.h b/Sample/Multilayer/Slice.h
similarity index 98%
rename from Core/Multilayer/Slice.h
rename to Sample/Multilayer/Slice.h
index 3dd5fb901c3..dfce66ee597 100644
--- a/Core/Multilayer/Slice.h
+++ b/Sample/Multilayer/Slice.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/Slice.h
+//! @file      Sample/Multilayer/Slice.h
 //! @brief     Defines class Slice.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Multilayer/SlicedFormFactorList.cpp b/Sample/Multilayer/SlicedFormFactorList.cpp
similarity index 96%
rename from Core/Multilayer/SlicedFormFactorList.cpp
rename to Sample/Multilayer/SlicedFormFactorList.cpp
index 103d0883a2d..7ecd47e6471 100644
--- a/Core/Multilayer/SlicedFormFactorList.cpp
+++ b/Sample/Multilayer/SlicedFormFactorList.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SlicedFormFactorList.cpp
+//! @file      Sample/Multilayer/SlicedFormFactorList.cpp
 //! @brief     Defines class SlicedFormFactorList.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SlicedFormFactorList.h"
-#include "Core/Multilayer/Slice.h"
-#include "Core/Particle/IParticle.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Multilayer/SlicedFormFactorList.h"
+#include "Sample/Multilayer/Slice.h"
+#include "Sample/Particle/IParticle.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/Rotations.h"
 #include <utility>
 
diff --git a/Core/Multilayer/SlicedFormFactorList.h b/Sample/Multilayer/SlicedFormFactorList.h
similarity index 94%
rename from Core/Multilayer/SlicedFormFactorList.h
rename to Sample/Multilayer/SlicedFormFactorList.h
index 2b0db39ac01..f66525721e3 100644
--- a/Core/Multilayer/SlicedFormFactorList.h
+++ b/Sample/Multilayer/SlicedFormFactorList.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SlicedFormFactorList.h
+//! @file      Sample/Multilayer/SlicedFormFactorList.h
 //! @brief     Defines class SlicedFormFactorList.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SLICEDFORMFACTORLIST_H
 #define BORNAGAIN_CORE_MULTILAYER_SLICEDFORMFACTORLIST_H
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/IFormFactor.h"
 #include <map>
 #include <memory>
diff --git a/Core/Multilayer/SpecularMagneticNewNCStrategy.cpp b/Sample/Multilayer/SpecularMagneticNewNCStrategy.cpp
similarity index 96%
rename from Core/Multilayer/SpecularMagneticNewNCStrategy.cpp
rename to Sample/Multilayer/SpecularMagneticNewNCStrategy.cpp
index e003a13306e..0a7eacebc46 100644
--- a/Core/Multilayer/SpecularMagneticNewNCStrategy.cpp
+++ b/Sample/Multilayer/SpecularMagneticNewNCStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewNCStrategy.cpp
+//! @file      Sample/Multilayer/SpecularMagneticNewNCStrategy.cpp
 //! @brief     Implements class SpecularMagneticNewNCStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularMagneticNewNCStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewNCStrategy.h"
 
 namespace
 {
diff --git a/Core/Multilayer/SpecularMagneticNewNCStrategy.h b/Sample/Multilayer/SpecularMagneticNewNCStrategy.h
similarity index 93%
rename from Core/Multilayer/SpecularMagneticNewNCStrategy.h
rename to Sample/Multilayer/SpecularMagneticNewNCStrategy.h
index 896e74f3851..048304c28a9 100644
--- a/Core/Multilayer/SpecularMagneticNewNCStrategy.h
+++ b/Sample/Multilayer/SpecularMagneticNewNCStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewNCStrategy.h
+//! @file      Sample/Multilayer/SpecularMagneticNewNCStrategy.h
 //! @brief     Defines class SpecularMagneticNewNCStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWNCSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWNCSTRATEGY_H
 
-#include "Core/Multilayer/SpecularMagneticNewStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewStrategy.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/SpecularMagneticNewStrategy.cpp b/Sample/Multilayer/SpecularMagneticNewStrategy.cpp
similarity index 96%
rename from Core/Multilayer/SpecularMagneticNewStrategy.cpp
rename to Sample/Multilayer/SpecularMagneticNewStrategy.cpp
index 493eaef6036..72401f7eef2 100644
--- a/Core/Multilayer/SpecularMagneticNewStrategy.cpp
+++ b/Sample/Multilayer/SpecularMagneticNewStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewStrategy.cpp
+//! @file      Sample/Multilayer/SpecularMagneticNewStrategy.cpp
 //! @brief     Implements class SpecularMagneticNewStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularMagneticNewStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewStrategy.h"
 #include "Base/Const/PhysicalConstants.h"
-#include "Core/Multilayer/KzComputation.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/Slice.h"
 
 namespace
 {
diff --git a/Core/Multilayer/SpecularMagneticNewStrategy.h b/Sample/Multilayer/SpecularMagneticNewStrategy.h
similarity index 94%
rename from Core/Multilayer/SpecularMagneticNewStrategy.h
rename to Sample/Multilayer/SpecularMagneticNewStrategy.h
index 8abd702241b..b0aa62b287a 100644
--- a/Core/Multilayer/SpecularMagneticNewStrategy.h
+++ b/Sample/Multilayer/SpecularMagneticNewStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewStrategy.h
+//! @file      Sample/Multilayer/SpecularMagneticNewStrategy.h
 //! @brief     Defines class SpecularMagneticNewStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWSTRATEGY_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
-#include "Core/RT/MatrixRTCoefficients_v3.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
+#include "Sample/RT/MatrixRTCoefficients_v3.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/SpecularMagneticNewTanhStrategy.cpp b/Sample/Multilayer/SpecularMagneticNewTanhStrategy.cpp
similarity index 95%
rename from Core/Multilayer/SpecularMagneticNewTanhStrategy.cpp
rename to Sample/Multilayer/SpecularMagneticNewTanhStrategy.cpp
index 5768dbcd837..31c2c6d928f 100644
--- a/Core/Multilayer/SpecularMagneticNewTanhStrategy.cpp
+++ b/Sample/Multilayer/SpecularMagneticNewTanhStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewTanhStrategy.cpp
+//! @file      Sample/Multilayer/SpecularMagneticNewTanhStrategy.cpp
 //! @brief     Implements class SpecularMagneticNewTanhStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularMagneticNewTanhStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewTanhStrategy.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Utils/MathFunctions.h"
 
diff --git a/Core/Multilayer/SpecularMagneticNewTanhStrategy.h b/Sample/Multilayer/SpecularMagneticNewTanhStrategy.h
similarity index 92%
rename from Core/Multilayer/SpecularMagneticNewTanhStrategy.h
rename to Sample/Multilayer/SpecularMagneticNewTanhStrategy.h
index 7585b8e7fc5..4266f481d56 100644
--- a/Core/Multilayer/SpecularMagneticNewTanhStrategy.h
+++ b/Sample/Multilayer/SpecularMagneticNewTanhStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticNewTanhStrategy.h
+//! @file      Sample/Multilayer/SpecularMagneticNewTanhStrategy.h
 //! @brief     Defines class SpecularMagneticNewTanhStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWTANHSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWTANHSTRATEGY_H
 
-#include "Core/Multilayer/SpecularMagneticNewStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticNewStrategy.h"
 
 //! Implements the magnetic Fresnel computation with the analytical Tanh roughness
 //!
diff --git a/Core/Multilayer/SpecularMagneticOldStrategy.cpp b/Sample/Multilayer/SpecularMagneticOldStrategy.cpp
similarity index 95%
rename from Core/Multilayer/SpecularMagneticOldStrategy.cpp
rename to Sample/Multilayer/SpecularMagneticOldStrategy.cpp
index f95e3b4f207..657a9ea7ac6 100644
--- a/Core/Multilayer/SpecularMagneticOldStrategy.cpp
+++ b/Sample/Multilayer/SpecularMagneticOldStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticOldStrategy.cpp
+//! @file      Sample/Multilayer/SpecularMagneticOldStrategy.cpp
 //! @brief     Implements class SpecularMagneticOldStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,12 +12,12 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularMagneticOldStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticOldStrategy.h"
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Slice.h"
 #include <Eigen/LU>
 
 namespace
diff --git a/Core/Multilayer/SpecularMagneticOldStrategy.h b/Sample/Multilayer/SpecularMagneticOldStrategy.h
similarity index 89%
rename from Core/Multilayer/SpecularMagneticOldStrategy.h
rename to Sample/Multilayer/SpecularMagneticOldStrategy.h
index 6cdee37c008..540c0d01d05 100644
--- a/Core/Multilayer/SpecularMagneticOldStrategy.h
+++ b/Sample/Multilayer/SpecularMagneticOldStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticOldStrategy.h
+//! @file      Sample/Multilayer/SpecularMagneticOldStrategy.h
 //! @brief     Defines class SpecularMagneticOldStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICOLDSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICOLDSTRATEGY_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
-#include "Core/RT/MatrixRTCoefficients.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
+#include "Sample/RT/MatrixRTCoefficients.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/SpecularMagneticStrategy.cpp b/Sample/Multilayer/SpecularMagneticStrategy.cpp
similarity index 98%
rename from Core/Multilayer/SpecularMagneticStrategy.cpp
rename to Sample/Multilayer/SpecularMagneticStrategy.cpp
index 9be4f125906..54ff74c83d1 100644
--- a/Core/Multilayer/SpecularMagneticStrategy.cpp
+++ b/Sample/Multilayer/SpecularMagneticStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticStrategy.cpp
+//! @file      Sample/Multilayer/SpecularMagneticStrategy.cpp
 //! @brief     Implements class SpecularMagneticStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularMagneticStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticStrategy.h"
 #include "Base/Const/PhysicalConstants.h"
-#include "Core/Multilayer/KzComputation.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/Slice.h"
 
 namespace
 {
diff --git a/Core/Multilayer/SpecularMagneticStrategy.h b/Sample/Multilayer/SpecularMagneticStrategy.h
similarity index 95%
rename from Core/Multilayer/SpecularMagneticStrategy.h
rename to Sample/Multilayer/SpecularMagneticStrategy.h
index e0f51bfc937..fa756249f25 100644
--- a/Core/Multilayer/SpecularMagneticStrategy.h
+++ b/Sample/Multilayer/SpecularMagneticStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularMagneticStrategy.h
+//! @file      Sample/Multilayer/SpecularMagneticStrategy.h
 //! @brief     Defines class SpecularMagneticStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICSTRATEGY_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
-#include "Core/RT/MatrixRTCoefficients_v2.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
+#include "Sample/RT/MatrixRTCoefficients_v2.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/SpecularScalarNCStrategy.cpp b/Sample/Multilayer/SpecularScalarNCStrategy.cpp
similarity index 91%
rename from Core/Multilayer/SpecularScalarNCStrategy.cpp
rename to Sample/Multilayer/SpecularScalarNCStrategy.cpp
index 72ca5278886..71345efff3f 100644
--- a/Core/Multilayer/SpecularScalarNCStrategy.cpp
+++ b/Sample/Multilayer/SpecularScalarNCStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarNCStrategy.cpp
+//! @file      Sample/Multilayer/SpecularScalarNCStrategy.cpp
 //! @brief     Implements class SpecularScalarNCStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularScalarNCStrategy.h"
+#include "Sample/Multilayer/SpecularScalarNCStrategy.h"
 #include <Eigen/Dense>
 
 std::pair<complex_t, complex_t> SpecularScalarNCStrategy::transition(complex_t kzi, complex_t kzi1,
diff --git a/Core/Multilayer/SpecularScalarNCStrategy.h b/Sample/Multilayer/SpecularScalarNCStrategy.h
similarity index 93%
rename from Core/Multilayer/SpecularScalarNCStrategy.h
rename to Sample/Multilayer/SpecularScalarNCStrategy.h
index 2c9dddc605d..cb360bd144b 100644
--- a/Core/Multilayer/SpecularScalarNCStrategy.h
+++ b/Sample/Multilayer/SpecularScalarNCStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarNCStrategy.h
+//! @file      Sample/Multilayer/SpecularScalarNCStrategy.h
 //! @brief     Defines class SpecularScalarNCStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARNCSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARNCSTRATEGY_H
 
-#include "Core/Multilayer/SpecularScalarStrategy.h"
+#include "Sample/Multilayer/SpecularScalarStrategy.h"
 
 class Slice;
 
diff --git a/Core/Multilayer/SpecularScalarStrategy.cpp b/Sample/Multilayer/SpecularScalarStrategy.cpp
similarity index 93%
rename from Core/Multilayer/SpecularScalarStrategy.cpp
rename to Sample/Multilayer/SpecularScalarStrategy.cpp
index bcd6516e198..bd448fdfdf3 100644
--- a/Core/Multilayer/SpecularScalarStrategy.cpp
+++ b/Sample/Multilayer/SpecularScalarStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarStrategy.cpp
+//! @file      Sample/Multilayer/SpecularScalarStrategy.cpp
 //! @brief     Implements class SpecularScalarStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularScalarStrategy.h"
-#include "Core/Multilayer/KzComputation.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/Slice.h"
+#include "Sample/Multilayer/SpecularScalarStrategy.h"
+#include "Sample/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/Slice.h"
 #include <Eigen/Dense>
 #include <stdexcept>
 
diff --git a/Core/Multilayer/SpecularScalarStrategy.h b/Sample/Multilayer/SpecularScalarStrategy.h
similarity index 94%
rename from Core/Multilayer/SpecularScalarStrategy.h
rename to Sample/Multilayer/SpecularScalarStrategy.h
index 225d1a2bda1..eb125fb2337 100644
--- a/Core/Multilayer/SpecularScalarStrategy.h
+++ b/Sample/Multilayer/SpecularScalarStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarStrategy.h
+//! @file      Sample/Multilayer/SpecularScalarStrategy.h
 //! @brief     Defines class SpecularScalarStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARSTRATEGY_H
 
-#include "Core/Multilayer/ISpecularStrategy.h"
-#include "Core/RT/ScalarRTCoefficients.h"
+#include "Sample/Multilayer/ISpecularStrategy.h"
+#include "Sample/RT/ScalarRTCoefficients.h"
 #include <memory>
 #include <vector>
 
diff --git a/Core/Multilayer/SpecularScalarTanhStrategy.cpp b/Sample/Multilayer/SpecularScalarTanhStrategy.cpp
similarity index 91%
rename from Core/Multilayer/SpecularScalarTanhStrategy.cpp
rename to Sample/Multilayer/SpecularScalarTanhStrategy.cpp
index b9e23370ee5..ecdf36f3fc0 100644
--- a/Core/Multilayer/SpecularScalarTanhStrategy.cpp
+++ b/Sample/Multilayer/SpecularScalarTanhStrategy.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarTanhStrategy.cpp
+//! @file      Sample/Multilayer/SpecularScalarTanhStrategy.cpp
 //! @brief     Implements class SpecularScalarTanhStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularScalarTanhStrategy.h"
+#include "Sample/Multilayer/SpecularScalarTanhStrategy.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Utils/MathFunctions.h"
 #include <Eigen/Dense>
diff --git a/Core/Multilayer/SpecularScalarTanhStrategy.h b/Sample/Multilayer/SpecularScalarTanhStrategy.h
similarity index 92%
rename from Core/Multilayer/SpecularScalarTanhStrategy.h
rename to Sample/Multilayer/SpecularScalarTanhStrategy.h
index e399b814573..315a087d0a9 100644
--- a/Core/Multilayer/SpecularScalarTanhStrategy.h
+++ b/Sample/Multilayer/SpecularScalarTanhStrategy.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularScalarTanhStrategy.h
+//! @file      Sample/Multilayer/SpecularScalarTanhStrategy.h
 //! @brief     Defines class SpecularScalarTanhStrategy.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARTANHSTRATEGY_H
 #define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARTANHSTRATEGY_H
 
-#include "Core/Multilayer/SpecularScalarStrategy.h"
+#include "Sample/Multilayer/SpecularScalarStrategy.h"
 
 class Slice;
 
diff --git a/Core/Multilayer/SpecularSimulationElement.cpp b/Sample/Multilayer/SpecularSimulationElement.cpp
similarity index 94%
rename from Core/Multilayer/SpecularSimulationElement.cpp
rename to Sample/Multilayer/SpecularSimulationElement.cpp
index c889383406a..3351c1e3542 100644
--- a/Core/Multilayer/SpecularSimulationElement.cpp
+++ b/Sample/Multilayer/SpecularSimulationElement.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularSimulationElement.cpp
+//! @file      Sample/Multilayer/SpecularSimulationElement.cpp
 //! @brief     Implements the class SpecularSimulationElement.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/SpecularSimulationElement.h"
-#include "Core/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/KzComputation.h"
 
 SpecularSimulationElement::SpecularSimulationElement(double kz)
     : m_intensity(0.0), m_calculation_flag(true),
diff --git a/Core/Multilayer/SpecularSimulationElement.h b/Sample/Multilayer/SpecularSimulationElement.h
similarity index 97%
rename from Core/Multilayer/SpecularSimulationElement.h
rename to Sample/Multilayer/SpecularSimulationElement.h
index 97368477c05..23b2d67c3b3 100644
--- a/Core/Multilayer/SpecularSimulationElement.h
+++ b/Sample/Multilayer/SpecularSimulationElement.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Multilayer/SpecularSimulationElement.h
+//! @file      Sample/Multilayer/SpecularSimulationElement.h
 //! @brief     Declares the class SpecularSimulationElement.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Particle/Crystal.cpp b/Sample/Particle/Crystal.cpp
similarity index 92%
rename from Core/Particle/Crystal.cpp
rename to Sample/Particle/Crystal.cpp
index 6e8ea5410ce..41da52a4b8f 100644
--- a/Core/Particle/Crystal.cpp
+++ b/Sample/Particle/Crystal.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/Crystal.cpp
+//! @file      Sample/Particle/Crystal.cpp
 //! @brief     Implements class Crystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/FormFactorCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/FormFactorCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/SlicedParticle.h"
 
 Crystal::Crystal(const IParticle& lattice_basis, const Lattice& lattice)
     : m_lattice(lattice), m_position_variance(0.0)
diff --git a/Core/Particle/Crystal.h b/Sample/Particle/Crystal.h
similarity index 93%
rename from Core/Particle/Crystal.h
rename to Sample/Particle/Crystal.h
index a58abf9db92..cd9cb2da36d 100644
--- a/Core/Particle/Crystal.h
+++ b/Sample/Particle/Crystal.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/Crystal.h
+//! @file      Sample/Particle/Crystal.h
 //! @brief     Defines class Crystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_CRYSTAL_H
 #define BORNAGAIN_CORE_PARTICLE_CRYSTAL_H
 
-#include "Core/Lattice/Lattice.h"
-#include "Core/Particle/IClusteredParticles.h"
+#include "Sample/Lattice/Lattice.h"
+#include "Sample/Particle/IClusteredParticles.h"
 
 //! A crystal structure with a ParticleComposition as a basis.
 //! Used in MesoCrystal, where it is given an outer shape.
diff --git a/Core/Particle/FormFactorCoreShell.cpp b/Sample/Particle/FormFactorCoreShell.cpp
similarity index 94%
rename from Core/Particle/FormFactorCoreShell.cpp
rename to Sample/Particle/FormFactorCoreShell.cpp
index 73d26288ce0..c072cee2a43 100644
--- a/Core/Particle/FormFactorCoreShell.cpp
+++ b/Sample/Particle/FormFactorCoreShell.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorCoreShell.cpp
+//! @file      Sample/Particle/FormFactorCoreShell.cpp
 //! @brief     Implements class FormFactorCoreShell.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/FormFactorCoreShell.h"
+#include "Sample/Particle/FormFactorCoreShell.h"
 
 FormFactorCoreShell::FormFactorCoreShell(IFormFactor* core, IFormFactor* shell)
     : mP_core(core), mP_shell(shell)
diff --git a/Core/Particle/FormFactorCoreShell.h b/Sample/Particle/FormFactorCoreShell.h
similarity index 97%
rename from Core/Particle/FormFactorCoreShell.h
rename to Sample/Particle/FormFactorCoreShell.h
index 08eb8c3bad3..967a88fcf3d 100644
--- a/Core/Particle/FormFactorCoreShell.h
+++ b/Sample/Particle/FormFactorCoreShell.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorCoreShell.h
+//! @file      Sample/Particle/FormFactorCoreShell.h
 //! @brief     Defines class FormFactorCoreShell.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Particle/FormFactorCrystal.cpp b/Sample/Particle/FormFactorCrystal.cpp
similarity index 97%
rename from Core/Particle/FormFactorCrystal.cpp
rename to Sample/Particle/FormFactorCrystal.cpp
index 6611f148f21..c35843aaf26 100644
--- a/Core/Particle/FormFactorCrystal.cpp
+++ b/Sample/Particle/FormFactorCrystal.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorCrystal.cpp
+//! @file      Sample/Particle/FormFactorCrystal.cpp
 //! @brief     Implements class FormFactorCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/FormFactorCrystal.h"
+#include "Sample/Particle/FormFactorCrystal.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/Exceptions.h"
 #include "Sample/Material/WavevectorInfo.h"
diff --git a/Core/Particle/FormFactorCrystal.h b/Sample/Particle/FormFactorCrystal.h
similarity index 96%
rename from Core/Particle/FormFactorCrystal.h
rename to Sample/Particle/FormFactorCrystal.h
index 31595ff42fd..82f2ade2685 100644
--- a/Core/Particle/FormFactorCrystal.h
+++ b/Sample/Particle/FormFactorCrystal.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorCrystal.h
+//! @file      Sample/Particle/FormFactorCrystal.h
 //! @brief     Defines class FormFactorCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_FORMFACTORCRYSTAL_H
 #define BORNAGAIN_CORE_PARTICLE_FORMFACTORCRYSTAL_H
 
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 #include "Sample/Scattering/IFormFactorBorn.h"
 
 //! The form factor of a MesoCrystal.
diff --git a/Core/Particle/FormFactorWeighted.cpp b/Sample/Particle/FormFactorWeighted.cpp
similarity index 96%
rename from Core/Particle/FormFactorWeighted.cpp
rename to Sample/Particle/FormFactorWeighted.cpp
index e3ba1668ba0..47968a2c360 100644
--- a/Core/Particle/FormFactorWeighted.cpp
+++ b/Sample/Particle/FormFactorWeighted.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorWeighted.cpp
+//! @file      Sample/Particle/FormFactorWeighted.cpp
 //! @brief     Implements class FormFactorWeighted.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/FormFactorWeighted.h"
+#include "Sample/Particle/FormFactorWeighted.h"
 #include "Base/Utils/Algorithms.h"
 
 FormFactorWeighted::FormFactorWeighted()
diff --git a/Core/Particle/FormFactorWeighted.h b/Sample/Particle/FormFactorWeighted.h
similarity index 97%
rename from Core/Particle/FormFactorWeighted.h
rename to Sample/Particle/FormFactorWeighted.h
index b7737741c45..d0b621ebd5a 100644
--- a/Core/Particle/FormFactorWeighted.h
+++ b/Sample/Particle/FormFactorWeighted.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/FormFactorWeighted.h
+//! @file      Sample/Particle/FormFactorWeighted.h
 //! @brief     Defines class FormFactorWeighted.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Particle/HomogeneousRegion.cpp b/Sample/Particle/HomogeneousRegion.cpp
similarity index 97%
rename from Core/Particle/HomogeneousRegion.cpp
rename to Sample/Particle/HomogeneousRegion.cpp
index d0857deb86e..393f531c482 100644
--- a/Core/Particle/HomogeneousRegion.cpp
+++ b/Sample/Particle/HomogeneousRegion.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/HomogeneousRegion.cpp
+//! @file      Sample/Particle/HomogeneousRegion.cpp
 //! @brief     Implements fct createAveragedMaterial
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialBySLDImpl.h"
 #include "Sample/Material/MaterialUtils.h"
diff --git a/Core/Particle/HomogeneousRegion.h b/Sample/Particle/HomogeneousRegion.h
similarity index 96%
rename from Core/Particle/HomogeneousRegion.h
rename to Sample/Particle/HomogeneousRegion.h
index 3a41c8c68d1..f17a8f664de 100644
--- a/Core/Particle/HomogeneousRegion.h
+++ b/Sample/Particle/HomogeneousRegion.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/HomogeneousRegion.h
+//! @file      Sample/Particle/HomogeneousRegion.h
 //! @brief     Defines struct HomogeneousRegion, and declares fct createAveragedMaterial
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Particle/IAbstractParticle.cpp b/Sample/Particle/IAbstractParticle.cpp
similarity index 88%
rename from Core/Particle/IAbstractParticle.cpp
rename to Sample/Particle/IAbstractParticle.cpp
index fac41db3e0c..47d06601aae 100644
--- a/Core/Particle/IAbstractParticle.cpp
+++ b/Sample/Particle/IAbstractParticle.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/IAbstractParticle.cpp
+//! @file      Sample/Particle/IAbstractParticle.cpp
 //! @brief     Defines interface IAParticle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/IAbstractParticle.h"
+#include "Sample/Particle/IAbstractParticle.h"
 
 IAbstractParticle::IAbstractParticle(const NodeMeta& meta, const std::vector<double>& PValues)
     : ISample(meta, PValues)
diff --git a/Core/Particle/IAbstractParticle.h b/Sample/Particle/IAbstractParticle.h
similarity index 97%
rename from Core/Particle/IAbstractParticle.h
rename to Sample/Particle/IAbstractParticle.h
index bb327a3f714..88bd93d9075 100644
--- a/Core/Particle/IAbstractParticle.h
+++ b/Sample/Particle/IAbstractParticle.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/IAbstractParticle.h
+//! @file      Sample/Particle/IAbstractParticle.h
 //! @brief     Defines interface IAbstractParticle.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/Particle/IClusteredParticles.h b/Sample/Particle/IClusteredParticles.h
similarity index 94%
rename from Core/Particle/IClusteredParticles.h
rename to Sample/Particle/IClusteredParticles.h
index 34a47116534..bf3da47ecbd 100644
--- a/Core/Particle/IClusteredParticles.h
+++ b/Sample/Particle/IClusteredParticles.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/IClusteredParticles.h
+//! @file      Sample/Particle/IClusteredParticles.h
 //! @brief     Defines class IClusteredParticles.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_ICLUSTEREDPARTICLES_H
 #define BORNAGAIN_CORE_PARTICLE_ICLUSTEREDPARTICLES_H
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/ISample.h"
 
 class IFormFactor;
diff --git a/Core/Particle/IParticle.cpp b/Sample/Particle/IParticle.cpp
similarity index 96%
rename from Core/Particle/IParticle.cpp
rename to Sample/Particle/IParticle.cpp
index d632f1d6348..b02466c2fcb 100644
--- a/Core/Particle/IParticle.cpp
+++ b/Sample/Particle/IParticle.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/IParticle.cpp
+//! @file      Sample/Particle/IParticle.cpp
 //! @brief     Implements interface IParticle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/IParticle.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Particle/IParticle.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
 #include "Sample/Scattering/Rotations.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Core/Particle/IParticle.h b/Sample/Particle/IParticle.h
similarity index 97%
rename from Core/Particle/IParticle.h
rename to Sample/Particle/IParticle.h
index 09243667d13..3d5262af485 100644
--- a/Core/Particle/IParticle.h
+++ b/Sample/Particle/IParticle.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/IParticle.h
+//! @file      Sample/Particle/IParticle.h
 //! @brief     Defines interface IParticle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_PARTICLE_IPARTICLE_H
 
 #include "Base/Types/SafePointerVector.h"
-#include "Core/Particle/IAbstractParticle.h"
+#include "Sample/Particle/IAbstractParticle.h"
 #include <memory>
 
 struct SlicedParticle;
diff --git a/Core/Particle/MesoCrystal.cpp b/Sample/Particle/MesoCrystal.cpp
similarity index 93%
rename from Core/Particle/MesoCrystal.cpp
rename to Sample/Particle/MesoCrystal.cpp
index a4a79c17c37..5b4eb101ef6 100644
--- a/Core/Particle/MesoCrystal.cpp
+++ b/Sample/Particle/MesoCrystal.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/MesoCrystal.cpp
+//! @file      Sample/Particle/MesoCrystal.cpp
 //! @brief     Implements class MesoCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/IClusteredParticles.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/IClusteredParticles.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
 #include "Sample/Scattering/FormFactorDecoratorRotation.h"
 
diff --git a/Core/Particle/MesoCrystal.h b/Sample/Particle/MesoCrystal.h
similarity index 94%
rename from Core/Particle/MesoCrystal.h
rename to Sample/Particle/MesoCrystal.h
index cdf551fc9d4..e51f8c6fc41 100644
--- a/Core/Particle/MesoCrystal.h
+++ b/Sample/Particle/MesoCrystal.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/MesoCrystal.h
+//! @file      Sample/Particle/MesoCrystal.h
 //! @brief     Defines class MesoCrystal.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_MESOCRYSTAL_H
 #define BORNAGAIN_CORE_PARTICLE_MESOCRYSTAL_H
 
-#include "Core/Particle/IParticle.h"
+#include "Sample/Particle/IParticle.h"
 
 class IClusteredParticles;
 
diff --git a/Core/Particle/Particle.cpp b/Sample/Particle/Particle.cpp
similarity index 95%
rename from Core/Particle/Particle.cpp
rename to Sample/Particle/Particle.cpp
index ae0c545582f..8dcd3f5ac8f 100644
--- a/Core/Particle/Particle.cpp
+++ b/Sample/Particle/Particle.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/Particle.cpp
+//! @file      Sample/Particle/Particle.cpp
 //! @brief     Implements class Particle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
 
 Particle::Particle() : m_material(HomogeneousMaterial())
diff --git a/Core/Particle/Particle.h b/Sample/Particle/Particle.h
similarity index 95%
rename from Core/Particle/Particle.h
rename to Sample/Particle/Particle.h
index 2684aea14db..9a22579cbdb 100644
--- a/Core/Particle/Particle.h
+++ b/Sample/Particle/Particle.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/Particle.h
+//! @file      Sample/Particle/Particle.h
 //! @brief     Defines class Particle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_PARTICLE_H
 #define BORNAGAIN_CORE_PARTICLE_PARTICLE_H
 
-#include "Core/Particle/IParticle.h"
+#include "Sample/Particle/IParticle.h"
 #include "Sample/Scattering/FormFactorDecoratorMaterial.h"
 #include "Sample/Scattering/FormFactorDecoratorRotation.h"
 
diff --git a/Core/Particle/ParticleComposition.cpp b/Sample/Particle/ParticleComposition.cpp
similarity index 95%
rename from Core/Particle/ParticleComposition.cpp
rename to Sample/Particle/ParticleComposition.cpp
index 4b1c80a62ec..ba279008b73 100644
--- a/Core/Particle/ParticleComposition.cpp
+++ b/Sample/Particle/ParticleComposition.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleComposition.cpp
+//! @file      Sample/Particle/ParticleComposition.cpp
 //! @brief     Implements class ParticleComposition.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Particle/FormFactorWeighted.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Particle/FormFactorWeighted.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Sample/Scattering/Rotations.h"
 
 ParticleComposition::ParticleComposition()
diff --git a/Core/Particle/ParticleComposition.h b/Sample/Particle/ParticleComposition.h
similarity index 95%
rename from Core/Particle/ParticleComposition.h
rename to Sample/Particle/ParticleComposition.h
index c530872a7b4..eb9da7db1d0 100644
--- a/Core/Particle/ParticleComposition.h
+++ b/Sample/Particle/ParticleComposition.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleComposition.h
+//! @file      Sample/Particle/ParticleComposition.h
 //! @brief     Defines class ParticleComposition.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_PARTICLECOMPOSITION_H
 #define BORNAGAIN_CORE_PARTICLE_PARTICLECOMPOSITION_H
 
-#include "Core/Particle/IParticle.h"
+#include "Sample/Particle/IParticle.h"
 #include <memory>
 
 //! A composition of particles at fixed positions
diff --git a/Core/Particle/ParticleCoreShell.cpp b/Sample/Particle/ParticleCoreShell.cpp
similarity index 94%
rename from Core/Particle/ParticleCoreShell.cpp
rename to Sample/Particle/ParticleCoreShell.cpp
index 5fc19581d4e..5bebf6431f5 100644
--- a/Core/Particle/ParticleCoreShell.cpp
+++ b/Sample/Particle/ParticleCoreShell.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleCoreShell.cpp
+//! @file      Sample/Particle/ParticleCoreShell.cpp
 //! @brief     Implements class ParticleCoreShell.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,10 +12,10 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/FormFactorCoreShell.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/FormFactorCoreShell.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/SlicedParticle.h"
 
 ParticleCoreShell::ParticleCoreShell(const Particle& shell, const Particle& core,
                                      kvector_t relative_core_position)
diff --git a/Core/Particle/ParticleCoreShell.h b/Sample/Particle/ParticleCoreShell.h
similarity index 95%
rename from Core/Particle/ParticleCoreShell.h
rename to Sample/Particle/ParticleCoreShell.h
index a0e95171e67..cf499873643 100644
--- a/Core/Particle/ParticleCoreShell.h
+++ b/Sample/Particle/ParticleCoreShell.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleCoreShell.h
+//! @file      Sample/Particle/ParticleCoreShell.h
 //! @brief     Defines ParticleCoreShell.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_PARTICLECORESHELL_H
 #define BORNAGAIN_CORE_PARTICLE_PARTICLECORESHELL_H
 
-#include "Core/Particle/IParticle.h"
+#include "Sample/Particle/IParticle.h"
 
 class Particle;
 
diff --git a/Core/Particle/ParticleDistribution.cpp b/Sample/Particle/ParticleDistribution.cpp
similarity index 96%
rename from Core/Particle/ParticleDistribution.cpp
rename to Sample/Particle/ParticleDistribution.cpp
index a6afe013c0b..16c4e879650 100644
--- a/Core/Particle/ParticleDistribution.cpp
+++ b/Sample/Particle/ParticleDistribution.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleDistribution.cpp
+//! @file      Sample/Particle/ParticleDistribution.cpp
 //! @brief     Implements class ParticleDistribution.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,9 +12,9 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Base/Types/Exceptions.h"
-#include "Core/Particle/IParticle.h"
+#include "Sample/Particle/IParticle.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
 #include "Param/Distrib/Distributions.h"
diff --git a/Core/Particle/ParticleDistribution.h b/Sample/Particle/ParticleDistribution.h
similarity index 95%
rename from Core/Particle/ParticleDistribution.h
rename to Sample/Particle/ParticleDistribution.h
index 14a46c9ae87..1f06b8548f1 100644
--- a/Core/Particle/ParticleDistribution.h
+++ b/Sample/Particle/ParticleDistribution.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/ParticleDistribution.h
+//! @file      Sample/Particle/ParticleDistribution.h
 //! @brief     Defines class ParticleDistribution.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_PARTICLE_PARTICLEDISTRIBUTION_H
 
 #include "Base/Types/SafePointerVector.h"
-#include "Core/Particle/IAbstractParticle.h"
+#include "Sample/Particle/IAbstractParticle.h"
 #include "Param/Distrib/ParameterDistribution.h"
 
 class IParticle;
diff --git a/Core/Particle/SlicedParticle.h b/Sample/Particle/SlicedParticle.h
similarity index 91%
rename from Core/Particle/SlicedParticle.h
rename to Sample/Particle/SlicedParticle.h
index 50dadb7232e..31de980086c 100644
--- a/Core/Particle/SlicedParticle.h
+++ b/Sample/Particle/SlicedParticle.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/SlicedParticle.h
+//! @file      Sample/Particle/SlicedParticle.h
 //! @brief     Defines class SlicedParticle.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_PARTICLE_SLICEDPARTICLE_H
 #define BORNAGAIN_CORE_PARTICLE_SLICEDPARTICLE_H
 
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/IFormFactor.h"
 #include <memory>
 
diff --git a/Core/Particle/TRange.h b/Sample/Particle/TRange.h
similarity index 97%
rename from Core/Particle/TRange.h
rename to Sample/Particle/TRange.h
index 799940d6dcd..913e2c80682 100644
--- a/Core/Particle/TRange.h
+++ b/Sample/Particle/TRange.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Particle/TRange.h
+//! @file      Sample/Particle/TRange.h
 //! @brief     Defines and implements template classes TRange and TSampledRange.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/RT/ILayerRTCoefficients.h b/Sample/RT/ILayerRTCoefficients.h
similarity index 98%
rename from Core/RT/ILayerRTCoefficients.h
rename to Sample/RT/ILayerRTCoefficients.h
index aa08b1d3328..54fb14be01b 100644
--- a/Core/RT/ILayerRTCoefficients.h
+++ b/Sample/RT/ILayerRTCoefficients.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/ILayerRTCoefficients.h
+//! @file      Sample/RT/ILayerRTCoefficients.h
 //! @brief     Defines and implements class ILayerRTCoefficients.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/RT/MatrixRTCoefficients.cpp b/Sample/RT/MatrixRTCoefficients.cpp
similarity index 99%
rename from Core/RT/MatrixRTCoefficients.cpp
rename to Sample/RT/MatrixRTCoefficients.cpp
index cbbf071b1b0..0e8f2076049 100644
--- a/Core/RT/MatrixRTCoefficients.cpp
+++ b/Sample/RT/MatrixRTCoefficients.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/MatrixRTCoefficients.cpp
+//! @file      Sample/RT/MatrixRTCoefficients.cpp
 //! @brief     Implements class MatrixRTCoefficients.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/RT/MatrixRTCoefficients.h"
+#include "Sample/RT/MatrixRTCoefficients.h"
 
 MatrixRTCoefficients* MatrixRTCoefficients::clone() const
 {
diff --git a/Core/RT/MatrixRTCoefficients.h b/Sample/RT/MatrixRTCoefficients.h
similarity index 97%
rename from Core/RT/MatrixRTCoefficients.h
rename to Sample/RT/MatrixRTCoefficients.h
index 2405f4fec0d..ff4a1d47e69 100644
--- a/Core/RT/MatrixRTCoefficients.h
+++ b/Sample/RT/MatrixRTCoefficients.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/MatrixRTCoefficients.h
+//! @file      Sample/RT/MatrixRTCoefficients.h
 //! @brief    Defines class MatrixRTCoefficients.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_H
 #define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_H
 
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 
 //! Specular reflection and transmission coefficients in a layer in case
 //! of 2x2 matrix interactions between the layers and the scattered particle.
diff --git a/Core/RT/MatrixRTCoefficients_v2.cpp b/Sample/RT/MatrixRTCoefficients_v2.cpp
similarity index 97%
rename from Core/RT/MatrixRTCoefficients_v2.cpp
rename to Sample/RT/MatrixRTCoefficients_v2.cpp
index b82e825e548..0faf9bd7f66 100644
--- a/Core/RT/MatrixRTCoefficients_v2.cpp
+++ b/Sample/RT/MatrixRTCoefficients_v2.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file     Core/RT/MatrixRTCoefficients_v2.cpp
+//! @file     Sample/RT/MatrixRTCoefficients_v2.cpp
 //! @brief    Implements class MatrixRTCoefficients_v2.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/RT/MatrixRTCoefficients_v2.h"
+#include "Sample/RT/MatrixRTCoefficients_v2.h"
 
 namespace
 {
diff --git a/Core/RT/MatrixRTCoefficients_v2.h b/Sample/RT/MatrixRTCoefficients_v2.h
similarity index 96%
rename from Core/RT/MatrixRTCoefficients_v2.h
rename to Sample/RT/MatrixRTCoefficients_v2.h
index 2c49b211963..a1b6ae48386 100644
--- a/Core/RT/MatrixRTCoefficients_v2.h
+++ b/Sample/RT/MatrixRTCoefficients_v2.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file     Core/RT/MatrixRTCoefficients_v2.h
+//! @file     Sample/RT/MatrixRTCoefficients_v2.h
 //! @brief    Defines class MatrixRTCoefficients_v2.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V2_H
 
 #include "Base/Vector/Vectors3D.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include <vector>
 
 //! Specular reflection and transmission coefficients in a layer in case
diff --git a/Core/RT/MatrixRTCoefficients_v3.cpp b/Sample/RT/MatrixRTCoefficients_v3.cpp
similarity index 98%
rename from Core/RT/MatrixRTCoefficients_v3.cpp
rename to Sample/RT/MatrixRTCoefficients_v3.cpp
index 0b6b80c2d8e..f4c13ee2ebe 100644
--- a/Core/RT/MatrixRTCoefficients_v3.cpp
+++ b/Sample/RT/MatrixRTCoefficients_v3.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file     Core/RT/MatrixRTCoefficients_v3.cpp
+//! @file     Sample/RT/MatrixRTCoefficients_v3.cpp
 //! @brief    Implements class MatrixRTCoefficients_v3.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/RT/MatrixRTCoefficients_v3.h"
+#include "Sample/RT/MatrixRTCoefficients_v3.h"
 #include "Base/Utils/Assert.h"
 
 namespace
diff --git a/Core/RT/MatrixRTCoefficients_v3.h b/Sample/RT/MatrixRTCoefficients_v3.h
similarity index 97%
rename from Core/RT/MatrixRTCoefficients_v3.h
rename to Sample/RT/MatrixRTCoefficients_v3.h
index 625617a930e..0f7c99b80e9 100644
--- a/Core/RT/MatrixRTCoefficients_v3.h
+++ b/Sample/RT/MatrixRTCoefficients_v3.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file     Core/RT/MatrixRTCoefficients_v3.h
+//! @file     Sample/RT/MatrixRTCoefficients_v3.h
 //! @brief    Defines class MatrixRTCoefficients_v3.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -16,7 +16,7 @@
 #define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V3_H
 
 #include "Base/Vector/Vectors3D.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include <vector>
 
 //! Specular reflection and transmission coefficients in a layer in case
diff --git a/Core/RT/ScalarRTCoefficients.h b/Sample/RT/ScalarRTCoefficients.h
similarity index 97%
rename from Core/RT/ScalarRTCoefficients.h
rename to Sample/RT/ScalarRTCoefficients.h
index 9dc91fd9923..1d6536c91d9 100644
--- a/Core/RT/ScalarRTCoefficients.h
+++ b/Sample/RT/ScalarRTCoefficients.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/ScalarRTCoefficients.h
+//! @file      Sample/RT/ScalarRTCoefficients.h
 //! @brief     Defines class ScalarRTCoefficients.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_CORE_RT_SCALARRTCOEFFICIENTS_H
 #define BORNAGAIN_CORE_RT_SCALARRTCOEFFICIENTS_H
 
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 
 //! Specular reflection and transmission coefficients in a layer in case
 //! of scalar interactions between the layers and the scattered particle.
diff --git a/Core/RT/SimulationOptions.cpp b/Sample/RT/SimulationOptions.cpp
similarity index 96%
rename from Core/RT/SimulationOptions.cpp
rename to Sample/RT/SimulationOptions.cpp
index ce65611b59b..a4f360ee0fa 100644
--- a/Core/RT/SimulationOptions.cpp
+++ b/Sample/RT/SimulationOptions.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/SimulationOptions.cpp
+//! @file      Sample/RT/SimulationOptions.cpp
 //! @brief     Implements class SimulationOptions
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/RT/SimulationOptions.h"
 #include <stdexcept>
 #include <thread>
 
diff --git a/Core/RT/SimulationOptions.h b/Sample/RT/SimulationOptions.h
similarity index 98%
rename from Core/RT/SimulationOptions.h
rename to Sample/RT/SimulationOptions.h
index fa70db7ce97..b8f0b681fa1 100644
--- a/Core/RT/SimulationOptions.h
+++ b/Sample/RT/SimulationOptions.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/RT/SimulationOptions.h
+//! @file      Sample/RT/SimulationOptions.h
 //! @brief     Defines class SimulationOptions.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Sample/Scattering/FormFactorDWBA.cpp b/Sample/Scattering/FormFactorDWBA.cpp
index 8bf8aa4bf56..8897beaaabb 100644
--- a/Sample/Scattering/FormFactorDWBA.cpp
+++ b/Sample/Scattering/FormFactorDWBA.cpp
@@ -14,7 +14,7 @@
 
 #include "Sample/Scattering/FormFactorDWBA.h"
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 
 FormFactorDWBA::FormFactorDWBA(const IFormFactor& form_factor) : mP_form_factor(form_factor.clone())
 {
diff --git a/Sample/Scattering/FormFactorDWBAPol.cpp b/Sample/Scattering/FormFactorDWBAPol.cpp
index ab599c3a463..39a1b9cae01 100644
--- a/Sample/Scattering/FormFactorDWBAPol.cpp
+++ b/Sample/Scattering/FormFactorDWBAPol.cpp
@@ -14,7 +14,7 @@
 
 #include "Sample/Scattering/FormFactorDWBAPol.h"
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 
 namespace
 {
diff --git a/Sample/Scattering/IFormFactor.cpp b/Sample/Scattering/IFormFactor.cpp
index fe5cc5fbffb..3b967d03e09 100644
--- a/Sample/Scattering/IFormFactor.cpp
+++ b/Sample/Scattering/IFormFactor.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/RT/ILayerRTCoefficients.h"
+#include "Sample/RT/ILayerRTCoefficients.h"
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
 #include "Sample/Scattering/FormFactorDecoratorRotation.h"
 #include <memory>
diff --git a/Core/SoftParticle/FormFactorGauss.cpp b/Sample/SoftParticle/FormFactorGauss.cpp
similarity index 94%
rename from Core/SoftParticle/FormFactorGauss.cpp
rename to Sample/SoftParticle/FormFactorGauss.cpp
index 139dc62617b..cbd60d31ff5 100644
--- a/Core/SoftParticle/FormFactorGauss.cpp
+++ b/Sample/SoftParticle/FormFactorGauss.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorGauss.cpp
+//! @file      Sample/SoftParticle/FormFactorGauss.cpp
 //! @brief     Implements class FormFactorGaussSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/SoftParticle/FormFactorGauss.h"
+#include "Sample/SoftParticle/FormFactorGauss.h"
 #include "Base/Const/MathConstants.h"
 #include "Sample/Shapes/Box.h"
 #include <limits>
diff --git a/Core/SoftParticle/FormFactorGauss.h b/Sample/SoftParticle/FormFactorGauss.h
similarity index 96%
rename from Core/SoftParticle/FormFactorGauss.h
rename to Sample/SoftParticle/FormFactorGauss.h
index 642f01953a4..8962a24924d 100644
--- a/Core/SoftParticle/FormFactorGauss.h
+++ b/Sample/SoftParticle/FormFactorGauss.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorGauss.h
+//! @file      Sample/SoftParticle/FormFactorGauss.h
 //! @brief     Defines class FormFactorGaussSphere.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/SoftParticle/FormFactorSphereGaussianRadius.cpp b/Sample/SoftParticle/FormFactorSphereGaussianRadius.cpp
similarity index 93%
rename from Core/SoftParticle/FormFactorSphereGaussianRadius.cpp
rename to Sample/SoftParticle/FormFactorSphereGaussianRadius.cpp
index 15fbc10defc..28f4b869d75 100644
--- a/Core/SoftParticle/FormFactorSphereGaussianRadius.cpp
+++ b/Sample/SoftParticle/FormFactorSphereGaussianRadius.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorSphereGaussianRadius.cpp
+//! @file      Sample/SoftParticle/FormFactorSphereGaussianRadius.cpp
 //! @brief     Implements class FormFactorSphereGaussianRadius.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/SoftParticle/FormFactorSphereGaussianRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
 #include "Sample/LibFF/SomeFormFactors.h"
 #include "Sample/Shapes/TruncatedEllipsoid.h"
 #include "Fit/Tools/RealLimits.h"
diff --git a/Core/SoftParticle/FormFactorSphereGaussianRadius.h b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
similarity index 96%
rename from Core/SoftParticle/FormFactorSphereGaussianRadius.h
rename to Sample/SoftParticle/FormFactorSphereGaussianRadius.h
index b0e8a1b9ab3..bfd89a98ec2 100644
--- a/Core/SoftParticle/FormFactorSphereGaussianRadius.h
+++ b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorSphereGaussianRadius.h
+//! @file      Sample/SoftParticle/FormFactorSphereGaussianRadius.h
 //! @brief     Defines and implements class FormFactorSphereGaussianRadius.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/SoftParticle/FormFactorSphereLogNormalRadius.cpp b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.cpp
similarity index 94%
rename from Core/SoftParticle/FormFactorSphereLogNormalRadius.cpp
rename to Sample/SoftParticle/FormFactorSphereLogNormalRadius.cpp
index e2b8a9a0a99..586b20256dc 100644
--- a/Core/SoftParticle/FormFactorSphereLogNormalRadius.cpp
+++ b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorSphereLogNormalRadius.cpp
+//! @file      Sample/SoftParticle/FormFactorSphereLogNormalRadius.cpp
 //! @brief     Implements class FormFactorSphereGaussianRadius.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 #include "Sample/LibFF/SomeFormFactors.h"
 #include "Sample/Shapes/TruncatedEllipsoid.h"
 #include "Param/Distrib/Distributions.h"
diff --git a/Core/SoftParticle/FormFactorSphereLogNormalRadius.h b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
similarity index 96%
rename from Core/SoftParticle/FormFactorSphereLogNormalRadius.h
rename to Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
index d0b76cb665f..f15a6a63728 100644
--- a/Core/SoftParticle/FormFactorSphereLogNormalRadius.h
+++ b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/FormFactorSphereLogNormalRadius.h
+//! @file      Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
 //! @brief     Defines and implements class FormFactorSphereLogNormalRadius.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Core/SoftParticle/SoftParticles.h b/Sample/SoftParticle/SoftParticles.h
similarity index 75%
rename from Core/SoftParticle/SoftParticles.h
rename to Sample/SoftParticle/SoftParticles.h
index 6fe44a02744..fdb65430c8d 100644
--- a/Core/SoftParticle/SoftParticles.h
+++ b/Sample/SoftParticle/SoftParticles.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/SoftParticle/SoftParticles.h
+//! @file      Sample/SoftParticle/SoftParticles.h
 //! @brief     Includes all soft-particle form-factor definitions.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
 #define BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
 
-#include "Core/SoftParticle/FormFactorGauss.h"
-#include "Core/SoftParticle/FormFactorSphereGaussianRadius.h"
-#include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+#include "Sample/SoftParticle/FormFactorGauss.h"
+#include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 
 #endif // BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
diff --git a/Tests/Functional/Core/Fitting/Plan.cpp b/Tests/Functional/Core/Fitting/Plan.cpp
index 07b22743ecb..54f8f4cd36b 100644
--- a/Tests/Functional/Core/Fitting/Plan.cpp
+++ b/Tests/Functional/Core/Fitting/Plan.cpp
@@ -14,7 +14,7 @@
 
 #include "Tests/Functional/Core/Fitting/Plan.h"
 #include "Core/Fitting/FitObjective.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "Fit/Kernel/Minimizer.h"
diff --git a/Tests/Functional/Core/Fitting/PlanCases.cpp b/Tests/Functional/Core/Fitting/PlanCases.cpp
index 5b07e5b1a9c..57b227ed6ef 100644
--- a/Tests/Functional/Core/Fitting/PlanCases.cpp
+++ b/Tests/Functional/Core/Fitting/PlanCases.cpp
@@ -14,16 +14,16 @@
 
 #include "Tests/Functional/Core/Fitting/PlanCases.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Core/Fitting/FitObjective.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Device/Mask/Rectangle.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
 #include "Core/Simulation/GISASSimulation.h"
 
 using namespace Fit;
diff --git a/Tests/Functional/Core/MPI/mpitest.cpp b/Tests/Functional/Core/MPI/mpitest.cpp
index 1e3421ea856..a02e12d4840 100644
--- a/Tests/Functional/Core/MPI/mpitest.cpp
+++ b/Tests/Functional/Core/MPI/mpitest.cpp
@@ -2,7 +2,7 @@
 
 #include "Core/Histo/IntensityDataIOFactory.h"
 #include "Core/Instrument/IntensityDataFunctions.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 
diff --git a/Tests/Functional/Core/Std/Check.cpp b/Tests/Functional/Core/Std/Check.cpp
index 243d61f9d81..023d2f9bda3 100644
--- a/Tests/Functional/Core/Std/Check.cpp
+++ b/Tests/Functional/Core/Std/Check.cpp
@@ -17,7 +17,7 @@
 #include "Base/Utils/FileSystemUtils.h"
 #include "Core/Histo/IntensityDataIOFactory.h"
 #include "Core/Instrument/IntensityDataFunctions.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include <iostream>
diff --git a/Tests/Functional/GUI/Other/SaveLoadProject.cpp b/Tests/Functional/GUI/Other/SaveLoadProject.cpp
index d8f57b4c218..5baebf42944 100644
--- a/Tests/Functional/GUI/Other/SaveLoadProject.cpp
+++ b/Tests/Functional/GUI/Other/SaveLoadProject.cpp
@@ -15,7 +15,7 @@
 #include "Tests/Functional/GUI/Other/SaveLoadProject.h"
 #include "BATesting.h"
 #include "Base/Utils/FileSystemUtils.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "GUI/coregui/Models/ApplicationModels.h"
 #include "GUI/coregui/Models/DetectorItems.h"
diff --git a/Tests/Functional/GUI/Translate/GUITranslationTest.cpp b/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
index 416f8e9d5d7..8674f9cb614 100644
--- a/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
+++ b/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Tests/Functional/GUI/Translate/GUITranslationTest.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "Fit/Tools/StringUtils.h"
diff --git a/Tests/Functional/Python/PyEmbedded/Tests.cpp b/Tests/Functional/Python/PyEmbedded/Tests.cpp
index 216b14b6f0f..fc6f28f15a8 100644
--- a/Tests/Functional/Python/PyEmbedded/Tests.cpp
+++ b/Tests/Functional/Python/PyEmbedded/Tests.cpp
@@ -18,8 +18,8 @@
 #include "Base/Utils/PythonCore.h"
 #include "Base/Utils/SysUtils.h"
 #include "Core/Export/ExportToPython.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/PyImport.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/PyImport.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <iostream>
diff --git a/Tests/Functional/Std/Run.cpp b/Tests/Functional/Std/Run.cpp
index a3d22c9de62..e17e156aeb6 100644
--- a/Tests/Functional/Std/Run.cpp
+++ b/Tests/Functional/Std/Run.cpp
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include <iostream>
diff --git a/Tests/Performance/Core/Mesocrystal.cpp b/Tests/Performance/Core/Mesocrystal.cpp
index 520dd72f25e..906d811ce44 100644
--- a/Tests/Performance/Core/Mesocrystal.cpp
+++ b/Tests/Performance/Core/Mesocrystal.cpp
@@ -12,22 +12,22 @@
 //
 // ************************************************************************** //
 
-#include "Core/Particle/MesoCrystal.h"
+#include "Sample/Particle/MesoCrystal.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
-#include "Core/Lattice/ISelectionRule.h"
+#include "Sample/Lattice/ISelectionRule.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Core/Simulation/GISASSimulation.h"
-#include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 #include <iostream>
 
 namespace
diff --git a/Tests/Performance/Core/Multilayer.cpp b/Tests/Performance/Core/Multilayer.cpp
index 27269fc879e..b512da16aa9 100644
--- a/Tests/Performance/Core/Multilayer.cpp
+++ b/Tests/Performance/Core/Multilayer.cpp
@@ -12,7 +12,7 @@
 //
 // ************************************************************************** //
 
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/SpecularSimulation.h"
 #include "Core/Simulation/StandardSimulations.h"
 #include "Core/StandardSamples/PlainMultiLayerBySLDBuilder.h"
diff --git a/Tests/Performance/Core/Threading.cpp b/Tests/Performance/Core/Threading.cpp
index 0f773ba5ca9..8821545a1b6 100644
--- a/Tests/Performance/Core/Threading.cpp
+++ b/Tests/Performance/Core/Threading.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Base/Const/Units.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/StandardSamples/CylindersBuilder.h"
 #include "Core/StandardSamples/ParaCrystalBuilder.h"
diff --git a/Tests/Performance/Core/ThreadingComponents.cpp b/Tests/Performance/Core/ThreadingComponents.cpp
index 34c024ee634..3efe8a7cf92 100644
--- a/Tests/Performance/Core/ThreadingComponents.cpp
+++ b/Tests/Performance/Core/ThreadingComponents.cpp
@@ -14,16 +14,16 @@
 
 #include "Tests/Performance/Core/ThreadingComponents.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Detector/RectangularDetector.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Device/Mask/Rectangle.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/StandardSamples/CylindersBuilder.h"
 #include "Param/Distrib/Distributions.h"
diff --git a/Tests/Performance/GUI/GUIPerformanceTest.cpp b/Tests/Performance/GUI/GUIPerformanceTest.cpp
index fe132bf0a1b..dd129ef9cc8 100644
--- a/Tests/Performance/GUI/GUIPerformanceTest.cpp
+++ b/Tests/Performance/GUI/GUIPerformanceTest.cpp
@@ -13,7 +13,7 @@
 // ************************************************************************** //
 
 #include "Tests/Performance/GUI/GUIPerformanceTest.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "GUI/coregui/Models/ApplicationModels.h"
diff --git a/Tests/UnitTests/Core/Fitting/FittingTestHelper.h b/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
index 5d5aeb46cf3..b9947b27965 100644
--- a/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
+++ b/Tests/UnitTests/Core/Fitting/FittingTestHelper.h
@@ -3,8 +3,8 @@
 
 #include "Base/Const/Units.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Fit/Kernel/Parameters.h"
 #include <memory>
diff --git a/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp b/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
index 45c1e1f5b63..94076d00777 100644
--- a/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/DepthProbeSimulationTest.cpp
@@ -3,8 +3,8 @@
 #include "Base/Const/Units.h"
 #include "Core/Histo/Histogram2D.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/RealParameter.h"
 #include "Param/Distrib/Distributions.h"
diff --git a/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp b/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
index 40cd75ea49c..54bac496a80 100644
--- a/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/KzComputationTest.cpp
@@ -1,10 +1,10 @@
-#include "Core/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/KzComputation.h"
 #include "Base/Const/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Core/StandardSamples/PlainMultiLayerBySLDBuilder.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficientsTest.cpp b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficientsTest.cpp
index 5f569326af3..13740f30eec 100644
--- a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficientsTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficientsTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/RT/MatrixRTCoefficients.h"
+#include "Sample/RT/MatrixRTCoefficients.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class MatrixRTCoefficientsTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v2Test.cpp b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v2Test.cpp
index 7f54a937440..a51fdb237d4 100644
--- a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v2Test.cpp
+++ b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v2Test.cpp
@@ -1,4 +1,4 @@
-#include "Core/RT/MatrixRTCoefficients_v2.h"
+#include "Sample/RT/MatrixRTCoefficients_v2.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class MatrixRTCoefficients_v2Test : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v3Test.cpp b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v3Test.cpp
index bb5b146a6b3..2036a974fc1 100644
--- a/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v3Test.cpp
+++ b/Tests/UnitTests/Core/Fresnel/MatrixRTCoefficients_v3Test.cpp
@@ -1,4 +1,4 @@
-#include "Core/RT/MatrixRTCoefficients_v3.h"
+#include "Sample/RT/MatrixRTCoefficients_v3.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class MatrixRTCoefficients_v3Test : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/ScalarRTCoefficientsTest.cpp b/Tests/UnitTests/Core/Fresnel/ScalarRTCoefficientsTest.cpp
index 4d4dccb9f03..272ad316c70 100644
--- a/Tests/UnitTests/Core/Fresnel/ScalarRTCoefficientsTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/ScalarRTCoefficientsTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/RT/ScalarRTCoefficients.h"
+#include "Sample/RT/ScalarRTCoefficients.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class ScalarRTCoefficientsTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticOldTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticOldTest.cpp
index 55a004c6950..2dc051cb59a 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticOldTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticOldTest.cpp
@@ -1,11 +1,11 @@
 #include "Base/Const/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/SpecularMagneticOldStrategy.h"
-#include "Core/Multilayer/SpecularScalarTanhStrategy.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/SpecularMagneticOldStrategy.h"
+#include "Sample/Multilayer/SpecularScalarTanhStrategy.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class SpecularMagneticOldTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
index 86788ecd1c6..e5c8b3a1d9d 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
@@ -1,13 +1,13 @@
 #include "Base/Const/Units.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/KzComputation.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/SpecularMagneticNewTanhStrategy.h"
-#include "Core/Multilayer/SpecularMagneticStrategy.h"
-#include "Core/Multilayer/SpecularScalarTanhStrategy.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/KzComputation.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/SpecularMagneticNewTanhStrategy.h"
+#include "Sample/Multilayer/SpecularMagneticStrategy.h"
+#include "Sample/Multilayer/SpecularScalarTanhStrategy.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <utility>
 
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
index e2f7522cc30..a17d6cc2639 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
@@ -1,7 +1,7 @@
 #include "Base/Axis/FixedBinAxis.h"
 #include "Base/Axis/PointwiseAxis.h"
 #include "Core/Beam/FootprintGauss.h"
-#include "Core/Multilayer/SpecularSimulationElement.h"
+#include "Sample/Multilayer/SpecularSimulationElement.h"
 #include "Core/Resolution/ScanResolution.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Scan/QSpecScan.h"
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
index 67e8fcb1d0d..d9827670ca2 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.cpp
@@ -4,8 +4,8 @@
 #include "Base/Const/Units.h"
 #include "Core/Histo/Histogram1D.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Scan/QSpecScan.h"
diff --git a/Tests/UnitTests/Core/Other/GISASSimulationTest.cpp b/Tests/UnitTests/Core/Other/GISASSimulationTest.cpp
index 95f2dae67a6..7a481132354 100644
--- a/Tests/UnitTests/Core/Other/GISASSimulationTest.cpp
+++ b/Tests/UnitTests/Core/Other/GISASSimulationTest.cpp
@@ -1,5 +1,5 @@
 #include "Core/Simulation/GISASSimulation.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Other/LayerFillLimitsTest.cpp b/Tests/UnitTests/Core/Other/LayerFillLimitsTest.cpp
index 8ecaaea69d4..03134d29211 100644
--- a/Tests/UnitTests/Core/Other/LayerFillLimitsTest.cpp
+++ b/Tests/UnitTests/Core/Other/LayerFillLimitsTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Multilayer/LayerFillLimits.h"
+#include "Sample/Multilayer/LayerFillLimits.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <stdexcept>
 
diff --git a/Tests/UnitTests/Core/Other/MaterialTest.cpp b/Tests/UnitTests/Core/Other/MaterialTest.cpp
index b41b9ea9118..8d00e0e3aff 100644
--- a/Tests/UnitTests/Core/Other/MaterialTest.cpp
+++ b/Tests/UnitTests/Core/Other/MaterialTest.cpp
@@ -4,7 +4,7 @@
 #include "Sample/Material/MaterialBySLDImpl.h"
 #include "Sample/Material/RefractiveMaterialImpl.h"
 #include "Sample/Material/WavevectorInfo.h"
-#include "Core/Particle/HomogeneousRegion.h"
+#include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/Rotations.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Other/SampleBuilderNodeTest.cpp b/Tests/UnitTests/Core/Other/SampleBuilderNodeTest.cpp
index cc91639bb80..e15389ed568 100644
--- a/Tests/UnitTests/Core/Other/SampleBuilderNodeTest.cpp
+++ b/Tests/UnitTests/Core/Other/SampleBuilderNodeTest.cpp
@@ -1,5 +1,5 @@
 #include "Core/SampleBuilderEngine/SampleBuilderNode.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/ParameterPool.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Other/SampleProviderTest.cpp b/Tests/UnitTests/Core/Other/SampleProviderTest.cpp
index dedf34e389f..ff20181e87d 100644
--- a/Tests/UnitTests/Core/Other/SampleProviderTest.cpp
+++ b/Tests/UnitTests/Core/Other/SampleProviderTest.cpp
@@ -1,5 +1,5 @@
 #include "Core/SampleBuilderEngine/SampleProvider.h"
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
 #include "Param/Base/ParameterPool.h"
 #include "Param/Base/RealParameter.h"
diff --git a/Tests/UnitTests/Core/Other/TRangeTest.cpp b/Tests/UnitTests/Core/Other/TRangeTest.cpp
index be6b49096fd..e4d66cc996d 100644
--- a/Tests/UnitTests/Core/Other/TRangeTest.cpp
+++ b/Tests/UnitTests/Core/Other/TRangeTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Particle/TRange.h"
+#include "Sample/Particle/TRange.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <algorithm>
 
diff --git a/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp b/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp
index f841c3472c5..d3419976ddf 100644
--- a/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp
+++ b/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp
@@ -1,5 +1,5 @@
-#include "Core/Correlations/FTDistributions1D.h"
-#include "Core/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/FTDistributions1D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
 #include "Param/Base/RealParameter.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
diff --git a/Tests/UnitTests/Core/Sample/CrystalTest.cpp b/Tests/UnitTests/Core/Sample/CrystalTest.cpp
index 7c4ccaadf1b..a89b873f9f4 100644
--- a/Tests/UnitTests/Core/Sample/CrystalTest.cpp
+++ b/Tests/UnitTests/Core/Sample/CrystalTest.cpp
@@ -1,5 +1,5 @@
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class CrystalTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/FormFactorCoherentSumTest.cpp b/Tests/UnitTests/Core/Sample/FormFactorCoherentSumTest.cpp
index 1ba8b0d3e8e..4fe55b01803 100644
--- a/Tests/UnitTests/Core/Sample/FormFactorCoherentSumTest.cpp
+++ b/Tests/UnitTests/Core/Sample/FormFactorCoherentSumTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Multilayer/FormFactorCoherentSum.h"
+#include "Sample/Multilayer/FormFactorCoherentSum.h"
 #include "Base/Types/Exceptions.h"
 #include "Sample/HardParticle/FormFactorDot.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
index 9cbf001a300..1da1c24b164 100644
--- a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
+++ b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Lattice/Lattice2D.h"
+#include "Sample/Lattice/Lattice2D.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class Lattice2DTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/LatticeTest.cpp b/Tests/UnitTests/Core/Sample/LatticeTest.cpp
index e67c9065101..96dbe387680 100644
--- a/Tests/UnitTests/Core/Sample/LatticeTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LatticeTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Vector/Transform3D.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/UnitTests/Core/Sample/LatticeUtilsTest.cpp b/Tests/UnitTests/Core/Sample/LatticeUtilsTest.cpp
index 933f57f76af..74c4510f8a3 100644
--- a/Tests/UnitTests/Core/Sample/LatticeUtilsTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LatticeUtilsTest.cpp
@@ -1,5 +1,5 @@
-#include "Core/Lattice/LatticeUtils.h"
-#include "Core/Lattice/ILatticeOrientation.h"
+#include "Sample/Lattice/LatticeUtils.h"
+#include "Sample/Lattice/ILatticeOrientation.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class LatticeUtilsTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/LayerInterfaceTest.cpp b/Tests/UnitTests/Core/Sample/LayerInterfaceTest.cpp
index 33daf889237..9332428e469 100644
--- a/Tests/UnitTests/Core/Sample/LayerInterfaceTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LayerInterfaceTest.cpp
@@ -1,7 +1,7 @@
-#include "Core/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerInterface.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <memory>
 
diff --git a/Tests/UnitTests/Core/Sample/LayerRoughnessTest.cpp b/Tests/UnitTests/Core/Sample/LayerRoughnessTest.cpp
index beae84de891..b43f0cd3f9d 100644
--- a/Tests/UnitTests/Core/Sample/LayerRoughnessTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LayerRoughnessTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/LayerRoughness.h"
 #include "Param/Varia/ParameterPattern.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Sample/LayerTest.cpp b/Tests/UnitTests/Core/Sample/LayerTest.cpp
index 5ad53734018..3c565255368 100644
--- a/Tests/UnitTests/Core/Sample/LayerTest.cpp
+++ b/Tests/UnitTests/Core/Sample/LayerTest.cpp
@@ -1,6 +1,6 @@
-#include "Core/Multilayer/Layer.h"
+#include "Sample/Multilayer/Layer.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Sample/MesoCrystalTest.cpp b/Tests/UnitTests/Core/Sample/MesoCrystalTest.cpp
index 79ac1968e11..9b7489fd79c 100644
--- a/Tests/UnitTests/Core/Sample/MesoCrystalTest.cpp
+++ b/Tests/UnitTests/Core/Sample/MesoCrystalTest.cpp
@@ -1,7 +1,7 @@
-#include "Core/Particle/MesoCrystal.h"
+#include "Sample/Particle/MesoCrystal.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Sample/Scattering/Rotations.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
index 752c8242dce..194ea707e1b 100644
--- a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
+++ b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp
@@ -1,12 +1,12 @@
-#include "Core/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/MultiLayer.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayerUtils.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayerUtils.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 using MultiLayerUtils::LayerBottomInterface;
diff --git a/Tests/UnitTests/Core/Sample/MultilayerAveragingTest.cpp b/Tests/UnitTests/Core/Sample/MultilayerAveragingTest.cpp
index b88c3295c5c..6abd25775b6 100644
--- a/Tests/UnitTests/Core/Sample/MultilayerAveragingTest.cpp
+++ b/Tests/UnitTests/Core/Sample/MultilayerAveragingTest.cpp
@@ -1,12 +1,12 @@
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Particle/Particle.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class MultilayerAveragingTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/ParticleCompositionTest.cpp b/Tests/UnitTests/Core/Sample/ParticleCompositionTest.cpp
index 3d9e2a2750e..d1b2dc99125 100644
--- a/Tests/UnitTests/Core/Sample/ParticleCompositionTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleCompositionTest.cpp
@@ -1,8 +1,8 @@
-#include "Core/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleComposition.h"
 #include "Base/Const/MathConstants.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class ParticleCompositionTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp b/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
index be1a8fd3737..f1b0e34f661 100644
--- a/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleCoreShellTest.cpp
@@ -1,9 +1,9 @@
-#include "Core/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleCoreShell.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Const/Units.h"
 #include "Sample/HardParticle/HardParticles.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class ParticleCoreShellTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp b/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
index 2becd5a17b3..1a7f6e12fc6 100644
--- a/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleDistributionTest.cpp
@@ -1,9 +1,9 @@
-#include "Core/Particle/ParticleDistribution.h"
+#include "Sample/Particle/ParticleDistribution.h"
 #include "Base/Const/Units.h"
 #include "Sample/HardParticle/FormFactorCone.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Param/Distrib/Distributions.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp b/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
index 5b9023d4f45..ce72686600b 100644
--- a/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleLayoutTest.cpp
@@ -1,10 +1,10 @@
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
 #include "Core/Export/INodeUtils.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class ParticleLayoutTest : public ::testing::Test
diff --git a/Tests/UnitTests/Core/Sample/ParticleTest.cpp b/Tests/UnitTests/Core/Sample/ParticleTest.cpp
index f925a904cd6..29ae90dec89 100644
--- a/Tests/UnitTests/Core/Sample/ParticleTest.cpp
+++ b/Tests/UnitTests/Core/Sample/ParticleTest.cpp
@@ -1,4 +1,4 @@
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "Base/Const/MathConstants.h"
 #include "Base/Const/Units.h"
 #include "Sample/HardParticle/FormFactorFullSphere.h"
diff --git a/Tests/UnitTests/Core/Sample/RTTest.cpp b/Tests/UnitTests/Core/Sample/RTTest.cpp
index f1b42913441..9c9c5307177 100644
--- a/Tests/UnitTests/Core/Sample/RTTest.cpp
+++ b/Tests/UnitTests/Core/Sample/RTTest.cpp
@@ -1,13 +1,13 @@
 #include "Base/Const/MathConstants.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Computation/ProcessedSample.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/Multilayer/SpecularScalarTanhStrategy.h"
-#include "Core/RT/SimulationOptions.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/SpecularScalarTanhStrategy.h"
+#include "Sample/RT/SimulationOptions.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class RTTest : public ::testing::Test
diff --git a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
index f892f11261c..dd6d421772a 100644
--- a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
+++ b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp
@@ -1,5 +1,5 @@
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunctions.h"
+#include "Sample/Aggregate/InterferenceFunctions.h"
 #include "Sample/HardParticle/HardParticles.h"
 #include "GUI/coregui/Models/FormFactorItems.h"
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
diff --git a/Tests/UnitTests/GUI/TestParaCrystalItems.cpp b/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
index f65ce38a459..c69a151f8af 100644
--- a/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
+++ b/Tests/UnitTests/GUI/TestParaCrystalItems.cpp
@@ -1,5 +1,5 @@
 #include "Base/Const/Units.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
 #include "GUI/coregui/Models/FTDistributionItems.h"
 #include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/Lattice2DItems.h"
diff --git a/Tests/UnitTests/GUI/TestParticleDistributionItem.cpp b/Tests/UnitTests/GUI/TestParticleDistributionItem.cpp
index 54bed5ec717..4b62e428420 100644
--- a/Tests/UnitTests/GUI/TestParticleDistributionItem.cpp
+++ b/Tests/UnitTests/GUI/TestParticleDistributionItem.cpp
@@ -1,6 +1,6 @@
 #include "Sample/HardParticle/HardParticles.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "GUI/coregui/Models/ComboProperty.h"
 #include "GUI/coregui/Models/DistributionItems.h"
 #include "GUI/coregui/Models/MaterialModel.h"
diff --git a/Tests/UnitTests/GUI/TestRealSpaceBuilderUtils.cpp b/Tests/UnitTests/GUI/TestRealSpaceBuilderUtils.cpp
index e85ceb13ae2..c2a58a23a0f 100644
--- a/Tests/UnitTests/GUI/TestRealSpaceBuilderUtils.cpp
+++ b/Tests/UnitTests/GUI/TestRealSpaceBuilderUtils.cpp
@@ -1,4 +1,4 @@
-#include "Core/Particle/Particle.h"
+#include "Sample/Particle/Particle.h"
 #include "GUI/coregui/Models/ApplicationModels.h"
 #include "GUI/coregui/Models/ParticleItem.h"
 #include "GUI/coregui/Models/ParticleLayoutItem.h"
diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i
index 0f4f86cb4a5..3c6ea26553e 100644
--- a/Wrap/swig/libBornAgainCore.i
+++ b/Wrap/swig/libBornAgainCore.i
@@ -76,25 +76,25 @@
 
 %{
 #include "BAVersion.h"
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
-#include "Core/Correlations/FTDistributions1D.h"
-#include "Core/Correlations/FTDistributions2D.h"
-#include "Core/Correlations/ILayout.h"
-#include "Core/Correlations/IPeakShape.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
-#include "Core/Aggregate/InterferenceFunction3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionHardDisk.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunctionTwin.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
+#include "Sample/Correlations/FTDistributions1D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/ILayout.h"
+#include "Sample/Correlations/IPeakShape.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
+#include "Sample/Aggregate/InterferenceFunction3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionTwin.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
@@ -161,11 +161,11 @@
 #include "Core/Intensity/IIntensityFunction.h"
 #include "Core/Instrument/IntensityDataFunctions.h"
 #include "Core/Data/OutputData.h"
-#include "Core/Lattice/ILatticeOrientation.h"
-#include "Core/Lattice/ISelectionRule.h"
-#include "Core/Lattice/Lattice.h"
-#include "Core/Lattice/Lattice2D.h"
-#include "Core/Lattice/LatticeUtils.h"
+#include "Sample/Lattice/ILatticeOrientation.h"
+#include "Sample/Lattice/ISelectionRule.h"
+#include "Sample/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice2D.h"
+#include "Sample/Lattice/LatticeUtils.h"
 #include "Device/Mask/Ellipse.h"
 #include "Device/Mask/IShape2D.h"
 #include "Device/Mask/Line.h"
@@ -174,23 +174,23 @@
 #include "Sample/Material/MaterialFactoryFuncs.h"
 #include "Sample/Material/WavevectorInfo.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/RT/SimulationOptions.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/FormFactorCrystal.h"
-#include "Core/Particle/FormFactorWeighted.h"
-#include "Core/Particle/IAbstractParticle.h"
-#include "Core/Particle/IClusteredParticles.h"
-#include "Core/Particle/IParticle.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/ParticleDistribution.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/RT/SimulationOptions.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/FormFactorCrystal.h"
+#include "Sample/Particle/FormFactorWeighted.h"
+#include "Sample/Particle/IAbstractParticle.h"
+#include "Sample/Particle/IClusteredParticles.h"
+#include "Sample/Particle/IParticle.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleDistribution.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/IFormFactorDecorator.h"
 #include "Sample/Scattering/ISample.h"
 #include "Sample/Scattering/Rotations.h"
@@ -200,9 +200,9 @@
 #include "Core/Simulation/Simulation.h"
 #include "Core/Simulation/Simulation2D.h"
 #include "Core/Simulation/SpecularSimulation.h"
-#include "Core/SoftParticle/FormFactorGauss.h"
-#include "Core/SoftParticle/FormFactorSphereGaussianRadius.h"
-#include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+#include "Sample/SoftParticle/FormFactorGauss.h"
+#include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Fit/Kernel/FitOptions.h"
@@ -287,7 +287,7 @@
 %include "Device/Mask/Polygon.h"
 %include "Device/Mask/Rectangle.h"
 
-%include "Core/RT/SimulationOptions.h"
+%include "Sample/RT/SimulationOptions.h"
 
 %include "Sample/Scattering/ISample.h"
 %include "Sample/Scattering/IFormFactor.h"
@@ -302,40 +302,40 @@
 %include "Core/Fitting/IterationInfo.h"
 %include "Core/Fitting/PyFittingCallbacks.h"
 
-%include "Core/Particle/FormFactorCrystal.h"
-%include "Core/Particle/FormFactorWeighted.h"
-%include "Core/Particle/IAbstractParticle.h"
-%include "Core/Particle/IClusteredParticles.h"
-%include "Core/Particle/Crystal.h"
-%include "Core/Particle/IParticle.h"
-%include "Core/Particle/MesoCrystal.h"
-%include "Core/Particle/Particle.h"
-%include "Core/Particle/ParticleComposition.h"
-%include "Core/Particle/ParticleCoreShell.h"
-%include "Core/Particle/ParticleDistribution.h"
-
-%include "Core/Correlations/FTDecay1D.h"
-%include "Core/Correlations/FTDecay2D.h"
-%include "Core/Correlations/FTDistributions1D.h"
-%include "Core/Correlations/FTDistributions2D.h"
-%include "Core/Correlations/FTDecay1D.h"
-%include "Core/Correlations/FTDecay2D.h"
-%include "Core/Correlations/ILayout.h"
-%include "Core/Correlations/IPeakShape.h"
-
-%include "Core/Aggregate/IInterferenceFunction.h"
-%include "Core/Aggregate/InterferenceFunction1DLattice.h"
-%include "Core/Aggregate/InterferenceFunction2DLattice.h"
-%include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-%include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
-%include "Core/Aggregate/InterferenceFunction3DLattice.h"
-%include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
-%include "Core/Aggregate/InterferenceFunctionFinite3DLattice.h"
-%include "Core/Aggregate/InterferenceFunctionHardDisk.h"
-%include "Core/Aggregate/InterferenceFunctionNone.h"
-%include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-%include "Core/Aggregate/InterferenceFunctionTwin.h"
-%include "Core/Aggregate/ParticleLayout.h"
+%include "Sample/Particle/FormFactorCrystal.h"
+%include "Sample/Particle/FormFactorWeighted.h"
+%include "Sample/Particle/IAbstractParticle.h"
+%include "Sample/Particle/IClusteredParticles.h"
+%include "Sample/Particle/Crystal.h"
+%include "Sample/Particle/IParticle.h"
+%include "Sample/Particle/MesoCrystal.h"
+%include "Sample/Particle/Particle.h"
+%include "Sample/Particle/ParticleComposition.h"
+%include "Sample/Particle/ParticleCoreShell.h"
+%include "Sample/Particle/ParticleDistribution.h"
+
+%include "Sample/Correlations/FTDecay1D.h"
+%include "Sample/Correlations/FTDecay2D.h"
+%include "Sample/Correlations/FTDistributions1D.h"
+%include "Sample/Correlations/FTDistributions2D.h"
+%include "Sample/Correlations/FTDecay1D.h"
+%include "Sample/Correlations/FTDecay2D.h"
+%include "Sample/Correlations/ILayout.h"
+%include "Sample/Correlations/IPeakShape.h"
+
+%include "Sample/Aggregate/IInterferenceFunction.h"
+%include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+%include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+%include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
+%include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
+%include "Sample/Aggregate/InterferenceFunction3DLattice.h"
+%include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
+%include "Sample/Aggregate/InterferenceFunctionFinite3DLattice.h"
+%include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
+%include "Sample/Aggregate/InterferenceFunctionNone.h"
+%include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+%include "Sample/Aggregate/InterferenceFunctionTwin.h"
+%include "Sample/Aggregate/ParticleLayout.h"
 
 %include "Core/Beam/Beam.h"
 %include "Core/Beam/IFootprintFactor.h"
@@ -343,13 +343,13 @@
 %include "Core/Beam/FootprintSquare.h"
 
 %include "Core/SampleBuilderEngine/ISampleBuilder.h"
-%include "Core/Multilayer/Layer.h"
-%include "Core/Multilayer/LayerRoughness.h"
-%include "Core/Multilayer/MultiLayer.h"
+%include "Sample/Multilayer/Layer.h"
+%include "Sample/Multilayer/LayerRoughness.h"
+%include "Sample/Multilayer/MultiLayer.h"
 
 // SWIG workaround for using axes units the same way as they are used in cpp files
 %rename(RoughnessModel) RoughnessModelWrap;
-%include "Core/Multilayer/RoughnessModels.h"
+%include "Sample/Multilayer/RoughnessModels.h"
 
 %include "Sample/HardParticle/IFormFactorPolyhedron.h"
 %include "Sample/HardParticle/IFormFactorPrism.h"
@@ -382,9 +382,9 @@
 %include "Sample/HardParticle/FormFactorTruncatedSphere.h"
 %include "Sample/HardParticle/FormFactorTruncatedSpheroid.h"
 
-%include "Core/SoftParticle/FormFactorGauss.h"
-%include "Core/SoftParticle/FormFactorSphereGaussianRadius.h"
-%include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+%include "Sample/SoftParticle/FormFactorGauss.h"
+%include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
+%include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 
 %include "Core/Simulation/Simulation.h"
 %include "Core/Simulation/Simulation2D.h"
@@ -432,11 +432,11 @@
 %include "Core/Instrument/SpectrumUtils.h"
 %include "Core/Instrument/VarianceFunctions.h"
 
-%include "Core/Lattice/ILatticeOrientation.h"
-%include "Core/Lattice/ISelectionRule.h"
-%include "Core/Lattice/Lattice.h"
-%include "Core/Lattice/Lattice2D.h"
-%include "Core/Lattice/LatticeUtils.h"
+%include "Sample/Lattice/ILatticeOrientation.h"
+%include "Sample/Lattice/ISelectionRule.h"
+%include "Sample/Lattice/Lattice.h"
+%include "Sample/Lattice/Lattice2D.h"
+%include "Sample/Lattice/LatticeUtils.h"
 
 %include "Sample/Material/Material.h"
 %include "Sample/Material/MaterialFactoryFuncs.h"
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index 8e6b167128c..ece45446172 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -200,31 +200,6 @@ C++ includes: ParaCrystalBuilder.h
 ";
 
 
-// File: classBasicLattice.xml
-%feature("docstring") BasicLattice "";
-
-%feature("docstring")  BasicLattice::BasicLattice "BasicLattice::BasicLattice(double length1, double length2, double angle, double xi)
-";
-
-%feature("docstring")  BasicLattice::clone "BasicLattice * BasicLattice::clone() const
-";
-
-%feature("docstring")  BasicLattice::accept "void BasicLattice::accept(INodeVisitor *visitor) const final
-";
-
-%feature("docstring")  BasicLattice::length1 "virtual double BasicLattice::length1() const
-";
-
-%feature("docstring")  BasicLattice::length2 "virtual double BasicLattice::length2() const
-";
-
-%feature("docstring")  BasicLattice::latticeAngle "virtual double BasicLattice::latticeAngle() const
-";
-
-%feature("docstring")  BasicLattice::unitCellArea "double BasicLattice::unitCellArea() const
-";
-
-
 // File: classBeam.xml
 %feature("docstring") Beam "
 
@@ -670,46 +645,6 @@ C++ includes: RipplesBuilder.h
 %feature("docstring") ArrayUtils::CreateDataImpl "";
 
 
-// File: classCrystal.xml
-%feature("docstring") Crystal "
-
-A crystal structure with a  ParticleComposition as a basis. Used in  MesoCrystal, where it is given an outer shape.
-
-C++ includes: Crystal.h
-";
-
-%feature("docstring")  Crystal::Crystal "Crystal::Crystal(const IParticle &lattice_basis, const Lattice &lattice)
-";
-
-%feature("docstring")  Crystal::~Crystal "Crystal::~Crystal()
-";
-
-%feature("docstring")  Crystal::clone "Crystal * Crystal::clone() const override final
-";
-
-%feature("docstring")  Crystal::accept "void Crystal::accept(INodeVisitor *visitor) const override final
-";
-
-%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 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::setPositionVariance "void Crystal::setPositionVariance(double position_variance)
-";
-
-%feature("docstring")  Crystal::getChildren "std::vector< const INode * > Crystal::getChildren() const override final
-";
-
-
 // File: classCumulativeValue.xml
 %feature("docstring") CumulativeValue "
 
@@ -821,18 +756,6 @@ C++ includes: ParticleDistributionsBuilder.h
 ";
 
 
-// File: classDecouplingApproximationStrategy.xml
-%feature("docstring") DecouplingApproximationStrategy "
-
-Strategy class to compute the total scattering from a particle layout in the decoupling approximation.
-
-C++ includes: DecouplingApproximationStrategy.h
-";
-
-%feature("docstring")  DecouplingApproximationStrategy::DecouplingApproximationStrategy "DecouplingApproximationStrategy::DecouplingApproximationStrategy(SimulationOptions sim_params, bool polarized)
-";
-
-
 // File: classDelayedProgressCounter.xml
 %feature("docstring") DelayedProgressCounter "
 
@@ -1147,96 +1070,6 @@ returns true if has masks
 ";
 
 
-// File: classDistribution1DCauchySampler.xml
-%feature("docstring") Distribution1DCauchySampler "";
-
-%feature("docstring")  Distribution1DCauchySampler::Distribution1DCauchySampler "Distribution1DCauchySampler::Distribution1DCauchySampler(double lambda)
-";
-
-%feature("docstring")  Distribution1DCauchySampler::randomSample "double Distribution1DCauchySampler::randomSample() const final
-";
-
-
-// File: classDistribution1DCosineSampler.xml
-%feature("docstring") Distribution1DCosineSampler "";
-
-%feature("docstring")  Distribution1DCosineSampler::Distribution1DCosineSampler "Distribution1DCosineSampler::Distribution1DCosineSampler(double omega)
-";
-
-%feature("docstring")  Distribution1DCosineSampler::randomSample "double Distribution1DCosineSampler::randomSample() const final
-";
-
-
-// File: classDistribution1DGateSampler.xml
-%feature("docstring") Distribution1DGateSampler "";
-
-%feature("docstring")  Distribution1DGateSampler::Distribution1DGateSampler "Distribution1DGateSampler::Distribution1DGateSampler(double a, double b)
-";
-
-%feature("docstring")  Distribution1DGateSampler::randomSample "double Distribution1DGateSampler::randomSample() const final
-";
-
-
-// File: classDistribution1DGaussSampler.xml
-%feature("docstring") Distribution1DGaussSampler "";
-
-%feature("docstring")  Distribution1DGaussSampler::Distribution1DGaussSampler "Distribution1DGaussSampler::Distribution1DGaussSampler(double mean, double stddev)
-";
-
-%feature("docstring")  Distribution1DGaussSampler::randomSample "double Distribution1DGaussSampler::randomSample() const final
-";
-
-
-// File: classDistribution1DTriangleSampler.xml
-%feature("docstring") Distribution1DTriangleSampler "";
-
-%feature("docstring")  Distribution1DTriangleSampler::Distribution1DTriangleSampler "Distribution1DTriangleSampler::Distribution1DTriangleSampler(double omega)
-";
-
-%feature("docstring")  Distribution1DTriangleSampler::randomSample "double Distribution1DTriangleSampler::randomSample() const final
-";
-
-
-// File: classDistribution2DCauchySampler.xml
-%feature("docstring") Distribution2DCauchySampler "";
-
-%feature("docstring")  Distribution2DCauchySampler::Distribution2DCauchySampler "Distribution2DCauchySampler::Distribution2DCauchySampler(double omega_x, double omega_y)
-";
-
-%feature("docstring")  Distribution2DCauchySampler::randomSample "std::pair< double, double > Distribution2DCauchySampler::randomSample() const final
-";
-
-
-// File: classDistribution2DConeSampler.xml
-%feature("docstring") Distribution2DConeSampler "";
-
-%feature("docstring")  Distribution2DConeSampler::Distribution2DConeSampler "Distribution2DConeSampler::Distribution2DConeSampler(double omega_x, double omega_y)
-";
-
-%feature("docstring")  Distribution2DConeSampler::randomSample "std::pair< double, double > Distribution2DConeSampler::randomSample() const final
-";
-
-
-// File: classDistribution2DGateSampler.xml
-%feature("docstring") Distribution2DGateSampler "";
-
-%feature("docstring")  Distribution2DGateSampler::Distribution2DGateSampler "Distribution2DGateSampler::Distribution2DGateSampler(double omega_x, double omega_y)
-";
-
-%feature("docstring")  Distribution2DGateSampler::randomSample "std::pair< double, double > Distribution2DGateSampler::randomSample() const final
-";
-
-
-// File: classDistribution2DGaussSampler.xml
-%feature("docstring") Distribution2DGaussSampler "";
-
-%feature("docstring")  Distribution2DGaussSampler::Distribution2DGaussSampler "Distribution2DGaussSampler::Distribution2DGaussSampler(double omega_x, double omega_y)
-";
-
-%feature("docstring")  Distribution2DGaussSampler::randomSample "std::pair< double, double > Distribution2DGaussSampler::randomSample() const final
-";
-
-
 // File: classDWBAComputation.xml
 %feature("docstring") DWBAComputation "
 
@@ -1733,4796 +1566,1791 @@ Print python-formatted footprint definition.
 ";
 
 
-// File: classFormFactorCoherentPart.xml
-%feature("docstring") FormFactorCoherentPart "
+// File: classFormFactorComponents.xml
+%feature("docstring") FormFactorComponents "
 
-Information about single particle form factor and specular info of the embedding layer.
+Predefined form factors for functional tests.
 
-C++ includes: FormFactorCoherentPart.h
+C++ includes: SampleComponents.h
 ";
 
-%feature("docstring")  FormFactorCoherentPart::FormFactorCoherentPart "FormFactorCoherentPart::FormFactorCoherentPart(IFormFactor *p_ff)
+%feature("docstring")  FormFactorComponents::FormFactorComponents "FormFactorComponents::FormFactorComponents()
 ";
 
-%feature("docstring")  FormFactorCoherentPart::FormFactorCoherentPart "FormFactorCoherentPart::FormFactorCoherentPart(const FormFactorCoherentPart &other)
-";
 
-%feature("docstring")  FormFactorCoherentPart::FormFactorCoherentPart "FormFactorCoherentPart::FormFactorCoherentPart(FormFactorCoherentPart &&other)
-";
+// File: classFourierTransform.xml
+%feature("docstring") FourierTransform "
 
-%feature("docstring")  FormFactorCoherentPart::~FormFactorCoherentPart "FormFactorCoherentPart::~FormFactorCoherentPart()
-";
+Fourier transform of vectors (in 1D or 2D) using Fast Fourier Transform (fftw package).
 
-%feature("docstring")  FormFactorCoherentPart::evaluate "complex_t FormFactorCoherentPart::evaluate(const SimulationElement &sim_element) const
-";
+Usage: std::vector<double> signal, result;  FourierTransform ft; ft.fft(signal, result)
 
-%feature("docstring")  FormFactorCoherentPart::evaluatePol "Eigen::Matrix2cd FormFactorCoherentPart::evaluatePol(const SimulationElement &sim_element) const
-";
+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
 
-%feature("docstring")  FormFactorCoherentPart::setSpecularInfo "void FormFactorCoherentPart::setSpecularInfo(const IFresnelMap *p_fresnel_map, size_t layer_index)
+C++ includes: FourierTransform.h
 ";
 
-%feature("docstring")  FormFactorCoherentPart::radialExtension "double FormFactorCoherentPart::radialExtension() const
+%feature("docstring")  FourierTransform::FourierTransform "FourierTransform::FourierTransform()
 ";
 
+%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double1d_t &source, double1d_t &result)
 
-// File: classFormFactorCoherentSum.xml
-%feature("docstring") FormFactorCoherentSum "
-
-Information about particle form factor and abundance.
-
-C++ includes: FormFactorCoherentSum.h
+FT in 1D. 
 ";
 
-%feature("docstring")  FormFactorCoherentSum::FormFactorCoherentSum "FormFactorCoherentSum::FormFactorCoherentSum(double abundance)
-";
+%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double1d_t &result)
 
-%feature("docstring")  FormFactorCoherentSum::addCoherentPart "void FormFactorCoherentSum::addCoherentPart(const FormFactorCoherentPart &part)
+Shift low frequency to the center of 1D FT array. 
 ";
 
-%feature("docstring")  FormFactorCoherentSum::evaluate "complex_t FormFactorCoherentSum::evaluate(const SimulationElement &sim_element) const
-";
+%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double2d_t &source, double2d_t &result)
 
-%feature("docstring")  FormFactorCoherentSum::evaluatePol "Eigen::Matrix2cd FormFactorCoherentSum::evaluatePol(const SimulationElement &sim_element) const
+FT in 2D. 
 ";
 
-%feature("docstring")  FormFactorCoherentSum::relativeAbundance "double FormFactorCoherentSum::relativeAbundance() const
-";
+%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double2d_t &result)
 
-%feature("docstring")  FormFactorCoherentSum::scaleRelativeAbundance "void FormFactorCoherentSum::scaleRelativeAbundance(double total_abundance)
+Shift low frequency to the center of 2D FT array. 
 ";
 
-%feature("docstring")  FormFactorCoherentSum::radialExtension "double FormFactorCoherentSum::radialExtension() const
+%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: classFormFactorComponents.xml
-%feature("docstring") FormFactorComponents "
+// File: classFTDistribution2DComponents.xml
+%feature("docstring") FTDistribution2DComponents "
 
-Predefined form factors for functional tests.
+Predefined Fourier transformed distributions for functional tests.
 
 C++ includes: SampleComponents.h
 ";
 
-%feature("docstring")  FormFactorComponents::FormFactorComponents "FormFactorComponents::FormFactorComponents()
+%feature("docstring")  FTDistribution2DComponents::FTDistribution2DComponents "FTDistribution2DComponents::FTDistribution2DComponents()
 ";
 
 
-// File: classFormFactorCoreShell.xml
-%feature("docstring") FormFactorCoreShell "
-
-Form Factor for a core shell particle.
+// File: classGISASSimulation.xml
+%feature("docstring") GISASSimulation "
 
-Used by  ParticleCoreShell.
+Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
 
-C++ includes: FormFactorCoreShell.h
+C++ includes: GISASSimulation.h
 ";
 
-%feature("docstring")  FormFactorCoreShell::FormFactorCoreShell "FormFactorCoreShell::FormFactorCoreShell(IFormFactor *core, IFormFactor *shell)
+%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation()
 ";
 
-%feature("docstring")  FormFactorCoreShell::~FormFactorCoreShell "FormFactorCoreShell::~FormFactorCoreShell() override final
+%feature("docstring")  GISASSimulation::~GISASSimulation "GISASSimulation::~GISASSimulation()
 ";
 
-%feature("docstring")  FormFactorCoreShell::clone "FormFactorCoreShell * FormFactorCoreShell::clone() const override final
+%feature("docstring")  GISASSimulation::clone "GISASSimulation* GISASSimulation::clone() const override
 ";
 
-%feature("docstring")  FormFactorCoreShell::accept "void FormFactorCoreShell::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  GISASSimulation::accept "void GISASSimulation::accept(INodeVisitor *visitor) const override
 ";
 
-%feature("docstring")  FormFactorCoreShell::radialExtension "double FormFactorCoreShell::radialExtension() const override final
-";
+%feature("docstring")  GISASSimulation::prepareSimulation "void GISASSimulation::prepareSimulation() override
 
-%feature("docstring")  FormFactorCoreShell::bottomZ "double FormFactorCoreShell::bottomZ(const IRotation &rotation) const override final
+Put into a clean state for running a simulation. 
 ";
 
-%feature("docstring")  FormFactorCoreShell::topZ "double FormFactorCoreShell::topZ(const IRotation &rotation) const override final
-";
+%feature("docstring")  GISASSimulation::result "SimulationResult GISASSimulation::result() const override
 
-%feature("docstring")  FormFactorCoreShell::setAmbientMaterial "void FormFactorCoreShell::setAmbientMaterial(Material material) override final
+Returns the results of the simulation in a format that supports unit conversion and export to numpy arrays 
 ";
 
-%feature("docstring")  FormFactorCoreShell::evaluate "complex_t FormFactorCoreShell::evaluate(const WavevectorInfo &wavevectors) const override final
+%feature("docstring")  GISASSimulation::setBeamParameters "void GISASSimulation::setBeamParameters(double wavelength, double alpha_i, double phi_i)
+
+Sets beam parameters from here (forwarded to  Instrument) 
 ";
 
-%feature("docstring")  FormFactorCoreShell::evaluatePol "Eigen::Matrix2cd FormFactorCoreShell::evaluatePol(const WavevectorInfo &wavevectors) const override final
+%feature("docstring")  GISASSimulation::intensityMapSize "size_t GISASSimulation::intensityMapSize() const override
 
-Calculates and returns a polarized form factor calculation in DWBA. 
+Returns the total number of the intensity values in the simulation result. 
 ";
 
 
-// File: classFormFactorCrystal.xml
-%feature("docstring") FormFactorCrystal "
+// File: classGISASSpecularComputation.xml
+%feature("docstring") GISASSpecularComputation "
 
-The form factor of a  MesoCrystal.
+Computes the specular signal in the bin where q_parallel = 0. Used by  DWBAComputation.
 
-C++ includes: FormFactorCrystal.h
+C++ includes: GISASSpecularComputation.h
 ";
 
-%feature("docstring")  FormFactorCrystal::FormFactorCrystal "FormFactorCrystal::FormFactorCrystal(const Lattice &lattice, const IFormFactor &basis_form_factor, const IFormFactor &meso_form_factor, double position_variance=0.0)
+%feature("docstring")  GISASSpecularComputation::GISASSpecularComputation "GISASSpecularComputation::GISASSpecularComputation(const IFresnelMap *p_fresnel_map)
 ";
 
-%feature("docstring")  FormFactorCrystal::~FormFactorCrystal "FormFactorCrystal::~FormFactorCrystal() override final
+%feature("docstring")  GISASSpecularComputation::compute "void GISASSpecularComputation::compute(SimulationElement &elem) const
 ";
 
-%feature("docstring")  FormFactorCrystal::clone "FormFactorCrystal* FormFactorCrystal::clone() const override final
-";
 
-%feature("docstring")  FormFactorCrystal::accept "void FormFactorCrystal::accept(INodeVisitor *visitor) const override final
-";
+// File: classHardDiskBuilder.xml
+%feature("docstring") HardDiskBuilder "
 
-%feature("docstring")  FormFactorCrystal::setAmbientMaterial "void FormFactorCrystal::setAmbientMaterial(Material material) override
-";
+Builds sample: cylinders with hard disk Percus-Yevick interference.
 
-%feature("docstring")  FormFactorCrystal::volume "double FormFactorCrystal::volume() const override final
+C++ includes: PercusYevickBuilder.h
 ";
 
-%feature("docstring")  FormFactorCrystal::radialExtension "double FormFactorCrystal::radialExtension() const override final
+%feature("docstring")  HardDiskBuilder::buildSample "MultiLayer * HardDiskBuilder::buildSample() const
 ";
 
-%feature("docstring")  FormFactorCrystal::bottomZ "double FormFactorCrystal::bottomZ(const IRotation &rotation) const override
-";
 
-%feature("docstring")  FormFactorCrystal::topZ "double FormFactorCrystal::topZ(const IRotation &rotation) const override final
-";
+// File: classHexParaCrystalBuilder.xml
+%feature("docstring") HexParaCrystalBuilder "
+
+Builds sample: cylinders with 2DDL structure factor (IsGISAXS example #4).
 
-%feature("docstring")  FormFactorCrystal::evaluate "complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final
+C++ includes: ParaCrystalBuilder.h
 ";
 
-%feature("docstring")  FormFactorCrystal::evaluatePol "Eigen::Matrix2cd FormFactorCrystal::evaluatePol(const WavevectorInfo &wavevectors) const override final
+%feature("docstring")  HexParaCrystalBuilder::buildSample "MultiLayer * HexParaCrystalBuilder::buildSample() const
 ";
 
 
-// File: classFormFactorGaussSphere.xml
-%feature("docstring") FormFactorGaussSphere "
+// File: classHistogram1D.xml
+%feature("docstring") Histogram1D "
 
-The form factor of a Gaussian sphere.
+One dimensional histogram.
 
-C++ includes: FormFactorGauss.h
+C++ includes: Histogram1D.h
 ";
 
-%feature("docstring")  FormFactorGaussSphere::FormFactorGaussSphere "FormFactorGaussSphere::FormFactorGaussSphere(const std::vector< double > P)
-";
+%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(int nbinsx, double xlow, double xup)
 
-%feature("docstring")  FormFactorGaussSphere::FormFactorGaussSphere "FormFactorGaussSphere::FormFactorGaussSphere(double mean_radius)
-";
+Constructor for fix bin size histograms.
 
-%feature("docstring")  FormFactorGaussSphere::clone "FormFactorGaussSphere* FormFactorGaussSphere::clone() const override final
-";
+Parameters:
+-----------
 
-%feature("docstring")  FormFactorGaussSphere::accept "void FormFactorGaussSphere::accept(INodeVisitor *visitor) const override final
-";
+nbinsx: 
+number of bins
 
-%feature("docstring")  FormFactorGaussSphere::getMeanRadius "double FormFactorGaussSphere::getMeanRadius() const
-";
+xlow: 
+low edge of the first bin
 
-%feature("docstring")  FormFactorGaussSphere::radialExtension "double FormFactorGaussSphere::radialExtension() const override final
+xup: 
+upper edge of the last bin 
 ";
 
-%feature("docstring")  FormFactorGaussSphere::evaluate_for_q "complex_t FormFactorGaussSphere::evaluate_for_q(cvector_t q) const override final
-";
+%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(int nbinsx, const std::vector< double > &xbins)
 
+Constructor for variable bin size histograms.
 
-// File: classFormFactorSphereGaussianRadius.xml
-%feature("docstring") FormFactorSphereGaussianRadius "
+Parameters:
+-----------
 
-A sphere with gaussian radius distribution.
+nbinsx: 
+number of bins
 
-C++ includes: FormFactorSphereGaussianRadius.h
+xbins: 
+Array of size nbins+1 containing low-edges for each bin and upper edge of last bin. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(const std::vector< double > P)
-";
+%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(const IAxis &axis)
 
-%feature("docstring")  FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)
+Constructor for 1D histogram with custom axis. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final
-";
+%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(const OutputData< double > &data)
 
-%feature("docstring")  FormFactorSphereGaussianRadius::accept "void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final
+Constructor for 1D histograms from basic  OutputData object. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::radialExtension "double FormFactorSphereGaussianRadius::radialExtension() const override final
-";
+%feature("docstring")  Histogram1D::clone "Histogram1D * Histogram1D::clone() const
 
-%feature("docstring")  FormFactorSphereGaussianRadius::evaluate_for_q "complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final
+Returns clone of other histogram. 
 ";
 
+%feature("docstring")  Histogram1D::getRank "size_t Histogram1D::getRank() const
 
-// File: classFormFactorSphereLogNormalRadius.xml
-%feature("docstring") FormFactorSphereLogNormalRadius "
-
-A sphere with log normal radius distribution.
-
-C++ includes: FormFactorSphereLogNormalRadius.h
+Returns the number of histogram dimensions. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius "FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(const std::vector< double > P, size_t n_samples=0)
-";
+%feature("docstring")  Histogram1D::fill "int Histogram1D::fill(double x, double weight=1.0)
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius "FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples)
+Increment bin with abscissa x with a weight. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::clone "FormFactorSphereLogNormalRadius * FormFactorSphereLogNormalRadius::clone() const override final
-";
+%feature("docstring")  Histogram1D::getBinCenters "std::vector< double > Histogram1D::getBinCenters() const
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::accept "void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final
+returns vector of histogram bin centers 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::radialExtension "double FormFactorSphereLogNormalRadius::radialExtension() const override final
-";
+%feature("docstring")  Histogram1D::getBinValues "std::vector< double > Histogram1D::getBinValues() const
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::evaluate_for_q "complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final
+returns vector of bin content (the value accumulated by bins) 
 ";
 
+%feature("docstring")  Histogram1D::getBinErrors "std::vector< double > Histogram1D::getBinErrors() const
 
-// File: classFormFactorWeighted.xml
-%feature("docstring") FormFactorWeighted "
-
-Coherent sum of different scalar IFormFactor's with different weights.
-
-Used by  ParticleComposition. If same particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
-
-C++ includes: FormFactorWeighted.h
+returns vector of bin errors 
 ";
 
-%feature("docstring")  FormFactorWeighted::FormFactorWeighted "FormFactorWeighted::FormFactorWeighted()
+%feature("docstring")  Histogram1D::getBinCentersNumpy "PyObject * Histogram1D::getBinCentersNumpy() const
 ";
 
-%feature("docstring")  FormFactorWeighted::~FormFactorWeighted "FormFactorWeighted::~FormFactorWeighted() override final
+%feature("docstring")  Histogram1D::getBinValuesNumpy "PyObject * Histogram1D::getBinValuesNumpy() const
 ";
 
-%feature("docstring")  FormFactorWeighted::clone "FormFactorWeighted * FormFactorWeighted::clone() const override final
+%feature("docstring")  Histogram1D::getBinErrorsNumpy "PyObject * Histogram1D::getBinErrorsNumpy() const
 ";
 
-%feature("docstring")  FormFactorWeighted::accept "void FormFactorWeighted::accept(INodeVisitor *visitor) const override final
-";
+%feature("docstring")  Histogram1D::crop "Histogram1D * Histogram1D::crop(double xmin, double xmax)
 
-%feature("docstring")  FormFactorWeighted::radialExtension "double FormFactorWeighted::radialExtension() const override final
+Creates new histogram by applying crop on axis. 
 ";
 
-%feature("docstring")  FormFactorWeighted::bottomZ "double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final
-";
 
-%feature("docstring")  FormFactorWeighted::topZ "double FormFactorWeighted::topZ(const IRotation &rotation) const override final
-";
+// File: classHistogram2D.xml
+%feature("docstring") Histogram2D "
 
-%feature("docstring")  FormFactorWeighted::addFormFactor "void FormFactorWeighted::addFormFactor(const IFormFactor &form_factor, double weight=1.0)
-";
+Two dimensional histogram.
 
-%feature("docstring")  FormFactorWeighted::setAmbientMaterial "void FormFactorWeighted::setAmbientMaterial(Material material) override final
+C++ includes: Histogram2D.h
 ";
 
-%feature("docstring")  FormFactorWeighted::evaluate "complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final
-";
+%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(int nbinsx, double xlow, double xup, int nbinsy, double ylow, double yup)
 
-%feature("docstring")  FormFactorWeighted::evaluatePol "Eigen::Matrix2cd FormFactorWeighted::evaluatePol(const WavevectorInfo &wavevectors) const override final
+Constructor for fix bin size histograms.
 
-Calculates and returns a polarized form factor calculation in DWBA. 
-";
+Parameters:
+-----------
 
+nbinsx: 
+number of bins on X-axis
 
-// File: classFourierTransform.xml
-%feature("docstring") FourierTransform "
+xlow: 
+low edge of the first bin of X-axis
 
-Fourier transform of vectors (in 1D or 2D) using Fast Fourier Transform (fftw package).
+xup: 
+upper edge of the last bin of X-axis
 
-Usage: std::vector<double> signal, result;  FourierTransform ft; ft.fft(signal, result)
+nbinsy: 
+number of bins on Y axis
 
-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
+ylow: 
+low edge of the first bin of Y-axis
 
-C++ includes: FourierTransform.h
+yup: 
+upper edge of the last bin of Y-axis 
 ";
 
-%feature("docstring")  FourierTransform::FourierTransform "FourierTransform::FourierTransform()
-";
+%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(int nbinsx, const std::vector< double > &xbins, int nbinsy, const std::vector< double > &ybins)
 
-%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double1d_t &source, double1d_t &result)
+Constructor for variable bin size histograms.
 
-FT in 1D. 
-";
+Parameters:
+-----------
 
-%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double1d_t &result)
+nbinsx: 
+number of bins on X-axis
 
-Shift low frequency to the center of 1D FT array. 
-";
+xbins: 
+Array of size nbins+1 containing low-edges for each bin and upper edge of last bin.
 
-%feature("docstring")  FourierTransform::fft "void FourierTransform::fft(const double2d_t &source, double2d_t &result)
+nbinsy: 
+number of bins on Y-axis
 
-FT in 2D. 
+ybins: 
+Array of size nbins+1 containing low-edges for each bin and upper edge of last bin. 
 ";
 
-%feature("docstring")  FourierTransform::fftshift "void FourierTransform::fftshift(double2d_t &result)
+%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(const IAxis &axis_x, const IAxis &axis_y)
 
-Shift low frequency to the center of 2D FT array. 
+Constructor for 2D histogram with custom axes. 
 ";
 
-%feature("docstring")  FourierTransform::init "void FourierTransform::init(int h_src, int w_src)
+%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(const OutputData< double > &data)
 
-prepare arrays for 2D Fourier Transformation (FT) of the given vector 
+Constructor for 2D histograms from basic  OutputData object. 
 ";
 
+%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(std::vector< std::vector< double >> data)
 
-// File: classFTDecayFunction1DCauchy.xml
-%feature("docstring") FTDecayFunction1DCauchy "
+Constructor for 2D histograms from numpy array (thanks to swig) 
+";
 
-One-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-|x|/decay_length) in real space.
+%feature("docstring")  Histogram2D::clone "Histogram2D * Histogram2D::clone() const
 
-C++ includes: FTDecay1D.h
+Returns clone of other histogram. 
 ";
 
-%feature("docstring")  FTDecayFunction1DCauchy::FTDecayFunction1DCauchy "FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(const std::vector< double > P)
-";
+%feature("docstring")  Histogram2D::getRank "size_t Histogram2D::getRank() const
 
-%feature("docstring")  FTDecayFunction1DCauchy::FTDecayFunction1DCauchy "FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
+Returns the number of histogram dimensions. 
 ";
 
-%feature("docstring")  FTDecayFunction1DCauchy::clone "FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
-";
+%feature("docstring")  Histogram2D::fill "int Histogram2D::fill(double x, double y, double weight=1.0)
 
-%feature("docstring")  FTDecayFunction1DCauchy::accept "void FTDecayFunction1DCauchy::accept(INodeVisitor *visitor) const final
+Increment bin with abscissa x and ordinate y with a weight. 
 ";
 
-%feature("docstring")  FTDecayFunction1DCauchy::evaluate "double FTDecayFunction1DCauchy::evaluate(double q) const final
+%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX()
+
+Project a 2D histogram into 1D histogram along X. The projection is made from all bins along y-axis. 
 ";
 
+%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX(double yvalue)
 
-// File: classFTDecayFunction1DGauss.xml
-%feature("docstring") FTDecayFunction1DGauss "
+Project a 2D histogram into 1D histogram along X. The projection is made from the y-bin closest to given ordinate yvalue.
 
-One-dimensional Gauss decay function in reciprocal space; corresponds to exp[-x^2/(2*decay_length^2)] in real space.
+Parameters:
+-----------
 
-C++ includes: FTDecay1D.h
+yvalue: 
+the value on y-axis at which projection is taken 
 ";
 
-%feature("docstring")  FTDecayFunction1DGauss::FTDecayFunction1DGauss "FTDecayFunction1DGauss::FTDecayFunction1DGauss(const std::vector< double > P)
-";
+%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX(double ylow, double yup)
 
-%feature("docstring")  FTDecayFunction1DGauss::FTDecayFunction1DGauss "FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
-";
+Project a 2D histogram into 1D histogram along X. The projection is made from all y-bins corresponding to ordinate between ylow and yup.
 
-%feature("docstring")  FTDecayFunction1DGauss::clone "FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
-";
+Parameters:
+-----------
 
-%feature("docstring")  FTDecayFunction1DGauss::accept "void FTDecayFunction1DGauss::accept(INodeVisitor *visitor) const final
-";
+ylow: 
+lower edje on y-axis
 
-%feature("docstring")  FTDecayFunction1DGauss::evaluate "double FTDecayFunction1DGauss::evaluate(double q) const final
+yup: 
+upper edje on y-axis 
 ";
 
+%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY()
 
-// File: classFTDecayFunction1DTriangle.xml
-%feature("docstring") FTDecayFunction1DTriangle "
-
-One-dimensional triangle decay function in reciprocal space; corresponds to 1-|x|/decay_length if |x|<decay_length (and 0 otherwise) in real space.
-
-C++ includes: FTDecay1D.h
+Project a 2D histogram into 1D histogram along Y. The projection is made from all bins along x-axis. 
 ";
 
-%feature("docstring")  FTDecayFunction1DTriangle::FTDecayFunction1DTriangle "FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(const std::vector< double > P)
-";
+%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY(double xvalue)
 
-%feature("docstring")  FTDecayFunction1DTriangle::FTDecayFunction1DTriangle "FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
-";
+Project a 2D histogram into 1D histogram along Y. The projection is made from the x-bin closest to given abscissa xvalue.
 
-%feature("docstring")  FTDecayFunction1DTriangle::clone "FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
-";
+Parameters:
+-----------
 
-%feature("docstring")  FTDecayFunction1DTriangle::accept "void FTDecayFunction1DTriangle::accept(INodeVisitor *visitor) const final
+xvalue: 
+the value on x-axis at which projection is taken 
 ";
 
-%feature("docstring")  FTDecayFunction1DTriangle::evaluate "double FTDecayFunction1DTriangle::evaluate(double q) const final
-";
+%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY(double xlow, double xup)
 
+Project a 2D histogram into 1D histogram along Y. The projection is made from all x-bins corresponding to abscissa between xlow and xup.
 
-// File: classFTDecayFunction1DVoigt.xml
-%feature("docstring") FTDecayFunction1DVoigt "
+Parameters:
+-----------
 
-One-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*Cauchy.
+xlow: 
+lower edje on x-axis
 
-C++ includes: FTDecay1D.h
+xup: 
+upper edje on x-axis 
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::FTDecayFunction1DVoigt "FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(const std::vector< double > P)
-";
+%feature("docstring")  Histogram2D::crop "Histogram2D * Histogram2D::crop(double xmin, double ymin, double xmax, double ymax)
 
-%feature("docstring")  FTDecayFunction1DVoigt::FTDecayFunction1DVoigt "FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)
+Creates new histogram by applying rectangular clip. 
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::clone "FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
-";
+%feature("docstring")  Histogram2D::setContent "void Histogram2D::setContent(const std::vector< std::vector< double >> &data)
 
-%feature("docstring")  FTDecayFunction1DVoigt::accept "void FTDecayFunction1DVoigt::accept(INodeVisitor *visitor) const final
+Sets the values in histograms channels from numpy array,. 
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::evaluate "double FTDecayFunction1DVoigt::evaluate(double q) const final
-";
+%feature("docstring")  Histogram2D::addContent "void Histogram2D::addContent(const std::vector< std::vector< double >> &data)
 
-%feature("docstring")  FTDecayFunction1DVoigt::eEta "double FTDecayFunction1DVoigt::eEta() const
+Add to values in histograms channels from numpy array,. 
 ";
 
 
-// File: classFTDecayFunction2DCauchy.xml
-%feature("docstring") FTDecayFunction2DCauchy "
+// File: classHomogeneousMultilayerBuilder.xml
+%feature("docstring") HomogeneousMultilayerBuilder "
 
-Two-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-r) in real space, with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
+Builds a sample with 10 interchanging homogeneous layers of Ti and Ni on silicone substrate. Ti is 70 angstroms thick, Ni is 30 angstroms thick. No absorption, no roughness, target wavelength is 1.54 angstroms.
 
-C++ includes: FTDecay2D.h
+C++ includes: HomogeneousMultilayerBuilder.h
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::FTDecayFunction2DCauchy "FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(const std::vector< double > P)
+%feature("docstring")  HomogeneousMultilayerBuilder::buildSample "MultiLayer * HomogeneousMultilayerBuilder::buildSample() const
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::FTDecayFunction2DCauchy "FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma)
+
+// File: classIBackground.xml
+%feature("docstring") IBackground "
+
+Interface for a simulating the background signal
+
+C++ includes: IBackground.h
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::clone "FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
+%feature("docstring")  IBackground::IBackground "IBackground::IBackground(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::accept "void FTDecayFunction2DCauchy::accept(INodeVisitor *visitor) const final
+%feature("docstring")  IBackground::~IBackground "IBackground::~IBackground()
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::evaluate "double FTDecayFunction2DCauchy::evaluate(double qx, double qy) const final
+%feature("docstring")  IBackground::clone "virtual IBackground* IBackground::clone() const =0
+";
 
-evaluate Fourier transformed decay function for q in X,Y coordinates 
+%feature("docstring")  IBackground::addBackGround "virtual double IBackground::addBackGround(double element) const =0
 ";
 
 
-// File: classFTDecayFunction2DGauss.xml
-%feature("docstring") FTDecayFunction2DGauss "
+// File: classIChiSquaredModule.xml
+%feature("docstring") IChiSquaredModule "
 
-Two-dimensional Gauss decay function in reciprocal space; corresponds to exp(-r^2/2) in real space, with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
+Interface residual calculations.
 
-C++ includes: FTDecay2D.h
+C++ includes: IChiSquaredModule.h
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::FTDecayFunction2DGauss "FTDecayFunction2DGauss::FTDecayFunction2DGauss(const std::vector< double > P)
+%feature("docstring")  IChiSquaredModule::IChiSquaredModule "IChiSquaredModule::IChiSquaredModule()
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::FTDecayFunction2DGauss "FTDecayFunction2DGauss::FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma)
+%feature("docstring")  IChiSquaredModule::~IChiSquaredModule "IChiSquaredModule::~IChiSquaredModule()
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::clone "FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
-";
+%feature("docstring")  IChiSquaredModule::clone "virtual IChiSquaredModule* IChiSquaredModule::clone() const =0
 
-%feature("docstring")  FTDecayFunction2DGauss::accept "void FTDecayFunction2DGauss::accept(INodeVisitor *visitor) const final
+clone method 
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::evaluate "double FTDecayFunction2DGauss::evaluate(double qx, double qy) const final
+%feature("docstring")  IChiSquaredModule::varianceFunction "const IVarianceFunction * IChiSquaredModule::varianceFunction() const
 
-evaluate Fourier transformed decay function for q in X,Y coordinates 
+Returns squared function. 
 ";
 
+%feature("docstring")  IChiSquaredModule::setVarianceFunction "void IChiSquaredModule::setVarianceFunction(const IVarianceFunction &variance_function)
 
-// File: classFTDecayFunction2DVoigt.xml
-%feature("docstring") FTDecayFunction2DVoigt "
-
-Two-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*Cauchy.
-
-C++ includes: FTDecay2D.h
+Sets squared function. 
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::FTDecayFunction2DVoigt "FTDecayFunction2DVoigt::FTDecayFunction2DVoigt(const std::vector< double > P)
-";
+%feature("docstring")  IChiSquaredModule::getIntensityFunction "const IIntensityFunction * IChiSquaredModule::getIntensityFunction() const
 
-%feature("docstring")  FTDecayFunction2DVoigt::FTDecayFunction2DVoigt "FTDecayFunction2DVoigt::FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta)
+Returns data rescaler. 
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::clone "FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
-";
+%feature("docstring")  IChiSquaredModule::setIntensityFunction "void IChiSquaredModule::setIntensityFunction(const IIntensityFunction &intensity_function)
 
-%feature("docstring")  FTDecayFunction2DVoigt::accept "void FTDecayFunction2DVoigt::accept(INodeVisitor *visitor) const final
+Sets data rescaler. 
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::evaluate "double FTDecayFunction2DVoigt::evaluate(double qx, double qy) const final
-
-evaluate Fourier transformed decay function for q in X,Y coordinates 
+%feature("docstring")  IChiSquaredModule::residual "virtual double IChiSquaredModule::residual(double a, double b, double weight)=0
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::eta "double FTDecayFunction2DVoigt::eta() const
-";
 
+// File: classIComputation.xml
+%feature("docstring") IComputation "
+
+Interface for a single-threaded computation with given range of SimulationElements and  ProgressHandler.
 
-// File: classFTDistribution1DCauchy.xml
-%feature("docstring") FTDistribution1DCauchy "
+Controlled by the multi-threading machinery in Simulation::runSingleSimulation().
 
-Exponential  IFTDistribution1D exp(-|omega*x|); its Fourier transform evaluate(q) is a Cauchy-Lorentzian starting at evaluate(0)=1.
+C++ includes: IComputation.h
+";
 
-C++ includes: FTDistributions1D.h
+%feature("docstring")  IComputation::IComputation "IComputation::IComputation(const MultiLayer &sample, const SimulationOptions &options, ProgressHandler &progress)
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::FTDistribution1DCauchy "FTDistribution1DCauchy::FTDistribution1DCauchy(const std::vector< double > P)
+%feature("docstring")  IComputation::~IComputation "IComputation::~IComputation()
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::FTDistribution1DCauchy "FTDistribution1DCauchy::FTDistribution1DCauchy(double omega)
+%feature("docstring")  IComputation::run "void IComputation::run()
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::clone "FTDistribution1DCauchy * FTDistribution1DCauchy::clone() const override final
+%feature("docstring")  IComputation::isCompleted "bool IComputation::isCompleted() const
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::accept "void FTDistribution1DCauchy::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  IComputation::errorMessage "std::string IComputation::errorMessage() const
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::evaluate "double FTDistribution1DCauchy::evaluate(double q) const override final
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-";
+// File: classIDetector.xml
+%feature("docstring") IDetector "
 
-%feature("docstring")  FTDistribution1DCauchy::qSecondDerivative "double FTDistribution1DCauchy::qSecondDerivative() const override final
+Abstract detector interface.
 
-Returns the negative of the second order derivative in q space around q=0. 
+C++ includes: IDetector.h
 ";
 
-%feature("docstring")  FTDistribution1DCauchy::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DCauchy::createSampler() const override final
+%feature("docstring")  IDetector::IDetector "IDetector::IDetector()
 ";
 
+%feature("docstring")  IDetector::clone "IDetector* IDetector::clone() const override=0
+";
 
-// File: classFTDistribution1DCosine.xml
-%feature("docstring") FTDistribution1DCosine "
+%feature("docstring")  IDetector::~IDetector "IDetector::~IDetector()
+";
 
-IFTDistribution1D consisting of one cosine wave [1+cos(pi*x/omega) if |x|<omega, and 0 otherwise]; its Fourier transform evaluate(q) starts at evaluate(0)=1.
+%feature("docstring")  IDetector::init "virtual void IDetector::init(const Beam &)
 
-C++ includes: FTDistributions1D.h
+Inits detector with the beam settings. 
 ";
 
-%feature("docstring")  FTDistribution1DCosine::FTDistribution1DCosine "FTDistribution1DCosine::FTDistribution1DCosine(const std::vector< double > P)
+%feature("docstring")  IDetector::addAxis "void IDetector::addAxis(const IAxis &axis)
 ";
 
-%feature("docstring")  FTDistribution1DCosine::FTDistribution1DCosine "FTDistribution1DCosine::FTDistribution1DCosine(double omega)
+%feature("docstring")  IDetector::getAxis "const IAxis & IDetector::getAxis(size_t index) const
 ";
 
-%feature("docstring")  FTDistribution1DCosine::clone "FTDistribution1DCosine * FTDistribution1DCosine::clone() const override final
-";
+%feature("docstring")  IDetector::dimension "size_t IDetector::dimension() const
 
-%feature("docstring")  FTDistribution1DCosine::accept "void FTDistribution1DCosine::accept(INodeVisitor *visitor) const override final
+Returns actual dimensionality of the detector (number of defined axes) 
 ";
 
-%feature("docstring")  FTDistribution1DCosine::evaluate "double FTDistribution1DCosine::evaluate(double q) const override final
+%feature("docstring")  IDetector::axisBinIndex "size_t IDetector::axisBinIndex(size_t index, size_t selected_axis) const
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
+Calculate axis index for given global index. 
 ";
 
-%feature("docstring")  FTDistribution1DCosine::qSecondDerivative "double FTDistribution1DCosine::qSecondDerivative() const override final
+%feature("docstring")  IDetector::totalSize "size_t IDetector::totalSize() const
 
-Returns the negative of the second order derivative in q space around q=0. 
+Returns total number of pixels. 
 ";
 
-%feature("docstring")  FTDistribution1DCosine::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DCosine::createSampler() const override final
+%feature("docstring")  IDetector::detectorMask "virtual const DetectorMask* IDetector::detectorMask() const =0
+
+Returns detector masks container. 
 ";
 
+%feature("docstring")  IDetector::setAnalyzerProperties "void IDetector::setAnalyzerProperties(const kvector_t direction, double efficiency, double total_transmission)
 
-// File: classFTDistribution1DGate.xml
-%feature("docstring") FTDistribution1DGate "
+Sets the polarization analyzer characteristics of the detector. 
+";
 
-Square gate  IFTDistribution1D; its Fourier transform evaluate(q) is a sinc function starting at evaluate(0)=1.
+%feature("docstring")  IDetector::setDetectorResolution "void IDetector::setDetectorResolution(const IDetectorResolution &p_detector_resolution)
 
-C++ includes: FTDistributions1D.h
+Sets the detector resolution. 
 ";
 
-%feature("docstring")  FTDistribution1DGate::FTDistribution1DGate "FTDistribution1DGate::FTDistribution1DGate(const std::vector< double > P)
+%feature("docstring")  IDetector::setResolutionFunction "void IDetector::setResolutionFunction(const IResolutionFunction2D &resFunc)
 ";
 
-%feature("docstring")  FTDistribution1DGate::FTDistribution1DGate "FTDistribution1DGate::FTDistribution1DGate(double omega)
-";
+%feature("docstring")  IDetector::applyDetectorResolution "void IDetector::applyDetectorResolution(OutputData< double > *p_intensity_map) const
 
-%feature("docstring")  FTDistribution1DGate::clone "FTDistribution1DGate * FTDistribution1DGate::clone() const override final
+Applies the detector resolution to the given intensity maps. 
 ";
 
-%feature("docstring")  FTDistribution1DGate::accept "void FTDistribution1DGate::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  IDetector::removeDetectorResolution "void IDetector::removeDetectorResolution()
+
+Removes detector resolution function. 
 ";
 
-%feature("docstring")  FTDistribution1DGate::evaluate "double FTDistribution1DGate::evaluate(double q) const override final
+%feature("docstring")  IDetector::detectorResolution "const IDetectorResolution * IDetector::detectorResolution() const
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
+Returns a pointer to detector resolution object. 
 ";
 
-%feature("docstring")  FTDistribution1DGate::qSecondDerivative "double FTDistribution1DGate::qSecondDerivative() const override final
+%feature("docstring")  IDetector::createDetectorMap "std::unique_ptr< OutputData< double > > IDetector::createDetectorMap() const
 
-Returns the negative of the second order derivative in q space around q=0. 
+Returns empty detector map in given axes units. 
 ";
 
-%feature("docstring")  FTDistribution1DGate::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DGate::createSampler() const override final
+%feature("docstring")  IDetector::regionOfInterest "virtual const RegionOfInterest* IDetector::regionOfInterest() const =0
+
+Returns region of interest if exists. 
 ";
 
+%feature("docstring")  IDetector::resetRegionOfInterest "virtual void IDetector::resetRegionOfInterest()=0
 
-// File: classFTDistribution1DGauss.xml
-%feature("docstring") FTDistribution1DGauss "
+Resets region of interest making whole detector plane available for the simulation. 
+";
 
-Gaussian  IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1.
+%feature("docstring")  IDetector::detectionProperties "const DetectionProperties& IDetector::detectionProperties() const
 
-C++ includes: FTDistributions1D.h
+Returns detection properties. 
 ";
 
-%feature("docstring")  FTDistribution1DGauss::FTDistribution1DGauss "FTDistribution1DGauss::FTDistribution1DGauss(const std::vector< double > P)
-";
+%feature("docstring")  IDetector::createDetectorIntensity "OutputData< double > * IDetector::createDetectorIntensity(const std::vector< SimulationElement > &elements) const
 
-%feature("docstring")  FTDistribution1DGauss::FTDistribution1DGauss "FTDistribution1DGauss::FTDistribution1DGauss(double omega)
+Returns new intensity map with detector resolution applied. Map will be cropped to ROI if ROI is present. 
 ";
 
-%feature("docstring")  FTDistribution1DGauss::clone "FTDistribution1DGauss * FTDistribution1DGauss::clone() const override final
-";
+%feature("docstring")  IDetector::defaultAxesUnits "virtual Axes::Units IDetector::defaultAxesUnits() const
 
-%feature("docstring")  FTDistribution1DGauss::accept "void FTDistribution1DGauss::accept(INodeVisitor *visitor) const override final
+Return default axes units. 
 ";
 
-%feature("docstring")  FTDistribution1DGauss::evaluate "double FTDistribution1DGauss::evaluate(double q) const override final
+%feature("docstring")  IDetector::numberOfSimulationElements "size_t IDetector::numberOfSimulationElements() const
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
+Returns number of simulation elements. 
 ";
 
-%feature("docstring")  FTDistribution1DGauss::qSecondDerivative "double FTDistribution1DGauss::qSecondDerivative() const override final
-
-Returns the negative of the second order derivative in q space around q=0. 
+%feature("docstring")  IDetector::getChildren "std::vector< const INode * > IDetector::getChildren() const override
 ";
 
-%feature("docstring")  FTDistribution1DGauss::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DGauss::createSampler() const override final
+%feature("docstring")  IDetector::iterate "void IDetector::iterate(std::function< void(const_iterator)> func, bool visit_masks=false) const
 ";
 
 
-// File: classFTDistribution1DTriangle.xml
-%feature("docstring") FTDistribution1DTriangle "
+// File: classIDetector2D.xml
+%feature("docstring") IDetector2D "
 
-Triangle  IFTDistribution1D [1-|x|/omega if |x|<omega, and 0 otherwise]; its Fourier transform evaluate(q) is a squared sinc function starting at evaluate(0)=1.
+Abstract 2D detector interface.
 
-C++ includes: FTDistributions1D.h
+C++ includes: IDetector2D.h
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::FTDistribution1DTriangle "FTDistribution1DTriangle::FTDistribution1DTriangle(const std::vector< double > P)
+%feature("docstring")  IDetector2D::IDetector2D "IDetector2D::IDetector2D()
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::FTDistribution1DTriangle "FTDistribution1DTriangle::FTDistribution1DTriangle(double omega)
+%feature("docstring")  IDetector2D::clone "IDetector2D* IDetector2D::clone() const override=0
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::clone "FTDistribution1DTriangle * FTDistribution1DTriangle::clone() const override final
+%feature("docstring")  IDetector2D::~IDetector2D "IDetector2D::~IDetector2D()
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::accept "void FTDistribution1DTriangle::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  IDetector2D::setDetectorParameters "void IDetector2D::setDetectorParameters(size_t n_x, double x_min, double x_max, size_t n_y, double y_min, double y_max)
+
+Sets detector parameters using angle ranges. 
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::evaluate "double FTDistribution1DTriangle::evaluate(double q) const override final
+%feature("docstring")  IDetector2D::removeMasks "void IDetector2D::removeMasks()
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
+Removes all masks from the detector. 
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::qSecondDerivative "double FTDistribution1DTriangle::qSecondDerivative() const override final
+%feature("docstring")  IDetector2D::detectorMask "const DetectorMask * IDetector2D::detectorMask() const override
 
-Returns the negative of the second order derivative in q space around q=0. 
+Returns detector masks container. 
 ";
 
-%feature("docstring")  FTDistribution1DTriangle::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DTriangle::createSampler() const override final
-";
+%feature("docstring")  IDetector2D::addMask "void IDetector2D::addMask(const IShape2D &shape, bool mask_value=true)
 
+Adds mask of given shape to the stack of detector masks. The mask value 'true' means that the channel will be excluded from the simulation. The mask which is added last has priority.
 
-// File: classFTDistribution1DVoigt.xml
-%feature("docstring") FTDistribution1DVoigt "
+Parameters:
+-----------
 
-IFTDistribution1D that provides a Fourier transform evaluate(q) in form of a pseudo-Voigt decay function eta*Gauss + (1-eta)*Cauchy, with both components starting at 1 for q=0.
+shape: 
+The shape of mask (Rectangle, Polygon, Line, Ellipse)
 
-C++ includes: FTDistributions1D.h
+mask_value: 
+The value of mask 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::FTDistribution1DVoigt "FTDistribution1DVoigt::FTDistribution1DVoigt(const std::vector< double > P)
-";
+%feature("docstring")  IDetector2D::maskAll "void IDetector2D::maskAll()
 
-%feature("docstring")  FTDistribution1DVoigt::FTDistribution1DVoigt "FTDistribution1DVoigt::FTDistribution1DVoigt(double omega, double eta)
+Put the mask for all detector channels (i.e. exclude whole detector from the analysis) 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::clone "FTDistribution1DVoigt * FTDistribution1DVoigt::clone() const override final
-";
+%feature("docstring")  IDetector2D::regionOfInterest "const RegionOfInterest * IDetector2D::regionOfInterest() const override
 
-%feature("docstring")  FTDistribution1DVoigt::accept "void FTDistribution1DVoigt::accept(INodeVisitor *visitor) const override final
+Returns region of interest if exists. 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::evaluate "double FTDistribution1DVoigt::evaluate(double q) const override final
+%feature("docstring")  IDetector2D::setRegionOfInterest "void IDetector2D::setRegionOfInterest(double xlow, double ylow, double xup, double yup)
 
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-";
-
-%feature("docstring")  FTDistribution1DVoigt::eta "double FTDistribution1DVoigt::eta() const
+Sets rectangular region of interest with lower left and upper right corners defined. 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::qSecondDerivative "double FTDistribution1DVoigt::qSecondDerivative() const override final
+%feature("docstring")  IDetector2D::resetRegionOfInterest "void IDetector2D::resetRegionOfInterest() override
 
-Returns the negative of the second order derivative in q space around q=0. 
+Resets region of interest making whole detector plane available for the simulation. 
 ";
 
-%feature("docstring")  FTDistribution1DVoigt::createSampler "std::unique_ptr< IDistribution1DSampler > FTDistribution1DVoigt::createSampler() const override final
+%feature("docstring")  IDetector2D::active_indices "std::vector< size_t > IDetector2D::active_indices() const
+
+Returns vector of unmasked detector indices. 
 ";
 
+%feature("docstring")  IDetector2D::createPixel "virtual IPixel* IDetector2D::createPixel(size_t index) const =0
 
-// File: classFTDistribution2DCauchy.xml
-%feature("docstring") FTDistribution2DCauchy "
+Creates an IPixel for the given  OutputData object and index. 
+";
 
-Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real space, with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
+%feature("docstring")  IDetector2D::indexOfSpecular "virtual size_t IDetector2D::indexOfSpecular(const Beam &beam) const =0
 
-C++ includes: FTDistributions2D.h
+Returns index of pixel that contains the specular wavevector. If no pixel contains this specular wavevector, the number of pixels is returned. This corresponds to an overflow index. 
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::FTDistribution2DCauchy "FTDistribution2DCauchy::FTDistribution2DCauchy(const std::vector< double > P)
+%feature("docstring")  IDetector2D::createContext "std::unique_ptr< DetectorContext > IDetector2D::createContext() const
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::FTDistribution2DCauchy "FTDistribution2DCauchy::FTDistribution2DCauchy(double omega_x, double omega_y, double gamma)
+
+// File: classIDetectorResolution.xml
+%feature("docstring") IDetectorResolution "
+
+Interface for detector resolution algorithms
+
+C++ includes: IDetectorResolution.h
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::clone "FTDistribution2DCauchy * FTDistribution2DCauchy::clone() const final
+%feature("docstring")  IDetectorResolution::~IDetectorResolution "virtual IDetectorResolution::~IDetectorResolution()
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::accept "void FTDistribution2DCauchy::accept(INodeVisitor *visitor) const final
+%feature("docstring")  IDetectorResolution::applyDetectorResolution "virtual void IDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const =0
+
+Apply the resolution function to the intensity data. 
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::evaluate "double FTDistribution2DCauchy::evaluate(double qx, double qy) const final
+%feature("docstring")  IDetectorResolution::applyDetectorResolutionPol "void IDetectorResolution::applyDetectorResolutionPol(OutputData< Eigen::Matrix2d > *p_matrix_intensity) const
 
-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 
+Applies the detector resolution to the matrix-valued intensity data. 
 ";
 
-%feature("docstring")  FTDistribution2DCauchy::createSampler "std::unique_ptr< IDistribution2DSampler > FTDistribution2DCauchy::createSampler() const final
+%feature("docstring")  IDetectorResolution::clone "virtual IDetectorResolution* IDetectorResolution::clone() const =0
 ";
 
 
-// File: classFTDistribution2DComponents.xml
-%feature("docstring") FTDistribution2DComponents "
+// File: classIFootprintFactor.xml
+%feature("docstring") IFootprintFactor "
 
-Predefined Fourier transformed distributions for functional tests.
+Abstract base for classes that calculate the beam footprint factor
 
-C++ includes: SampleComponents.h
+C++ includes: IFootprintFactor.h
 ";
 
-%feature("docstring")  FTDistribution2DComponents::FTDistribution2DComponents "FTDistribution2DComponents::FTDistribution2DComponents()
+%feature("docstring")  IFootprintFactor::IFootprintFactor "IFootprintFactor::IFootprintFactor(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-
-// File: classFTDistribution2DCone.xml
-%feature("docstring") FTDistribution2DCone "
-
-Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in real space with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
-
-C++ includes: FTDistributions2D.h
+%feature("docstring")  IFootprintFactor::IFootprintFactor "IFootprintFactor::IFootprintFactor()=delete
 ";
 
-%feature("docstring")  FTDistribution2DCone::FTDistribution2DCone "FTDistribution2DCone::FTDistribution2DCone(const std::vector< double > P)
+%feature("docstring")  IFootprintFactor::~IFootprintFactor "IFootprintFactor::~IFootprintFactor()
 ";
 
-%feature("docstring")  FTDistribution2DCone::FTDistribution2DCone "FTDistribution2DCone::FTDistribution2DCone(double omega_x, double omega_y, double gamma)
+%feature("docstring")  IFootprintFactor::clone "virtual IFootprintFactor* IFootprintFactor::clone() const =0
 ";
 
-%feature("docstring")  FTDistribution2DCone::clone "FTDistribution2DCone * FTDistribution2DCone::clone() const final
+%feature("docstring")  IFootprintFactor::setWidthRatio "void IFootprintFactor::setWidthRatio(double width_ratio)
 ";
 
-%feature("docstring")  FTDistribution2DCone::accept "void FTDistribution2DCone::accept(INodeVisitor *visitor) const final
+%feature("docstring")  IFootprintFactor::widthRatio "double IFootprintFactor::widthRatio() const
 ";
 
-%feature("docstring")  FTDistribution2DCone::evaluate "double FTDistribution2DCone::evaluate(double qx, double qy) const final
+%feature("docstring")  IFootprintFactor::calculate "virtual double IFootprintFactor::calculate(double alpha) const =0
 
-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 
+Calculate footprint correction coefficient from the beam incident angle  alpha. 
 ";
 
-%feature("docstring")  FTDistribution2DCone::createSampler "std::unique_ptr< IDistribution2DSampler > FTDistribution2DCone::createSampler() const final
+%feature("docstring")  IFootprintFactor::print "virtual std::string IFootprintFactor::print() const =0
+
+Print python-formatted footprint definition. 
 ";
 
 
-// File: classFTDistribution2DGate.xml
-%feature("docstring") FTDistribution2DGate "
+// File: classIHistogram.xml
+%feature("docstring") IHistogram "
 
-Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 otherwise) in real space, with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
+Base class for 1D and 2D histograms holding values of double type.
 
-C++ includes: FTDistributions2D.h
+C++ includes: IHistogram.h
 ";
 
-%feature("docstring")  FTDistribution2DGate::FTDistribution2DGate "FTDistribution2DGate::FTDistribution2DGate(const std::vector< double > P)
+%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram()
 ";
 
-%feature("docstring")  FTDistribution2DGate::FTDistribution2DGate "FTDistribution2DGate::FTDistribution2DGate(double omega_x, double omega_y, double gamma)
+%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram(const IHistogram &other)
 ";
 
-%feature("docstring")  FTDistribution2DGate::clone "FTDistribution2DGate * FTDistribution2DGate::clone() const final
+%feature("docstring")  IHistogram::~IHistogram "virtual IHistogram::~IHistogram()
 ";
 
-%feature("docstring")  FTDistribution2DGate::accept "void FTDistribution2DGate::accept(INodeVisitor *visitor) const final
+%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram(const IAxis &axis_x)
 ";
 
-%feature("docstring")  FTDistribution2DGate::evaluate "double FTDistribution2DGate::evaluate(double qx, double qy) const final
-
-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")  IHistogram::IHistogram "IHistogram::IHistogram(const IAxis &axis_x, const IAxis &axis_y)
 ";
 
-%feature("docstring")  FTDistribution2DGate::createSampler "std::unique_ptr< IDistribution2DSampler > FTDistribution2DGate::createSampler() const final
+%feature("docstring")  IHistogram::clone "virtual IHistogram* IHistogram::clone() const =0
 ";
 
+%feature("docstring")  IHistogram::getRank "virtual size_t IHistogram::getRank() const =0
 
-// File: classFTDistribution2DGauss.xml
-%feature("docstring") FTDistribution2DGauss "
+Returns number of histogram dimensions. 
+";
 
-Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real space with  $r=\\\\sqrt{(\\\\frac{x}{\\\\omega_x})^2 + (\\\\frac{y}{\\\\omega_y})^2}$.
+%feature("docstring")  IHistogram::getTotalNumberOfBins "size_t IHistogram::getTotalNumberOfBins() const
 
-C++ includes: FTDistributions2D.h
+Returns total number of histogram bins. For 2D histograms the result will be the product of bin numbers along X and Y axes. 
 ";
 
-%feature("docstring")  FTDistribution2DGauss::FTDistribution2DGauss "FTDistribution2DGauss::FTDistribution2DGauss(const std::vector< double > P)
-";
+%feature("docstring")  IHistogram::getXaxis "const IAxis & IHistogram::getXaxis() const
 
-%feature("docstring")  FTDistribution2DGauss::FTDistribution2DGauss "FTDistribution2DGauss::FTDistribution2DGauss(double omega_x, double omega_y, double gamma)
+returns x-axis 
 ";
 
-%feature("docstring")  FTDistribution2DGauss::clone "FTDistribution2DGauss * FTDistribution2DGauss::clone() const final
-";
+%feature("docstring")  IHistogram::getYaxis "const IAxis & IHistogram::getYaxis() const
 
-%feature("docstring")  FTDistribution2DGauss::accept "void FTDistribution2DGauss::accept(INodeVisitor *visitor) const final
+returns y-axis for 2D histograms 
 ";
 
-%feature("docstring")  FTDistribution2DGauss::evaluate "double FTDistribution2DGauss::evaluate(double qx, double qy) const final
+%feature("docstring")  IHistogram::getXmin "double IHistogram::getXmin() const
 
-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 
+Returns x-axis min (lower edge of first bin). 
 ";
 
-%feature("docstring")  FTDistribution2DGauss::createSampler "std::unique_ptr< IDistribution2DSampler > FTDistribution2DGauss::createSampler() const final
+%feature("docstring")  IHistogram::getXmax "double IHistogram::getXmax() const
+
+Returns x-axis max (upper edge of last bin). 
 ";
 
+%feature("docstring")  IHistogram::getNbinsX "size_t IHistogram::getNbinsX() const
 
-// File: classFTDistribution2DVoigt.xml
-%feature("docstring") FTDistribution2DVoigt "
+Returns number of bins on x-axis. 
+";
 
-Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy
+%feature("docstring")  IHistogram::getYmin "double IHistogram::getYmin() const
 
-C++ includes: FTDistributions2D.h
+Returns y-axis min (lower edge of first bin) for 2D histograms. 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::FTDistribution2DVoigt "FTDistribution2DVoigt::FTDistribution2DVoigt(const std::vector< double > P)
-";
+%feature("docstring")  IHistogram::getYmax "double IHistogram::getYmax() const
 
-%feature("docstring")  FTDistribution2DVoigt::FTDistribution2DVoigt "FTDistribution2DVoigt::FTDistribution2DVoigt(double omega_x, double omega_y, double gamma, double eta)
+Returns y-axis max (upper edge of last bin) for 2D histograms. 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::clone "FTDistribution2DVoigt * FTDistribution2DVoigt::clone() const final
-";
+%feature("docstring")  IHistogram::getNbinsY "size_t IHistogram::getNbinsY() const
 
-%feature("docstring")  FTDistribution2DVoigt::accept "void FTDistribution2DVoigt::accept(INodeVisitor *visitor) const final
+Returns number of bins on y-axis. 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::evaluate "double FTDistribution2DVoigt::evaluate(double qx, double qy) const final
+%feature("docstring")  IHistogram::getGlobalBin "size_t IHistogram::getGlobalBin(size_t binx, size_t biny=0) const
 
-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 
+Returns global bin index for given axes indices. For 1D, just returns binx. 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::eta "double FTDistribution2DVoigt::eta() const
+%feature("docstring")  IHistogram::findGlobalBin "size_t IHistogram::findGlobalBin(double x, double y) const
+
+Returns closest global bin index for given axes coordinates. 
 ";
 
-%feature("docstring")  FTDistribution2DVoigt::createSampler "std::unique_ptr< IDistribution2DSampler > FTDistribution2DVoigt::createSampler() const final
+%feature("docstring")  IHistogram::getXaxisIndex "size_t IHistogram::getXaxisIndex(size_t i) const
+
+Returns x-axis index for global bin index i. 
 ";
 
+%feature("docstring")  IHistogram::getYaxisIndex "size_t IHistogram::getYaxisIndex(size_t i) const
 
-// File: classGaussFisherPeakShape.xml
-%feature("docstring") GaussFisherPeakShape "
+Returns y-axis index for global bin index i. 
+";
 
-A peak shape that is Gaussian in the radial direction and uses the Mises-Fisher distribution in the angular direction.
+%feature("docstring")  IHistogram::getXaxisValue "double IHistogram::getXaxisValue(size_t i)
 
-C++ includes: IPeakShape.h
+Returns the center of bin i of the x axis. 
 ";
 
-%feature("docstring")  GaussFisherPeakShape::GaussFisherPeakShape "GaussFisherPeakShape::GaussFisherPeakShape(double max_intensity, double radial_size, double kappa)
+%feature("docstring")  IHistogram::getYaxisValue "double IHistogram::getYaxisValue(size_t i)
+
+Returns the center of bin i of the y axis. 
 ";
 
-%feature("docstring")  GaussFisherPeakShape::~GaussFisherPeakShape "GaussFisherPeakShape::~GaussFisherPeakShape() override
+%feature("docstring")  IHistogram::getBinContent "double IHistogram::getBinContent(size_t i) const
+
+Returns content (accumulated value) of bin i. 
 ";
 
-%feature("docstring")  GaussFisherPeakShape::clone "GaussFisherPeakShape * GaussFisherPeakShape::clone() const override
+%feature("docstring")  IHistogram::getData "const OutputData<CumulativeValue>& IHistogram::getData() const
 ";
 
-%feature("docstring")  GaussFisherPeakShape::accept "void GaussFisherPeakShape::accept(INodeVisitor *visitor) const override
+%feature("docstring")  IHistogram::getData "OutputData<CumulativeValue>& IHistogram::getData()
 ";
 
-%feature("docstring")  GaussFisherPeakShape::evaluate "double GaussFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
+%feature("docstring")  IHistogram::getBinContent "double IHistogram::getBinContent(size_t binx, size_t biny) const
 
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
+Returns content (accumulated value) of the 2D histogram bin. 
 ";
 
-%feature("docstring")  GaussFisherPeakShape::angularDisorder "bool GaussFisherPeakShape::angularDisorder() const override
+%feature("docstring")  IHistogram::setBinContent "void IHistogram::setBinContent(size_t i, double value)
 
-Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
+Sets content of the bin corresponding to the globalbin number. 
 ";
 
+%feature("docstring")  IHistogram::addBinContent "void IHistogram::addBinContent(size_t i, double value)
 
-// File: classGISASSimulation.xml
-%feature("docstring") GISASSimulation "
+Add the value to the bin. 
+";
 
-Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
+%feature("docstring")  IHistogram::getBinError "double IHistogram::getBinError(size_t i) const
 
-C++ includes: GISASSimulation.h
+Returns error of the bin with given index. 
 ";
 
-%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation()
-";
+%feature("docstring")  IHistogram::getBinError "double IHistogram::getBinError(size_t binx, size_t biny) const
 
-%feature("docstring")  GISASSimulation::~GISASSimulation "GISASSimulation::~GISASSimulation()
+Returns error of the bin with given indices (for 2D histograms). 
 ";
 
-%feature("docstring")  GISASSimulation::clone "GISASSimulation* GISASSimulation::clone() const override
-";
+%feature("docstring")  IHistogram::getBinAverage "double IHistogram::getBinAverage(size_t i) const
 
-%feature("docstring")  GISASSimulation::accept "void GISASSimulation::accept(INodeVisitor *visitor) const override
+Returns average value in the bin with given index. 
 ";
 
-%feature("docstring")  GISASSimulation::prepareSimulation "void GISASSimulation::prepareSimulation() override
+%feature("docstring")  IHistogram::getBinAverage "double IHistogram::getBinAverage(size_t binx, size_t biny) const
 
-Put into a clean state for running a simulation. 
+Returns average value of the bin with given indices (for 2D histograms). 
 ";
 
-%feature("docstring")  GISASSimulation::result "SimulationResult GISASSimulation::result() const override
+%feature("docstring")  IHistogram::getBinNumberOfEntries "int IHistogram::getBinNumberOfEntries(size_t i) const
 
-Returns the results of the simulation in a format that supports unit conversion and export to numpy arrays 
+Returns number of entries in the bin with given index. 
 ";
 
-%feature("docstring")  GISASSimulation::setBeamParameters "void GISASSimulation::setBeamParameters(double wavelength, double alpha_i, double phi_i)
+%feature("docstring")  IHistogram::getBinNumberOfEntries "int IHistogram::getBinNumberOfEntries(size_t binx, size_t biny) const
 
-Sets beam parameters from here (forwarded to  Instrument) 
+Returns number of entries in the bin with given indices (for 2D histograms). 
 ";
 
-%feature("docstring")  GISASSimulation::intensityMapSize "size_t GISASSimulation::intensityMapSize() const override
+%feature("docstring")  IHistogram::getMaximum "double IHistogram::getMaximum() const
 
-Returns the total number of the intensity values in the simulation result. 
+Returns histogram maximum value (maximum of  getBinContent() over all bins) 
 ";
 
+%feature("docstring")  IHistogram::getMaximumBinIndex "size_t IHistogram::getMaximumBinIndex() const
 
-// File: classGISASSpecularComputation.xml
-%feature("docstring") GISASSpecularComputation "
+Returns globalbin index with maximum content. 
+";
 
-Computes the specular signal in the bin where q_parallel = 0. Used by  DWBAComputation.
+%feature("docstring")  IHistogram::getMinimum "double IHistogram::getMinimum() const
 
-C++ includes: GISASSpecularComputation.h
+Returns histogram minimum value (minimum of  getBinContent() over all bins) 
 ";
 
-%feature("docstring")  GISASSpecularComputation::GISASSpecularComputation "GISASSpecularComputation::GISASSpecularComputation(const IFresnelMap *p_fresnel_map)
-";
+%feature("docstring")  IHistogram::getMinimumBinIndex "size_t IHistogram::getMinimumBinIndex() const
 
-%feature("docstring")  GISASSpecularComputation::compute "void GISASSpecularComputation::compute(SimulationElement &elem) const
+Returns globalbin index with minimum content. 
 ";
 
+%feature("docstring")  IHistogram::scale "void IHistogram::scale(double value)
 
-// File: classHardDiskBuilder.xml
-%feature("docstring") HardDiskBuilder "
+Multiply this histogram (every bin content value) by a constant. 
+";
 
-Builds sample: cylinders with hard disk Percus-Yevick interference.
+%feature("docstring")  IHistogram::integral "double IHistogram::integral() const
 
-C++ includes: PercusYevickBuilder.h
+Returns integral of bins content (computed as a sum of all bin content). 
 ";
 
-%feature("docstring")  HardDiskBuilder::buildSample "MultiLayer * HardDiskBuilder::buildSample() const
+%feature("docstring")  IHistogram::array "PyObject * IHistogram::array(DataType dataType=DataType::INTEGRAL) const
+
+Returns numpy array with bin content (accumulated values). 
 ";
 
+%feature("docstring")  IHistogram::getArray "PyObject * IHistogram::getArray(DataType dataType=DataType::INTEGRAL) const
 
-// File: classScalarFresnelMap_1_1Hash2Doubles.xml
+Deprecated
+Use  array() instead. 
+";
 
+%feature("docstring")  IHistogram::reset "void IHistogram::reset()
 
-// File: classMatrixFresnelMap_1_1HashKVector.xml
+Reset histogram content (axes remains) 
+";
 
+%feature("docstring")  IHistogram::createOutputData "OutputData< double > * IHistogram::createOutputData(DataType dataType=DataType::INTEGRAL) const
 
-// File: classHexagonalLattice.xml
-%feature("docstring") HexagonalLattice "";
+creates new  OutputData with histogram's shape and values corresponding to DataType
 
-%feature("docstring")  HexagonalLattice::HexagonalLattice "HexagonalLattice::HexagonalLattice(double length, double xi)
+creates new  OutputData with histogram's shape and put there values corresponding to DataType 
 ";
 
-%feature("docstring")  HexagonalLattice::clone "HexagonalLattice * HexagonalLattice::clone() const
-";
+%feature("docstring")  IHistogram::hasSameShape "bool IHistogram::hasSameShape(const IHistogram &other) const
 
-%feature("docstring")  HexagonalLattice::accept "void HexagonalLattice::accept(INodeVisitor *visitor) const final
+Returns true if objects a) have same dimensions b) bin boundaries of axes coincide. 
 ";
 
-%feature("docstring")  HexagonalLattice::length1 "virtual double HexagonalLattice::length1() const
-";
+%feature("docstring")  IHistogram::hasSameDimensions "bool IHistogram::hasSameDimensions(const IHistogram &other) const
 
-%feature("docstring")  HexagonalLattice::length2 "virtual double HexagonalLattice::length2() const
+Returns true if object have same rank and number of axes bins. 
 ";
 
-%feature("docstring")  HexagonalLattice::latticeAngle "double HexagonalLattice::latticeAngle() const
-";
+%feature("docstring")  IHistogram::relativeDifferenceHistogram "IHistogram * IHistogram::relativeDifferenceHistogram(const IHistogram &rhs)
 
-%feature("docstring")  HexagonalLattice::unitCellArea "double HexagonalLattice::unitCellArea() const
+returns histogram representing relative difference of two histograms. 
 ";
 
+%feature("docstring")  IHistogram::save "void IHistogram::save(const std::string &filename)
 
-// File: classHexParaCrystalBuilder.xml
-%feature("docstring") HexParaCrystalBuilder "
-
-Builds sample: cylinders with 2DDL structure factor (IsGISAXS example #4).
-
-C++ includes: ParaCrystalBuilder.h
+Saves histogram in file Following formats are available: *.txt, *.tif, *.int (*.txt.gz, *.tif.gz, *.int.gz) 
 ";
 
-%feature("docstring")  HexParaCrystalBuilder::buildSample "MultiLayer * HexParaCrystalBuilder::buildSample() const
+%feature("docstring")  IHistogram::load "void IHistogram::load(const std::string &filename)
+
+Loads histogram from file, the shape of array in file should match Following formats are available: *.txt, *.tif, *.int (*.txt.gz, *.tif.gz, *.int.gz) Only bin content will be loaded, histogram axes remain the same. 
 ";
 
 
-// File: classHistogram1D.xml
-%feature("docstring") Histogram1D "
+// File: classIIntensityFunction.xml
+%feature("docstring") IIntensityFunction "
 
-One dimensional histogram.
+Interface for applying arbitrary function to the measured intensity.
 
-C++ includes: Histogram1D.h
+C++ includes: IIntensityFunction.h
 ";
 
-%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(int nbinsx, double xlow, double xup)
+%feature("docstring")  IIntensityFunction::~IIntensityFunction "IIntensityFunction::~IIntensityFunction()
+";
 
-Constructor for fix bin size histograms.
+%feature("docstring")  IIntensityFunction::clone "virtual IIntensityFunction* IIntensityFunction::clone() const =0
+";
 
-Parameters:
------------
+%feature("docstring")  IIntensityFunction::evaluate "virtual double IIntensityFunction::evaluate(double value) const =0
+";
 
-nbinsx: 
-number of bins
 
-xlow: 
-low edge of the first bin
+// File: classIMetricWrapper.xml
+%feature("docstring") IMetricWrapper "";
 
-xup: 
-upper edge of the last bin 
+%feature("docstring")  IMetricWrapper::~IMetricWrapper "IMetricWrapper::~IMetricWrapper()
 ";
 
-%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(int nbinsx, const std::vector< double > &xbins)
+%feature("docstring")  IMetricWrapper::compute "virtual double IMetricWrapper::compute(const std::vector< SimDataPair > &fit_objects, size_t n_pars) const =0
+";
 
-Constructor for variable bin size histograms.
 
-Parameters:
------------
+// File: classInstrument.xml
+%feature("docstring") Instrument "
 
-nbinsx: 
-number of bins
+Assembles beam, detector and their relative positions with respect to the sample.
 
-xbins: 
-Array of size nbins+1 containing low-edges for each bin and upper edge of last bin. 
+C++ includes: Instrument.h
 ";
 
-%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(const IAxis &axis)
-
-Constructor for 1D histogram with custom axis. 
+%feature("docstring")  Instrument::Instrument "Instrument::Instrument()
 ";
 
-%feature("docstring")  Histogram1D::Histogram1D "Histogram1D::Histogram1D(const OutputData< double > &data)
-
-Constructor for 1D histograms from basic  OutputData object. 
+%feature("docstring")  Instrument::Instrument "Instrument::Instrument(const Instrument &other)
 ";
 
-%feature("docstring")  Histogram1D::clone "Histogram1D * Histogram1D::clone() const
-
-Returns clone of other histogram. 
-";
-
-%feature("docstring")  Histogram1D::getRank "size_t Histogram1D::getRank() const
-
-Returns the number of histogram dimensions. 
-";
-
-%feature("docstring")  Histogram1D::fill "int Histogram1D::fill(double x, double weight=1.0)
-
-Increment bin with abscissa x with a weight. 
-";
-
-%feature("docstring")  Histogram1D::getBinCenters "std::vector< double > Histogram1D::getBinCenters() const
-
-returns vector of histogram bin centers 
-";
-
-%feature("docstring")  Histogram1D::getBinValues "std::vector< double > Histogram1D::getBinValues() const
-
-returns vector of bin content (the value accumulated by bins) 
-";
-
-%feature("docstring")  Histogram1D::getBinErrors "std::vector< double > Histogram1D::getBinErrors() const
-
-returns vector of bin errors 
-";
-
-%feature("docstring")  Histogram1D::getBinCentersNumpy "PyObject * Histogram1D::getBinCentersNumpy() const
-";
-
-%feature("docstring")  Histogram1D::getBinValuesNumpy "PyObject * Histogram1D::getBinValuesNumpy() const
-";
-
-%feature("docstring")  Histogram1D::getBinErrorsNumpy "PyObject * Histogram1D::getBinErrorsNumpy() const
-";
-
-%feature("docstring")  Histogram1D::crop "Histogram1D * Histogram1D::crop(double xmin, double xmax)
-
-Creates new histogram by applying crop on axis. 
-";
-
-
-// File: classHistogram2D.xml
-%feature("docstring") Histogram2D "
-
-Two dimensional histogram.
-
-C++ includes: Histogram2D.h
-";
-
-%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(int nbinsx, double xlow, double xup, int nbinsy, double ylow, double yup)
-
-Constructor for fix bin size histograms.
-
-Parameters:
------------
-
-nbinsx: 
-number of bins on X-axis
-
-xlow: 
-low edge of the first bin of X-axis
-
-xup: 
-upper edge of the last bin of X-axis
-
-nbinsy: 
-number of bins on Y axis
-
-ylow: 
-low edge of the first bin of Y-axis
-
-yup: 
-upper edge of the last bin of Y-axis 
-";
-
-%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(int nbinsx, const std::vector< double > &xbins, int nbinsy, const std::vector< double > &ybins)
-
-Constructor for variable bin size histograms.
-
-Parameters:
------------
-
-nbinsx: 
-number of bins on X-axis
-
-xbins: 
-Array of size nbins+1 containing low-edges for each bin and upper edge of last bin.
-
-nbinsy: 
-number of bins on Y-axis
-
-ybins: 
-Array of size nbins+1 containing low-edges for each bin and upper edge of last bin. 
-";
-
-%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(const IAxis &axis_x, const IAxis &axis_y)
-
-Constructor for 2D histogram with custom axes. 
-";
-
-%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(const OutputData< double > &data)
-
-Constructor for 2D histograms from basic  OutputData object. 
-";
-
-%feature("docstring")  Histogram2D::Histogram2D "Histogram2D::Histogram2D(std::vector< std::vector< double >> data)
-
-Constructor for 2D histograms from numpy array (thanks to swig) 
-";
-
-%feature("docstring")  Histogram2D::clone "Histogram2D * Histogram2D::clone() const
-
-Returns clone of other histogram. 
-";
-
-%feature("docstring")  Histogram2D::getRank "size_t Histogram2D::getRank() const
-
-Returns the number of histogram dimensions. 
-";
-
-%feature("docstring")  Histogram2D::fill "int Histogram2D::fill(double x, double y, double weight=1.0)
-
-Increment bin with abscissa x and ordinate y with a weight. 
-";
-
-%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX()
-
-Project a 2D histogram into 1D histogram along X. The projection is made from all bins along y-axis. 
-";
-
-%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX(double yvalue)
-
-Project a 2D histogram into 1D histogram along X. The projection is made from the y-bin closest to given ordinate yvalue.
-
-Parameters:
------------
-
-yvalue: 
-the value on y-axis at which projection is taken 
-";
-
-%feature("docstring")  Histogram2D::projectionX "Histogram1D * Histogram2D::projectionX(double ylow, double yup)
-
-Project a 2D histogram into 1D histogram along X. The projection is made from all y-bins corresponding to ordinate between ylow and yup.
-
-Parameters:
------------
-
-ylow: 
-lower edje on y-axis
-
-yup: 
-upper edje on y-axis 
-";
-
-%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY()
-
-Project a 2D histogram into 1D histogram along Y. The projection is made from all bins along x-axis. 
-";
-
-%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY(double xvalue)
-
-Project a 2D histogram into 1D histogram along Y. The projection is made from the x-bin closest to given abscissa xvalue.
-
-Parameters:
------------
-
-xvalue: 
-the value on x-axis at which projection is taken 
-";
-
-%feature("docstring")  Histogram2D::projectionY "Histogram1D * Histogram2D::projectionY(double xlow, double xup)
-
-Project a 2D histogram into 1D histogram along Y. The projection is made from all x-bins corresponding to abscissa between xlow and xup.
-
-Parameters:
------------
-
-xlow: 
-lower edje on x-axis
-
-xup: 
-upper edje on x-axis 
-";
-
-%feature("docstring")  Histogram2D::crop "Histogram2D * Histogram2D::crop(double xmin, double ymin, double xmax, double ymax)
-
-Creates new histogram by applying rectangular clip. 
-";
-
-%feature("docstring")  Histogram2D::setContent "void Histogram2D::setContent(const std::vector< std::vector< double >> &data)
-
-Sets the values in histograms channels from numpy array,. 
-";
-
-%feature("docstring")  Histogram2D::addContent "void Histogram2D::addContent(const std::vector< std::vector< double >> &data)
-
-Add to values in histograms channels from numpy array,. 
-";
-
-
-// File: classHomogeneousMultilayerBuilder.xml
-%feature("docstring") HomogeneousMultilayerBuilder "
-
-Builds a sample with 10 interchanging homogeneous layers of Ti and Ni on silicone substrate. Ti is 70 angstroms thick, Ni is 30 angstroms thick. No absorption, no roughness, target wavelength is 1.54 angstroms.
-
-C++ includes: HomogeneousMultilayerBuilder.h
-";
-
-%feature("docstring")  HomogeneousMultilayerBuilder::buildSample "MultiLayer * HomogeneousMultilayerBuilder::buildSample() const
-";
-
-
-// File: structHomogeneousRegion.xml
-%feature("docstring") HomogeneousRegion "
-
-Struct that contains information on a single homogeneous region of a particle inside a single layer. This information is needed for calculating the average of a material, used in the Fresnel calculations.
-
-C++ includes: HomogeneousRegion.h
-";
-
-
-// File: classIAbstractParticle.xml
-%feature("docstring") IAbstractParticle "
-
-Interface for a generic particle.
-
-Inherited by  IParticle and  ParticleDistribution.
-
-C++ includes: IAbstractParticle.h
-";
-
-%feature("docstring")  IAbstractParticle::IAbstractParticle "IAbstractParticle::IAbstractParticle()=default
-";
-
-%feature("docstring")  IAbstractParticle::IAbstractParticle "IAbstractParticle::IAbstractParticle(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IAbstractParticle::~IAbstractParticle "virtual IAbstractParticle::~IAbstractParticle()=default
-";
-
-%feature("docstring")  IAbstractParticle::clone "virtual IAbstractParticle* IAbstractParticle::clone() const =0
-";
-
-%feature("docstring")  IAbstractParticle::accept "void IAbstractParticle::accept(INodeVisitor *visitor) const
-";
-
-%feature("docstring")  IAbstractParticle::abundance "double IAbstractParticle::abundance() const
-";
-
-%feature("docstring")  IAbstractParticle::setAbundance "void IAbstractParticle::setAbundance(double abundance)
-
-Sets particle abundance.
-
-Parameters:
------------
-
-abundance: 
-proportion of this type of particles normalized to the total number of particles in the layout. 
-";
-
-%feature("docstring")  IAbstractParticle::translate "virtual void IAbstractParticle::translate(kvector_t translation)=0
-
-Translates the particle with the given vector. 
-";
-
-%feature("docstring")  IAbstractParticle::rotate "virtual void IAbstractParticle::rotate(const IRotation &rotation)=0
-
-Applies the given rotation to the particle. 
-";
-
-
-// File: classIBackground.xml
-%feature("docstring") IBackground "
-
-Interface for a simulating the background signal
-
-C++ includes: IBackground.h
-";
-
-%feature("docstring")  IBackground::IBackground "IBackground::IBackground(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IBackground::~IBackground "IBackground::~IBackground()
-";
-
-%feature("docstring")  IBackground::clone "virtual IBackground* IBackground::clone() const =0
-";
-
-%feature("docstring")  IBackground::addBackGround "virtual double IBackground::addBackGround(double element) const =0
-";
-
-
-// File: classIChiSquaredModule.xml
-%feature("docstring") IChiSquaredModule "
-
-Interface residual calculations.
-
-C++ includes: IChiSquaredModule.h
-";
-
-%feature("docstring")  IChiSquaredModule::IChiSquaredModule "IChiSquaredModule::IChiSquaredModule()
-";
-
-%feature("docstring")  IChiSquaredModule::~IChiSquaredModule "IChiSquaredModule::~IChiSquaredModule()
-";
-
-%feature("docstring")  IChiSquaredModule::clone "virtual IChiSquaredModule* IChiSquaredModule::clone() const =0
-
-clone method 
-";
-
-%feature("docstring")  IChiSquaredModule::varianceFunction "const IVarianceFunction * IChiSquaredModule::varianceFunction() const
-
-Returns squared function. 
-";
-
-%feature("docstring")  IChiSquaredModule::setVarianceFunction "void IChiSquaredModule::setVarianceFunction(const IVarianceFunction &variance_function)
-
-Sets squared function. 
-";
-
-%feature("docstring")  IChiSquaredModule::getIntensityFunction "const IIntensityFunction * IChiSquaredModule::getIntensityFunction() const
-
-Returns data rescaler. 
-";
-
-%feature("docstring")  IChiSquaredModule::setIntensityFunction "void IChiSquaredModule::setIntensityFunction(const IIntensityFunction &intensity_function)
-
-Sets data rescaler. 
-";
-
-%feature("docstring")  IChiSquaredModule::residual "virtual double IChiSquaredModule::residual(double a, double b, double weight)=0
-";
-
-
-// File: classIClusteredParticles.xml
-%feature("docstring") IClusteredParticles "
-
-An ordered assembly of particles. Currently, the only child class is  Crystal.
-
-C++ includes: IClusteredParticles.h
-";
-
-%feature("docstring")  IClusteredParticles::clone "IClusteredParticles* IClusteredParticles::clone() const override=0
-";
-
-%feature("docstring")  IClusteredParticles::createTotalFormFactor "virtual IFormFactor* IClusteredParticles::createTotalFormFactor(const IFormFactor &, const IRotation *, const kvector_t &) const =0
-
-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")  IClusteredParticles::homogeneousRegions "virtual std::vector<HomogeneousRegion> IClusteredParticles::homogeneousRegions() const =0
-
-Creates region information with volumetric densities instead of absolute volume These densities need to be multiplied by the total mesocrystal volume 
-";
-
-
-// File: classIComputation.xml
-%feature("docstring") IComputation "
-
-Interface for a single-threaded computation with given range of SimulationElements and  ProgressHandler.
-
-Controlled by the multi-threading machinery in Simulation::runSingleSimulation().
-
-C++ includes: IComputation.h
-";
-
-%feature("docstring")  IComputation::IComputation "IComputation::IComputation(const MultiLayer &sample, const SimulationOptions &options, ProgressHandler &progress)
-";
-
-%feature("docstring")  IComputation::~IComputation "IComputation::~IComputation()
-";
-
-%feature("docstring")  IComputation::run "void IComputation::run()
-";
-
-%feature("docstring")  IComputation::isCompleted "bool IComputation::isCompleted() const
-";
-
-%feature("docstring")  IComputation::errorMessage "std::string IComputation::errorMessage() const
-";
-
-
-// File: classIDetector.xml
-%feature("docstring") IDetector "
-
-Abstract detector interface.
-
-C++ includes: IDetector.h
-";
-
-%feature("docstring")  IDetector::IDetector "IDetector::IDetector()
-";
-
-%feature("docstring")  IDetector::clone "IDetector* IDetector::clone() const override=0
-";
-
-%feature("docstring")  IDetector::~IDetector "IDetector::~IDetector()
-";
-
-%feature("docstring")  IDetector::init "virtual void IDetector::init(const Beam &)
-
-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::dimension "size_t IDetector::dimension() const
-
-Returns actual dimensionality of the detector (number of defined axes) 
-";
-
-%feature("docstring")  IDetector::axisBinIndex "size_t IDetector::axisBinIndex(size_t index, size_t selected_axis) const
-
-Calculate axis index for given global index. 
-";
-
-%feature("docstring")  IDetector::totalSize "size_t IDetector::totalSize() const
-
-Returns total number of pixels. 
-";
-
-%feature("docstring")  IDetector::detectorMask "virtual const DetectorMask* IDetector::detectorMask() const =0
-
-Returns detector masks container. 
-";
-
-%feature("docstring")  IDetector::setAnalyzerProperties "void IDetector::setAnalyzerProperties(const kvector_t direction, double efficiency, double total_transmission)
-
-Sets the polarization analyzer characteristics of the detector. 
-";
-
-%feature("docstring")  IDetector::setDetectorResolution "void IDetector::setDetectorResolution(const IDetectorResolution &p_detector_resolution)
-
-Sets the detector resolution. 
-";
-
-%feature("docstring")  IDetector::setResolutionFunction "void IDetector::setResolutionFunction(const IResolutionFunction2D &resFunc)
-";
-
-%feature("docstring")  IDetector::applyDetectorResolution "void IDetector::applyDetectorResolution(OutputData< double > *p_intensity_map) const
-
-Applies the detector resolution to the given intensity maps. 
-";
-
-%feature("docstring")  IDetector::removeDetectorResolution "void IDetector::removeDetectorResolution()
-
-Removes detector resolution function. 
-";
-
-%feature("docstring")  IDetector::detectorResolution "const IDetectorResolution * IDetector::detectorResolution() const
-
-Returns a pointer to detector resolution object. 
-";
-
-%feature("docstring")  IDetector::createDetectorMap "std::unique_ptr< OutputData< double > > IDetector::createDetectorMap() const
-
-Returns empty detector map in given axes units. 
-";
-
-%feature("docstring")  IDetector::regionOfInterest "virtual const RegionOfInterest* IDetector::regionOfInterest() const =0
-
-Returns region of interest if exists. 
-";
-
-%feature("docstring")  IDetector::resetRegionOfInterest "virtual void IDetector::resetRegionOfInterest()=0
-
-Resets region of interest making whole detector plane available for the simulation. 
-";
-
-%feature("docstring")  IDetector::detectionProperties "const DetectionProperties& IDetector::detectionProperties() const
-
-Returns detection properties. 
-";
-
-%feature("docstring")  IDetector::createDetectorIntensity "OutputData< double > * IDetector::createDetectorIntensity(const std::vector< SimulationElement > &elements) const
-
-Returns new intensity map with detector resolution applied. Map will be cropped to ROI if ROI is present. 
-";
-
-%feature("docstring")  IDetector::defaultAxesUnits "virtual Axes::Units IDetector::defaultAxesUnits() const
-
-Return default axes units. 
-";
-
-%feature("docstring")  IDetector::numberOfSimulationElements "size_t IDetector::numberOfSimulationElements() const
-
-Returns number of simulation elements. 
-";
-
-%feature("docstring")  IDetector::getChildren "std::vector< const INode * > IDetector::getChildren() const override
-";
-
-%feature("docstring")  IDetector::iterate "void IDetector::iterate(std::function< void(const_iterator)> func, bool visit_masks=false) const
-";
-
-
-// File: classIDetector2D.xml
-%feature("docstring") IDetector2D "
-
-Abstract 2D detector interface.
-
-C++ includes: IDetector2D.h
-";
-
-%feature("docstring")  IDetector2D::IDetector2D "IDetector2D::IDetector2D()
-";
-
-%feature("docstring")  IDetector2D::clone "IDetector2D* IDetector2D::clone() const override=0
-";
-
-%feature("docstring")  IDetector2D::~IDetector2D "IDetector2D::~IDetector2D()
-";
-
-%feature("docstring")  IDetector2D::setDetectorParameters "void IDetector2D::setDetectorParameters(size_t n_x, double x_min, double x_max, size_t n_y, double y_min, double y_max)
-
-Sets detector parameters using angle ranges. 
-";
-
-%feature("docstring")  IDetector2D::removeMasks "void IDetector2D::removeMasks()
-
-Removes all masks from the detector. 
-";
-
-%feature("docstring")  IDetector2D::detectorMask "const DetectorMask * IDetector2D::detectorMask() const override
-
-Returns detector masks container. 
-";
-
-%feature("docstring")  IDetector2D::addMask "void IDetector2D::addMask(const IShape2D &shape, bool mask_value=true)
-
-Adds mask of given shape to the stack of detector masks. The mask value 'true' means that the channel will be excluded from the simulation. The mask which is added last has priority.
-
-Parameters:
------------
-
-shape: 
-The shape of mask (Rectangle, Polygon, Line, Ellipse)
-
-mask_value: 
-The value of mask 
-";
-
-%feature("docstring")  IDetector2D::maskAll "void IDetector2D::maskAll()
-
-Put the mask for all detector channels (i.e. exclude whole detector from the analysis) 
-";
-
-%feature("docstring")  IDetector2D::regionOfInterest "const RegionOfInterest * IDetector2D::regionOfInterest() const override
-
-Returns region of interest if exists. 
-";
-
-%feature("docstring")  IDetector2D::setRegionOfInterest "void IDetector2D::setRegionOfInterest(double xlow, double ylow, double xup, double yup)
-
-Sets rectangular region of interest with lower left and upper right corners defined. 
-";
-
-%feature("docstring")  IDetector2D::resetRegionOfInterest "void IDetector2D::resetRegionOfInterest() override
-
-Resets region of interest making whole detector plane available for the simulation. 
-";
-
-%feature("docstring")  IDetector2D::active_indices "std::vector< size_t > IDetector2D::active_indices() const
-
-Returns vector of unmasked detector indices. 
-";
-
-%feature("docstring")  IDetector2D::createPixel "virtual IPixel* IDetector2D::createPixel(size_t index) const =0
-
-Creates an IPixel for the given  OutputData object and index. 
-";
-
-%feature("docstring")  IDetector2D::indexOfSpecular "virtual size_t IDetector2D::indexOfSpecular(const Beam &beam) const =0
-
-Returns index of pixel that contains the specular wavevector. If no pixel contains this specular wavevector, the number of pixels is returned. This corresponds to an overflow index. 
-";
-
-%feature("docstring")  IDetector2D::createContext "std::unique_ptr< DetectorContext > IDetector2D::createContext() const
-";
-
-
-// File: classIDetectorResolution.xml
-%feature("docstring") IDetectorResolution "
-
-Interface for detector resolution algorithms
-
-C++ includes: IDetectorResolution.h
-";
-
-%feature("docstring")  IDetectorResolution::~IDetectorResolution "virtual IDetectorResolution::~IDetectorResolution()
-";
-
-%feature("docstring")  IDetectorResolution::applyDetectorResolution "virtual void IDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const =0
-
-Apply the resolution function to the intensity data. 
-";
-
-%feature("docstring")  IDetectorResolution::applyDetectorResolutionPol "void IDetectorResolution::applyDetectorResolutionPol(OutputData< Eigen::Matrix2d > *p_matrix_intensity) const
-
-Applies the detector resolution to the matrix-valued intensity data. 
-";
-
-%feature("docstring")  IDetectorResolution::clone "virtual IDetectorResolution* IDetectorResolution::clone() const =0
-";
-
-
-// File: classIDistribution1DSampler.xml
-%feature("docstring") IDistribution1DSampler "";
-
-%feature("docstring")  IDistribution1DSampler::IDistribution1DSampler "IDistribution1DSampler::IDistribution1DSampler()
-";
-
-%feature("docstring")  IDistribution1DSampler::~IDistribution1DSampler "IDistribution1DSampler::~IDistribution1DSampler()
-";
-
-%feature("docstring")  IDistribution1DSampler::randomSample "virtual double IDistribution1DSampler::randomSample() const =0
-";
-
-
-// File: classIDistribution2DSampler.xml
-%feature("docstring") IDistribution2DSampler "";
-
-%feature("docstring")  IDistribution2DSampler::IDistribution2DSampler "IDistribution2DSampler::IDistribution2DSampler()
-";
-
-%feature("docstring")  IDistribution2DSampler::~IDistribution2DSampler "IDistribution2DSampler::~IDistribution2DSampler()
-";
-
-%feature("docstring")  IDistribution2DSampler::randomSample "virtual std::pair<double, double> IDistribution2DSampler::randomSample() const =0
-";
-
-
-// File: classIFootprintFactor.xml
-%feature("docstring") IFootprintFactor "
-
-Abstract base for classes that calculate the beam footprint factor
-
-C++ includes: IFootprintFactor.h
-";
-
-%feature("docstring")  IFootprintFactor::IFootprintFactor "IFootprintFactor::IFootprintFactor(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IFootprintFactor::IFootprintFactor "IFootprintFactor::IFootprintFactor()=delete
-";
-
-%feature("docstring")  IFootprintFactor::~IFootprintFactor "IFootprintFactor::~IFootprintFactor()
-";
-
-%feature("docstring")  IFootprintFactor::clone "virtual IFootprintFactor* IFootprintFactor::clone() const =0
-";
-
-%feature("docstring")  IFootprintFactor::setWidthRatio "void IFootprintFactor::setWidthRatio(double width_ratio)
-";
-
-%feature("docstring")  IFootprintFactor::widthRatio "double IFootprintFactor::widthRatio() const
-";
-
-%feature("docstring")  IFootprintFactor::calculate "virtual double IFootprintFactor::calculate(double alpha) const =0
-
-Calculate footprint correction coefficient from the beam incident angle  alpha. 
-";
-
-%feature("docstring")  IFootprintFactor::print "virtual std::string IFootprintFactor::print() const =0
-
-Print python-formatted footprint definition. 
-";
-
-
-// File: classIFresnelMap.xml
-%feature("docstring") IFresnelMap "
-
-Holds the necessary information to calculate the radiation wavefunction in every layer for different incoming (outgoing) angles of the beam in the top layer (these amplitudes correspond to the specular part of the wavefunction).
-
-C++ includes: IFresnelMap.h
-";
-
-%feature("docstring")  IFresnelMap::IFresnelMap "IFresnelMap::IFresnelMap(std::unique_ptr< ISpecularStrategy > strategy)
-";
-
-%feature("docstring")  IFresnelMap::~IFresnelMap "IFresnelMap::~IFresnelMap()
-";
-
-%feature("docstring")  IFresnelMap::getOutCoefficients "virtual std::unique_ptr<const ILayerRTCoefficients> IFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const =0
-
-Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
-";
-
-%feature("docstring")  IFresnelMap::getInCoefficients "std::unique_ptr<const ILayerRTCoefficients> IFresnelMap::getInCoefficients(const T &sim_element, size_t layer_index) const
-
-Retrieves the amplitude coefficients for an incoming wavevector. 
-";
-
-%feature("docstring")  IFresnelMap::setSlices "void IFresnelMap::setSlices(const std::vector< Slice > &slices)
-";
-
-%feature("docstring")  IFresnelMap::slices "const std::vector< Slice > & IFresnelMap::slices() const
-";
-
-%feature("docstring")  IFresnelMap::disableCaching "void IFresnelMap::disableCaching()
-
-Disables caching of previously computed Fresnel coefficients. 
-";
-
-
-// File: classIFTDecayFunction1D.xml
-%feature("docstring") IFTDecayFunction1D "
-
-Interface for a one-dimensional decay function, with evaluate(q) returning the Fourier transform, normalized to  $\\\\int dq\\\\; {\\\\rm evaluate}(q) = 1$.
-
-C++ includes: FTDecay1D.h
-";
-
-%feature("docstring")  IFTDecayFunction1D::IFTDecayFunction1D "IFTDecayFunction1D::IFTDecayFunction1D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IFTDecayFunction1D::clone "virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0
-";
-
-%feature("docstring")  IFTDecayFunction1D::evaluate "virtual double IFTDecayFunction1D::evaluate(double q) const =0
-";
-
-%feature("docstring")  IFTDecayFunction1D::decayLength "double IFTDecayFunction1D::decayLength() const
-";
-
-
-// File: classIFTDecayFunction2D.xml
-%feature("docstring") IFTDecayFunction2D "
-
-Interface for two-dimensional decay function in reciprocal space.
-
-C++ includes: FTDecay2D.h
-";
-
-%feature("docstring")  IFTDecayFunction2D::IFTDecayFunction2D "IFTDecayFunction2D::IFTDecayFunction2D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IFTDecayFunction2D::clone "virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0
-";
-
-%feature("docstring")  IFTDecayFunction2D::decayLengthX "double IFTDecayFunction2D::decayLengthX() const
-
-get decay length in distribution's X-direction 
-";
-
-%feature("docstring")  IFTDecayFunction2D::decayLengthY "double IFTDecayFunction2D::decayLengthY() const
-
-get decay length in distribution's Y-direction 
-";
-
-%feature("docstring")  IFTDecayFunction2D::gamma "double IFTDecayFunction2D::gamma() const
-
-get angle between first lattice vector and X-axis of distribution (both in direct space) 
-";
-
-%feature("docstring")  IFTDecayFunction2D::evaluate "virtual double IFTDecayFunction2D::evaluate(double qx, double qy) const =0
-
-evaluate Fourier transformed decay function for q in X,Y coordinates 
-";
-
-%feature("docstring")  IFTDecayFunction2D::boundingReciprocalLatticeCoordinates "std::pair< double, double > IFTDecayFunction2D::boundingReciprocalLatticeCoordinates(double qX, double qY, double a, double b, double alpha) const
-
-transform back to a*, b* basis:
-
-Calculates bounding values of reciprocal lattice coordinates that contain the centered rectangle with a corner defined by qX and qY 
-";
-
-
-// File: classIFTDistribution1D.xml
-%feature("docstring") IFTDistribution1D "
-
-Interface for a one-dimensional distribution, with normalization adjusted so that the Fourier transform evaluate(q) is a decay function that starts at evaluate(0)=1.
-
-C++ includes: FTDistributions1D.h
-";
-
-%feature("docstring")  IFTDistribution1D::IFTDistribution1D "IFTDistribution1D::IFTDistribution1D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IFTDistribution1D::clone "virtual IFTDistribution1D* IFTDistribution1D::clone() const =0
-";
-
-%feature("docstring")  IFTDistribution1D::evaluate "virtual double IFTDistribution1D::evaluate(double q) const =0
-
-Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-";
-
-%feature("docstring")  IFTDistribution1D::omega "double IFTDistribution1D::omega() const
-";
-
-%feature("docstring")  IFTDistribution1D::qSecondDerivative "virtual double IFTDistribution1D::qSecondDerivative() const =0
-
-Returns the negative of the second order derivative in q space around q=0. 
-";
-
-%feature("docstring")  IFTDistribution1D::createSampler "virtual std::unique_ptr<IDistribution1DSampler> IFTDistribution1D::createSampler() const =0
-";
-
-
-// File: classIFTDistribution2D.xml
-%feature("docstring") IFTDistribution2D "
-
-Interface for two-dimensional distributions in Fourier space.
-
-C++ includes: FTDistributions2D.h
-";
-
-%feature("docstring")  IFTDistribution2D::IFTDistribution2D "IFTDistribution2D::IFTDistribution2D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IFTDistribution2D::clone "IFTDistribution2D* IFTDistribution2D::clone() const =0
-";
-
-%feature("docstring")  IFTDistribution2D::omegaX "double IFTDistribution2D::omegaX() const
-";
-
-%feature("docstring")  IFTDistribution2D::omegaY "double IFTDistribution2D::omegaY() const
-";
-
-%feature("docstring")  IFTDistribution2D::gamma "double IFTDistribution2D::gamma() const
-";
-
-%feature("docstring")  IFTDistribution2D::delta "double IFTDistribution2D::delta() const
-
-Angle in direct space between X- and Y-axis of distribution. 
-";
-
-%feature("docstring")  IFTDistribution2D::evaluate "virtual double IFTDistribution2D::evaluate(double qx, double qy) const =0
-
-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")  IFTDistribution2D::createSampler "virtual std::unique_ptr<IDistribution2DSampler> IFTDistribution2D::createSampler() const =0
-";
-
-
-// File: classIHistogram.xml
-%feature("docstring") IHistogram "
-
-Base class for 1D and 2D histograms holding values of double type.
-
-C++ includes: IHistogram.h
-";
-
-%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram()
-";
-
-%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram(const IHistogram &other)
-";
-
-%feature("docstring")  IHistogram::~IHistogram "virtual IHistogram::~IHistogram()
-";
-
-%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram(const IAxis &axis_x)
-";
-
-%feature("docstring")  IHistogram::IHistogram "IHistogram::IHistogram(const IAxis &axis_x, const IAxis &axis_y)
-";
-
-%feature("docstring")  IHistogram::clone "virtual IHistogram* IHistogram::clone() const =0
-";
-
-%feature("docstring")  IHistogram::getRank "virtual size_t IHistogram::getRank() const =0
-
-Returns number of histogram dimensions. 
-";
-
-%feature("docstring")  IHistogram::getTotalNumberOfBins "size_t IHistogram::getTotalNumberOfBins() const
-
-Returns total number of histogram bins. For 2D histograms the result will be the product of bin numbers along X and Y axes. 
-";
-
-%feature("docstring")  IHistogram::getXaxis "const IAxis & IHistogram::getXaxis() const
-
-returns x-axis 
-";
-
-%feature("docstring")  IHistogram::getYaxis "const IAxis & IHistogram::getYaxis() const
-
-returns y-axis for 2D histograms 
-";
-
-%feature("docstring")  IHistogram::getXmin "double IHistogram::getXmin() const
-
-Returns x-axis min (lower edge of first bin). 
-";
-
-%feature("docstring")  IHistogram::getXmax "double IHistogram::getXmax() const
-
-Returns x-axis max (upper edge of last bin). 
-";
-
-%feature("docstring")  IHistogram::getNbinsX "size_t IHistogram::getNbinsX() const
-
-Returns number of bins on x-axis. 
-";
-
-%feature("docstring")  IHistogram::getYmin "double IHistogram::getYmin() const
-
-Returns y-axis min (lower edge of first bin) for 2D histograms. 
-";
-
-%feature("docstring")  IHistogram::getYmax "double IHistogram::getYmax() const
-
-Returns y-axis max (upper edge of last bin) for 2D histograms. 
-";
-
-%feature("docstring")  IHistogram::getNbinsY "size_t IHistogram::getNbinsY() const
-
-Returns number of bins on y-axis. 
-";
-
-%feature("docstring")  IHistogram::getGlobalBin "size_t IHistogram::getGlobalBin(size_t binx, size_t biny=0) const
-
-Returns global bin index for given axes indices. For 1D, just returns binx. 
-";
-
-%feature("docstring")  IHistogram::findGlobalBin "size_t IHistogram::findGlobalBin(double x, double y) const
-
-Returns closest global bin index for given axes coordinates. 
-";
-
-%feature("docstring")  IHistogram::getXaxisIndex "size_t IHistogram::getXaxisIndex(size_t i) const
-
-Returns x-axis index for global bin index i. 
-";
-
-%feature("docstring")  IHistogram::getYaxisIndex "size_t IHistogram::getYaxisIndex(size_t i) const
-
-Returns y-axis index for global bin index i. 
-";
-
-%feature("docstring")  IHistogram::getXaxisValue "double IHistogram::getXaxisValue(size_t i)
-
-Returns the center of bin i of the x axis. 
-";
-
-%feature("docstring")  IHistogram::getYaxisValue "double IHistogram::getYaxisValue(size_t i)
-
-Returns the center of bin i of the y axis. 
-";
-
-%feature("docstring")  IHistogram::getBinContent "double IHistogram::getBinContent(size_t i) const
-
-Returns content (accumulated value) of bin i. 
-";
-
-%feature("docstring")  IHistogram::getData "const OutputData<CumulativeValue>& IHistogram::getData() const
-";
-
-%feature("docstring")  IHistogram::getData "OutputData<CumulativeValue>& IHistogram::getData()
-";
-
-%feature("docstring")  IHistogram::getBinContent "double IHistogram::getBinContent(size_t binx, size_t biny) const
-
-Returns content (accumulated value) of the 2D histogram bin. 
-";
-
-%feature("docstring")  IHistogram::setBinContent "void IHistogram::setBinContent(size_t i, double value)
-
-Sets content of the bin corresponding to the globalbin number. 
-";
-
-%feature("docstring")  IHistogram::addBinContent "void IHistogram::addBinContent(size_t i, double value)
-
-Add the value to the bin. 
-";
-
-%feature("docstring")  IHistogram::getBinError "double IHistogram::getBinError(size_t i) const
-
-Returns error of the bin with given index. 
-";
-
-%feature("docstring")  IHistogram::getBinError "double IHistogram::getBinError(size_t binx, size_t biny) const
-
-Returns error of the bin with given indices (for 2D histograms). 
-";
-
-%feature("docstring")  IHistogram::getBinAverage "double IHistogram::getBinAverage(size_t i) const
-
-Returns average value in the bin with given index. 
-";
-
-%feature("docstring")  IHistogram::getBinAverage "double IHistogram::getBinAverage(size_t binx, size_t biny) const
-
-Returns average value of the bin with given indices (for 2D histograms). 
-";
-
-%feature("docstring")  IHistogram::getBinNumberOfEntries "int IHistogram::getBinNumberOfEntries(size_t i) const
-
-Returns number of entries in the bin with given index. 
-";
-
-%feature("docstring")  IHistogram::getBinNumberOfEntries "int IHistogram::getBinNumberOfEntries(size_t binx, size_t biny) const
-
-Returns number of entries in the bin with given indices (for 2D histograms). 
-";
-
-%feature("docstring")  IHistogram::getMaximum "double IHistogram::getMaximum() const
-
-Returns histogram maximum value (maximum of  getBinContent() over all bins) 
-";
-
-%feature("docstring")  IHistogram::getMaximumBinIndex "size_t IHistogram::getMaximumBinIndex() const
-
-Returns globalbin index with maximum content. 
-";
-
-%feature("docstring")  IHistogram::getMinimum "double IHistogram::getMinimum() const
-
-Returns histogram minimum value (minimum of  getBinContent() over all bins) 
-";
-
-%feature("docstring")  IHistogram::getMinimumBinIndex "size_t IHistogram::getMinimumBinIndex() const
-
-Returns globalbin index with minimum content. 
-";
-
-%feature("docstring")  IHistogram::scale "void IHistogram::scale(double value)
-
-Multiply this histogram (every bin content value) by a constant. 
-";
-
-%feature("docstring")  IHistogram::integral "double IHistogram::integral() const
-
-Returns integral of bins content (computed as a sum of all bin content). 
-";
-
-%feature("docstring")  IHistogram::array "PyObject * IHistogram::array(DataType dataType=DataType::INTEGRAL) const
-
-Returns numpy array with bin content (accumulated values). 
-";
-
-%feature("docstring")  IHistogram::getArray "PyObject * IHistogram::getArray(DataType dataType=DataType::INTEGRAL) const
-
-Deprecated
-Use  array() instead. 
-";
-
-%feature("docstring")  IHistogram::reset "void IHistogram::reset()
-
-Reset histogram content (axes remains) 
-";
-
-%feature("docstring")  IHistogram::createOutputData "OutputData< double > * IHistogram::createOutputData(DataType dataType=DataType::INTEGRAL) const
-
-creates new  OutputData with histogram's shape and values corresponding to DataType
-
-creates new  OutputData with histogram's shape and put there values corresponding to DataType 
-";
-
-%feature("docstring")  IHistogram::hasSameShape "bool IHistogram::hasSameShape(const IHistogram &other) const
-
-Returns true if objects a) have same dimensions b) bin boundaries of axes coincide. 
-";
-
-%feature("docstring")  IHistogram::hasSameDimensions "bool IHistogram::hasSameDimensions(const IHistogram &other) const
-
-Returns true if object have same rank and number of axes bins. 
-";
-
-%feature("docstring")  IHistogram::relativeDifferenceHistogram "IHistogram * IHistogram::relativeDifferenceHistogram(const IHistogram &rhs)
-
-returns histogram representing relative difference of two histograms. 
-";
-
-%feature("docstring")  IHistogram::save "void IHistogram::save(const std::string &filename)
-
-Saves histogram in file Following formats are available: *.txt, *.tif, *.int (*.txt.gz, *.tif.gz, *.int.gz) 
-";
-
-%feature("docstring")  IHistogram::load "void IHistogram::load(const std::string &filename)
-
-Loads histogram from file, the shape of array in file should match Following formats are available: *.txt, *.tif, *.int (*.txt.gz, *.tif.gz, *.int.gz) Only bin content will be loaded, histogram axes remain the same. 
-";
-
-
-// File: classIIntensityFunction.xml
-%feature("docstring") IIntensityFunction "
-
-Interface for applying arbitrary function to the measured intensity.
-
-C++ includes: IIntensityFunction.h
-";
-
-%feature("docstring")  IIntensityFunction::~IIntensityFunction "IIntensityFunction::~IIntensityFunction()
-";
-
-%feature("docstring")  IIntensityFunction::clone "virtual IIntensityFunction* IIntensityFunction::clone() const =0
-";
-
-%feature("docstring")  IIntensityFunction::evaluate "virtual double IIntensityFunction::evaluate(double value) const =0
-";
-
-
-// File: classIInterferenceFunction.xml
-%feature("docstring") IInterferenceFunction "
-
-Pure virtual base class of interference functions.
-
-C++ includes: IInterferenceFunction.h
-";
-
-%feature("docstring")  IInterferenceFunction::IInterferenceFunction "IInterferenceFunction::IInterferenceFunction(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IInterferenceFunction::IInterferenceFunction "IInterferenceFunction::IInterferenceFunction(double position_var)
-";
-
-%feature("docstring")  IInterferenceFunction::clone "virtual IInterferenceFunction* IInterferenceFunction::clone() const =0
-";
-
-%feature("docstring")  IInterferenceFunction::evaluate "double IInterferenceFunction::evaluate(const kvector_t q, double outer_iff=1.0) const
-
-Evaluates the interference function for a given wavevector transfer. 
-";
-
-%feature("docstring")  IInterferenceFunction::setPositionVariance "void IInterferenceFunction::setPositionVariance(double var)
-
-Sets the variance of the position for the calculation of the DW factor It is defined as the variance in each relevant dimension 
-";
-
-%feature("docstring")  IInterferenceFunction::positionVariance "double IInterferenceFunction::positionVariance() const
-
-Returns the position variance. 
-";
-
-%feature("docstring")  IInterferenceFunction::getParticleDensity "virtual double IInterferenceFunction::getParticleDensity() const
-
-If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-";
-
-%feature("docstring")  IInterferenceFunction::supportsMultilayer "virtual bool IInterferenceFunction::supportsMultilayer() const
-
-Indicates if this interference function can be used with a multilayer (DWBA mode) 
-";
-
-%feature("docstring")  IInterferenceFunction::DWfactor "double IInterferenceFunction::DWfactor(kvector_t q) const
-
-Evaluates the Debye-Waller factor for a given wavevector transfer. 
-";
-
-
-// File: classIInterferenceFunctionStrategy.xml
-%feature("docstring") IInterferenceFunctionStrategy "
-
-Base class of all interference function strategy classes. Provides an 'evaluate' function that computes the total scattering intensity from a decorated layer, taking into account a specific inter-particle interference function. This function uses the low-level functions scalarCalculation and polarizedCalculation that are to be overriden in the derived classes. Inheritance is used to support different approximation schemes ( DecouplingApproximationStrategy,  SSCApproximationStrategy).
-
-Instantiation of child classes takes place in LayoutStrategyBuilder::createStrategy, which is called from ParticleLayoutComputation::eval.
-
-C++ includes: IInterferenceFunctionStrategy.h
-";
-
-%feature("docstring")  IInterferenceFunctionStrategy::IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(const SimulationOptions &sim_params, bool polarized)
-";
-
-%feature("docstring")  IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy()
-";
-
-%feature("docstring")  IInterferenceFunctionStrategy::init "void IInterferenceFunctionStrategy::init(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff)
-
-Initializes the object with form factors and an interference function. 
-";
-
-%feature("docstring")  IInterferenceFunctionStrategy::evaluate "double IInterferenceFunctionStrategy::evaluate(const SimulationElement &sim_element) const
-
-Calculates the intensity for scalar particles/interactions. 
-";
-
-
-// File: classILatticeOrientation.xml
-%feature("docstring") ILatticeOrientation "";
-
-%feature("docstring")  ILatticeOrientation::~ILatticeOrientation "ILatticeOrientation::~ILatticeOrientation()
-";
-
-%feature("docstring")  ILatticeOrientation::clone "virtual ILatticeOrientation* ILatticeOrientation::clone() const =0
-";
-
-%feature("docstring")  ILatticeOrientation::usePrimitiveLattice "virtual void ILatticeOrientation::usePrimitiveLattice(const Lattice &lattice)=0
-";
-
-%feature("docstring")  ILatticeOrientation::transformationMatrix "virtual Transform3D ILatticeOrientation::transformationMatrix() const =0
-";
-
-
-// File: classILayerRTCoefficients.xml
-%feature("docstring") ILayerRTCoefficients "
-
-Interface to access reflection/transmission coefficients.
-
-C++ includes: ILayerRTCoefficients.h
-";
-
-%feature("docstring")  ILayerRTCoefficients::~ILayerRTCoefficients "virtual ILayerRTCoefficients::~ILayerRTCoefficients()
-";
-
-%feature("docstring")  ILayerRTCoefficients::clone "virtual ILayerRTCoefficients* ILayerRTCoefficients::clone() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::T1plus "virtual Eigen::Vector2cd ILayerRTCoefficients::T1plus() const =0
-
-The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
-";
-
-%feature("docstring")  ILayerRTCoefficients::R1plus "virtual Eigen::Vector2cd ILayerRTCoefficients::R1plus() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::T2plus "virtual Eigen::Vector2cd ILayerRTCoefficients::T2plus() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::R2plus "virtual Eigen::Vector2cd ILayerRTCoefficients::R2plus() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::T1min "virtual Eigen::Vector2cd ILayerRTCoefficients::T1min() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::R1min "virtual Eigen::Vector2cd ILayerRTCoefficients::R1min() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::T2min "virtual Eigen::Vector2cd ILayerRTCoefficients::T2min() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::R2min "virtual Eigen::Vector2cd ILayerRTCoefficients::R2min() const =0
-";
-
-%feature("docstring")  ILayerRTCoefficients::getKz "virtual Eigen::Vector2cd ILayerRTCoefficients::getKz() const =0
-
-Returns z-part of the two wavevector eigenmodes. 
-";
-
-%feature("docstring")  ILayerRTCoefficients::getScalarT "virtual complex_t ILayerRTCoefficients::getScalarT() const
-
-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::getScalarKz "virtual complex_t ILayerRTCoefficients::getScalarKz() const
-";
-
-%feature("docstring")  ILayerRTCoefficients::getReflectionMatrix "virtual Eigen::Matrix2cd ILayerRTCoefficients::getReflectionMatrix() const
-";
-
-
-// File: classILayout.xml
-%feature("docstring") ILayout "
-
-Pure virtual interface class to equip a sample layer with scattering properties. Currently only inherited by  ParticleLayout; in the future also by domain structure.
-
-C++ includes: ILayout.h
-";
-
-%feature("docstring")  ILayout::ILayout "ILayout::ILayout()
-";
-
-%feature("docstring")  ILayout::~ILayout "ILayout::~ILayout()
-";
-
-%feature("docstring")  ILayout::clone "virtual ILayout* ILayout::clone() const =0
-";
-
-%feature("docstring")  ILayout::accept "virtual void ILayout::accept(INodeVisitor *visitor) const =0
-";
-
-%feature("docstring")  ILayout::particles "virtual SafePointerVector<IParticle> ILayout::particles() const =0
-
-Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
-";
-
-%feature("docstring")  ILayout::interferenceFunction "virtual const IInterferenceFunction* ILayout::interferenceFunction() const =0
-
-Returns the interference function. 
-";
-
-%feature("docstring")  ILayout::getTotalAbundance "virtual double ILayout::getTotalAbundance() const =0
-
-Get total abundance of all particles. 
-";
-
-%feature("docstring")  ILayout::totalParticleSurfaceDensity "virtual double ILayout::totalParticleSurfaceDensity() const =0
-
-Returns surface density of all particles. 
-";
-
-%feature("docstring")  ILayout::setTotalParticleSurfaceDensity "virtual void ILayout::setTotalParticleSurfaceDensity(double particle_density)=0
-
-Sets surface density of all particles. 
-";
-
-%feature("docstring")  ILayout::weight "double ILayout::weight() const
-
-Returns the relative weight of this layout. 
-";
-
-%feature("docstring")  ILayout::setWeight "void ILayout::setWeight(double weight)
-
-Sets the relative weight of this layout. 
-";
-
-
-// File: classIMetricWrapper.xml
-%feature("docstring") IMetricWrapper "";
-
-%feature("docstring")  IMetricWrapper::~IMetricWrapper "IMetricWrapper::~IMetricWrapper()
-";
-
-%feature("docstring")  IMetricWrapper::compute "virtual double IMetricWrapper::compute(const std::vector< SimDataPair > &fit_objects, size_t n_pars) const =0
-";
-
-
-// File: classInstrument.xml
-%feature("docstring") Instrument "
-
-Assembles beam, detector and their relative positions with respect to the sample.
-
-C++ includes: Instrument.h
-";
-
-%feature("docstring")  Instrument::Instrument "Instrument::Instrument()
-";
-
-%feature("docstring")  Instrument::Instrument "Instrument::Instrument(const Instrument &other)
-";
-
-%feature("docstring")  Instrument::~Instrument "Instrument::~Instrument()
-";
-
-%feature("docstring")  Instrument::accept "void Instrument::accept(INodeVisitor *visitor) const final
-";
-
-%feature("docstring")  Instrument::getBeam "Beam& Instrument::getBeam()
-";
-
-%feature("docstring")  Instrument::getBeam "const Beam& Instrument::getBeam() const
-";
-
-%feature("docstring")  Instrument::setBeam "void Instrument::setBeam(const Beam &beam)
-";
-
-%feature("docstring")  Instrument::setBeamParameters "void Instrument::setBeamParameters(double wavelength, double alpha_i, double phi_i)
-
-Sets the beam wavelength and incoming angles. 
-";
-
-%feature("docstring")  Instrument::setBeamIntensity "void Instrument::setBeamIntensity(double intensity)
-";
-
-%feature("docstring")  Instrument::setBeamPolarization "void Instrument::setBeamPolarization(const kvector_t bloch_vector)
-
-Sets the beam's polarization according to the given Bloch vector. 
-";
-
-%feature("docstring")  Instrument::getBeamIntensity "double Instrument::getBeamIntensity() const
-";
-
-%feature("docstring")  Instrument::getDetector "const IDetector * Instrument::getDetector() const
-";
-
-%feature("docstring")  Instrument::detector "IDetector & Instrument::detector()
-";
-
-%feature("docstring")  Instrument::detector "const IDetector & Instrument::detector() const
-";
-
-%feature("docstring")  Instrument::detector2D "IDetector2D & Instrument::detector2D()
-";
-
-%feature("docstring")  Instrument::detector2D "const IDetector2D & Instrument::detector2D() const
-";
-
-%feature("docstring")  Instrument::getDetectorMask "const DetectorMask * Instrument::getDetectorMask() const
-";
-
-%feature("docstring")  Instrument::getDetectorAxis "const IAxis & Instrument::getDetectorAxis(size_t index) const
-";
-
-%feature("docstring")  Instrument::getDetectorDimension "size_t Instrument::getDetectorDimension() const
-";
-
-%feature("docstring")  Instrument::setDetector "void Instrument::setDetector(const IDetector &detector)
-
-Sets the detector (axes can be overwritten later) 
-";
-
-%feature("docstring")  Instrument::setDetectorResolutionFunction "void Instrument::setDetectorResolutionFunction(const IResolutionFunction2D &p_resolution_function)
-
-Sets detector resolution function. 
-";
-
-%feature("docstring")  Instrument::removeDetectorResolution "void Instrument::removeDetectorResolution()
-
-Removes detector resolution function. 
-";
-
-%feature("docstring")  Instrument::setAnalyzerProperties "void Instrument::setAnalyzerProperties(const kvector_t direction, double efficiency, double total_transmission)
-
-Sets the polarization analyzer characteristics of the detector. 
-";
-
-%feature("docstring")  Instrument::applyDetectorResolution "void Instrument::applyDetectorResolution(OutputData< double > *p_intensity_map) const
-
-apply the detector resolution to the given intensity map 
-";
-
-%feature("docstring")  Instrument::initDetector "void Instrument::initDetector()
-
-init detector with beam settings 
-";
-
-%feature("docstring")  Instrument::getChildren "std::vector< const INode * > Instrument::getChildren() const
-";
-
-
-// File: classIntegratorMCMiser.xml
-%feature("docstring") IntegratorMCMiser "";
-
-
-// File: classIntensityDataIOFactory.xml
-%feature("docstring") IntensityDataIOFactory "
-
-Provides users with possibility to read and write IntensityData from/to files in different format. Type of the file will be deduced from file name. *.txt - ASCII file with 2D array [nrow][ncol], layout as in numpy. *.int - BornAgain internal ASCII format. *.tif - 32-bits tiff file. If file name ends woth \"*.gz\" or \"*.bz2\" the file will be zipped on the fly using appropriate algorithm. Usage:
-
-C++ includes: IntensityDataIOFactory.h
-";
-
-
-// File: classIntensityFunctionLog.xml
-%feature("docstring") IntensityFunctionLog "
-
-Algorithm for applying log function to the measured intensity.
-
-C++ includes: IIntensityFunction.h
-";
-
-%feature("docstring")  IntensityFunctionLog::clone "IntensityFunctionLog * IntensityFunctionLog::clone() const
-";
-
-%feature("docstring")  IntensityFunctionLog::evaluate "double IntensityFunctionLog::evaluate(double value) const
-";
-
-
-// File: classIntensityFunctionSqrt.xml
-%feature("docstring") IntensityFunctionSqrt "
-
-Algorithm for applying sqrt function to the measured intensity.
-
-C++ includes: IIntensityFunction.h
-";
-
-%feature("docstring")  IntensityFunctionSqrt::clone "IntensityFunctionSqrt * IntensityFunctionSqrt::clone() const
-";
-
-%feature("docstring")  IntensityFunctionSqrt::evaluate "double IntensityFunctionSqrt::evaluate(double value) const
-";
-
-
-// File: classInterferenceFunction1DLattice.xml
-%feature("docstring") InterferenceFunction1DLattice "
-
-Interference function of a 1D lattice.
-
-C++ includes: InterferenceFunction1DLattice.h
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::InterferenceFunction1DLattice "InterferenceFunction1DLattice::InterferenceFunction1DLattice(double length, double xi)
-
-Constructor of interference function of one-dimensional lattice.
-
-Parameters:
------------
-
-length: 
-lattice constant in nanometers
-
-xi: 
-rotation of lattice with respect to x-axis in radians 
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::~InterferenceFunction1DLattice "InterferenceFunction1DLattice::~InterferenceFunction1DLattice() final
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::clone "InterferenceFunction1DLattice * InterferenceFunction1DLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::accept "void InterferenceFunction1DLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::setDecayFunction "void InterferenceFunction1DLattice::setDecayFunction(const IFTDecayFunction1D &decay)
-
-Sets one-dimensional decay function.
-
-Parameters:
------------
-
-decay: 
-one-dimensional decay function in reciprocal space 
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::getLength "double InterferenceFunction1DLattice::getLength() const
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::getXi "double InterferenceFunction1DLattice::getXi() const
-";
-
-%feature("docstring")  InterferenceFunction1DLattice::getChildren "std::vector< const INode * > InterferenceFunction1DLattice::getChildren() const override final
-";
-
-
-// File: classInterferenceFunction2DLattice.xml
-%feature("docstring") InterferenceFunction2DLattice "
-
-Interference function of a 2D lattice.
-
-C++ includes: InterferenceFunction2DLattice.h
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::InterferenceFunction2DLattice "InterferenceFunction2DLattice::InterferenceFunction2DLattice(double length_1, double length_2, double alpha, double xi)
-
-Constructor of two-dimensional interference function.
-
-Parameters:
------------
-
-length_1: 
-length of the first basis vector in nanometers
-
-length_2: 
-length of the second basis vector in nanometers
-
-alpha: 
-angle between the basis vectors in radians
-
-xi: 
-rotation of the lattice with respect to the x-axis (beam direction) in radians 
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::InterferenceFunction2DLattice "InterferenceFunction2DLattice::InterferenceFunction2DLattice(const Lattice2D &lattice)
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::~InterferenceFunction2DLattice "InterferenceFunction2DLattice::~InterferenceFunction2DLattice() final
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::clone "InterferenceFunction2DLattice * InterferenceFunction2DLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::accept "void InterferenceFunction2DLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::setDecayFunction "void InterferenceFunction2DLattice::setDecayFunction(const IFTDecayFunction2D &decay)
-
-Sets two-dimensional decay function.
-
-Parameters:
------------
-
-decay: 
-two-dimensional decay function in reciprocal space 
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::setIntegrationOverXi "void InterferenceFunction2DLattice::setIntegrationOverXi(bool integrate_xi)
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::integrationOverXi "bool InterferenceFunction2DLattice::integrationOverXi() const
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::lattice "const Lattice2D & InterferenceFunction2DLattice::lattice() const
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::getParticleDensity "double InterferenceFunction2DLattice::getParticleDensity() const override final
-
-Returns the particle density associated with this 2d lattice. 
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::getChildren "std::vector< const INode * > InterferenceFunction2DLattice::getChildren() const override final
-";
-
-%feature("docstring")  InterferenceFunction2DLattice::onChange "void InterferenceFunction2DLattice::onChange() override final
-";
-
-
-// File: classInterferenceFunction2DParaCrystal.xml
-%feature("docstring") InterferenceFunction2DParaCrystal "
-
-Interference function of a 2D paracrystal.
-
-C++ includes: InterferenceFunction2DParaCrystal.h
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal "InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(const Lattice2D &lattice, double damping_length, double domain_size_1, double domain_size_2)
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal "InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(double length_1, double length_2, double alpha, double xi, double damping_length)
-
-Constructor of interference function of two-dimensional paracrystal.
-
-Parameters:
------------
-
-length_1: 
-length of first lattice vector in nanometers
-
-length_2: 
-length of second lattice vector in nanometers
-
-alpha: 
-angle between lattice vectors in radians
-
-xi: 
-rotation of lattice with respect to x-axis (beam direction) in radians
-
-damping_length: 
-the damping (coherence) length of the paracrystal in nanometers 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::~InterferenceFunction2DParaCrystal "InterferenceFunction2DParaCrystal::~InterferenceFunction2DParaCrystal() final
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::clone "InterferenceFunction2DParaCrystal * InterferenceFunction2DParaCrystal::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::accept "void InterferenceFunction2DParaCrystal::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::setDomainSizes "void InterferenceFunction2DParaCrystal::setDomainSizes(double size_1, double size_2)
-
-Sets the sizes of coherence domains.
-
-Parameters:
------------
-
-size_1: 
-coherence domain size along the first basis vector in nanometers
-
-size_2: 
-coherence domain size along the second basis vector in nanometers 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::setProbabilityDistributions "void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)
-
-Sets the probability distributions (Fourier transformed) for the two lattice directions.
-
-Parameters:
------------
-
-pdf_1: 
-probability distribution in first lattice direction
-
-pdf_2: 
-probability distribution in second lattice direction 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::setDampingLength "void InterferenceFunction2DParaCrystal::setDampingLength(double damping_length)
-
-Sets the damping length.
-
-Parameters:
------------
-
-damping_length: 
-the damping (coherence) length of the paracrystal in nanometers 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::domainSizes "std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::setIntegrationOverXi "void InterferenceFunction2DParaCrystal::setIntegrationOverXi(bool integrate_xi)
-
-Enables/disables averaging over the lattice rotation angle.
-
-Parameters:
------------
-
-integrate_xi: 
-integration flag 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::integrationOverXi "bool InterferenceFunction2DParaCrystal::integrationOverXi() const
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::dampingLength "double InterferenceFunction2DParaCrystal::dampingLength() const
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::lattice "const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::getParticleDensity "double InterferenceFunction2DParaCrystal::getParticleDensity() const override final
-
-If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::getChildren "std::vector< const INode * > InterferenceFunction2DParaCrystal::getChildren() const override final
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::pdf1 "const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf1() const
-";
-
-%feature("docstring")  InterferenceFunction2DParaCrystal::pdf2 "const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf2() const
-";
-
-
-// File: classInterferenceFunction2DSuperLattice.xml
-%feature("docstring") InterferenceFunction2DSuperLattice "
-
-Interference function of a 2D superlattice with a configurable interference function for each lattice site.
-
-C++ includes: InterferenceFunction2DSuperLattice.h
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice "InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(const Lattice2D &lattice, unsigned size_1, unsigned size_2)
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice "InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(double length_1, double length_2, double alpha, double xi, unsigned size_1, unsigned size_2)
-
-Constructor of two-dimensional interference function.
-
-Parameters:
------------
-
-length_1: 
-length of first lattice vector in nanometers
-
-length_2: 
-length of second lattice vector in nanometers
-
-alpha: 
-angle between lattice vectors in radians
-
-xi: 
-rotation of lattice with respect to x-axis (beam direction) in radians
-
-size_1: 
-correlation length in direction 1
-
-size_2: 
-correlation length in direction 2 
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::~InterferenceFunction2DSuperLattice "InterferenceFunction2DSuperLattice::~InterferenceFunction2DSuperLattice() final
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::clone "InterferenceFunction2DSuperLattice * InterferenceFunction2DSuperLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::accept "void InterferenceFunction2DSuperLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::setSubstructureIFF "void InterferenceFunction2DSuperLattice::setSubstructureIFF(const IInterferenceFunction &sub_iff)
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::substructureIFF "const IInterferenceFunction & InterferenceFunction2DSuperLattice::substructureIFF() const
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::evaluate "double InterferenceFunction2DSuperLattice::evaluate(const kvector_t q, double outer_iff=1.0) const override final
-
-Evaluates the interference function for a given wavevector transfer. 
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::domainSize1 "unsigned InterferenceFunction2DSuperLattice::domainSize1() const
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::domainSize2 "unsigned InterferenceFunction2DSuperLattice::domainSize2() const
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::setIntegrationOverXi "void InterferenceFunction2DSuperLattice::setIntegrationOverXi(bool integrate_xi)
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::integrationOverXi "bool InterferenceFunction2DSuperLattice::integrationOverXi() const
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::lattice "const Lattice2D & InterferenceFunction2DSuperLattice::lattice() const
-";
-
-%feature("docstring")  InterferenceFunction2DSuperLattice::getChildren "std::vector< const INode * > InterferenceFunction2DSuperLattice::getChildren() const override final
-";
-
-
-// File: classInterferenceFunction3DLattice.xml
-%feature("docstring") InterferenceFunction3DLattice "
-
-Interference function of a 3D lattice.
-
-C++ includes: InterferenceFunction3DLattice.h
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::InterferenceFunction3DLattice "InterferenceFunction3DLattice::InterferenceFunction3DLattice(const Lattice &lattice)
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::~InterferenceFunction3DLattice "InterferenceFunction3DLattice::~InterferenceFunction3DLattice() final
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::clone "InterferenceFunction3DLattice * InterferenceFunction3DLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::accept "void InterferenceFunction3DLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::setPeakShape "void InterferenceFunction3DLattice::setPeakShape(const IPeakShape &peak_shape)
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::lattice "const Lattice & InterferenceFunction3DLattice::lattice() const
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::supportsMultilayer "bool InterferenceFunction3DLattice::supportsMultilayer() const override final
-
-Indicates if this interference function can be used with a multilayer (DWBA mode) 
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::getChildren "std::vector< const INode * > InterferenceFunction3DLattice::getChildren() const override final
-";
-
-%feature("docstring")  InterferenceFunction3DLattice::onChange "void InterferenceFunction3DLattice::onChange() override final
-";
-
-
-// File: classInterferenceFunctionFinite2DLattice.xml
-%feature("docstring") InterferenceFunctionFinite2DLattice "
-
-Interference function of a finite 2D lattice.
-
-C++ includes: InterferenceFunctionFinite2DLattice.h
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice "InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(const Lattice2D &lattice, unsigned N_1, unsigned N_2)
-
-Constructor of two-dimensional finite lattice interference function.
-
-Parameters:
------------
-
-lattice: 
-object specifying a 2d lattice structure
-
-N_1: 
-number of lattice cells in the first lattice direction
-
-N_2: 
-number of lattice cells in the second lattice direction 
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice "InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(double length_1, double length_2, double alpha, double xi, unsigned N_1, unsigned N_2)
-
-Constructor of two-dimensional finite lattice interference function.
-
-Parameters:
------------
-
-length_1: 
-length of first lattice vector in nanometers
-
-length_2: 
-length of second lattice vector in nanometers
-
-alpha: 
-angle between lattice vectors in radians
-
-xi: 
-rotation of lattice with respect to x-axis (beam direction) in radians
-
-N_1: 
-number of lattice cells in the first lattice direction
-
-N_2: 
-number of lattice cells in the second lattice direction 
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::~InterferenceFunctionFinite2DLattice "InterferenceFunctionFinite2DLattice::~InterferenceFunctionFinite2DLattice() final
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::clone "InterferenceFunctionFinite2DLattice * InterferenceFunctionFinite2DLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::accept "void InterferenceFunctionFinite2DLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::numberUnitCells1 "unsigned InterferenceFunctionFinite2DLattice::numberUnitCells1() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::numberUnitCells2 "unsigned InterferenceFunctionFinite2DLattice::numberUnitCells2() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::setIntegrationOverXi "void InterferenceFunctionFinite2DLattice::setIntegrationOverXi(bool integrate_xi)
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::integrationOverXi "bool InterferenceFunctionFinite2DLattice::integrationOverXi() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::lattice "const Lattice2D & InterferenceFunctionFinite2DLattice::lattice() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::getParticleDensity "double InterferenceFunctionFinite2DLattice::getParticleDensity() const override final
-
-Returns the particle density associated with this 2d lattice. 
-";
-
-%feature("docstring")  InterferenceFunctionFinite2DLattice::getChildren "std::vector< const INode * > InterferenceFunctionFinite2DLattice::getChildren() const override final
-";
-
-
-// File: classInterferenceFunctionFinite3DLattice.xml
-%feature("docstring") InterferenceFunctionFinite3DLattice "
-
-Interference function of a finite 3D lattice.
-
-C++ includes: InterferenceFunctionFinite3DLattice.h
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice "InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice(const Lattice &lattice, unsigned N_1, unsigned N_2, unsigned N_3)
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::~InterferenceFunctionFinite3DLattice "InterferenceFunctionFinite3DLattice::~InterferenceFunctionFinite3DLattice() final
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::clone "InterferenceFunctionFinite3DLattice * InterferenceFunctionFinite3DLattice::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::accept "void InterferenceFunctionFinite3DLattice::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::numberUnitCells1 "unsigned InterferenceFunctionFinite3DLattice::numberUnitCells1() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::numberUnitCells2 "unsigned InterferenceFunctionFinite3DLattice::numberUnitCells2() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::numberUnitCells3 "unsigned InterferenceFunctionFinite3DLattice::numberUnitCells3() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::lattice "const Lattice & InterferenceFunctionFinite3DLattice::lattice() const
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::supportsMultilayer "bool InterferenceFunctionFinite3DLattice::supportsMultilayer() const override final
-
-Indicates if this interference function can be used with a multilayer (DWBA mode) 
-";
-
-%feature("docstring")  InterferenceFunctionFinite3DLattice::getChildren "std::vector< const INode * > InterferenceFunctionFinite3DLattice::getChildren() const override final
-";
-
-
-// File: classInterferenceFunctionHardDisk.xml
-%feature("docstring") InterferenceFunctionHardDisk "
-
-Percus-Yevick hard disk interference function.
-
-M.S. Ripoll & C.F. Tejero (1995) Approximate analytical expression for the direct correlation function of hard discs within the Percus-Yevick equation, Molecular Physics, 85:2, 423-428, DOI: 10.1080/00268979500101211
-
-C++ includes: InterferenceFunctionHardDisk.h
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::InterferenceFunctionHardDisk "InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(double radius, double density, double position_var=0)
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::~InterferenceFunctionHardDisk "InterferenceFunctionHardDisk::~InterferenceFunctionHardDisk() final=default
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::clone "InterferenceFunctionHardDisk * InterferenceFunctionHardDisk::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::accept "void InterferenceFunctionHardDisk::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::getParticleDensity "double InterferenceFunctionHardDisk::getParticleDensity() const override final
-
-If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::radius "double InterferenceFunctionHardDisk::radius() const
-";
-
-%feature("docstring")  InterferenceFunctionHardDisk::density "double InterferenceFunctionHardDisk::density() const
-";
-
-
-// File: classInterferenceFunctionNone.xml
-%feature("docstring") InterferenceFunctionNone "
-
-Default interference function (i.e. absence of any interference).
-
-C++ includes: InterferenceFunctionNone.h
-";
-
-%feature("docstring")  InterferenceFunctionNone::InterferenceFunctionNone "InterferenceFunctionNone::InterferenceFunctionNone()
-";
-
-%feature("docstring")  InterferenceFunctionNone::clone "InterferenceFunctionNone * InterferenceFunctionNone::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionNone::accept "void InterferenceFunctionNone::accept(INodeVisitor *visitor) const override final
-";
-
-
-// File: classInterferenceFunctionRadialParaCrystal.xml
-%feature("docstring") InterferenceFunctionRadialParaCrystal "
-
-Interference function of radial paracrystal.
-
-C++ includes: InterferenceFunctionRadialParaCrystal.h
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal "InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(double peak_distance, double damping_length)
-
-Constructor of interference function of radial paracrystal.
-
-Parameters:
------------
-
-peak_distance: 
-average distance to the next neighbor in nanometers
-
-damping_length: 
-the damping (coherence) length of the paracrystal in nanometers 
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::clone "InterferenceFunctionRadialParaCrystal * InterferenceFunctionRadialParaCrystal::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::accept "void InterferenceFunctionRadialParaCrystal::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::setKappa "void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)
-
-Sets size spacing coupling parameter of the Size Spacing Correlation Approximation. 
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::kappa "double InterferenceFunctionRadialParaCrystal::kappa() const
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::setDomainSize "void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)
-
-Sets domain size (finite size corrections).
-
-Parameters:
------------
-
-size: 
-size of coherence domain along the lattice main axis in nanometers 
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::domainSize "double InterferenceFunctionRadialParaCrystal::domainSize() const
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::FTPDF "complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::setProbabilityDistribution "void InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(const IFTDistribution1D &pdf)
-
-Sets one-dimensional probability distribution.
-
-Parameters:
------------
-
-pdf: 
-probability distribution (Fourier transform of probability density) 
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::peakDistance "double InterferenceFunctionRadialParaCrystal::peakDistance() const
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::dampingLength "double InterferenceFunctionRadialParaCrystal::dampingLength() const
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::getChildren "std::vector< const INode * > InterferenceFunctionRadialParaCrystal::getChildren() const override final
-";
-
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::randomSample "double InterferenceFunctionRadialParaCrystal::randomSample() const
-";
-
-
-// File: classInterferenceFunctionTwin.xml
-%feature("docstring") InterferenceFunctionTwin "
-
-Interference function for two particles at a mean distance and given standard deviation from each other in a given direction.
-
-C++ includes: InterferenceFunctionTwin.h
-";
-
-%feature("docstring")  InterferenceFunctionTwin::InterferenceFunctionTwin "InterferenceFunctionTwin::InterferenceFunctionTwin(const kvector_t &direction, double mean_distance, double std_dev)
-";
-
-%feature("docstring")  InterferenceFunctionTwin::clone "InterferenceFunctionTwin * InterferenceFunctionTwin::clone() const override final
-";
-
-%feature("docstring")  InterferenceFunctionTwin::accept "void InterferenceFunctionTwin::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  InterferenceFunctionTwin::direction "kvector_t InterferenceFunctionTwin::direction() const
-";
-
-%feature("docstring")  InterferenceFunctionTwin::meanDistance "double InterferenceFunctionTwin::meanDistance() const
-";
-
-%feature("docstring")  InterferenceFunctionTwin::stdDev "double InterferenceFunctionTwin::stdDev() const
-";
-
-
-// File: classIObservable.xml
-%feature("docstring") IObservable "
-
-Observable interface from Observer pattern
-
-C++ includes: IObserver.h
-";
-
-%feature("docstring")  IObservable::~IObservable "IObservable::~IObservable()
-";
-
-%feature("docstring")  IObservable::attachObserver "void IObservable::attachObserver(observer_t obj)
-
-attach observer to the list of observers 
-";
-
-%feature("docstring")  IObservable::notifyObservers "void IObservable::notifyObservers()
-
-notify observers about change in status 
-";
-
-
-// File: classIObserver.xml
-%feature("docstring") IObserver "
-
-Observer interface from Observer pattern.
-
-C++ includes: IObserver.h
-";
-
-%feature("docstring")  IObserver::~IObserver "IObserver::~IObserver()
-";
-
-%feature("docstring")  IObserver::notify "virtual void IObserver::notify(IObservable *subject)=0
-
-method which is used by observable subject to notify change in status 
-";
-
-
-// File: classIOutputDataReadStrategy.xml
-%feature("docstring") IOutputDataReadStrategy "
-
-Interface for reading strategy of  OutputData from file.
-
-C++ includes: OutputDataReadStrategy.h
-";
-
-%feature("docstring")  IOutputDataReadStrategy::~IOutputDataReadStrategy "virtual IOutputDataReadStrategy::~IOutputDataReadStrategy()
-";
-
-%feature("docstring")  IOutputDataReadStrategy::readOutputData "virtual OutputData<double>* IOutputDataReadStrategy::readOutputData(std::istream &input_stream)=0
-";
-
-
-// File: classIOutputDataWriteStrategy.xml
-%feature("docstring") IOutputDataWriteStrategy "
-
-Strategy interface to write OututData in file
-
-C++ includes: OutputDataWriteStrategy.h
-";
-
-%feature("docstring")  IOutputDataWriteStrategy::IOutputDataWriteStrategy "IOutputDataWriteStrategy::IOutputDataWriteStrategy()
-";
-
-%feature("docstring")  IOutputDataWriteStrategy::~IOutputDataWriteStrategy "virtual IOutputDataWriteStrategy::~IOutputDataWriteStrategy()
-";
-
-%feature("docstring")  IOutputDataWriteStrategy::writeOutputData "virtual void IOutputDataWriteStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)=0
-";
-
-
-// File: classIParticle.xml
-%feature("docstring") IParticle "
-
-Pure virtual base class for  Particle,  ParticleComposition,  ParticleCoreShell,  MesoCrystal. Provides position/rotation and form factor. Abundance is inherited from  IAbstractParticle.
-
-C++ includes: IParticle.h
-";
-
-%feature("docstring")  IParticle::~IParticle "IParticle::~IParticle()
-";
-
-%feature("docstring")  IParticle::clone "IParticle* IParticle::clone() const override=0
-";
-
-%feature("docstring")  IParticle::createFormFactor "IFormFactor * IParticle::createFormFactor() const
-
-Creates a form factor for this particle. 
-";
-
-%feature("docstring")  IParticle::createSlicedParticle "SlicedParticle IParticle::createSlicedParticle(ZLimits limits) const
-
-Creates a sliced form factor for this particle. 
-";
-
-%feature("docstring")  IParticle::position "kvector_t IParticle::position() const
-
-Returns particle position. 
-";
-
-%feature("docstring")  IParticle::setPosition "void IParticle::setPosition(kvector_t position)
-
-Sets relative position of the particle's reference point in the coordinate system of parent.
-
-Parameters:
------------
-
-position: 
-relative position vector (components are in nanometers) 
-";
-
-%feature("docstring")  IParticle::setPosition "void IParticle::setPosition(double x, double y, double z)
-
-Sets relative position of the particle's reference point in the coordinate system of parent.
-
-Parameters:
------------
-
-x: 
-x-coordinate in nanometers
-
-y: 
-y-coordinate in nanometers
-
-z: 
-z-coordinate in nanometers 
-";
-
-%feature("docstring")  IParticle::translate "void IParticle::translate(kvector_t translation) override final
-
-Translates the particle. 
-";
-
-%feature("docstring")  IParticle::rotation "const IRotation * IParticle::rotation() const
-
-Returns rotation object. 
-";
-
-%feature("docstring")  IParticle::setRotation "void IParticle::setRotation(const IRotation &rotation)
-
-Sets transformation. 
-";
-
-%feature("docstring")  IParticle::rotate "void IParticle::rotate(const IRotation &rotation) override final
-
-Rotates the particle. 
-";
-
-%feature("docstring")  IParticle::getChildren "std::vector< const INode * > IParticle::getChildren() const override
-";
-
-%feature("docstring")  IParticle::registerAbundance "void IParticle::registerAbundance(bool make_registered=true)
-";
-
-%feature("docstring")  IParticle::registerPosition "void IParticle::registerPosition(bool make_registered=true)
-
-Registers the three components of its position. 
-";
-
-%feature("docstring")  IParticle::decompose "SafePointerVector< IParticle > IParticle::decompose() const
-
-Decompose in constituent  IParticle objects. 
-";
-
-%feature("docstring")  IParticle::bottomTopZ "ParticleLimits IParticle::bottomTopZ() const
-
-Top and bottom z-coordinate. 
-";
-
-
-// File: classIPeakShape.xml
-%feature("docstring") IPeakShape "
-
-Pure virtual interface class that defines the peak shape of a Bragg peak.
-
-C++ includes: IPeakShape.h
-";
-
-%feature("docstring")  IPeakShape::IPeakShape "IPeakShape::IPeakShape()=default
-";
-
-%feature("docstring")  IPeakShape::IPeakShape "IPeakShape::IPeakShape(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IPeakShape::~IPeakShape "IPeakShape::~IPeakShape()
-";
-
-%feature("docstring")  IPeakShape::clone "virtual IPeakShape* IPeakShape::clone() const =0
-";
-
-%feature("docstring")  IPeakShape::evaluate "virtual double IPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const =0
-
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-";
-
-%feature("docstring")  IPeakShape::angularDisorder "virtual bool IPeakShape::angularDisorder() const
-
-Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-";
-
-
-// File: classIRegistry.xml
-%feature("docstring") IRegistry "
-
-Templated object registry.
-
-C++ includes: IRegistry.h
-";
-
-%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() const
-";
-
-%feature("docstring")  IRegistry::size "size_t IRegistry< ValueType >::size() const
-";
-
-
-// File: classIResolutionFunction2D.xml
-%feature("docstring") IResolutionFunction2D "
-
-Interface providing two-dimensional resolution function.
-
-C++ includes: IResolutionFunction2D.h
-";
-
-%feature("docstring")  IResolutionFunction2D::IResolutionFunction2D "IResolutionFunction2D::IResolutionFunction2D()=default
-";
-
-%feature("docstring")  IResolutionFunction2D::IResolutionFunction2D "IResolutionFunction2D::IResolutionFunction2D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  IResolutionFunction2D::~IResolutionFunction2D "virtual IResolutionFunction2D::~IResolutionFunction2D()
-";
-
-%feature("docstring")  IResolutionFunction2D::evaluateCDF "virtual double IResolutionFunction2D::evaluateCDF(double x, double y) const =0
-";
-
-%feature("docstring")  IResolutionFunction2D::clone "virtual IResolutionFunction2D* IResolutionFunction2D::clone() const =0
-";
-
-
-// File: classISampleBuilder.xml
-%feature("docstring") ISampleBuilder "
-
-Interface to the class capable to build samples to simulate.
-
-C++ includes: ISampleBuilder.h
-";
-
-%feature("docstring")  ISampleBuilder::ISampleBuilder "ISampleBuilder::ISampleBuilder()
-";
-
-%feature("docstring")  ISampleBuilder::~ISampleBuilder "ISampleBuilder::~ISampleBuilder()
-";
-
-%feature("docstring")  ISampleBuilder::buildSample "virtual MultiLayer* ISampleBuilder::buildSample() const =0
-";
-
-%feature("docstring")  ISampleBuilder::createSampleByIndex "virtual MultiLayer* ISampleBuilder::createSampleByIndex(size_t)
-";
-
-%feature("docstring")  ISampleBuilder::size "virtual size_t ISampleBuilder::size()
-";
-
-
-// File: classISelectionRule.xml
-%feature("docstring") ISelectionRule "
-
-Pure virtual base class for selection rules.
-
-C++ includes: ISelectionRule.h
-";
-
-%feature("docstring")  ISelectionRule::~ISelectionRule "virtual ISelectionRule::~ISelectionRule()
-";
-
-%feature("docstring")  ISelectionRule::clone "virtual ISelectionRule* ISelectionRule::clone() const =0
-";
-
-%feature("docstring")  ISelectionRule::coordinateSelected "virtual bool ISelectionRule::coordinateSelected(const ivector_t &coordinate) const =0
-";
-
-
-// File: classIsGISAXSDetector.xml
-%feature("docstring") IsGISAXSDetector "
-
-A spherical detector used for validation with IsGISAXS results.
-
-C++ includes: IsGISAXSDetector.h
-";
-
-%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector()
-";
-
-%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector(size_t n_phi, double phi_min, double phi_max, size_t n_alpha, double alpha_min, double alpha_max)
-";
-
-%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector(const IsGISAXSDetector &other)
-";
-
-%feature("docstring")  IsGISAXSDetector::clone "IsGISAXSDetector * IsGISAXSDetector::clone() const override
-";
-
-%feature("docstring")  IsGISAXSDetector::accept "void IsGISAXSDetector::accept(INodeVisitor *visitor) const final
-";
-
-
-// File: classIsotropicGaussPeakShape.xml
-%feature("docstring") IsotropicGaussPeakShape "
-
-Class that implements an isotropic Gaussian peak shape of a Bragg peak.
-
-C++ includes: IPeakShape.h
-";
-
-%feature("docstring")  IsotropicGaussPeakShape::IsotropicGaussPeakShape "IsotropicGaussPeakShape::IsotropicGaussPeakShape(double max_intensity, double domainsize)
-";
-
-%feature("docstring")  IsotropicGaussPeakShape::~IsotropicGaussPeakShape "IsotropicGaussPeakShape::~IsotropicGaussPeakShape() override
-";
-
-%feature("docstring")  IsotropicGaussPeakShape::clone "IsotropicGaussPeakShape * IsotropicGaussPeakShape::clone() const override
-";
-
-%feature("docstring")  IsotropicGaussPeakShape::accept "void IsotropicGaussPeakShape::accept(INodeVisitor *visitor) const override
-";
-
-%feature("docstring")  IsotropicGaussPeakShape::evaluate "double IsotropicGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-";
-
-
-// File: classIsotropicLorentzPeakShape.xml
-%feature("docstring") IsotropicLorentzPeakShape "
-
-An isotropic Lorentzian peak shape of a Bragg peak.
-
-C++ includes: IPeakShape.h
-";
-
-%feature("docstring")  IsotropicLorentzPeakShape::IsotropicLorentzPeakShape "IsotropicLorentzPeakShape::IsotropicLorentzPeakShape(double max_intensity, double domainsize)
-";
-
-%feature("docstring")  IsotropicLorentzPeakShape::~IsotropicLorentzPeakShape "IsotropicLorentzPeakShape::~IsotropicLorentzPeakShape() override
-";
-
-%feature("docstring")  IsotropicLorentzPeakShape::clone "IsotropicLorentzPeakShape * IsotropicLorentzPeakShape::clone() const override
-";
-
-%feature("docstring")  IsotropicLorentzPeakShape::accept "void IsotropicLorentzPeakShape::accept(INodeVisitor *visitor) const override
-";
-
-%feature("docstring")  IsotropicLorentzPeakShape::evaluate "double IsotropicLorentzPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-";
-
-
-// File: classISpecularScan.xml
-%feature("docstring") ISpecularScan "
-
-Base abstract class for all types of specular scans.
-
-C++ includes: ISpecularScan.h
-";
-
-%feature("docstring")  ISpecularScan::ISpecularScan "ISpecularScan::ISpecularScan(SPECULAR_DATA_TYPE data_type)
-";
-
-%feature("docstring")  ISpecularScan::~ISpecularScan "ISpecularScan::~ISpecularScan() override
-";
-
-%feature("docstring")  ISpecularScan::clone "ISpecularScan* ISpecularScan::clone() const override=0
-";
-
-%feature("docstring")  ISpecularScan::generateSimulationElements "virtual std::vector<SpecularSimulationElement> ISpecularScan::generateSimulationElements() const =0
-
-Generates simulation elements for specular simulations. 
-";
-
-%feature("docstring")  ISpecularScan::coordinateAxis "virtual const IAxis* ISpecularScan::coordinateAxis() const =0
-
-Returns coordinate axis assigned to the data holder. 
-";
-
-%feature("docstring")  ISpecularScan::footprintFactor "virtual const IFootprintFactor* ISpecularScan::footprintFactor() const =0
-
-Returns  IFootprintFactor object pointer. 
-";
-
-%feature("docstring")  ISpecularScan::footprint "virtual std::vector<double> ISpecularScan::footprint(size_t i, size_t n_elements) const =0
-
-Returns footprint correction factor for a range of simulation elements of size  n_elements and starting from element with index  i. 
-";
-
-%feature("docstring")  ISpecularScan::numberOfSimulationElements "virtual size_t ISpecularScan::numberOfSimulationElements() const =0
-
-Returns the number of simulation elements. 
-";
-
-%feature("docstring")  ISpecularScan::createIntensities "virtual std::vector<double> ISpecularScan::createIntensities(const std::vector< SpecularSimulationElement > &sim_elements) const =0
-
-Returns intensity vector corresponding to convolution of given simulation elements. 
-";
-
-%feature("docstring")  ISpecularScan::print "virtual std::string ISpecularScan::print() const =0
-
-Print scan definition in python format. 
-";
-
-%feature("docstring")  ISpecularScan::dataType "SPECULAR_DATA_TYPE ISpecularScan::dataType() const
-";
-
-
-// File: classISpecularStrategy.xml
-%feature("docstring") ISpecularStrategy "
-
-Interface for the Fresnel computations, both in the scalar and magnetic case
-
-Inherited by  SpecularScalarStrategy,  SpecularMagneticOldStrategy,  SpecularMagneticStrategy,  SpecularMagneticNewStrategy
-
-C++ includes: ISpecularStrategy.h
-";
-
-%feature("docstring")  ISpecularStrategy::ISpecularStrategy "ISpecularStrategy::ISpecularStrategy()=default
-";
-
-%feature("docstring")  ISpecularStrategy::~ISpecularStrategy "virtual ISpecularStrategy::~ISpecularStrategy()=default
-";
-
-%feature("docstring")  ISpecularStrategy::ISpecularStrategy "ISpecularStrategy::ISpecularStrategy(const ISpecularStrategy &other)=delete
-";
-
-%feature("docstring")  ISpecularStrategy::Execute "virtual coeffs_t ISpecularStrategy::Execute(const std::vector< Slice > &slices, const kvector_t &k) const =0
-";
-
-%feature("docstring")  ISpecularStrategy::Execute "virtual coeffs_t ISpecularStrategy::Execute(const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const =0
-";
-
-
-// File: classIterationInfo.xml
-%feature("docstring") IterationInfo "
-
-Stores fit iteration info to track fit flow from various observers. Used in context of  FitObjective.
-
-C++ includes: IterationInfo.h
-";
-
-%feature("docstring")  IterationInfo::IterationInfo "IterationInfo::IterationInfo()
-";
-
-%feature("docstring")  IterationInfo::update "void IterationInfo::update(const Fit::Parameters &params, double chi2)
-";
-
-%feature("docstring")  IterationInfo::iterationCount "unsigned IterationInfo::iterationCount() const
-
-Returns current number of minimizer iterations. 
-";
-
-%feature("docstring")  IterationInfo::chi2 "double IterationInfo::chi2() const
-";
-
-%feature("docstring")  IterationInfo::parameters "Fit::Parameters IterationInfo::parameters() const
-";
-
-%feature("docstring")  IterationInfo::parameterMap "std::map< std::string, double > IterationInfo::parameterMap() const
-
-Returns map of fit parameter names and its current values. 
-";
-
-
-// File: classIUnitConverter.xml
-%feature("docstring") IUnitConverter "
-
-Interface to provide axis translations to different units for simulation output
-
-C++ includes: IUnitConverter.h
-";
-
-%feature("docstring")  IUnitConverter::~IUnitConverter "IUnitConverter::~IUnitConverter()
-";
-
-%feature("docstring")  IUnitConverter::clone "virtual IUnitConverter* IUnitConverter::clone() const =0
-";
-
-%feature("docstring")  IUnitConverter::dimension "virtual size_t IUnitConverter::dimension() const =0
-";
-
-%feature("docstring")  IUnitConverter::calculateMin "virtual double IUnitConverter::calculateMin(size_t i_axis, Axes::Units units_type) const =0
-";
-
-%feature("docstring")  IUnitConverter::calculateMax "virtual double IUnitConverter::calculateMax(size_t i_axis, Axes::Units units_type) const =0
-";
-
-%feature("docstring")  IUnitConverter::axisSize "virtual size_t IUnitConverter::axisSize(size_t i_axis) const =0
-";
-
-%feature("docstring")  IUnitConverter::axisName "std::string IUnitConverter::axisName(size_t i_axis, Axes::Units units_type=Axes::Units::DEFAULT) const
-";
-
-%feature("docstring")  IUnitConverter::availableUnits "virtual std::vector<Axes::Units> IUnitConverter::availableUnits() const =0
-";
-
-%feature("docstring")  IUnitConverter::defaultUnits "virtual Axes::Units IUnitConverter::defaultUnits() const =0
-";
-
-%feature("docstring")  IUnitConverter::substituteDefaultUnits "Axes::Units IUnitConverter::substituteDefaultUnits(Axes::Units units) const
-";
-
-%feature("docstring")  IUnitConverter::createConvertedAxis "virtual std::unique_ptr<IAxis> IUnitConverter::createConvertedAxis(size_t i_axis, Axes::Units units) const =0
-";
-
-%feature("docstring")  IUnitConverter::createConvertedData "std::unique_ptr< OutputData< double > > IUnitConverter::createConvertedData(const OutputData< double > &data, Axes::Units units) const
-
-Creates  OutputData array in converter units. 
-";
-
-
-// File: classIVarianceFunction.xml
-%feature("docstring") IVarianceFunction "
-
-Variance function interface.
-
-C++ includes: VarianceFunctions.h
-";
-
-%feature("docstring")  IVarianceFunction::IVarianceFunction "IVarianceFunction::IVarianceFunction()
-";
-
-%feature("docstring")  IVarianceFunction::~IVarianceFunction "IVarianceFunction::~IVarianceFunction()
-";
-
-%feature("docstring")  IVarianceFunction::clone "virtual IVarianceFunction* IVarianceFunction::clone() const =0
-";
-
-%feature("docstring")  IVarianceFunction::variance "virtual double IVarianceFunction::variance(double real_value, double simulated_value) const =0
-";
-
-%feature("docstring")  IVarianceFunction::IVarianceFunction "IVarianceFunction::IVarianceFunction(const IVarianceFunction &)=delete
-";
-
-
-// File: classLabelMap.xml
-%feature("docstring") LabelMap "";
-
-
-// File: classLargeCylindersInDWBABuilder.xml
-%feature("docstring") LargeCylindersInDWBABuilder "
-
-Builds sample with large cylinders for MC integration tests.
-
-C++ includes: CylindersBuilder.h
-";
-
-%feature("docstring")  LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder "LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder()
-";
-
-%feature("docstring")  LargeCylindersInDWBABuilder::buildSample "MultiLayer * LargeCylindersInDWBABuilder::buildSample() const
-";
-
-
-// File: classLattice.xml
-%feature("docstring") Lattice "
-
-A lattice with three basis vectors.
-
-C++ includes: Lattice.h
-";
-
-%feature("docstring")  Lattice::Lattice "Lattice::Lattice()
-";
-
-%feature("docstring")  Lattice::Lattice "Lattice::Lattice(const kvector_t a1, const kvector_t a2, const kvector_t a3)
-";
-
-%feature("docstring")  Lattice::Lattice "Lattice::Lattice(const Lattice &lattice)
-";
-
-%feature("docstring")  Lattice::~Lattice "Lattice::~Lattice() override
-";
-
-%feature("docstring")  Lattice::accept "void Lattice::accept(INodeVisitor *visitor) const override
-";
-
-%feature("docstring")  Lattice::createTransformedLattice "Lattice Lattice::createTransformedLattice(const Transform3D &transform) const
-
-Creates transformed lattice. 
-";
-
-%feature("docstring")  Lattice::initialize "void Lattice::initialize() const
-
-Initializes cached data. 
-";
-
-%feature("docstring")  Lattice::getBasisVectorA "kvector_t Lattice::getBasisVectorA() const
-
-Returns basis vector a. 
-";
-
-%feature("docstring")  Lattice::getBasisVectorB "kvector_t Lattice::getBasisVectorB() const
-
-Returns basis vector b. 
-";
-
-%feature("docstring")  Lattice::getBasisVectorC "kvector_t Lattice::getBasisVectorC() const
-
-Returns basis vector c. 
-";
-
-%feature("docstring")  Lattice::resetBasis "void Lattice::resetBasis(const kvector_t a1, const kvector_t a2, const kvector_t a3)
-
-Resets the basis vectors. 
-";
-
-%feature("docstring")  Lattice::getMillerDirection "kvector_t Lattice::getMillerDirection(double h, double k, double l) const
-
-Returns normalized direction corresponding to the given Miller indices. 
-";
-
-%feature("docstring")  Lattice::volume "double Lattice::volume() const
-
-Returns the volume of the unit cell. 
-";
-
-%feature("docstring")  Lattice::getReciprocalLatticeBasis "void Lattice::getReciprocalLatticeBasis(kvector_t &b1, kvector_t &b2, kvector_t &b3) const
-
-Returns the reciprocal basis vectors. 
-";
-
-%feature("docstring")  Lattice::getNearestLatticeVectorCoordinates "ivector_t Lattice::getNearestLatticeVectorCoordinates(const kvector_t vector_in) const
-
-Returns the nearest lattice point from a given vector. 
-";
-
-%feature("docstring")  Lattice::getNearestReciprocalLatticeVectorCoordinates "ivector_t Lattice::getNearestReciprocalLatticeVectorCoordinates(const kvector_t vector_in) const
-
-Returns the nearest reciprocal lattice point from a given vector. 
-";
-
-%feature("docstring")  Lattice::reciprocalLatticeVectorsWithinRadius "std::vector< kvector_t > Lattice::reciprocalLatticeVectorsWithinRadius(const kvector_t input_vector, double radius) const
-
-Computes a list of reciprocal lattice vectors within a specified distance of a given vector. 
-";
-
-%feature("docstring")  Lattice::setSelectionRule "void Lattice::setSelectionRule(const ISelectionRule &p_selection_rule)
-
-Sets a selection rule for the reciprocal vectors. 
-";
-
-%feature("docstring")  Lattice::onChange "void Lattice::onChange() override
-";
-
-
-// File: classLattice1DBuilder.xml
-%feature("docstring") Lattice1DBuilder "
-
-Builds sample: cylinders with 1DDL structure factor.
-
-C++ includes: LatticeBuilder.h
-";
-
-%feature("docstring")  Lattice1DBuilder::buildSample "MultiLayer * Lattice1DBuilder::buildSample() const
-";
-
-
-// File: classLattice2D.xml
-%feature("docstring") Lattice2D "";
-
-%feature("docstring")  Lattice2D::Lattice2D "Lattice2D::Lattice2D(const NodeMeta &meta, const std::vector< double > &PValues)
-";
-
-%feature("docstring")  Lattice2D::Lattice2D "Lattice2D::Lattice2D(double xi)
-";
-
-%feature("docstring")  Lattice2D::clone "virtual Lattice2D* Lattice2D::clone() const =0
-";
-
-%feature("docstring")  Lattice2D::length1 "virtual double Lattice2D::length1() const =0
-";
-
-%feature("docstring")  Lattice2D::length2 "virtual double Lattice2D::length2() const =0
-";
-
-%feature("docstring")  Lattice2D::latticeAngle "virtual double Lattice2D::latticeAngle() const =0
-";
-
-%feature("docstring")  Lattice2D::unitCellArea "virtual double Lattice2D::unitCellArea() const =0
-";
-
-%feature("docstring")  Lattice2D::rotationAngle "double Lattice2D::rotationAngle() const
-";
-
-%feature("docstring")  Lattice2D::reciprocalBases "Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const
-";
-
-%feature("docstring")  Lattice2D::setRotationEnabled "void Lattice2D::setRotationEnabled(bool enabled)
-";
-
-
-// File: classLayer.xml
-%feature("docstring") Layer "
-
-A layer, with thickness (in nanometer) and material.
-
-C++ includes: Layer.h
-";
-
-%feature("docstring")  Layer::Layer "Layer::Layer(Material material, double thickness=0)
-
-Constructor of a layer with thickness and material
-
-Parameters:
------------
-
-material: 
-material the layer is made of
-
-thickness: 
-thickness of a layer in nanometers 
-";
-
-%feature("docstring")  Layer::~Layer "Layer::~Layer() override
-";
-
-%feature("docstring")  Layer::clone "Layer * Layer::clone() const override final
-";
-
-%feature("docstring")  Layer::accept "void Layer::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  Layer::setThickness "void Layer::setThickness(double thickness)
-
-Sets layer thickness in nanometers. 
-";
-
-%feature("docstring")  Layer::thickness "double Layer::thickness() const
-";
-
-%feature("docstring")  Layer::material "const Material* Layer::material() const override final
-";
-
-%feature("docstring")  Layer::setMaterial "void Layer::setMaterial(Material material)
-";
-
-%feature("docstring")  Layer::addLayout "void Layer::addLayout(const ILayout &decoration)
-";
-
-%feature("docstring")  Layer::numberOfLayouts "size_t Layer::numberOfLayouts() const
-";
-
-%feature("docstring")  Layer::layouts "std::vector< const ILayout * > Layer::layouts() const
-";
-
-%feature("docstring")  Layer::getChildren "std::vector< const INode * > Layer::getChildren() const override final
-";
-
-%feature("docstring")  Layer::registerThickness "void Layer::registerThickness(bool make_registered=true)
-";
-
-%feature("docstring")  Layer::setNumberOfSlices "void Layer::setNumberOfSlices(unsigned int n_slices)
+%feature("docstring")  Instrument::~Instrument "Instrument::~Instrument()
 ";
 
-%feature("docstring")  Layer::numberOfSlices "unsigned int Layer::numberOfSlices() const
+%feature("docstring")  Instrument::accept "void Instrument::accept(INodeVisitor *visitor) const final
 ";
 
-
-// File: classLayerFillLimits.xml
-%feature("docstring") LayerFillLimits "
-
-Helper class for the graded layer approximation. Generates limits for each layer, indicating the region of the layer (along z) that contains particle(s)
-
-The constructor takes the bottom layer z-coordinates as parameter. This means that for N layers, only N-1 coordinates need to be passed (the last layer is assumed to be semi-infinite).
-
-C++ includes: LayerFillLimits.h
+%feature("docstring")  Instrument::getBeam "Beam& Instrument::getBeam()
 ";
 
-%feature("docstring")  LayerFillLimits::LayerFillLimits "LayerFillLimits::LayerFillLimits(std::vector< double > layers_bottomz)
+%feature("docstring")  Instrument::getBeam "const Beam& Instrument::getBeam() const
 ";
 
-%feature("docstring")  LayerFillLimits::update "void LayerFillLimits::update(ParticleLimits particle_limits, double offset=0.0)
-
-Particle limits are given in global coordinates. 
+%feature("docstring")  Instrument::setBeam "void Instrument::setBeam(const Beam &beam)
 ";
 
-%feature("docstring")  LayerFillLimits::layerZLimits "std::vector< ZLimits > LayerFillLimits::layerZLimits() const
+%feature("docstring")  Instrument::setBeamParameters "void Instrument::setBeamParameters(double wavelength, double alpha_i, double phi_i)
 
-Returns the filled region limits for each layer (in local layer coordinates) 
+Sets the beam wavelength and incoming angles. 
 ";
 
-
-// File: classLayerInterface.xml
-%feature("docstring") LayerInterface "
-
-Interface between two layers, possibly with roughness.
-
-C++ includes: LayerInterface.h
+%feature("docstring")  Instrument::setBeamIntensity "void Instrument::setBeamIntensity(double intensity)
 ";
 
-%feature("docstring")  LayerInterface::~LayerInterface "LayerInterface::~LayerInterface()
-";
+%feature("docstring")  Instrument::setBeamPolarization "void Instrument::setBeamPolarization(const kvector_t bloch_vector)
 
-%feature("docstring")  LayerInterface::clone "LayerInterface * LayerInterface::clone() const
+Sets the beam's polarization according to the given Bloch vector. 
 ";
 
-%feature("docstring")  LayerInterface::accept "virtual void LayerInterface::accept(INodeVisitor *visitor) const
+%feature("docstring")  Instrument::getBeamIntensity "double Instrument::getBeamIntensity() const
 ";
 
-%feature("docstring")  LayerInterface::setRoughness "void LayerInterface::setRoughness(const LayerRoughness &roughness)
-
-Sets roughness of the interface. 
+%feature("docstring")  Instrument::getDetector "const IDetector * Instrument::getDetector() const
 ";
 
-%feature("docstring")  LayerInterface::getRoughness "const LayerRoughness * LayerInterface::getRoughness() const
-
-Returns roughness of the interface. 
+%feature("docstring")  Instrument::detector "IDetector & Instrument::detector()
 ";
 
-%feature("docstring")  LayerInterface::topLayer "const Layer * LayerInterface::topLayer() const
+%feature("docstring")  Instrument::detector "const IDetector & Instrument::detector() const
 ";
 
-%feature("docstring")  LayerInterface::bottomLayer "const Layer * LayerInterface::bottomLayer() const
+%feature("docstring")  Instrument::detector2D "IDetector2D & Instrument::detector2D()
 ";
 
-%feature("docstring")  LayerInterface::getChildren "std::vector< const INode * > LayerInterface::getChildren() const
+%feature("docstring")  Instrument::detector2D "const IDetector2D & Instrument::detector2D() const
 ";
 
-
-// File: classLayerRoughness.xml
-%feature("docstring") LayerRoughness "
-
-A roughness of interface between two layers.
-
-Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 \"X-ray reflection and transmission by rough surfaces\"
-
-C++ includes: LayerRoughness.h
+%feature("docstring")  Instrument::getDetectorMask "const DetectorMask * Instrument::getDetectorMask() const
 ";
 
-%feature("docstring")  LayerRoughness::LayerRoughness "LayerRoughness::LayerRoughness(double sigma, double hurstParameter, double lateralCorrLength)
-
-Constructor of layer roughness.
-
-Parameters:
------------
-
-sigma: 
-rms of the roughness in nanometers
-
-hurstParameter: 
-hurst parameter which describes how jagged the interface, dimensionless [0.0, 1.0], where 0.0 gives more spikes, 1.0 more smoothness
-
-lateralCorrLength: 
-lateral correlation length of the roughness in nanometers 
+%feature("docstring")  Instrument::getDetectorAxis "const IAxis & Instrument::getDetectorAxis(size_t index) const
 ";
 
-%feature("docstring")  LayerRoughness::LayerRoughness "LayerRoughness::LayerRoughness()
+%feature("docstring")  Instrument::getDetectorDimension "size_t Instrument::getDetectorDimension() const
 ";
 
-%feature("docstring")  LayerRoughness::clone "LayerRoughness* LayerRoughness::clone() const
-";
+%feature("docstring")  Instrument::setDetector "void Instrument::setDetector(const IDetector &detector)
 
-%feature("docstring")  LayerRoughness::accept "virtual void LayerRoughness::accept(INodeVisitor *visitor) const
+Sets the detector (axes can be overwritten later) 
 ";
 
-%feature("docstring")  LayerRoughness::getSpectralFun "double LayerRoughness::getSpectralFun(const kvector_t kvec) const
-
-Returns power spectral density of the surface roughness.
-
-Power spectral density of the surface roughness is a result of two-dimensional Fourier transform of the correlation function of the roughness profile.
+%feature("docstring")  Instrument::setDetectorResolutionFunction "void Instrument::setDetectorResolutionFunction(const IResolutionFunction2D &p_resolution_function)
 
-Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 \"X-ray reflection and transmission by rough surfaces\" 
+Sets detector resolution function. 
 ";
 
-%feature("docstring")  LayerRoughness::getCorrFun "double LayerRoughness::getCorrFun(const kvector_t k) const
+%feature("docstring")  Instrument::removeDetectorResolution "void Instrument::removeDetectorResolution()
 
-Correlation function of the roughness profile. 
+Removes detector resolution function. 
 ";
 
-%feature("docstring")  LayerRoughness::setSigma "void LayerRoughness::setSigma(double sigma)
+%feature("docstring")  Instrument::setAnalyzerProperties "void Instrument::setAnalyzerProperties(const kvector_t direction, double efficiency, double total_transmission)
 
-Sets rms of roughness. 
+Sets the polarization analyzer characteristics of the detector. 
 ";
 
-%feature("docstring")  LayerRoughness::getSigma "double LayerRoughness::getSigma() const
+%feature("docstring")  Instrument::applyDetectorResolution "void Instrument::applyDetectorResolution(OutputData< double > *p_intensity_map) const
 
-Returns rms of roughness. 
+apply the detector resolution to the given intensity map 
 ";
 
-%feature("docstring")  LayerRoughness::setHurstParameter "void LayerRoughness::setHurstParameter(double hurstParameter)
+%feature("docstring")  Instrument::initDetector "void Instrument::initDetector()
 
-Sets hurst parameter. It describes how jagged the surface is. 
+init detector with beam settings 
 ";
 
-%feature("docstring")  LayerRoughness::getHurstParameter "double LayerRoughness::getHurstParameter() const
-
-Returns hurst parameter. 
+%feature("docstring")  Instrument::getChildren "std::vector< const INode * > Instrument::getChildren() const
 ";
 
-%feature("docstring")  LayerRoughness::setLatteralCorrLength "void LayerRoughness::setLatteralCorrLength(double lateralCorrLength)
 
-Sets lateral correlation length. 
-";
+// File: classIntensityDataIOFactory.xml
+%feature("docstring") IntensityDataIOFactory "
 
-%feature("docstring")  LayerRoughness::getLatteralCorrLength "double LayerRoughness::getLatteralCorrLength() const
+Provides users with possibility to read and write IntensityData from/to files in different format. Type of the file will be deduced from file name. *.txt - ASCII file with 2D array [nrow][ncol], layout as in numpy. *.int - BornAgain internal ASCII format. *.tif - 32-bits tiff file. If file name ends woth \"*.gz\" or \"*.bz2\" the file will be zipped on the fly using appropriate algorithm. Usage:
 
-Returns lateral correlation length. 
+C++ includes: IntensityDataIOFactory.h
 ";
 
 
-// File: classLayersWithAbsorptionBuilder.xml
-%feature("docstring") LayersWithAbsorptionBuilder "
-
-The  LayersWithAbsorptionBuilder class generates a multilayer with 3 layers with absorption (refractive index has imaginary part).The middle layer is populated with particles. Requires IComponentService which generates form factors, used for bulk form factors testing.
-
-C++ includes: LayersWithAbsorptionBuilder.h
-";
-
-%feature("docstring")  LayersWithAbsorptionBuilder::LayersWithAbsorptionBuilder "LayersWithAbsorptionBuilder::LayersWithAbsorptionBuilder()
-";
+// File: classIntensityFunctionLog.xml
+%feature("docstring") IntensityFunctionLog "
 
-%feature("docstring")  LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder "LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder()
-";
+Algorithm for applying log function to the measured intensity.
 
-%feature("docstring")  LayersWithAbsorptionBuilder::buildSample "MultiLayer * LayersWithAbsorptionBuilder::buildSample() const
+C++ includes: IIntensityFunction.h
 ";
 
-%feature("docstring")  LayersWithAbsorptionBuilder::createSampleByIndex "MultiLayer * LayersWithAbsorptionBuilder::createSampleByIndex(size_t index)
+%feature("docstring")  IntensityFunctionLog::clone "IntensityFunctionLog * IntensityFunctionLog::clone() const
 ";
 
-%feature("docstring")  LayersWithAbsorptionBuilder::size "size_t LayersWithAbsorptionBuilder::size()
+%feature("docstring")  IntensityFunctionLog::evaluate "double IntensityFunctionLog::evaluate(double value) const
 ";
 
 
-// File: classLayersWithAbsorptionBySLDBuilder.xml
-%feature("docstring") LayersWithAbsorptionBySLDBuilder "
+// File: classIntensityFunctionSqrt.xml
+%feature("docstring") IntensityFunctionSqrt "
 
-The  LayersWithAbsorptionBySLDBuilder class generates a multilayer with 3 layers with absorption (refractive index has imaginary part). //! The middle layer is populated with particles. MaterialBySLD is used to generate maaterials
+Algorithm for applying sqrt function to the measured intensity.
 
-C++ includes: LayersWithAbsorptionBySLDBuilder.h
+C++ includes: IIntensityFunction.h
 ";
 
-%feature("docstring")  LayersWithAbsorptionBySLDBuilder::buildSample "MultiLayer * LayersWithAbsorptionBySLDBuilder::buildSample() const
+%feature("docstring")  IntensityFunctionSqrt::clone "IntensityFunctionSqrt * IntensityFunctionSqrt::clone() const
 ";
 
+%feature("docstring")  IntensityFunctionSqrt::evaluate "double IntensityFunctionSqrt::evaluate(double value) const
+";
 
-// File: classLayoutStrategyBuilder.xml
-%feature("docstring") LayoutStrategyBuilder "
-
-Methods to generate a simulation strategy for a  ParticleLayoutComputation.
 
-C++ includes: LayoutStrategyBuilder.h
-";
+// File: classIObservable.xml
+%feature("docstring") IObservable "
 
-%feature("docstring")  LayoutStrategyBuilder::LayoutStrategyBuilder "LayoutStrategyBuilder::LayoutStrategyBuilder(const ProcessedLayout *p_layout, const SimulationOptions &sim_params, bool polarized)
-";
+Observable interface from Observer pattern
 
-%feature("docstring")  LayoutStrategyBuilder::~LayoutStrategyBuilder "LayoutStrategyBuilder::~LayoutStrategyBuilder()
+C++ includes: IObserver.h
 ";
 
-%feature("docstring")  LayoutStrategyBuilder::releaseStrategy "IInterferenceFunctionStrategy * LayoutStrategyBuilder::releaseStrategy()
+%feature("docstring")  IObservable::~IObservable "IObservable::~IObservable()
 ";
 
+%feature("docstring")  IObservable::attachObserver "void IObservable::attachObserver(observer_t obj)
 
-// File: classLinkedBoxDistributionBuilder.xml
-%feature("docstring") LinkedBoxDistributionBuilder "
-
-Distribution of boxes with main parameter and two linked parameters.
-
-C++ includes: ParticleDistributionsBuilder.h
+attach observer to the list of observers 
 ";
 
-%feature("docstring")  LinkedBoxDistributionBuilder::LinkedBoxDistributionBuilder "LinkedBoxDistributionBuilder::LinkedBoxDistributionBuilder()=default
-";
+%feature("docstring")  IObservable::notifyObservers "void IObservable::notifyObservers()
 
-%feature("docstring")  LinkedBoxDistributionBuilder::buildSample "MultiLayer * LinkedBoxDistributionBuilder::buildSample() const
+notify observers about change in status 
 ";
 
 
-// File: classLLData.xml
-%feature("docstring") LLData "
-
-Template class to store data of any type in multi-dimensional space (low-level).
-
-C++ includes: LLData.h
-";
-
-%feature("docstring")  LLData::LLData "LLData< T >::LLData(size_t rank, const int *dimensions)
-";
+// File: classIObserver.xml
+%feature("docstring") IObserver "
 
-%feature("docstring")  LLData::LLData "LLData< T >::LLData(const LLData< T > &right)
-";
+Observer interface from Observer pattern.
 
-%feature("docstring")  LLData::~LLData "LLData< T >::~LLData()
+C++ includes: IObserver.h
 ";
 
-%feature("docstring")  LLData::meanValues "LLData<double> LLData< T >::meanValues() const
+%feature("docstring")  IObserver::~IObserver "IObserver::~IObserver()
 ";
 
-%feature("docstring")  LLData::atCoordinate "T & LLData< T >::atCoordinate(int *coordinate)
-";
+%feature("docstring")  IObserver::notify "virtual void IObserver::notify(IObservable *subject)=0
 
-%feature("docstring")  LLData::atCoordinate "const T & LLData< T >::atCoordinate(int *coordinate) const
+method which is used by observable subject to notify change in status 
 ";
 
-%feature("docstring")  LLData::setAll "void LLData< T >::setAll(const T &value)
-";
 
-%feature("docstring")  LLData::scaleAll "void LLData< T >::scaleAll(const T &factor)
-";
+// File: classIOutputDataReadStrategy.xml
+%feature("docstring") IOutputDataReadStrategy "
 
-%feature("docstring")  LLData::getTotalSize "size_t LLData< T >::getTotalSize() const
-";
+Interface for reading strategy of  OutputData from file.
 
-%feature("docstring")  LLData::getRank "size_t LLData< T >::getRank() const
+C++ includes: OutputDataReadStrategy.h
 ";
 
-%feature("docstring")  LLData::getDimensions "const int* LLData< T >::getDimensions() const
+%feature("docstring")  IOutputDataReadStrategy::~IOutputDataReadStrategy "virtual IOutputDataReadStrategy::~IOutputDataReadStrategy()
 ";
 
-%feature("docstring")  LLData::getTotalSum "T LLData< T >::getTotalSum() const
+%feature("docstring")  IOutputDataReadStrategy::readOutputData "virtual OutputData<double>* IOutputDataReadStrategy::readOutputData(std::istream &input_stream)=0
 ";
 
 
-// File: classLogMetric.xml
-%feature("docstring") LogMetric "
+// File: classIOutputDataWriteStrategy.xml
+%feature("docstring") IOutputDataWriteStrategy "
 
-Implementation of the standard  $ \\\\chi^2 $ metric with intensity  $I$ and experimental data  $D$ being replaced by  $ \\\\log_{10} I $ and  $\\\\log_{10} D$ accordingly. With default L2 norm corresponds to the formula  \\\\[\\\\chi^2 = \\\\sum \\\\frac{(\\\\log_{10} I - log_{10} D)^2 D^2 \\\\ln^2{10}}{\\\\delta_D^2}\\\\]
+Strategy interface to write OututData in file
 
-C++ includes: ObjectiveMetric.h
+C++ includes: OutputDataWriteStrategy.h
 ";
 
-%feature("docstring")  LogMetric::LogMetric "LogMetric::LogMetric()
+%feature("docstring")  IOutputDataWriteStrategy::IOutputDataWriteStrategy "IOutputDataWriteStrategy::IOutputDataWriteStrategy()
 ";
 
-%feature("docstring")  LogMetric::clone "LogMetric * LogMetric::clone() const override
+%feature("docstring")  IOutputDataWriteStrategy::~IOutputDataWriteStrategy "virtual IOutputDataWriteStrategy::~IOutputDataWriteStrategy()
 ";
 
-%feature("docstring")  LogMetric::computeFromArrays "double LogMetric::computeFromArrays(std::vector< double > sim_data, std::vector< double > exp_data, std::vector< double > uncertainties, std::vector< double > weight_factors) const override
-
-Computes metric value from data arrays. Negative values in exp_data are ignored as well as non-positive weight_factors and uncertainties. All arrays involved in the computation must be of the same size.
-
-Parameters:
------------
-
-sim_data: 
-array with simulated intensities.
-
-exp_data: 
-array with intensity values obtained from an experiment.
-
-uncertainties: 
-array with experimental data uncertainties.
-
-weight_factors: 
-user-defined weighting factors. Used linearly, no matter which norm is chosen. 
+%feature("docstring")  IOutputDataWriteStrategy::writeOutputData "virtual void IOutputDataWriteStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)=0
 ";
 
-%feature("docstring")  LogMetric::computeFromArrays "double LogMetric::computeFromArrays(std::vector< double > sim_data, std::vector< double > exp_data, std::vector< double > weight_factors) const override
-
-Computes metric value from data arrays. Negative values in exp_data are ignored as well as non-positive weight_factors. All arrays involved in the computation must be of the same size.
-
-Parameters:
------------
 
-sim_data: 
-array with simulated intensities.
+// File: classIRegistry.xml
+%feature("docstring") IRegistry "
 
-exp_data: 
-array with intensity values obtained from an experiment.
+Templated object registry.
 
-weight_factors: 
-user-defined weighting factors. Used linearly, no matter which norm is chosen. 
+C++ includes: IRegistry.h
 ";
 
-
-// File: classLorentzFisherPeakShape.xml
-%feature("docstring") LorentzFisherPeakShape "
-
-A peak shape that is Lorentzian in the radial direction and uses the Mises-Fisher distribution in the angular direction.
-
-C++ includes: IPeakShape.h
+%feature("docstring")  IRegistry::getItem "const ValueType* IRegistry< ValueType >::getItem(const std::string &key) const
 ";
 
-%feature("docstring")  LorentzFisherPeakShape::LorentzFisherPeakShape "LorentzFisherPeakShape::LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa)
+%feature("docstring")  IRegistry::keys "std::vector<std::string> IRegistry< ValueType >::keys() const
 ";
 
-%feature("docstring")  LorentzFisherPeakShape::~LorentzFisherPeakShape "LorentzFisherPeakShape::~LorentzFisherPeakShape() override
+%feature("docstring")  IRegistry::size "size_t IRegistry< ValueType >::size() const
 ";
 
-%feature("docstring")  LorentzFisherPeakShape::clone "LorentzFisherPeakShape * LorentzFisherPeakShape::clone() const override
-";
 
-%feature("docstring")  LorentzFisherPeakShape::accept "void LorentzFisherPeakShape::accept(INodeVisitor *visitor) const override
-";
+// File: classIResolutionFunction2D.xml
+%feature("docstring") IResolutionFunction2D "
 
-%feature("docstring")  LorentzFisherPeakShape::evaluate "double LorentzFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
+Interface providing two-dimensional resolution function.
 
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
+C++ includes: IResolutionFunction2D.h
 ";
 
-%feature("docstring")  LorentzFisherPeakShape::angularDisorder "bool LorentzFisherPeakShape::angularDisorder() const override
-
-Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
+%feature("docstring")  IResolutionFunction2D::IResolutionFunction2D "IResolutionFunction2D::IResolutionFunction2D()=default
 ";
 
-
-// File: classMagneticCylindersBuilder.xml
-%feature("docstring") MagneticCylindersBuilder "
-
-Builds sample: cylinders with magnetic material and non-zero magnetic field.
-
-C++ includes: MagneticParticlesBuilder.h
+%feature("docstring")  IResolutionFunction2D::IResolutionFunction2D "IResolutionFunction2D::IResolutionFunction2D(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-%feature("docstring")  MagneticCylindersBuilder::buildSample "MultiLayer * MagneticCylindersBuilder::buildSample() const
+%feature("docstring")  IResolutionFunction2D::~IResolutionFunction2D "virtual IResolutionFunction2D::~IResolutionFunction2D()
 ";
 
-
-// File: classMagneticLayerBuilder.xml
-%feature("docstring") MagneticLayerBuilder "
-
-Builds sample: magnetic spheres in a magnetized layer on a non-magnetized substrate.
-
-C++ includes: MagneticLayersBuilder.h
+%feature("docstring")  IResolutionFunction2D::evaluateCDF "virtual double IResolutionFunction2D::evaluateCDF(double x, double y) const =0
 ";
 
-%feature("docstring")  MagneticLayerBuilder::buildSample "MultiLayer * MagneticLayerBuilder::buildSample() const
+%feature("docstring")  IResolutionFunction2D::clone "virtual IResolutionFunction2D* IResolutionFunction2D::clone() const =0
 ";
 
 
-// File: classMagneticParticleZeroFieldBuilder.xml
-%feature("docstring") MagneticParticleZeroFieldBuilder "
+// File: classISampleBuilder.xml
+%feature("docstring") ISampleBuilder "
 
-Builds sample: cylinders with magnetic material and zero magnetic field.
+Interface to the class capable to build samples to simulate.
 
-C++ includes: MagneticParticlesBuilder.h
+C++ includes: ISampleBuilder.h
 ";
 
-%feature("docstring")  MagneticParticleZeroFieldBuilder::buildSample "MultiLayer * MagneticParticleZeroFieldBuilder::buildSample() const
+%feature("docstring")  ISampleBuilder::ISampleBuilder "ISampleBuilder::ISampleBuilder()
 ";
 
+%feature("docstring")  ISampleBuilder::~ISampleBuilder "ISampleBuilder::~ISampleBuilder()
+";
 
-// File: classMagneticRotationBuilder.xml
-%feature("docstring") MagneticRotationBuilder "
-
-Builds sample: rotated magnetic spheres in substrate layer with a unit magnetic field.
+%feature("docstring")  ISampleBuilder::buildSample "virtual MultiLayer* ISampleBuilder::buildSample() const =0
+";
 
-C++ includes: MagneticLayersBuilder.h
+%feature("docstring")  ISampleBuilder::createSampleByIndex "virtual MultiLayer* ISampleBuilder::createSampleByIndex(size_t)
 ";
 
-%feature("docstring")  MagneticRotationBuilder::buildSample "MultiLayer * MagneticRotationBuilder::buildSample() const
+%feature("docstring")  ISampleBuilder::size "virtual size_t ISampleBuilder::size()
 ";
 
 
-// File: classMagneticSpheresBuilder.xml
-%feature("docstring") MagneticSpheresBuilder "
+// File: classIsGISAXSDetector.xml
+%feature("docstring") IsGISAXSDetector "
 
-Builds sample: spheres with magnetization inside substrate.
+A spherical detector used for validation with IsGISAXS results.
 
-C++ includes: MagneticParticlesBuilder.h
+C++ includes: IsGISAXSDetector.h
 ";
 
-%feature("docstring")  MagneticSpheresBuilder::buildSample "MultiLayer * MagneticSpheresBuilder::buildSample() const
+%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector()
 ";
 
-
-// File: classMagneticSubstrateZeroFieldBuilder.xml
-%feature("docstring") MagneticSubstrateZeroFieldBuilder "
-
-Builds sample: spheres in substrate layer with a zero magnetic field.
-
-C++ includes: MagneticLayersBuilder.h
+%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector(size_t n_phi, double phi_min, double phi_max, size_t n_alpha, double alpha_min, double alpha_max)
 ";
 
-%feature("docstring")  MagneticSubstrateZeroFieldBuilder::buildSample "MultiLayer * MagneticSubstrateZeroFieldBuilder::buildSample() const
+%feature("docstring")  IsGISAXSDetector::IsGISAXSDetector "IsGISAXSDetector::IsGISAXSDetector(const IsGISAXSDetector &other)
 ";
 
+%feature("docstring")  IsGISAXSDetector::clone "IsGISAXSDetector * IsGISAXSDetector::clone() const override
+";
 
-// File: structPlainMultiLayerBySLDBuilder_1_1MaterialData.xml
+%feature("docstring")  IsGISAXSDetector::accept "void IsGISAXSDetector::accept(INodeVisitor *visitor) const final
+";
 
 
-// File: classMatrixFresnelMap.xml
-%feature("docstring") MatrixFresnelMap "
+// File: classISpecularScan.xml
+%feature("docstring") ISpecularScan "
 
-Implementation of  IFresnelMap for matrix valued reflection/transmission coefficients.
+Base abstract class for all types of specular scans.
 
-C++ includes: MatrixFresnelMap.h
+C++ includes: ISpecularScan.h
 ";
 
-%feature("docstring")  MatrixFresnelMap::MatrixFresnelMap "MatrixFresnelMap::MatrixFresnelMap(std::unique_ptr< ISpecularStrategy > strategy)
+%feature("docstring")  ISpecularScan::ISpecularScan "ISpecularScan::ISpecularScan(SPECULAR_DATA_TYPE data_type)
 ";
 
-%feature("docstring")  MatrixFresnelMap::~MatrixFresnelMap "MatrixFresnelMap::~MatrixFresnelMap() override
+%feature("docstring")  ISpecularScan::~ISpecularScan "ISpecularScan::~ISpecularScan() override
 ";
 
-%feature("docstring")  MatrixFresnelMap::MatrixFresnelMap "MatrixFresnelMap::MatrixFresnelMap(const MatrixFresnelMap &other)=delete
+%feature("docstring")  ISpecularScan::clone "ISpecularScan* ISpecularScan::clone() const override=0
 ";
 
-%feature("docstring")  MatrixFresnelMap::getOutCoefficients "std::unique_ptr< const ILayerRTCoefficients > MatrixFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
+%feature("docstring")  ISpecularScan::generateSimulationElements "virtual std::vector<SpecularSimulationElement> ISpecularScan::generateSimulationElements() const =0
 
-Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
+Generates simulation elements for specular simulations. 
 ";
 
-%feature("docstring")  MatrixFresnelMap::setSlices "void MatrixFresnelMap::setSlices(const std::vector< Slice > &slices) final override
+%feature("docstring")  ISpecularScan::coordinateAxis "virtual const IAxis* ISpecularScan::coordinateAxis() const =0
+
+Returns coordinate axis assigned to the data holder. 
 ";
 
+%feature("docstring")  ISpecularScan::footprintFactor "virtual const IFootprintFactor* ISpecularScan::footprintFactor() const =0
 
-// File: classMatrixRTCoefficients.xml
-%feature("docstring") MatrixRTCoefficients "
+Returns  IFootprintFactor object pointer. 
+";
 
-Specular reflection and transmission coefficients in a layer in case of 2x2 matrix interactions between the layers and the scattered particle.
+%feature("docstring")  ISpecularScan::footprint "virtual std::vector<double> ISpecularScan::footprint(size_t i, size_t n_elements) const =0
 
-C++ includes: MatrixRTCoefficients.h
+Returns footprint correction factor for a range of simulation elements of size  n_elements and starting from element with index  i. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::MatrixRTCoefficients "MatrixRTCoefficients::MatrixRTCoefficients()
-";
+%feature("docstring")  ISpecularScan::numberOfSimulationElements "virtual size_t ISpecularScan::numberOfSimulationElements() const =0
 
-%feature("docstring")  MatrixRTCoefficients::~MatrixRTCoefficients "virtual MatrixRTCoefficients::~MatrixRTCoefficients()
+Returns the number of simulation elements. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::clone "MatrixRTCoefficients * MatrixRTCoefficients::clone() const
+%feature("docstring")  ISpecularScan::createIntensities "virtual std::vector<double> ISpecularScan::createIntensities(const std::vector< SpecularSimulationElement > &sim_elements) const =0
+
+Returns intensity vector corresponding to convolution of given simulation elements. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T1plus "Eigen::Vector2cd MatrixRTCoefficients::T1plus() const
+%feature("docstring")  ISpecularScan::print "virtual std::string ISpecularScan::print() const =0
 
-The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
+Print scan definition in python format. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R1plus "Eigen::Vector2cd MatrixRTCoefficients::R1plus() const
+%feature("docstring")  ISpecularScan::dataType "SPECULAR_DATA_TYPE ISpecularScan::dataType() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T2plus "Eigen::Vector2cd MatrixRTCoefficients::T2plus() const
-";
 
-%feature("docstring")  MatrixRTCoefficients::R2plus "Eigen::Vector2cd MatrixRTCoefficients::R2plus() const
-";
+// File: classIterationInfo.xml
+%feature("docstring") IterationInfo "
 
-%feature("docstring")  MatrixRTCoefficients::T1min "Eigen::Vector2cd MatrixRTCoefficients::T1min() const
-";
+Stores fit iteration info to track fit flow from various observers. Used in context of  FitObjective.
 
-%feature("docstring")  MatrixRTCoefficients::R1min "Eigen::Vector2cd MatrixRTCoefficients::R1min() const
+C++ includes: IterationInfo.h
 ";
 
-%feature("docstring")  MatrixRTCoefficients::T2min "Eigen::Vector2cd MatrixRTCoefficients::T2min() const
+%feature("docstring")  IterationInfo::IterationInfo "IterationInfo::IterationInfo()
 ";
 
-%feature("docstring")  MatrixRTCoefficients::R2min "Eigen::Vector2cd MatrixRTCoefficients::R2min() const
+%feature("docstring")  IterationInfo::update "void IterationInfo::update(const Fit::Parameters &params, double chi2)
 ";
 
-%feature("docstring")  MatrixRTCoefficients::getKz "virtual Eigen::Vector2cd MatrixRTCoefficients::getKz() const
+%feature("docstring")  IterationInfo::iterationCount "unsigned IterationInfo::iterationCount() const
 
-Returns z-part of the two wavevector eigenmodes. 
+Returns current number of minimizer iterations. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients::calculateTRMatrices "void MatrixRTCoefficients::calculateTRMatrices()
+%feature("docstring")  IterationInfo::chi2 "double IterationInfo::chi2() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::calculateTRWithoutMagnetization "void MatrixRTCoefficients::calculateTRWithoutMagnetization()
+%feature("docstring")  IterationInfo::parameters "Fit::Parameters IterationInfo::parameters() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients::initializeBottomLayerPhiPsi "void MatrixRTCoefficients::initializeBottomLayerPhiPsi()
-";
+%feature("docstring")  IterationInfo::parameterMap "std::map< std::string, double > IterationInfo::parameterMap() const
 
+Returns map of fit parameter names and its current values. 
+";
 
-// File: classMatrixRTCoefficients__v2.xml
-%feature("docstring") MatrixRTCoefficients_v2 "
 
-Specular reflection and transmission coefficients in a layer in case of magnetic interactions between the scattered particle and the layer.
+// File: classIUnitConverter.xml
+%feature("docstring") IUnitConverter "
 
-C++ includes: MatrixRTCoefficients_v2.h
-";
+Interface to provide axis translations to different units for simulation output
 
-%feature("docstring")  MatrixRTCoefficients_v2::MatrixRTCoefficients_v2 "MatrixRTCoefficients_v2::MatrixRTCoefficients_v2(double kz_sign, Eigen::Vector2cd eigenvalues, kvector_t b)
+C++ includes: IUnitConverter.h
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::MatrixRTCoefficients_v2 "MatrixRTCoefficients_v2::MatrixRTCoefficients_v2(const MatrixRTCoefficients_v2 &other)
+%feature("docstring")  IUnitConverter::~IUnitConverter "IUnitConverter::~IUnitConverter()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::~MatrixRTCoefficients_v2 "MatrixRTCoefficients_v2::~MatrixRTCoefficients_v2() override
+%feature("docstring")  IUnitConverter::clone "virtual IUnitConverter* IUnitConverter::clone() const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::clone "MatrixRTCoefficients_v2 * MatrixRTCoefficients_v2::clone() const override
+%feature("docstring")  IUnitConverter::dimension "virtual size_t IUnitConverter::dimension() const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::T1plus "Eigen::Vector2cd MatrixRTCoefficients_v2::T1plus() const override
-
-The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
+%feature("docstring")  IUnitConverter::calculateMin "virtual double IUnitConverter::calculateMin(size_t i_axis, Axes::Units units_type) const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::R1plus "Eigen::Vector2cd MatrixRTCoefficients_v2::R1plus() const override
+%feature("docstring")  IUnitConverter::calculateMax "virtual double IUnitConverter::calculateMax(size_t i_axis, Axes::Units units_type) const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::T2plus "Eigen::Vector2cd MatrixRTCoefficients_v2::T2plus() const override
+%feature("docstring")  IUnitConverter::axisSize "virtual size_t IUnitConverter::axisSize(size_t i_axis) const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::R2plus "Eigen::Vector2cd MatrixRTCoefficients_v2::R2plus() const override
+%feature("docstring")  IUnitConverter::axisName "std::string IUnitConverter::axisName(size_t i_axis, Axes::Units units_type=Axes::Units::DEFAULT) const
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::T1min "Eigen::Vector2cd MatrixRTCoefficients_v2::T1min() const override
+%feature("docstring")  IUnitConverter::availableUnits "virtual std::vector<Axes::Units> IUnitConverter::availableUnits() const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::R1min "Eigen::Vector2cd MatrixRTCoefficients_v2::R1min() const override
+%feature("docstring")  IUnitConverter::defaultUnits "virtual Axes::Units IUnitConverter::defaultUnits() const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::T2min "Eigen::Vector2cd MatrixRTCoefficients_v2::T2min() const override
+%feature("docstring")  IUnitConverter::substituteDefaultUnits "Axes::Units IUnitConverter::substituteDefaultUnits(Axes::Units units) const
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::R2min "Eigen::Vector2cd MatrixRTCoefficients_v2::R2min() const override
+%feature("docstring")  IUnitConverter::createConvertedAxis "virtual std::unique_ptr<IAxis> IUnitConverter::createConvertedAxis(size_t i_axis, Axes::Units units) const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::getKz "Eigen::Vector2cd MatrixRTCoefficients_v2::getKz() const override
+%feature("docstring")  IUnitConverter::createConvertedData "std::unique_ptr< OutputData< double > > IUnitConverter::createConvertedData(const OutputData< double > &data, Axes::Units units) const
 
-Returns z-part of the two wavevector eigenmodes. 
+Creates  OutputData array in converter units. 
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v2::getReflectionMatrix "Eigen::Matrix2cd MatrixRTCoefficients_v2::getReflectionMatrix() const override
-";
 
+// File: classIVarianceFunction.xml
+%feature("docstring") IVarianceFunction "
 
-// File: classMatrixRTCoefficients__v3.xml
-%feature("docstring") MatrixRTCoefficients_v3 "
+Variance function interface.
 
-Specular reflection and transmission coefficients in a layer in case of magnetic interactions between the scattered particle and the layer.
+C++ includes: VarianceFunctions.h
+";
 
-C++ includes: MatrixRTCoefficients_v3.h
+%feature("docstring")  IVarianceFunction::IVarianceFunction "IVarianceFunction::IVarianceFunction()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::MatrixRTCoefficients_v3 "MatrixRTCoefficients_v3::MatrixRTCoefficients_v3(double kz_sign, Eigen::Vector2cd eigenvalues, kvector_t b, double magnetic_SLD)
+%feature("docstring")  IVarianceFunction::~IVarianceFunction "IVarianceFunction::~IVarianceFunction()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::MatrixRTCoefficients_v3 "MatrixRTCoefficients_v3::MatrixRTCoefficients_v3(const MatrixRTCoefficients_v3 &other)
+%feature("docstring")  IVarianceFunction::clone "virtual IVarianceFunction* IVarianceFunction::clone() const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::~MatrixRTCoefficients_v3 "MatrixRTCoefficients_v3::~MatrixRTCoefficients_v3() override
+%feature("docstring")  IVarianceFunction::variance "virtual double IVarianceFunction::variance(double real_value, double simulated_value) const =0
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::clone "MatrixRTCoefficients_v3 * MatrixRTCoefficients_v3::clone() const override
+%feature("docstring")  IVarianceFunction::IVarianceFunction "IVarianceFunction::IVarianceFunction(const IVarianceFunction &)=delete
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::T1plus "Eigen::Vector2cd MatrixRTCoefficients_v3::T1plus() const override
 
-The following functions return the transmitted and reflected amplitudes for different incoming beam polarizations and eigenmodes 
-";
+// File: classLabelMap.xml
+%feature("docstring") LabelMap "";
 
-%feature("docstring")  MatrixRTCoefficients_v3::R1plus "Eigen::Vector2cd MatrixRTCoefficients_v3::R1plus() const override
-";
 
-%feature("docstring")  MatrixRTCoefficients_v3::T2plus "Eigen::Vector2cd MatrixRTCoefficients_v3::T2plus() const override
-";
+// File: classLargeCylindersInDWBABuilder.xml
+%feature("docstring") LargeCylindersInDWBABuilder "
 
-%feature("docstring")  MatrixRTCoefficients_v3::R2plus "Eigen::Vector2cd MatrixRTCoefficients_v3::R2plus() const override
+Builds sample with large cylinders for MC integration tests.
+
+C++ includes: CylindersBuilder.h
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::T1min "Eigen::Vector2cd MatrixRTCoefficients_v3::T1min() const override
+%feature("docstring")  LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder "LargeCylindersInDWBABuilder::LargeCylindersInDWBABuilder()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::R1min "Eigen::Vector2cd MatrixRTCoefficients_v3::R1min() const override
+%feature("docstring")  LargeCylindersInDWBABuilder::buildSample "MultiLayer * LargeCylindersInDWBABuilder::buildSample() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::T2min "Eigen::Vector2cd MatrixRTCoefficients_v3::T2min() const override
+
+// File: classLattice1DBuilder.xml
+%feature("docstring") Lattice1DBuilder "
+
+Builds sample: cylinders with 1DDL structure factor.
+
+C++ includes: LatticeBuilder.h
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::R2min "Eigen::Vector2cd MatrixRTCoefficients_v3::R2min() const override
+%feature("docstring")  Lattice1DBuilder::buildSample "MultiLayer * Lattice1DBuilder::buildSample() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::getKz "Eigen::Vector2cd MatrixRTCoefficients_v3::getKz() const override
 
-Returns z-part of the two wavevector eigenmodes. 
+// File: classLayersWithAbsorptionBuilder.xml
+%feature("docstring") LayersWithAbsorptionBuilder "
+
+The  LayersWithAbsorptionBuilder class generates a multilayer with 3 layers with absorption (refractive index has imaginary part).The middle layer is populated with particles. Requires IComponentService which generates form factors, used for bulk form factors testing.
+
+C++ includes: LayersWithAbsorptionBuilder.h
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::magneticSLD "double MatrixRTCoefficients_v3::magneticSLD() const
+%feature("docstring")  LayersWithAbsorptionBuilder::LayersWithAbsorptionBuilder "LayersWithAbsorptionBuilder::LayersWithAbsorptionBuilder()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::computeP "Eigen::Matrix2cd MatrixRTCoefficients_v3::computeP() const
+%feature("docstring")  LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder "LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder()
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::computeInverseP "Eigen::Matrix2cd MatrixRTCoefficients_v3::computeInverseP() const
+%feature("docstring")  LayersWithAbsorptionBuilder::buildSample "MultiLayer * LayersWithAbsorptionBuilder::buildSample() const
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::computeDeltaMatrix "Eigen::Matrix2cd MatrixRTCoefficients_v3::computeDeltaMatrix(double thickness)
+%feature("docstring")  LayersWithAbsorptionBuilder::createSampleByIndex "MultiLayer * LayersWithAbsorptionBuilder::createSampleByIndex(size_t index)
 ";
 
-%feature("docstring")  MatrixRTCoefficients_v3::getReflectionMatrix "Eigen::Matrix2cd MatrixRTCoefficients_v3::getReflectionMatrix() const override
+%feature("docstring")  LayersWithAbsorptionBuilder::size "size_t LayersWithAbsorptionBuilder::size()
 ";
 
 
-// File: classMesoCrystal.xml
-%feature("docstring") MesoCrystal "
+// File: classLayersWithAbsorptionBySLDBuilder.xml
+%feature("docstring") LayersWithAbsorptionBySLDBuilder "
 
-A particle with an internal structure of smaller particles.
+The  LayersWithAbsorptionBySLDBuilder class generates a multilayer with 3 layers with absorption (refractive index has imaginary part). //! The middle layer is populated with particles. MaterialBySLD is used to generate maaterials
 
-C++ includes: MesoCrystal.h
+C++ includes: LayersWithAbsorptionBySLDBuilder.h
 ";
 
-%feature("docstring")  MesoCrystal::MesoCrystal "MesoCrystal::MesoCrystal(const IClusteredParticles &particle_structure, const IFormFactor &form_factor)
+%feature("docstring")  LayersWithAbsorptionBySLDBuilder::buildSample "MultiLayer * LayersWithAbsorptionBySLDBuilder::buildSample() const
 ";
 
-%feature("docstring")  MesoCrystal::~MesoCrystal "MesoCrystal::~MesoCrystal()
-";
 
-%feature("docstring")  MesoCrystal::clone "MesoCrystal * MesoCrystal::clone() const override final
-";
+// File: classLayoutStrategyBuilder.xml
+%feature("docstring") LayoutStrategyBuilder "
+
+Methods to generate a simulation strategy for a  ParticleLayoutComputation.
 
-%feature("docstring")  MesoCrystal::accept "void MesoCrystal::accept(INodeVisitor *visitor) const override final
+C++ includes: LayoutStrategyBuilder.h
 ";
 
-%feature("docstring")  MesoCrystal::createSlicedParticle "SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final
+%feature("docstring")  LayoutStrategyBuilder::LayoutStrategyBuilder "LayoutStrategyBuilder::LayoutStrategyBuilder(const ProcessedLayout *p_layout, const SimulationOptions &sim_params, bool polarized)
+";
 
-Creates a sliced form factor for this particle. 
+%feature("docstring")  LayoutStrategyBuilder::~LayoutStrategyBuilder "LayoutStrategyBuilder::~LayoutStrategyBuilder()
 ";
 
-%feature("docstring")  MesoCrystal::getChildren "std::vector< const INode * > MesoCrystal::getChildren() const override final
+%feature("docstring")  LayoutStrategyBuilder::releaseStrategy "IInterferenceFunctionStrategy * LayoutStrategyBuilder::releaseStrategy()
 ";
 
 
-// File: classMesoCrystalBuilder.xml
-%feature("docstring") MesoCrystalBuilder "
+// File: classLinkedBoxDistributionBuilder.xml
+%feature("docstring") LinkedBoxDistributionBuilder "
 
-Builds sample: cylindrical mesocrystal composed of spheres in a cubic lattice.
+Distribution of boxes with main parameter and two linked parameters.
 
-C++ includes: MesoCrystalBuilder.h
+C++ includes: ParticleDistributionsBuilder.h
 ";
 
-%feature("docstring")  MesoCrystalBuilder::buildSample "MultiLayer * MesoCrystalBuilder::buildSample() const
+%feature("docstring")  LinkedBoxDistributionBuilder::LinkedBoxDistributionBuilder "LinkedBoxDistributionBuilder::LinkedBoxDistributionBuilder()=default
+";
+
+%feature("docstring")  LinkedBoxDistributionBuilder::buildSample "MultiLayer * LinkedBoxDistributionBuilder::buildSample() const
 ";
 
 
-// File: structMillerIndex.xml
-%feature("docstring") MillerIndex "
+// File: classLLData.xml
+%feature("docstring") LLData "
+
+Template class to store data of any type in multi-dimensional space (low-level).
 
-A direction in reciprocal space, specified by double-valued indices hkl.
+C++ includes: LLData.h
+";
 
-C++ includes: ILatticeOrientation.h
+%feature("docstring")  LLData::LLData "LLData< T >::LLData(size_t rank, const int *dimensions)
 ";
 
-%feature("docstring")  MillerIndex::MillerIndex "MillerIndex::MillerIndex(double h_, double k_, double l_)
+%feature("docstring")  LLData::LLData "LLData< T >::LLData(const LLData< T > &right)
 ";
 
+%feature("docstring")  LLData::~LLData "LLData< T >::~LLData()
+";
 
-// File: classMillerIndexOrientation.xml
-%feature("docstring") MillerIndexOrientation "
+%feature("docstring")  LLData::meanValues "LLData<double> LLData< T >::meanValues() const
+";
 
-Specifies a rotation of a lattice through the Miller indices of two coordinate axes.
+%feature("docstring")  LLData::atCoordinate "T & LLData< T >::atCoordinate(int *coordinate)
+";
 
-C++ includes: ILatticeOrientation.h
+%feature("docstring")  LLData::atCoordinate "const T & LLData< T >::atCoordinate(int *coordinate) const
 ";
 
-%feature("docstring")  MillerIndexOrientation::MillerIndexOrientation "MillerIndexOrientation::MillerIndexOrientation(QComponent q1, MillerIndex index1, QComponent q2, MillerIndex index2)
+%feature("docstring")  LLData::setAll "void LLData< T >::setAll(const T &value)
+";
 
-This constructor is best explained by an example. Arguments QX, (1,1,0), QY, (0,2,1) mean: Rotate the lattice such that the axis [110] points into x direction, and the axis [021], projected into the yz plane, points into z direction. 
+%feature("docstring")  LLData::scaleAll "void LLData< T >::scaleAll(const T &factor)
 ";
 
-%feature("docstring")  MillerIndexOrientation::~MillerIndexOrientation "MillerIndexOrientation::~MillerIndexOrientation() override
+%feature("docstring")  LLData::getTotalSize "size_t LLData< T >::getTotalSize() const
 ";
 
-%feature("docstring")  MillerIndexOrientation::clone "MillerIndexOrientation * MillerIndexOrientation::clone() const override
+%feature("docstring")  LLData::getRank "size_t LLData< T >::getRank() const
 ";
 
-%feature("docstring")  MillerIndexOrientation::usePrimitiveLattice "void MillerIndexOrientation::usePrimitiveLattice(const Lattice &lattice) override
+%feature("docstring")  LLData::getDimensions "const int* LLData< T >::getDimensions() const
 ";
 
-%feature("docstring")  MillerIndexOrientation::transformationMatrix "Transform3D MillerIndexOrientation::transformationMatrix() const override
+%feature("docstring")  LLData::getTotalSum "T LLData< T >::getTotalSum() const
 ";
 
 
-// File: classMisesFisherGaussPeakShape.xml
-%feature("docstring") MisesFisherGaussPeakShape "
+// File: classLogMetric.xml
+%feature("docstring") LogMetric "
 
-A peak shape that is Gaussian in the radial direction and a convolution of a Mises-Fisher distribution with a Mises distribution on the two-sphere.
+Implementation of the standard  $ \\\\chi^2 $ metric with intensity  $I$ and experimental data  $D$ being replaced by  $ \\\\log_{10} I $ and  $\\\\log_{10} D$ accordingly. With default L2 norm corresponds to the formula  \\\\[\\\\chi^2 = \\\\sum \\\\frac{(\\\\log_{10} I - log_{10} D)^2 D^2 \\\\ln^2{10}}{\\\\delta_D^2}\\\\]
 
-C++ includes: IPeakShape.h
+C++ includes: ObjectiveMetric.h
 ";
 
-%feature("docstring")  MisesFisherGaussPeakShape::MisesFisherGaussPeakShape "MisesFisherGaussPeakShape::MisesFisherGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2)
+%feature("docstring")  LogMetric::LogMetric "LogMetric::LogMetric()
 ";
 
-%feature("docstring")  MisesFisherGaussPeakShape::~MisesFisherGaussPeakShape "MisesFisherGaussPeakShape::~MisesFisherGaussPeakShape() override
+%feature("docstring")  LogMetric::clone "LogMetric * LogMetric::clone() const override
 ";
 
-%feature("docstring")  MisesFisherGaussPeakShape::clone "MisesFisherGaussPeakShape * MisesFisherGaussPeakShape::clone() const override
-";
+%feature("docstring")  LogMetric::computeFromArrays "double LogMetric::computeFromArrays(std::vector< double > sim_data, std::vector< double > exp_data, std::vector< double > uncertainties, std::vector< double > weight_factors) const override
 
-%feature("docstring")  MisesFisherGaussPeakShape::accept "void MisesFisherGaussPeakShape::accept(INodeVisitor *visitor) const override
-";
+Computes metric value from data arrays. Negative values in exp_data are ignored as well as non-positive weight_factors and uncertainties. All arrays involved in the computation must be of the same size.
 
-%feature("docstring")  MisesFisherGaussPeakShape::evaluate "double MisesFisherGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
+Parameters:
+-----------
 
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-";
+sim_data: 
+array with simulated intensities.
+
+exp_data: 
+array with intensity values obtained from an experiment.
 
-%feature("docstring")  MisesFisherGaussPeakShape::angularDisorder "bool MisesFisherGaussPeakShape::angularDisorder() const override
+uncertainties: 
+array with experimental data uncertainties.
 
-Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
+weight_factors: 
+user-defined weighting factors. Used linearly, no matter which norm is chosen. 
 ";
 
+%feature("docstring")  LogMetric::computeFromArrays "double LogMetric::computeFromArrays(std::vector< double > sim_data, std::vector< double > exp_data, std::vector< double > weight_factors) const override
 
-// File: classMisesGaussPeakShape.xml
-%feature("docstring") MisesGaussPeakShape "
+Computes metric value from data arrays. Negative values in exp_data are ignored as well as non-positive weight_factors. All arrays involved in the computation must be of the same size.
 
-A peak shape that is a convolution of a Mises-Fisher distribution with a 3d Gaussian.
+Parameters:
+-----------
 
-C++ includes: IPeakShape.h
-";
+sim_data: 
+array with simulated intensities.
 
-%feature("docstring")  MisesGaussPeakShape::MisesGaussPeakShape "MisesGaussPeakShape::MisesGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa)
-";
+exp_data: 
+array with intensity values obtained from an experiment.
 
-%feature("docstring")  MisesGaussPeakShape::~MisesGaussPeakShape "MisesGaussPeakShape::~MisesGaussPeakShape() override
+weight_factors: 
+user-defined weighting factors. Used linearly, no matter which norm is chosen. 
 ";
 
-%feature("docstring")  MisesGaussPeakShape::clone "MisesGaussPeakShape * MisesGaussPeakShape::clone() const override
-";
 
-%feature("docstring")  MisesGaussPeakShape::accept "void MisesGaussPeakShape::accept(INodeVisitor *visitor) const override
-";
+// File: classMagneticCylindersBuilder.xml
+%feature("docstring") MagneticCylindersBuilder "
 
-%feature("docstring")  MisesGaussPeakShape::evaluate "double MisesGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
+Builds sample: cylinders with magnetic material and non-zero magnetic field.
 
-Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
+C++ includes: MagneticParticlesBuilder.h
 ";
 
-%feature("docstring")  MisesGaussPeakShape::angularDisorder "bool MisesGaussPeakShape::angularDisorder() const override
-
-Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
+%feature("docstring")  MagneticCylindersBuilder::buildSample "MultiLayer * MagneticCylindersBuilder::buildSample() const
 ";
 
 
-// File: classMPISimulation.xml
-%feature("docstring") MPISimulation "";
+// File: classMagneticLayerBuilder.xml
+%feature("docstring") MagneticLayerBuilder "
 
-%feature("docstring")  MPISimulation::runSimulation "void MPISimulation::runSimulation(Simulation *simulation)
+Builds sample: magnetic spheres in a magnetized layer on a non-magnetized substrate.
+
+C++ includes: MagneticLayersBuilder.h
 ";
 
+%feature("docstring")  MagneticLayerBuilder::buildSample "MultiLayer * MagneticLayerBuilder::buildSample() const
+";
 
-// File: classMultiLayer.xml
-%feature("docstring") MultiLayer "
 
-Our sample model: a stack of layers one below the other.Example of system of 4 layers (3 interfaces):
+// File: classMagneticParticleZeroFieldBuilder.xml
+%feature("docstring") MagneticParticleZeroFieldBuilder "
 
-ambience layer #0 ------ interface #0 z=0.0 Fe, 20A layer #1 ------ interface #1 z=-20.0 Cr, 40A layer #2 ------ interface #2 z=-60.0 substrate layer #3
+Builds sample: cylinders with magnetic material and zero magnetic field.
 
-C++ includes: MultiLayer.h
+C++ includes: MagneticParticlesBuilder.h
 ";
 
-%feature("docstring")  MultiLayer::MultiLayer "MultiLayer::MultiLayer()
+%feature("docstring")  MagneticParticleZeroFieldBuilder::buildSample "MultiLayer * MagneticParticleZeroFieldBuilder::buildSample() const
 ";
 
-%feature("docstring")  MultiLayer::~MultiLayer "MultiLayer::~MultiLayer() override
-";
 
-%feature("docstring")  MultiLayer::clone "MultiLayer * MultiLayer::clone() const final override
+// File: classMagneticRotationBuilder.xml
+%feature("docstring") MagneticRotationBuilder "
 
-Returns a clone of multilayer with clones of all layers and interfaces between layers 
-";
+Builds sample: rotated magnetic spheres in substrate layer with a unit magnetic field.
 
-%feature("docstring")  MultiLayer::accept "void MultiLayer::accept(INodeVisitor *visitor) const final override
+C++ includes: MagneticLayersBuilder.h
 ";
 
-%feature("docstring")  MultiLayer::numberOfLayers "size_t MultiLayer::numberOfLayers() const
+%feature("docstring")  MagneticRotationBuilder::buildSample "MultiLayer * MagneticRotationBuilder::buildSample() const
 ";
 
-%feature("docstring")  MultiLayer::addLayer "void MultiLayer::addLayer(const Layer &layer)
 
-Adds object to multilayer.
+// File: classMagneticSpheresBuilder.xml
+%feature("docstring") MagneticSpheresBuilder "
+
+Builds sample: spheres with magnetization inside substrate.
 
-Adds layer with default (zero) roughness. 
+C++ includes: MagneticParticlesBuilder.h
 ";
 
-%feature("docstring")  MultiLayer::addLayerWithTopRoughness "void MultiLayer::addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
-
-Adds layer with top roughness. 
+%feature("docstring")  MagneticSpheresBuilder::buildSample "MultiLayer * MagneticSpheresBuilder::buildSample() const
 ";
 
-%feature("docstring")  MultiLayer::layer "const Layer * MultiLayer::layer(size_t i_layer) const
 
-Returns layer with given index. 
-";
+// File: classMagneticSubstrateZeroFieldBuilder.xml
+%feature("docstring") MagneticSubstrateZeroFieldBuilder "
 
-%feature("docstring")  MultiLayer::layerInterface "const LayerInterface * MultiLayer::layerInterface(size_t i_interface) const
+Builds sample: spheres in substrate layer with a zero magnetic field.
 
-Returns interface with given index. 
+C++ includes: MagneticLayersBuilder.h
 ";
 
-%feature("docstring")  MultiLayer::setCrossCorrLength "void MultiLayer::setCrossCorrLength(double crossCorrLength)
-
-Sets cross correlation length of roughnesses between interfaces. 
+%feature("docstring")  MagneticSubstrateZeroFieldBuilder::buildSample "MultiLayer * MagneticSubstrateZeroFieldBuilder::buildSample() const
 ";
 
-%feature("docstring")  MultiLayer::crossCorrLength "double MultiLayer::crossCorrLength() const
 
-Returns cross correlation length of roughnesses between interfaces. 
-";
+// File: structPlainMultiLayerBySLDBuilder_1_1MaterialData.xml
 
-%feature("docstring")  MultiLayer::setExternalField "void MultiLayer::setExternalField(kvector_t ext_field)
 
-Sets the external field applied to the multilayer (units: A/m) 
-";
+// File: classMesoCrystalBuilder.xml
+%feature("docstring") MesoCrystalBuilder "
 
-%feature("docstring")  MultiLayer::externalField "kvector_t MultiLayer::externalField() const
+Builds sample: cylindrical mesocrystal composed of spheres in a cubic lattice.
 
-Returns the external field applied to the multilayer (units: A/m) 
+C++ includes: MesoCrystalBuilder.h
 ";
 
-%feature("docstring")  MultiLayer::getChildren "std::vector< const INode * > MultiLayer::getChildren() const final override
+%feature("docstring")  MesoCrystalBuilder::buildSample "MultiLayer * MesoCrystalBuilder::buildSample() const
 ";
 
-%feature("docstring")  MultiLayer::setRoughnessModel "void MultiLayer::setRoughnessModel(RoughnessModel roughnessModel)
-";
 
-%feature("docstring")  MultiLayer::roughnessModel "RoughnessModel MultiLayer::roughnessModel() const
+// File: classMPISimulation.xml
+%feature("docstring") MPISimulation "";
+
+%feature("docstring")  MPISimulation::runSimulation "void MPISimulation::runSimulation(Simulation *simulation)
 ";
 
 
@@ -7097,456 +3925,187 @@ Empty constructor to comply with stl forward iterators.
 constructor 
 ";
 
-%feature("docstring")  OutputDataIterator::OutputDataIterator "OutputDataIterator< TValue, TContainer >::OutputDataIterator(const OutputDataIterator< TValue2, TContainer2 > &other)
-
-templated copy construction 
-";
-
-%feature("docstring")  OutputDataIterator::OutputDataIterator "OutputDataIterator< TValue, TContainer >::OutputDataIterator(const OutputDataIterator< TValue, TContainer > &other)
-
-non-templated copy construction 
-";
-
-%feature("docstring")  OutputDataIterator::~OutputDataIterator "OutputDataIterator< TValue, TContainer >::~OutputDataIterator()
-";
-
-%feature("docstring")  OutputDataIterator::getIndex "size_t OutputDataIterator< TValue, TContainer >::getIndex() const
-
-Returns current index. 
-";
-
-%feature("docstring")  OutputDataIterator::getContainer "TContainer* OutputDataIterator< TValue, TContainer >::getContainer() const
-
-Returns container pointer. 
-";
-
-%feature("docstring")  OutputDataIterator::swap "void OutputDataIterator< TValue, TContainer >::swap(OutputDataIterator< TValue, TContainer > &other)
-
-Swaps iterators. 
-";
-
-
-// File: classOutputDataReader.xml
-%feature("docstring") OutputDataReader "
-
-Reads  OutputData from file using different reading strategies.
-
-C++ includes: OutputDataReader.h
-";
-
-%feature("docstring")  OutputDataReader::OutputDataReader "OutputDataReader::OutputDataReader(const std::string &file_name)
-";
-
-%feature("docstring")  OutputDataReader::getOutputData "OutputData< double > * OutputDataReader::getOutputData()
-
-read output data from file (file name was set already from OutputDataIOFactory) 
-";
-
-%feature("docstring")  OutputDataReader::setStrategy "void OutputDataReader::setStrategy(IOutputDataReadStrategy *read_strategy)
-
-Sets concrete reading strategy. 
-";
-
-
-// File: classOutputDataReadFactory.xml
-%feature("docstring") OutputDataReadFactory "
-
-Creates reader appropariate for given type of files.
-
-C++ includes: OutputDataReadFactory.h
-";
-
-
-// File: classOutputDataReadINTStrategy.xml
-%feature("docstring") OutputDataReadINTStrategy "
-
-Strategy to read BornAgain native IntensityData from ASCII file.
-
-C++ includes: OutputDataReadStrategy.h
-";
-
-%feature("docstring")  OutputDataReadINTStrategy::readOutputData "OutputData< double > * OutputDataReadINTStrategy::readOutputData(std::istream &input_stream)
-";
-
-
-// File: classOutputDataReadNumpyTXTStrategy.xml
-%feature("docstring") OutputDataReadNumpyTXTStrategy "
-
-Strategy to read  OutputData from simple ASCII file with the layout as in numpy.savetxt.
-
-C++ includes: OutputDataReadStrategy.h
-";
-
-%feature("docstring")  OutputDataReadNumpyTXTStrategy::readOutputData "OutputData< double > * OutputDataReadNumpyTXTStrategy::readOutputData(std::istream &input_stream)
-";
-
-
-// File: classOutputDataReadReflectometryStrategy.xml
-%feature("docstring") OutputDataReadReflectometryStrategy "
-
-Strategy to read Reflectometry data from ASCII file.
-
-C++ includes: OutputDataReadStrategy.h
-";
-
-%feature("docstring")  OutputDataReadReflectometryStrategy::readOutputData "OutputData< double > * OutputDataReadReflectometryStrategy::readOutputData(std::istream &input_stream)
-";
-
-
-// File: classOutputDataWriteFactory.xml
-%feature("docstring") OutputDataWriteFactory "
-
-Creates writer appropariate for given type of files.
-
-C++ includes: OutputDataWriteFactory.h
-";
-
-
-// File: classOutputDataWriteINTStrategy.xml
-%feature("docstring") OutputDataWriteINTStrategy "
-
-Strategy to write  OutputData to special BornAgain ASCII format
-
-C++ includes: OutputDataWriteStrategy.h
-";
-
-%feature("docstring")  OutputDataWriteINTStrategy::writeOutputData "void OutputDataWriteINTStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)
-";
-
-
-// File: classOutputDataWriteNumpyTXTStrategy.xml
-%feature("docstring") OutputDataWriteNumpyTXTStrategy "
-
-Strategy to write  OutputData to simple ASCII file with the layout as in numpy.savetxt
-
-C++ includes: OutputDataWriteStrategy.h
-";
-
-%feature("docstring")  OutputDataWriteNumpyTXTStrategy::writeOutputData "void OutputDataWriteNumpyTXTStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)
-";
-
-
-// File: classOutputDataWriter.xml
-%feature("docstring") OutputDataWriter "
-
-Write  OutputData to file using different witing strategies.
-
-C++ includes: OutputDataWriter.h
-";
-
-%feature("docstring")  OutputDataWriter::OutputDataWriter "OutputDataWriter::OutputDataWriter(const std::string &file_name)
-";
-
-%feature("docstring")  OutputDataWriter::writeOutputData "void OutputDataWriter::writeOutputData(const OutputData< double > &data)
-
-Writes output data to file. 
-";
-
-%feature("docstring")  OutputDataWriter::setStrategy "void OutputDataWriter::setStrategy(IOutputDataWriteStrategy *write_strategy)
-
-Sets concrete writing strategy. 
-";
-
-
-// File: classParticle.xml
-%feature("docstring") Particle "
-
-A particle with a form factor and refractive index.
-
-C++ includes: Particle.h
-";
-
-%feature("docstring")  Particle::Particle "Particle::Particle()
-";
-
-%feature("docstring")  Particle::Particle "Particle::Particle(Material material)
-";
-
-%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IFormFactor &form_factor)
-";
-
-%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IFormFactor &form_factor, const IRotation &rotation)
-";
-
-%feature("docstring")  Particle::clone "Particle * Particle::clone() const override final
-";
-
-%feature("docstring")  Particle::accept "void Particle::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  Particle::createSlicedParticle "SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final
-
-Creates 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 override final
-";
-
-%feature("docstring")  Particle::setFormFactor "void Particle::setFormFactor(const IFormFactor &form_factor)
-";
-
-%feature("docstring")  Particle::getChildren "std::vector< const INode * > Particle::getChildren() const override final
-";
-
-
-// File: classParticleComposition.xml
-%feature("docstring") ParticleComposition "
-
-A composition of particles at fixed positions
-
-C++ includes: ParticleComposition.h
-";
-
-%feature("docstring")  ParticleComposition::ParticleComposition "ParticleComposition::ParticleComposition()
-";
-
-%feature("docstring")  ParticleComposition::ParticleComposition "ParticleComposition::ParticleComposition(const IParticle &particle, std::vector< kvector_t > positions)
-";
-
-%feature("docstring")  ParticleComposition::~ParticleComposition "ParticleComposition::~ParticleComposition()
-";
-
-%feature("docstring")  ParticleComposition::clone "ParticleComposition * ParticleComposition::clone() const override final
-";
-
-%feature("docstring")  ParticleComposition::accept "void ParticleComposition::accept(INodeVisitor *visitor) const override final
-";
-
-%feature("docstring")  ParticleComposition::createFormFactor "IFormFactor * ParticleComposition::createFormFactor() const override final
-
-Creates a form factor for this particle. 
-";
-
-%feature("docstring")  ParticleComposition::addParticle "void ParticleComposition::addParticle(const IParticle &particle)
-";
-
-%feature("docstring")  ParticleComposition::addParticle "void ParticleComposition::addParticle(const IParticle &particle, kvector_t position)
-";
-
-%feature("docstring")  ParticleComposition::addParticles "void ParticleComposition::addParticles(const IParticle &particle, std::vector< kvector_t > positions)
-";
-
-%feature("docstring")  ParticleComposition::nbrParticles "size_t ParticleComposition::nbrParticles() const
-
-Returns number of different particles. 
-";
-
-%feature("docstring")  ParticleComposition::getChildren "std::vector< const INode * > ParticleComposition::getChildren() const override final
-";
-
-%feature("docstring")  ParticleComposition::decompose "SafePointerVector< IParticle > ParticleComposition::decompose() const override final
-
-Decompose in constituent  IParticle objects. 
-";
-
-%feature("docstring")  ParticleComposition::bottomTopZ "ParticleLimits ParticleComposition::bottomTopZ() const override final
-
-Top and bottom z-coordinate. 
-";
-
-
-// File: classParticleCompositionBuilder.xml
-%feature("docstring") ParticleCompositionBuilder "
-
-Builds sample: two layers of spheres at hex lattice.
-
-C++ includes: ParticleCompositionBuilder.h
-";
-
-%feature("docstring")  ParticleCompositionBuilder::buildSample "MultiLayer * ParticleCompositionBuilder::buildSample() const
-";
-
-
-// File: classParticleCoreShell.xml
-%feature("docstring") ParticleCoreShell "
-
-A particle with a core/shell geometry.
-
-C++ includes: ParticleCoreShell.h
-";
-
-%feature("docstring")  ParticleCoreShell::ParticleCoreShell "ParticleCoreShell::ParticleCoreShell(const Particle &shell, const Particle &core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0))
-";
+%feature("docstring")  OutputDataIterator::OutputDataIterator "OutputDataIterator< TValue, TContainer >::OutputDataIterator(const OutputDataIterator< TValue2, TContainer2 > &other)
 
-%feature("docstring")  ParticleCoreShell::~ParticleCoreShell "ParticleCoreShell::~ParticleCoreShell()
+templated copy construction 
 ";
 
-%feature("docstring")  ParticleCoreShell::clone "ParticleCoreShell * ParticleCoreShell::clone() const override final
+%feature("docstring")  OutputDataIterator::OutputDataIterator "OutputDataIterator< TValue, TContainer >::OutputDataIterator(const OutputDataIterator< TValue, TContainer > &other)
+
+non-templated copy construction 
 ";
 
-%feature("docstring")  ParticleCoreShell::accept "void ParticleCoreShell::accept(INodeVisitor *visitor) const override final
+%feature("docstring")  OutputDataIterator::~OutputDataIterator "OutputDataIterator< TValue, TContainer >::~OutputDataIterator()
 ";
 
-%feature("docstring")  ParticleCoreShell::createSlicedParticle "SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final
+%feature("docstring")  OutputDataIterator::getIndex "size_t OutputDataIterator< TValue, TContainer >::getIndex() const
 
-Creates a sliced form factor for this particle. 
+Returns current index. 
 ";
 
-%feature("docstring")  ParticleCoreShell::coreParticle "const Particle * ParticleCoreShell::coreParticle() const
-";
+%feature("docstring")  OutputDataIterator::getContainer "TContainer* OutputDataIterator< TValue, TContainer >::getContainer() const
 
-%feature("docstring")  ParticleCoreShell::shellParticle "const Particle * ParticleCoreShell::shellParticle() const
+Returns container pointer. 
 ";
 
-%feature("docstring")  ParticleCoreShell::getChildren "std::vector< const INode * > ParticleCoreShell::getChildren() const override final
+%feature("docstring")  OutputDataIterator::swap "void OutputDataIterator< TValue, TContainer >::swap(OutputDataIterator< TValue, TContainer > &other)
+
+Swaps iterators. 
 ";
 
 
-// File: classParticleDistribution.xml
-%feature("docstring") ParticleDistribution "
+// File: classOutputDataReader.xml
+%feature("docstring") OutputDataReader "
 
-A particle type that is a parametric distribution of  IParticle's.
+Reads  OutputData from file using different reading strategies.
 
-C++ includes: ParticleDistribution.h
+C++ includes: OutputDataReader.h
 ";
 
-%feature("docstring")  ParticleDistribution::ParticleDistribution "ParticleDistribution::ParticleDistribution(const IParticle &prototype, const ParameterDistribution &par_distr)
+%feature("docstring")  OutputDataReader::OutputDataReader "OutputDataReader::OutputDataReader(const std::string &file_name)
 ";
 
-%feature("docstring")  ParticleDistribution::clone "ParticleDistribution * ParticleDistribution::clone() const override final
-";
+%feature("docstring")  OutputDataReader::getOutputData "OutputData< double > * OutputDataReader::getOutputData()
 
-%feature("docstring")  ParticleDistribution::accept "void ParticleDistribution::accept(INodeVisitor *visitor) const override final
+read output data from file (file name was set already from OutputDataIOFactory) 
 ";
 
-%feature("docstring")  ParticleDistribution::translate "void ParticleDistribution::translate(kvector_t translation) override final
+%feature("docstring")  OutputDataReader::setStrategy "void OutputDataReader::setStrategy(IOutputDataReadStrategy *read_strategy)
 
-Translates the particle with the given vector. 
+Sets concrete reading strategy. 
 ";
 
-%feature("docstring")  ParticleDistribution::rotate "void ParticleDistribution::rotate(const IRotation &rotation) override final
 
-Applies the given rotation to the particle. 
+// File: classOutputDataReadFactory.xml
+%feature("docstring") OutputDataReadFactory "
+
+Creates reader appropariate for given type of files.
+
+C++ includes: OutputDataReadFactory.h
 ";
 
-%feature("docstring")  ParticleDistribution::generateParticles "SafePointerVector< IParticle > ParticleDistribution::generateParticles() const
 
-Returns list of new particles generated according to a distribution.
+// File: classOutputDataReadINTStrategy.xml
+%feature("docstring") OutputDataReadINTStrategy "
+
+Strategy to read BornAgain native IntensityData from ASCII file.
 
-Returns particle clones with parameter values drawn from distribution. 
+C++ includes: OutputDataReadStrategy.h
 ";
 
-%feature("docstring")  ParticleDistribution::prototype "const IParticle& ParticleDistribution::prototype() const
-
-Returns the prototype particle, used for generating multiple ones. 
+%feature("docstring")  OutputDataReadINTStrategy::readOutputData "OutputData< double > * OutputDataReadINTStrategy::readOutputData(std::istream &input_stream)
 ";
 
-%feature("docstring")  ParticleDistribution::parameterDistribution "ParameterDistribution ParticleDistribution::parameterDistribution() const
 
-Returns the distributed parameter data. 
-";
+// File: classOutputDataReadNumpyTXTStrategy.xml
+%feature("docstring") OutputDataReadNumpyTXTStrategy "
+
+Strategy to read  OutputData from simple ASCII file with the layout as in numpy.savetxt.
 
-%feature("docstring")  ParticleDistribution::getChildren "std::vector< const INode * > ParticleDistribution::getChildren() const override final
+C++ includes: OutputDataReadStrategy.h
 ";
 
-%feature("docstring")  ParticleDistribution::mainUnits "std::string ParticleDistribution::mainUnits() const
+%feature("docstring")  OutputDataReadNumpyTXTStrategy::readOutputData "OutputData< double > * OutputDataReadNumpyTXTStrategy::readOutputData(std::istream &input_stream)
 ";
 
 
-// File: classParticleInVacuumBuilder.xml
-%feature("docstring") ParticleInVacuumBuilder "
+// File: classOutputDataReadReflectometryStrategy.xml
+%feature("docstring") OutputDataReadReflectometryStrategy "
 
-The  ParticleInVacuumBuilder class generates a multilayer with single vacuum layer populated with particles of certain types. Requires IComponentService which generates form factors, used for bulk form factors testing.
+Strategy to read Reflectometry data from ASCII file.
 
-C++ includes: ParticleInVacuumBuilder.h
+C++ includes: OutputDataReadStrategy.h
 ";
 
-%feature("docstring")  ParticleInVacuumBuilder::ParticleInVacuumBuilder "ParticleInVacuumBuilder::ParticleInVacuumBuilder()
+%feature("docstring")  OutputDataReadReflectometryStrategy::readOutputData "OutputData< double > * OutputDataReadReflectometryStrategy::readOutputData(std::istream &input_stream)
 ";
 
-%feature("docstring")  ParticleInVacuumBuilder::buildSample "MultiLayer * ParticleInVacuumBuilder::buildSample() const
-";
 
-%feature("docstring")  ParticleInVacuumBuilder::createSampleByIndex "MultiLayer * ParticleInVacuumBuilder::createSampleByIndex(size_t index)
-";
+// File: classOutputDataWriteFactory.xml
+%feature("docstring") OutputDataWriteFactory "
 
-%feature("docstring")  ParticleInVacuumBuilder::size "size_t ParticleInVacuumBuilder::size()
+Creates writer appropariate for given type of files.
+
+C++ includes: OutputDataWriteFactory.h
 ";
 
 
-// File: classParticleLayout.xml
-%feature("docstring") ParticleLayout "
+// File: classOutputDataWriteINTStrategy.xml
+%feature("docstring") OutputDataWriteINTStrategy "
 
-Decorator class that adds particles to ISample objects.
+Strategy to write  OutputData to special BornAgain ASCII format
 
-C++ includes: ParticleLayout.h
+C++ includes: OutputDataWriteStrategy.h
 ";
 
-%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout()
+%feature("docstring")  OutputDataWriteINTStrategy::writeOutputData "void OutputDataWriteINTStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)
 ";
 
-%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance=-1.0)
-";
 
-%feature("docstring")  ParticleLayout::~ParticleLayout "ParticleLayout::~ParticleLayout() override
-";
+// File: classOutputDataWriteNumpyTXTStrategy.xml
+%feature("docstring") OutputDataWriteNumpyTXTStrategy "
+
+Strategy to write  OutputData to simple ASCII file with the layout as in numpy.savetxt
 
-%feature("docstring")  ParticleLayout::clone "ParticleLayout * ParticleLayout::clone() const final override
+C++ includes: OutputDataWriteStrategy.h
 ";
 
-%feature("docstring")  ParticleLayout::accept "void ParticleLayout::accept(INodeVisitor *visitor) const final override
+%feature("docstring")  OutputDataWriteNumpyTXTStrategy::writeOutputData "void OutputDataWriteNumpyTXTStrategy::writeOutputData(const OutputData< double > &data, std::ostream &output_stream)
 ";
 
-%feature("docstring")  ParticleLayout::addParticle "void ParticleLayout::addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())
 
-Adds particle to the layout with abundance, position and the rotation defined.
+// File: classOutputDataWriter.xml
+%feature("docstring") OutputDataWriter "
 
-Parameters:
------------
+Write  OutputData to file using different witing strategies.
 
-particle: 
-to be added
+C++ includes: OutputDataWriter.h
+";
 
-abundance: 
- Particle abundance
+%feature("docstring")  OutputDataWriter::OutputDataWriter "OutputDataWriter::OutputDataWriter(const std::string &file_name)
+";
 
-position: 
- Particle position
+%feature("docstring")  OutputDataWriter::writeOutputData "void OutputDataWriter::writeOutputData(const OutputData< double > &data)
 
-rotation: 
- Particle rotation 
+Writes output data to file. 
 ";
 
-%feature("docstring")  ParticleLayout::particles "SafePointerVector< IParticle > ParticleLayout::particles() const final override
+%feature("docstring")  OutputDataWriter::setStrategy "void OutputDataWriter::setStrategy(IOutputDataWriteStrategy *write_strategy)
 
-Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
+Sets concrete writing strategy. 
 ";
 
-%feature("docstring")  ParticleLayout::interferenceFunction "const IInterferenceFunction * ParticleLayout::interferenceFunction() const final override
 
-Returns the interference function. 
-";
+// File: classParticleCompositionBuilder.xml
+%feature("docstring") ParticleCompositionBuilder "
+
+Builds sample: two layers of spheres at hex lattice.
 
-%feature("docstring")  ParticleLayout::getTotalAbundance "double ParticleLayout::getTotalAbundance() const final override
+C++ includes: ParticleCompositionBuilder.h
+";
 
-Get total abundance of all particles. 
+%feature("docstring")  ParticleCompositionBuilder::buildSample "MultiLayer * ParticleCompositionBuilder::buildSample() const
 ";
 
-%feature("docstring")  ParticleLayout::setInterferenceFunction "void ParticleLayout::setInterferenceFunction(const IInterferenceFunction &interference_function)
 
-Adds interference functions. 
-";
+// File: classParticleInVacuumBuilder.xml
+%feature("docstring") ParticleInVacuumBuilder "
 
-%feature("docstring")  ParticleLayout::totalParticleSurfaceDensity "double ParticleLayout::totalParticleSurfaceDensity() const final override
+The  ParticleInVacuumBuilder class generates a multilayer with single vacuum layer populated with particles of certain types. Requires IComponentService which generates form factors, used for bulk form factors testing.
 
-Returns surface density of all particles. 
+C++ includes: ParticleInVacuumBuilder.h
 ";
 
-%feature("docstring")  ParticleLayout::setTotalParticleSurfaceDensity "void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override
-
-Sets total particle surface density.
+%feature("docstring")  ParticleInVacuumBuilder::ParticleInVacuumBuilder "ParticleInVacuumBuilder::ParticleInVacuumBuilder()
+";
 
-Parameters:
------------
+%feature("docstring")  ParticleInVacuumBuilder::buildSample "MultiLayer * ParticleInVacuumBuilder::buildSample() const
+";
 
-particle_density: 
-number of particles per square nanometer 
+%feature("docstring")  ParticleInVacuumBuilder::createSampleByIndex "MultiLayer * ParticleInVacuumBuilder::createSampleByIndex(size_t index)
 ";
 
-%feature("docstring")  ParticleLayout::getChildren "std::vector< const INode * > ParticleLayout::getChildren() const final override
+%feature("docstring")  ParticleInVacuumBuilder::size "size_t ParticleInVacuumBuilder::size()
 ";
 
 
@@ -7921,10 +4480,6 @@ C++ includes: ParaCrystalBuilder.h
 ";
 
 
-// File: structLattice2D_1_1ReciprocalBases.xml
-%feature("docstring") Lattice2D::ReciprocalBases "";
-
-
 // File: classRectangularConverter.xml
 %feature("docstring") RectangularConverter "
 
@@ -8300,10 +4855,6 @@ C++ includes: RoughMultiLayerComputation.h
 ";
 
 
-// File: structRoughnessModelWrap.xml
-%feature("docstring") RoughnessModelWrap "";
-
-
 // File: classRQ4Metric.xml
 %feature("docstring") RQ4Metric "
 
@@ -8584,89 +5135,6 @@ C++ includes: SampleToPython.h
 ";
 
 
-// File: classScalarFresnelMap.xml
-%feature("docstring") ScalarFresnelMap "
-
-Implementation of  IFresnelMap for scalar valued reflection/transmission coefficients.
-
-C++ includes: ScalarFresnelMap.h
-";
-
-%feature("docstring")  ScalarFresnelMap::ScalarFresnelMap "ScalarFresnelMap::ScalarFresnelMap(std::unique_ptr< ISpecularStrategy > strategy)
-";
-
-%feature("docstring")  ScalarFresnelMap::~ScalarFresnelMap "ScalarFresnelMap::~ScalarFresnelMap() final
-";
-
-%feature("docstring")  ScalarFresnelMap::ScalarFresnelMap "ScalarFresnelMap::ScalarFresnelMap(const ScalarFresnelMap &other)=delete
-";
-
-%feature("docstring")  ScalarFresnelMap::getOutCoefficients "std::unique_ptr< const ILayerRTCoefficients > ScalarFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const override
-
-Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
-";
-
-
-// File: classScalarRTCoefficients.xml
-%feature("docstring") ScalarRTCoefficients "
-
-Specular reflection and transmission coefficients in a layer in case of scalar interactions between the layers and the scattered particle.
-
-C++ includes: ScalarRTCoefficients.h
-";
-
-%feature("docstring")  ScalarRTCoefficients::ScalarRTCoefficients "ScalarRTCoefficients::ScalarRTCoefficients()
-";
-
-%feature("docstring")  ScalarRTCoefficients::~ScalarRTCoefficients "virtual ScalarRTCoefficients::~ScalarRTCoefficients()
-";
-
-%feature("docstring")  ScalarRTCoefficients::clone "ScalarRTCoefficients * ScalarRTCoefficients::clone() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::T1plus "Eigen::Vector2cd ScalarRTCoefficients::T1plus() const
-
-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::T2plus "Eigen::Vector2cd ScalarRTCoefficients::T2plus() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::R2plus "Eigen::Vector2cd ScalarRTCoefficients::R2plus() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::T1min "Eigen::Vector2cd ScalarRTCoefficients::T1min() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::R1min "Eigen::Vector2cd ScalarRTCoefficients::R1min() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::T2min "Eigen::Vector2cd ScalarRTCoefficients::T2min() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::R2min "Eigen::Vector2cd ScalarRTCoefficients::R2min() const
-";
-
-%feature("docstring")  ScalarRTCoefficients::getKz "Eigen::Vector2cd ScalarRTCoefficients::getKz() const
-
-Returns z-part of the two wavevector eigenmodes. 
-";
-
-%feature("docstring")  ScalarRTCoefficients::getScalarT "complex_t ScalarRTCoefficients::getScalarT() const
-
-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::getScalarKz "virtual complex_t ScalarRTCoefficients::getScalarKz() const
-";
-
-
 // File: classScanResolution.xml
 %feature("docstring") ScanResolution "
 
@@ -8822,27 +5290,6 @@ C++ includes: MagneticLayersBuilder.h
 ";
 
 
-// File: classSimpleSelectionRule.xml
-%feature("docstring") SimpleSelectionRule "
-
-Selection rule (v*q)modulus!=0, defined by vector v(a,b,c) and modulus.
-
-C++ includes: ISelectionRule.h
-";
-
-%feature("docstring")  SimpleSelectionRule::SimpleSelectionRule "SimpleSelectionRule::SimpleSelectionRule(int a, int b, int c, int modulus)
-";
-
-%feature("docstring")  SimpleSelectionRule::~SimpleSelectionRule "virtual SimpleSelectionRule::~SimpleSelectionRule()
-";
-
-%feature("docstring")  SimpleSelectionRule::clone "SimpleSelectionRule * SimpleSelectionRule::clone() const
-";
-
-%feature("docstring")  SimpleSelectionRule::coordinateSelected "bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const
-";
-
-
 // File: classSimulation.xml
 %feature("docstring") Simulation "
 
@@ -8910,7 +5357,7 @@ Sets the polarization analyzer characteristics of the detector.
 
 %feature("docstring")  Simulation::setSample "void Simulation::setSample(const MultiLayer &sample)
 
-The  MultiLayer object will not be owned by the  Simulation object. 
+The MultiLayer object will not be owned by the  Simulation object. 
 ";
 
 %feature("docstring")  Simulation::sample "const MultiLayer * Simulation::sample() const
@@ -9054,150 +5501,77 @@ Sets rectangular region of interest with lower left and upper right corners defi
 
 
 // File: classSimulationArea.xml
-%feature("docstring") SimulationArea "
-
-Holds iteration logic over active detector channels in the presence of masked areas and  RegionOfInterest defined.
-
-C++ includes: SimulationArea.h
-";
-
-%feature("docstring")  SimulationArea::SimulationArea "SimulationArea::SimulationArea(const IDetector *detector)
-";
-
-%feature("docstring")  SimulationArea::~SimulationArea "virtual SimulationArea::~SimulationArea()
-";
-
-%feature("docstring")  SimulationArea::begin "SimulationAreaIterator SimulationArea::begin()
-";
-
-%feature("docstring")  SimulationArea::end "SimulationAreaIterator SimulationArea::end()
-";
-
-%feature("docstring")  SimulationArea::isMasked "bool SimulationArea::isMasked(size_t index) const
-
-returns true if given iterator index correspond to masked detector channel 
-";
-
-%feature("docstring")  SimulationArea::totalSize "size_t SimulationArea::totalSize() const
-";
-
-%feature("docstring")  SimulationArea::roiIndex "size_t SimulationArea::roiIndex(size_t index) const
-
-Return index in ROI map from iterator index. 
-";
-
-%feature("docstring")  SimulationArea::detectorIndex "size_t SimulationArea::detectorIndex(size_t index) const
-
-Return detector index from iterator index. 
-";
-
-
-// File: classSimulationAreaIterator.xml
-%feature("docstring") SimulationAreaIterator "
-
-An iterator for  SimulationArea.
-
-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::elementIndex "size_t SimulationAreaIterator::elementIndex() const
-";
-
-%feature("docstring")  SimulationAreaIterator::roiIndex "size_t SimulationAreaIterator::roiIndex() const
-";
-
-%feature("docstring")  SimulationAreaIterator::detectorIndex "size_t SimulationAreaIterator::detectorIndex() const
-";
-
-
-// File: classSimulationFactory.xml
-%feature("docstring") SimulationFactory "
-
-Registry to create standard pre-defined simulations. Used in functional tests, performance measurements, etc.
-
-C++ includes: SimulationFactory.h
-";
-
-%feature("docstring")  SimulationFactory::SimulationFactory "SimulationFactory::SimulationFactory()
-";
-
-
-// File: classSimulationOptions.xml
-%feature("docstring") SimulationOptions "
+%feature("docstring") SimulationArea "
 
-Collect the different options for simulation.
+Holds iteration logic over active detector channels in the presence of masked areas and  RegionOfInterest defined.
 
-SimulationOptions
+C++ includes: SimulationArea.h
+";
 
-C++ includes: SimulationOptions.h
+%feature("docstring")  SimulationArea::SimulationArea "SimulationArea::SimulationArea(const IDetector *detector)
 ";
 
-%feature("docstring")  SimulationOptions::SimulationOptions "SimulationOptions::SimulationOptions()
+%feature("docstring")  SimulationArea::~SimulationArea "virtual SimulationArea::~SimulationArea()
 ";
 
-%feature("docstring")  SimulationOptions::isIntegrate "bool SimulationOptions::isIntegrate() const
+%feature("docstring")  SimulationArea::begin "SimulationAreaIterator SimulationArea::begin()
 ";
 
-%feature("docstring")  SimulationOptions::getMcPoints "size_t SimulationOptions::getMcPoints() const
+%feature("docstring")  SimulationArea::end "SimulationAreaIterator SimulationArea::end()
 ";
 
-%feature("docstring")  SimulationOptions::setMonteCarloIntegration "void SimulationOptions::setMonteCarloIntegration(bool flag=true, size_t mc_points=50)
+%feature("docstring")  SimulationArea::isMasked "bool SimulationArea::isMasked(size_t index) const
 
-Enables/disables MonetCarlo integration.
+returns true if given iterator index correspond to masked detector channel 
+";
 
-Parameters:
------------
+%feature("docstring")  SimulationArea::totalSize "size_t SimulationArea::totalSize() const
+";
 
-flag: 
-If true, MonteCarlo integration will be used, otherwise analytical calculations
+%feature("docstring")  SimulationArea::roiIndex "size_t SimulationArea::roiIndex(size_t index) const
 
-mc_points: 
-Number of points for MonteCarlo integrator 
+Return index in ROI map from iterator index. 
 ";
 
-%feature("docstring")  SimulationOptions::setNumberOfThreads "void SimulationOptions::setNumberOfThreads(int nthreads)
+%feature("docstring")  SimulationArea::detectorIndex "size_t SimulationArea::detectorIndex(size_t index) const
 
-Sets number of threads to use during the simulation (0 - take the default value from the hardware) 
+Return detector index from iterator index. 
 ";
 
-%feature("docstring")  SimulationOptions::getNumberOfThreads "unsigned SimulationOptions::getNumberOfThreads() const
-";
 
-%feature("docstring")  SimulationOptions::setNumberOfBatches "void SimulationOptions::setNumberOfBatches(int nbatches)
+// File: classSimulationAreaIterator.xml
+%feature("docstring") SimulationAreaIterator "
 
-Sets number of batches to split. 
-";
+An iterator for  SimulationArea.
 
-%feature("docstring")  SimulationOptions::getNumberOfBatches "unsigned SimulationOptions::getNumberOfBatches() const
+C++ includes: SimulationAreaIterator.h
 ";
 
-%feature("docstring")  SimulationOptions::getCurrentBatch "unsigned SimulationOptions::getCurrentBatch() const
+%feature("docstring")  SimulationAreaIterator::SimulationAreaIterator "SimulationAreaIterator::SimulationAreaIterator(const SimulationArea *area, size_t start_at_index)
 ";
 
-%feature("docstring")  SimulationOptions::setThreadInfo "void SimulationOptions::setThreadInfo(const ThreadInfo &thread_info)
-
-Sets the batch and thread information to be used. 
+%feature("docstring")  SimulationAreaIterator::index "size_t SimulationAreaIterator::index() const
 ";
 
-%feature("docstring")  SimulationOptions::getHardwareConcurrency "unsigned SimulationOptions::getHardwareConcurrency() const
+%feature("docstring")  SimulationAreaIterator::elementIndex "size_t SimulationAreaIterator::elementIndex() const
 ";
 
-%feature("docstring")  SimulationOptions::setIncludeSpecular "void SimulationOptions::setIncludeSpecular(bool include_specular)
+%feature("docstring")  SimulationAreaIterator::roiIndex "size_t SimulationAreaIterator::roiIndex() const
 ";
 
-%feature("docstring")  SimulationOptions::includeSpecular "bool SimulationOptions::includeSpecular() const
+%feature("docstring")  SimulationAreaIterator::detectorIndex "size_t SimulationAreaIterator::detectorIndex() const
 ";
 
-%feature("docstring")  SimulationOptions::setUseAvgMaterials "void SimulationOptions::setUseAvgMaterials(bool use_avg_materials)
+
+// File: classSimulationFactory.xml
+%feature("docstring") SimulationFactory "
+
+Registry to create standard pre-defined simulations. Used in functional tests, performance measurements, etc.
+
+C++ includes: SimulationFactory.h
 ";
 
-%feature("docstring")  SimulationOptions::useAvgMaterials "bool SimulationOptions::useAvgMaterials() const
+%feature("docstring")  SimulationFactory::SimulationFactory "SimulationFactory::SimulationFactory()
 ";
 
 
@@ -9336,63 +5710,6 @@ C++ includes: SlicedCylindersBuilder.h
 ";
 
 
-// File: classSlice.xml
-%feature("docstring") Slice "
-
-Data structure containing the data of a single slice, for calculating the Fresnel coefficients.
-
-C++ includes: Slice.h
-";
-
-%feature("docstring")  Slice::Slice "Slice::Slice(double thickness, const Material &material)
-";
-
-%feature("docstring")  Slice::Slice "Slice::Slice(double thickness, const Material &material, const LayerRoughness &top_roughness)
-";
-
-%feature("docstring")  Slice::Slice "Slice::Slice(const Slice &other)
-";
-
-%feature("docstring")  Slice::Slice "Slice::Slice(Slice &&other)
-";
-
-%feature("docstring")  Slice::~Slice "Slice::~Slice()
-";
-
-%feature("docstring")  Slice::setMaterial "void Slice::setMaterial(const Material &material)
-";
-
-%feature("docstring")  Slice::material "Material Slice::material() const
-";
-
-%feature("docstring")  Slice::thickness "double Slice::thickness() const
-";
-
-%feature("docstring")  Slice::topRoughness "const LayerRoughness * Slice::topRoughness() const
-";
-
-%feature("docstring")  Slice::scalarReducedPotential "complex_t Slice::scalarReducedPotential(kvector_t k, double n_ref) const
-
-Return the potential term that is used in the one-dimensional Fresnel calculations. 
-";
-
-%feature("docstring")  Slice::polarizedReducedPotential "Eigen::Matrix2cd Slice::polarizedReducedPotential(kvector_t k, double n_ref) const
-
-Return the potential term that is used in the one-dimensional Fresnel calculations in the presence of magnetization 
-";
-
-%feature("docstring")  Slice::initBField "void Slice::initBField(kvector_t h_field, double b_z)
-
-Initializes the magnetic B field from a given ambient field strength H. 
-";
-
-%feature("docstring")  Slice::bField "kvector_t Slice::bField() const
-";
-
-%feature("docstring")  Slice::invertBField "void Slice::invertBField()
-";
-
-
 // File: classSlicedCompositionBuilder.xml
 %feature("docstring") SlicedCompositionBuilder "
 
@@ -9417,39 +5734,6 @@ C++ includes: SlicedCylindersBuilder.h
 ";
 
 
-// File: classSlicedFormFactorList.xml
-%feature("docstring") SlicedFormFactorList "
-
-Class that contains and owns a list of form factors and the index of their containing layer. This class also handles the slicing of form factors if they cross layer interfaces.
-
-C++ includes: SlicedFormFactorList.h
-";
-
-%feature("docstring")  SlicedFormFactorList::SlicedFormFactorList "SlicedFormFactorList::SlicedFormFactorList()=default
-";
-
-%feature("docstring")  SlicedFormFactorList::SlicedFormFactorList "SlicedFormFactorList::SlicedFormFactorList(SlicedFormFactorList &&other)=default
-";
-
-%feature("docstring")  SlicedFormFactorList::~SlicedFormFactorList "SlicedFormFactorList::~SlicedFormFactorList()=default
-";
-
-%feature("docstring")  SlicedFormFactorList::size "size_t SlicedFormFactorList::size() const
-";
-
-%feature("docstring")  SlicedFormFactorList::regionMap "std::map< size_t, std::vector< HomogeneousRegion > > SlicedFormFactorList::regionMap() const
-";
-
-
-// File: structSlicedParticle.xml
-%feature("docstring") SlicedParticle "
-
-Struct that contains information on a sliced particle. This information is needed for evaluating the sliced form factor and the average of a material, used in the Fresnel calculations.
-
-C++ includes: SlicedParticle.h
-";
-
-
 // File: classSpecularComputation.xml
 %feature("docstring") SpecularComputation "
 
@@ -9534,87 +5818,6 @@ Return default axes units.
 ";
 
 
-// File: classSpecularMagneticNewNCStrategy.xml
-%feature("docstring") SpecularMagneticNewNCStrategy "
-
-Implements the magnetic Fresnel computation with Nevot-Croce roughness
-
-Implements the transfer matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a description, see internal document \"Polarized Implementation of the Transfer Matrix Method\"
-
-C++ includes: SpecularMagneticNewNCStrategy.h
-";
-
-
-// File: classSpecularMagneticNewStrategy.xml
-%feature("docstring") SpecularMagneticNewStrategy "
-
-Implements the magnetic Fresnel computation with Nevot-Croce roughness
-
-Implements the transfer matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a description, see internal document \"Polarized Implementation of the Transfer Matrix Method\"
-
-C++ includes: SpecularMagneticNewStrategy.h
-";
-
-%feature("docstring")  SpecularMagneticNewStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticNewStrategy::Execute(const std::vector< Slice > &slices, const kvector_t &k) const
-
-Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k 
-";
-
-%feature("docstring")  SpecularMagneticNewStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticNewStrategy::Execute(const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const
-
-Computes refraction angle reflection/transmission coefficients for given sliced multilayer and a set of kz projections corresponding to each slice 
-";
-
-
-// File: classSpecularMagneticNewTanhStrategy.xml
-%feature("docstring") SpecularMagneticNewTanhStrategy "
-
-Implements the magnetic Fresnel computation with the analytical Tanh roughness
-
-Implements the transfer matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a description, see internal document \"Polarized Implementation of the Transfer Matrix Method\"
-
-C++ includes: SpecularMagneticNewTanhStrategy.h
-";
-
-
-// File: classSpecularMagneticOldStrategy.xml
-%feature("docstring") SpecularMagneticOldStrategy "
-
-Implements the matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization.
-
-C++ includes: SpecularMagneticOldStrategy.h
-";
-
-%feature("docstring")  SpecularMagneticOldStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticOldStrategy::Execute(const std::vector< Slice > &slices, const kvector_t &k) const
-
-Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k 
-";
-
-%feature("docstring")  SpecularMagneticOldStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticOldStrategy::Execute(const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const
-";
-
-
-// File: classSpecularMagneticStrategy.xml
-%feature("docstring") SpecularMagneticStrategy "
-
-Implements the magnetic Fresnel computation without roughness
-
-Implements the matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a detailed description see internal document \"Polarized Specular Reflectometry\"
-
-C++ includes: SpecularMagneticStrategy.h
-";
-
-%feature("docstring")  SpecularMagneticStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticStrategy::Execute(const std::vector< Slice > &slices, const kvector_t &k) const
-
-Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k 
-";
-
-%feature("docstring")  SpecularMagneticStrategy::Execute "ISpecularStrategy::coeffs_t SpecularMagneticStrategy::Execute(const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const
-
-Computes refraction angle reflection/transmission coefficients for given sliced multilayer and a set of kz projections corresponding to each slice 
-";
-
-
 // File: classSpecularMatrixTerm.xml
 %feature("docstring") SpecularMatrixTerm "
 
@@ -9627,49 +5830,6 @@ C++ includes: SpecularComputationTerm.h
 ";
 
 
-// File: classSpecularScalarNCStrategy.xml
-%feature("docstring") SpecularScalarNCStrategy "
-
-Implements Nevot-Croce roughness for a scaler computation.
-
-Implements the transition function that includes Nevot-Croce roughness in the computation of the coefficients for coherent wave propagation in a multilayer by applying modified Fresnel coefficients.
-
-C++ includes: SpecularScalarNCStrategy.h
-";
-
-
-// File: classSpecularScalarStrategy.xml
-%feature("docstring") SpecularScalarStrategy "
-
-Implements the scalar Fresnel computation
-
-Implements method 'execute' to compute refraction angles and transmission/reflection coefficients for coherent wave propagation in a multilayer.
-
-Inherited by  SpecularScalarNCStrategy,  SpecularScalarTanhStrategy
-
-C++ includes: SpecularScalarStrategy.h
-";
-
-%feature("docstring")  SpecularScalarStrategy::Execute "ISpecularStrategy::coeffs_t SpecularScalarStrategy::Execute(const std::vector< Slice > &slices, const kvector_t &k) const override
-
-Computes refraction angles and transmission/reflection coefficients for given coherent wave propagation in a multilayer. 
-";
-
-%feature("docstring")  SpecularScalarStrategy::Execute "ISpecularStrategy::coeffs_t SpecularScalarStrategy::Execute(const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const override
-";
-
-
-// File: classSpecularScalarTanhStrategy.xml
-%feature("docstring") SpecularScalarTanhStrategy "
-
-Implements an tanh transition function to model roughness in a scaler computation.
-
-Implements the transition function that includes the analytical roughness model of an tanh interface transition in the computation of the coefficients for coherent wave propagation in a multilayer by applying modified Fresnel coefficients.
-
-C++ includes: SpecularScalarTanhStrategy.h
-";
-
-
 // File: classSpecularScalarTerm.xml
 %feature("docstring") SpecularScalarTerm "
 
@@ -9738,59 +5898,6 @@ Returns internal data handler.
 ";
 
 
-// File: classSpecularSimulationElement.xml
-%feature("docstring") SpecularSimulationElement "
-
-Data stucture containing both input and output of a single image pixel for specular simulation.
-
-C++ includes: SpecularSimulationElement.h
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(double kz)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(double wavelength, double alpha)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(const SpecularSimulationElement &other)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(SpecularSimulationElement &&other) noexcept
-";
-
-%feature("docstring")  SpecularSimulationElement::~SpecularSimulationElement "SpecularSimulationElement::~SpecularSimulationElement()
-";
-
-%feature("docstring")  SpecularSimulationElement::setPolarizationHandler "void SpecularSimulationElement::setPolarizationHandler(PolarizationHandler handler)
-
-Assigns PolarizationHandler. 
-";
-
-%feature("docstring")  SpecularSimulationElement::polarizationHandler "const PolarizationHandler& SpecularSimulationElement::polarizationHandler() const
-
-Returns assigned PolarizationHandler. 
-";
-
-%feature("docstring")  SpecularSimulationElement::getIntensity "double SpecularSimulationElement::getIntensity() const
-";
-
-%feature("docstring")  SpecularSimulationElement::setIntensity "void SpecularSimulationElement::setIntensity(double intensity)
-";
-
-%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
-";
-
-%feature("docstring")  SpecularSimulationElement::produceKz "std::vector< complex_t > SpecularSimulationElement::produceKz(const std::vector< Slice > &slices)
-
-Returns kz values for Abeles computation of reflection/transition coefficients. 
-";
-
-
 // File: classSpecularStrategyBuilder.xml
 %feature("docstring") SpecularStrategyBuilder "";
 
@@ -9885,118 +5992,51 @@ upper edge of last alpha-bin
 %feature("docstring")  SphericalDetector::~SphericalDetector "SphericalDetector::~SphericalDetector() override
 ";
 
-%feature("docstring")  SphericalDetector::defaultAxesUnits "Axes::Units SphericalDetector::defaultAxesUnits() const override
-
-return default axes units 
-";
-
-
-// File: classSphericalPixel.xml
-%feature("docstring") SphericalPixel "
-
-A pixel in a  SphericalDetector.
-
-C++ includes: SphericalPixel.h
-";
-
-%feature("docstring")  SphericalPixel::SphericalPixel "SphericalPixel::SphericalPixel(const Bin1D &alpha_bin, const Bin1D &phi_bin)
-";
-
-%feature("docstring")  SphericalPixel::clone "SphericalPixel * SphericalPixel::clone() const override
-";
-
-%feature("docstring")  SphericalPixel::createZeroSizePixel "SphericalPixel * SphericalPixel::createZeroSizePixel(double x, double y) const override
-";
-
-%feature("docstring")  SphericalPixel::getK "kvector_t SphericalPixel::getK(double x, double y, double wavelength) const override
-";
-
-%feature("docstring")  SphericalPixel::getIntegrationFactor "double SphericalPixel::getIntegrationFactor(double x, double y) const override
-";
-
-%feature("docstring")  SphericalPixel::getSolidAngle "double SphericalPixel::getSolidAngle() const override
-";
-
-
-// File: classSquareLattice.xml
-%feature("docstring") SquareLattice "";
-
-%feature("docstring")  SquareLattice::SquareLattice "SquareLattice::SquareLattice(double length, double xi=0.0)
-";
-
-%feature("docstring")  SquareLattice::clone "SquareLattice * SquareLattice::clone() const
-";
-
-%feature("docstring")  SquareLattice::accept "void SquareLattice::accept(INodeVisitor *visitor) const final
-";
-
-%feature("docstring")  SquareLattice::length1 "virtual double SquareLattice::length1() const
-";
-
-%feature("docstring")  SquareLattice::length2 "virtual double SquareLattice::length2() const
-";
-
-%feature("docstring")  SquareLattice::latticeAngle "double SquareLattice::latticeAngle() const
-";
-
-%feature("docstring")  SquareLattice::unitCellArea "double SquareLattice::unitCellArea() const
-";
-
-
-// File: classSquareLatticeBuilder.xml
-%feature("docstring") SquareLatticeBuilder "
-
-Builds sample: 2D lattice with different disorder (IsGISAXS example #6).
-
-C++ includes: TwoDimLatticeBuilder.h
-";
-
-%feature("docstring")  SquareLatticeBuilder::SquareLatticeBuilder "SquareLatticeBuilder::SquareLatticeBuilder()
-";
+%feature("docstring")  SphericalDetector::defaultAxesUnits "Axes::Units SphericalDetector::defaultAxesUnits() const override
 
-%feature("docstring")  SquareLatticeBuilder::buildSample "MultiLayer * SquareLatticeBuilder::buildSample() const
+return default axes units 
 ";
 
 
-// File: classSSCAHelper.xml
-%feature("docstring") SSCAHelper "
+// File: classSphericalPixel.xml
+%feature("docstring") SphericalPixel "
 
-Helper class for  SSCApproximationStrategy, offering some methods, shared between the scalar and polarized scattering calculations
+A pixel in a  SphericalDetector.
 
-C++ includes: SSCAHelper.h
+C++ includes: SphericalPixel.h
 ";
 
-%feature("docstring")  SSCAHelper::SSCAHelper "SSCAHelper::SSCAHelper(double kappa)
+%feature("docstring")  SphericalPixel::SphericalPixel "SphericalPixel::SphericalPixel(const Bin1D &alpha_bin, const Bin1D &phi_bin)
 ";
 
-%feature("docstring")  SSCAHelper::init "void SSCAHelper::init(const std::vector< FormFactorCoherentSum > &ff_wrappers)
+%feature("docstring")  SphericalPixel::clone "SphericalPixel * SphericalPixel::clone() const override
 ";
 
-%feature("docstring")  SSCAHelper::getCharacteristicSizeCoupling "complex_t SSCAHelper::getCharacteristicSizeCoupling(double qp, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
+%feature("docstring")  SphericalPixel::createZeroSizePixel "SphericalPixel * SphericalPixel::createZeroSizePixel(double x, double y) const override
 ";
 
-%feature("docstring")  SSCAHelper::getCharacteristicDistribution "complex_t SSCAHelper::getCharacteristicDistribution(double qp, const IInterferenceFunction *p_iff) const
+%feature("docstring")  SphericalPixel::getK "kvector_t SphericalPixel::getK(double x, double y, double wavelength) const override
 ";
 
-%feature("docstring")  SSCAHelper::calculatePositionOffsetPhase "complex_t SSCAHelper::calculatePositionOffsetPhase(double qp, double radial_extension) const
+%feature("docstring")  SphericalPixel::getIntegrationFactor "double SphericalPixel::getIntegrationFactor(double x, double y) const override
 ";
 
-%feature("docstring")  SSCAHelper::getMeanFormfactorNorm "complex_t SSCAHelper::getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
+%feature("docstring")  SphericalPixel::getSolidAngle "double SphericalPixel::getSolidAngle() const override
 ";
 
-%feature("docstring")  SSCAHelper::getMeanFormfactors "void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const InterferenceFunctionUtils::matrixFFVector_t &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
-";
 
+// File: classSquareLatticeBuilder.xml
+%feature("docstring") SquareLatticeBuilder "
 
-// File: classSSCApproximationStrategy.xml
-%feature("docstring") SSCApproximationStrategy "
+Builds sample: 2D lattice with different disorder (IsGISAXS example #6).
 
-Strategy class to compute the total scattering from a particle layout in the size-spacing correlation approximation.
+C++ includes: TwoDimLatticeBuilder.h
+";
 
-C++ includes: SSCApproximationStrategy.h
+%feature("docstring")  SquareLatticeBuilder::SquareLatticeBuilder "SquareLatticeBuilder::SquareLatticeBuilder()
 ";
 
-%feature("docstring")  SSCApproximationStrategy::SSCApproximationStrategy "SSCApproximationStrategy::SSCApproximationStrategy(SimulationOptions sim_params, double kappa, bool polarized)
+%feature("docstring")  SquareLatticeBuilder::buildSample "MultiLayer * SquareLatticeBuilder::buildSample() const
 ";
 
 
@@ -10019,33 +6059,6 @@ C++ includes: TwoDimLatticeBuilder.h
 ";
 
 
-// File: classTRange.xml
-%feature("docstring") TRange "
-
-An interval [lowerBound..upperBound[.
-
-C++ includes: TRange.h
-";
-
-%feature("docstring")  TRange::TRange "TRange< T >::TRange(T lowerBound, T upperBound)
-";
-
-%feature("docstring")  TRange::~TRange "virtual TRange< T >::~TRange()
-";
-
-%feature("docstring")  TRange::getLowerBound "T TRange< T >::getLowerBound() const
-";
-
-%feature("docstring")  TRange::getUpperBound "T TRange< T >::getUpperBound() const
-";
-
-%feature("docstring")  TRange::getDifference "T TRange< T >::getDifference() const
-";
-
-%feature("docstring")  TRange::inRange "bool TRange< T >::inRange(T value) const
-";
-
-
 // File: classTransformBoxBuilder.xml
 %feature("docstring") TransformBoxBuilder "
 
@@ -10073,21 +6086,6 @@ C++ includes: RipplesBuilder.h
 ";
 
 
-// File: classTSampledRange.xml
-%feature("docstring") TSampledRange "
-
-An interval [lowerBound..upperBound[, and a number of samples.
-
-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
-";
-
-
 // File: classTwoLayerRoughnessBuilder.xml
 %feature("docstring") TwoLayerRoughnessBuilder "
 
@@ -10300,166 +6298,94 @@ C++ includes: VarianceFunctions.h
 // File: classFourierTransform_1_1Workspace.xml
 
 
-// File: namespace_0D123.xml
-
-
-// File: namespace_0D135.xml
-
-
-// File: namespace_0D143.xml
-
-
-// File: namespace_0D148.xml
+// File: namespace_0D100.xml
 
 
-// File: namespace_0D157.xml
+// File: namespace_0D105.xml
 
 
-// File: namespace_0D159.xml
+// File: namespace_0D114.xml
 
 
-// File: namespace_0D16.xml
+// File: namespace_0D116.xml
 
 
-// File: namespace_0D163.xml
+// File: namespace_0D120.xml
 
 
-// File: namespace_0D176.xml
+// File: namespace_0D133.xml
 
 
-// File: namespace_0D178.xml
-
-
-// File: namespace_0D182.xml
-
-
-// File: namespace_0D188.xml
+// File: namespace_0D135.xml
 
 
-// File: namespace_0D2.xml
+// File: namespace_0D139.xml
 
 
-// File: namespace_0D214.xml
+// File: namespace_0D145.xml
 
 
-// File: namespace_0D236.xml
+// File: namespace_0D180.xml
 
 
-// File: namespace_0D240.xml
+// File: namespace_0D187.xml
 
 
-// File: namespace_0D25.xml
+// File: namespace_0D193.xml
 
 
-// File: namespace_0D250.xml
+// File: namespace_0D197.xml
 
 
-// File: namespace_0D252.xml
+// File: namespace_0D199.xml
 
 
-// File: namespace_0D254.xml
+// File: namespace_0D207.xml
 
 
-// File: namespace_0D260.xml
+// File: namespace_0D213.xml
 
 
-// File: namespace_0D262.xml
+// File: namespace_0D215.xml
 
 
-// File: namespace_0D264.xml
+// File: namespace_0D219.xml
 
 
-// File: namespace_0D266.xml
+// File: namespace_0D231.xml
 
 
-// File: namespace_0D268.xml
+// File: namespace_0D237.xml
 
 
-// File: namespace_0D270.xml
+// File: namespace_0D241.xml
 
 
-// File: namespace_0D274.xml
+// File: namespace_0D259.xml
 
 
-// File: namespace_0D276.xml
+// File: namespace_0D278.xml
 
 
 // File: namespace_0D292.xml
 
 
-// File: namespace_0D320.xml
-
-
-// File: namespace_0D325.xml
-
+// File: namespace_0D37.xml
 
-// File: namespace_0D327.xml
 
+// File: namespace_0D39.xml
 
-// File: namespace_0D337.xml
 
+// File: namespace_0D41.xml
 
-// File: namespace_0D343.xml
 
+// File: namespace_0D45.xml
 
-// File: namespace_0D347.xml
 
+// File: namespace_0D80.xml
 
-// File: namespace_0D349.xml
 
-
-// File: namespace_0D357.xml
-
-
-// File: namespace_0D363.xml
-
-
-// File: namespace_0D365.xml
-
-
-// File: namespace_0D376.xml
-
-
-// File: namespace_0D388.xml
-
-
-// File: namespace_0D394.xml
-
-
-// File: namespace_0D398.xml
-
-
-// File: namespace_0D4.xml
-
-
-// File: namespace_0D416.xml
-
-
-// File: namespace_0D435.xml
-
-
-// File: namespace_0D449.xml
-
-
-// File: namespace_0D64.xml
-
-
-// File: namespace_0D66.xml
-
-
-// File: namespace_0D68.xml
-
-
-// File: namespace_0D72.xml
-
-
-// File: namespace_0D84.xml
-
-
-// File: namespace_0D90.xml
-
-
-// File: namespace_0D94.xml
+// File: namespace_0D92.xml
 
 
 // File: namespaceArrayUtils.xml
@@ -10687,76 +6613,6 @@ Creates Fourier Transform ( OutputData format) of intensity map ( OutputData for
 ";
 
 
-// File: namespaceInterferenceFunctionUtils.xml
-%feature("docstring")  InterferenceFunctionUtils::PrecomputeScalarFormFactors "std::vector< complex_t > InterferenceFunctionUtils::PrecomputeScalarFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
-";
-
-%feature("docstring")  InterferenceFunctionUtils::PrecomputePolarizedFormFactors "matrixFFVector_t InterferenceFunctionUtils::PrecomputePolarizedFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
-";
-
-
-// File: namespaceKzComputation.xml
-%feature("docstring")  KzComputation::computeReducedKz "std::vector< complex_t > KzComputation::computeReducedKz(const std::vector< Slice > &slices, kvector_t k)
-";
-
-%feature("docstring")  KzComputation::computeKzFromSLDs "std::vector< complex_t > KzComputation::computeKzFromSLDs(const std::vector< Slice > &slices, double kz)
-";
-
-%feature("docstring")  KzComputation::computeKzFromRefIndices "std::vector< complex_t > KzComputation::computeKzFromRefIndices(const std::vector< Slice > &slices, kvector_t k)
-";
-
-
-// File: namespaceLatticeUtils.xml
-%feature("docstring")  LatticeUtils::createFCCLattice "Lattice LatticeUtils::createFCCLattice(double lattice_constant, const ILatticeOrientation &orientation)
-";
-
-%feature("docstring")  LatticeUtils::createHCPLattice "Lattice LatticeUtils::createHCPLattice(double a, double c, const ILatticeOrientation &orientation)
-";
-
-%feature("docstring")  LatticeUtils::createBCTLattice "Lattice LatticeUtils::createBCTLattice(double a, double c, const ILatticeOrientation &orientation)
-";
-
-
-// File: namespaceMultiLayerUtils.xml
-%feature("docstring")  MultiLayerUtils::LayerThickness "double MultiLayerUtils::LayerThickness(const MultiLayer &multilayer, size_t i)
-
-Returns thickness of layer. 
-";
-
-%feature("docstring")  MultiLayerUtils::LayerTopInterface "const LayerInterface * MultiLayerUtils::LayerTopInterface(const MultiLayer &multilayer, size_t i)
-
-Returns top interface of layer. 
-";
-
-%feature("docstring")  MultiLayerUtils::LayerBottomInterface "const LayerInterface * MultiLayerUtils::LayerBottomInterface(const MultiLayer &multilayer, size_t i)
-
-Returns bottom interface of layer. 
-";
-
-%feature("docstring")  MultiLayerUtils::LayerTopRoughness "const LayerRoughness * MultiLayerUtils::LayerTopRoughness(const MultiLayer &multilayer, size_t i)
-
-Returns top roughness of layer. 
-";
-
-%feature("docstring")  MultiLayerUtils::IndexOfLayer "size_t MultiLayerUtils::IndexOfLayer(const MultiLayer &multilayer, const Layer *p_layer)
-
-Returns the index of the given layer. 
-";
-
-%feature("docstring")  MultiLayerUtils::ContainsCompatibleMaterials "bool MultiLayerUtils::ContainsCompatibleMaterials(const MultiLayer &multilayer)
-
-Returns true if the multilayer contains non-default materials of one type only. 
-";
-
-%feature("docstring")  MultiLayerUtils::ParticleRegions "std::vector< ZLimits > MultiLayerUtils::ParticleRegions(const MultiLayer &multilayer, bool use_slicing)
-
-Calculate z-regions occupied by particles. 
-";
-
-%feature("docstring")  MultiLayerUtils::hasRoughness "bool MultiLayerUtils::hasRoughness(const MultiLayer &sample)
-";
-
-
 // File: namespaceObjectiveMetricUtils.xml
 %feature("docstring")  ObjectiveMetricUtils::l1Norm "const std::function< double(double)> ObjectiveMetricUtils::l1Norm()
 
@@ -10846,39 +6702,6 @@ Prints python-script definition for given axis. offset is used for alignment and
 ";
 
 
-// File: namespacePyImport.xml
-%feature("docstring")  PyImport::createFromPython "std::unique_ptr< MultiLayer > PyImport::createFromPython(const std::string &script, const std::string &functionName, const std::string &path=\"\")
-
-Creates a multi layer by running python code in embedded interpreter.
-
-Parameters:
------------
-
-script: 
-Python script
-
-functionName: 
-A function name in this script which produces a  MultiLayer
-
-path: 
-A path to import BornAgain library. If empty, relies on PYTHONPATH 
-";
-
-%feature("docstring")  PyImport::listOfFunctions "std::vector< std::string > PyImport::listOfFunctions(const std::string &script, const std::string &path=\"\")
-
-Returns list of functions defined in the script.
-
-Parameters:
------------
-
-script: 
-Python script
-
-path: 
-A path to import BornAgain library. If empty, relies on PYTHONPATH 
-";
-
-
 // File: namespacerefMat.xml
 
 
@@ -11085,87 +6908,6 @@ Helper factory function to use in  GISASSimulation. Depending on the type of det
 ";
 
 
-// File: IInterferenceFunction_8cpp.xml
-
-
-// File: IInterferenceFunction_8h.xml
-
-
-// File: InterferenceFunction1DLattice_8cpp.xml
-
-
-// File: InterferenceFunction1DLattice_8h.xml
-
-
-// File: InterferenceFunction2DLattice_8cpp.xml
-
-
-// File: InterferenceFunction2DLattice_8h.xml
-
-
-// File: InterferenceFunction2DParaCrystal_8cpp.xml
-
-
-// File: InterferenceFunction2DParaCrystal_8h.xml
-
-
-// File: InterferenceFunction2DSuperLattice_8cpp.xml
-
-
-// File: InterferenceFunction2DSuperLattice_8h.xml
-
-
-// File: InterferenceFunction3DLattice_8cpp.xml
-
-
-// File: InterferenceFunction3DLattice_8h.xml
-
-
-// File: InterferenceFunctionFinite2DLattice_8cpp.xml
-
-
-// File: InterferenceFunctionFinite2DLattice_8h.xml
-
-
-// File: InterferenceFunctionFinite3DLattice_8cpp.xml
-
-
-// File: InterferenceFunctionFinite3DLattice_8h.xml
-
-
-// File: InterferenceFunctionHardDisk_8cpp.xml
-
-
-// File: InterferenceFunctionHardDisk_8h.xml
-
-
-// File: InterferenceFunctionNone_8cpp.xml
-
-
-// File: InterferenceFunctionNone_8h.xml
-
-
-// File: InterferenceFunctionRadialParaCrystal_8cpp.xml
-
-
-// File: InterferenceFunctionRadialParaCrystal_8h.xml
-
-
-// File: InterferenceFunctions_8h.xml
-
-
-// File: InterferenceFunctionTwin_8cpp.xml
-
-
-// File: InterferenceFunctionTwin_8h.xml
-
-
-// File: ParticleLayout_8cpp.xml
-
-
-// File: ParticleLayout_8h.xml
-
-
 // File: Beam_8cpp.xml
 
 
@@ -11323,82 +7065,34 @@ Generate z values (equidistant) for use in MaterialProfile.
 // File: ProfileHelper_8h.xml
 
 
-// File: ProgressHandler_8cpp.xml
-
-
-// File: ProgressHandler_8h.xml
-
-
-// File: RoughMultiLayerComputation_8cpp.xml
-
-
-// File: RoughMultiLayerComputation_8h.xml
-
-
-// File: SpecularComputation_8cpp.xml
-
-
-// File: SpecularComputation_8h.xml
-
-
-// File: SpecularComputationTerm_8cpp.xml
-
-
-// File: SpecularComputationTerm_8h.xml
-
-
-// File: SpecularStrategyBuilder_8cpp.xml
-
-
-// File: SpecularStrategyBuilder_8h.xml
-
-
-// File: FTDecay1D_8cpp.xml
-
-
-// File: FTDecay1D_8h.xml
-
-
-// File: FTDecay2D_8cpp.xml
-
-
-// File: FTDecay2D_8h.xml
-
-
-// File: FTDistributions1D_8cpp.xml
-
-
-// File: FTDistributions1D_8h.xml
-
-
-// File: FTDistributions2D_8cpp.xml
+// File: ProgressHandler_8cpp.xml
 
 
-// File: FTDistributions2D_8h.xml
+// File: ProgressHandler_8h.xml
 
 
-// File: IDistribution1DSampler_8cpp.xml
+// File: RoughMultiLayerComputation_8cpp.xml
 
 
-// File: IDistribution1DSampler_8h.xml
+// File: RoughMultiLayerComputation_8h.xml
 
 
-// File: IDistribution2DSampler_8cpp.xml
+// File: SpecularComputation_8cpp.xml
 
 
-// File: IDistribution2DSampler_8h.xml
+// File: SpecularComputation_8h.xml
 
 
-// File: ILayout_8cpp.xml
+// File: SpecularComputationTerm_8cpp.xml
 
 
-// File: ILayout_8h.xml
+// File: SpecularComputationTerm_8h.xml
 
 
-// File: IPeakShape_8cpp.xml
+// File: SpecularStrategyBuilder_8cpp.xml
 
 
-// File: IPeakShape_8h.xml
+// File: SpecularStrategyBuilder_8h.xml
 
 
 // File: CumulativeValue_8cpp.xml
@@ -11761,305 +7455,6 @@ make Swappable
 // File: IIntensityFunction_8h.xml
 
 
-// File: ILatticeOrientation_8cpp.xml
-
-
-// File: ILatticeOrientation_8h.xml
-
-
-// File: ISelectionRule_8h.xml
-
-
-// File: Lattice_8cpp.xml
-
-
-// File: Lattice_8h.xml
-
-
-// File: Lattice2D_8cpp.xml
-
-
-// File: Lattice2D_8h.xml
-
-
-// File: LatticeUtils_8cpp.xml
-
-
-// File: LatticeUtils_8h.xml
-
-
-// File: DecouplingApproximationStrategy_8cpp.xml
-
-
-// File: DecouplingApproximationStrategy_8h.xml
-
-
-// File: FormFactorCoherentPart_8cpp.xml
-
-
-// File: FormFactorCoherentPart_8h.xml
-
-
-// File: FormFactorCoherentSum_8cpp.xml
-
-
-// File: FormFactorCoherentSum_8h.xml
-
-
-// File: IFresnelMap_8cpp.xml
-
-
-// File: IFresnelMap_8h.xml
-
-
-// File: IInterferenceFunctionStrategy_8cpp.xml
-
-
-// File: IInterferenceFunctionStrategy_8h.xml
-
-
-// File: InterferenceFunctionUtils_8cpp.xml
-
-
-// File: InterferenceFunctionUtils_8h.xml
-
-
-// File: ISpecularStrategy_8h.xml
-
-
-// File: KzComputation_8cpp.xml
-
-
-// File: KzComputation_8h.xml
-
-
-// File: Layer_8cpp.xml
-
-
-// File: Layer_8h.xml
-
-
-// File: LayerFillLimits_8cpp.xml
-
-
-// File: LayerFillLimits_8h.xml
-
-
-// File: LayerInterface_8cpp.xml
-
-
-// File: LayerInterface_8h.xml
-
-
-// File: LayerRoughness_8cpp.xml
-
-
-// File: LayerRoughness_8h.xml
-
-
-// File: MatrixFresnelMap_8cpp.xml
-
-
-// File: MatrixFresnelMap_8h.xml
-
-
-// File: MultiLayer_8cpp.xml
-
-
-// File: MultiLayer_8h.xml
-
-
-// File: MultiLayerUtils_8cpp.xml
-
-
-// File: MultiLayerUtils_8h.xml
-
-
-// File: PyImport_8cpp.xml
-
-
-// File: PyImport_8h.xml
-
-
-// File: RoughnessModels_8cpp.xml
-
-
-// File: RoughnessModels_8h.xml
-
-
-// File: ScalarFresnelMap_8cpp.xml
-
-
-// File: ScalarFresnelMap_8h.xml
-
-
-// File: Slice_8cpp.xml
-
-
-// File: Slice_8h.xml
-
-
-// File: SlicedFormFactorList_8cpp.xml
-
-
-// File: SlicedFormFactorList_8h.xml
-
-
-// File: SpecularMagneticNewNCStrategy_8cpp.xml
-
-
-// File: SpecularMagneticNewNCStrategy_8h.xml
-
-
-// File: SpecularMagneticNewStrategy_8cpp.xml
-
-
-// File: SpecularMagneticNewStrategy_8h.xml
-
-
-// File: SpecularMagneticNewTanhStrategy_8cpp.xml
-
-
-// File: SpecularMagneticNewTanhStrategy_8h.xml
-
-
-// File: SpecularMagneticOldStrategy_8cpp.xml
-
-
-// File: SpecularMagneticOldStrategy_8h.xml
-
-
-// File: SpecularMagneticStrategy_8cpp.xml
-
-
-// File: SpecularMagneticStrategy_8h.xml
-
-
-// File: SpecularScalarNCStrategy_8cpp.xml
-
-
-// File: SpecularScalarNCStrategy_8h.xml
-
-
-// File: SpecularScalarStrategy_8cpp.xml
-
-
-// File: SpecularScalarStrategy_8h.xml
-
-
-// File: SpecularScalarTanhStrategy_8cpp.xml
-
-
-// File: SpecularScalarTanhStrategy_8h.xml
-
-
-// File: SpecularSimulationElement_8cpp.xml
-
-
-// File: SpecularSimulationElement_8h.xml
-
-
-// File: SSCAHelper_8cpp.xml
-
-
-// File: SSCAHelper_8h.xml
-
-
-// File: SSCApproximationStrategy_8cpp.xml
-
-
-// File: SSCApproximationStrategy_8h.xml
-
-
-// File: Crystal_8cpp.xml
-
-
-// File: Crystal_8h.xml
-
-
-// File: FormFactorCoreShell_8cpp.xml
-
-
-// File: FormFactorCoreShell_8h.xml
-
-
-// File: FormFactorCrystal_8cpp.xml
-
-
-// File: FormFactorCrystal_8h.xml
-
-
-// File: FormFactorWeighted_8cpp.xml
-
-
-// File: FormFactorWeighted_8h.xml
-
-
-// File: HomogeneousRegion_8cpp.xml
-%feature("docstring")  createAveragedMaterial "Material createAveragedMaterial(const Material &layer_mat, const std::vector< HomogeneousRegion > &regions)
-
-Creates averaged material. Square refractive index of returned material is arithmetic mean over  regions and  layer_mat. Magnetization (if present) is averaged linearly. 
-";
-
-
-// File: HomogeneousRegion_8h.xml
-%feature("docstring")  createAveragedMaterial "Material createAveragedMaterial(const Material &layer_mat, const std::vector< HomogeneousRegion > &regions)
-
-Creates averaged material. Square refractive index of returned material is arithmetic mean over  regions and  layer_mat. Magnetization (if present) is averaged linearly. 
-";
-
-
-// File: IAbstractParticle_8cpp.xml
-
-
-// File: IAbstractParticle_8h.xml
-
-
-// File: IClusteredParticles_8h.xml
-
-
-// File: IParticle_8cpp.xml
-
-
-// File: IParticle_8h.xml
-
-
-// File: MesoCrystal_8cpp.xml
-
-
-// File: MesoCrystal_8h.xml
-
-
-// File: Particle_8cpp.xml
-
-
-// File: Particle_8h.xml
-
-
-// File: ParticleComposition_8cpp.xml
-
-
-// File: ParticleComposition_8h.xml
-
-
-// File: ParticleCoreShell_8cpp.xml
-
-
-// File: ParticleCoreShell_8h.xml
-
-
-// File: ParticleDistribution_8cpp.xml
-
-
-// File: ParticleDistribution_8h.xml
-
-
-// File: SlicedParticle_8h.xml
-
-
-// File: TRange_8h.xml
-
-
 // File: ConvolutionDetectorResolution_8cpp.xml
 
 
@@ -12093,36 +7488,6 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: ScanResolution_8h.xml
 
 
-// File: ILayerRTCoefficients_8h.xml
-
-
-// File: MatrixRTCoefficients_8cpp.xml
-
-
-// File: MatrixRTCoefficients_8h.xml
-
-
-// File: MatrixRTCoefficients__v2_8cpp.xml
-
-
-// File: MatrixRTCoefficients__v2_8h.xml
-
-
-// File: MatrixRTCoefficients__v3_8cpp.xml
-
-
-// File: MatrixRTCoefficients__v3_8h.xml
-
-
-// File: ScalarRTCoefficients_8h.xml
-
-
-// File: SimulationOptions_8cpp.xml
-
-
-// File: SimulationOptions_8h.xml
-
-
 // File: FixedBuilder_8cpp.xml
 
 
@@ -12234,27 +7599,6 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: UnitConverterUtils_8h.xml
 
 
-// File: FormFactorGauss_8cpp.xml
-
-
-// File: FormFactorGauss_8h.xml
-
-
-// File: FormFactorSphereGaussianRadius_8cpp.xml
-
-
-// File: FormFactorSphereGaussianRadius_8h.xml
-
-
-// File: FormFactorSphereLogNormalRadius_8cpp.xml
-
-
-// File: FormFactorSphereLogNormalRadius_8h.xml
-
-
-// File: SoftParticles_8h.xml
-
-
 // File: BoxCompositionBuilder_8cpp.xml
 
 
@@ -12485,9 +7829,6 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: deprecated.xml
 
 
-// File: dir_5f1a4a05eca575eab319839347bb4113.xml
-
-
 // File: dir_2afd61a498231c74441502b63b50f75c.xml
 
 
@@ -12497,9 +7838,6 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: dir_c6310732a22f63c0c2fc5595561e68f1.xml
 
 
-// File: dir_fa96dd1f1e0fa8c53ad7561c23a2a056.xml
-
-
 // File: dir_e8e4c52c5b1be567b4cbfc8c213ce785.xml
 
 
@@ -12524,21 +7862,9 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: dir_d6d024cca01b851661c3fb5635dd2ee0.xml
 
 
-// File: dir_7f8c371d7d9c2d18aea541845cde06e7.xml
-
-
-// File: dir_c21740227f50b02f28bdacfb625f042a.xml
-
-
-// File: dir_3a34810b9fbc1682c26e767b1a1a5860.xml
-
-
 // File: dir_790d5e8b445d9aec8c8895146706942a.xml
 
 
-// File: dir_8e60847f0ac26e3d8a13e8a06357123f.xml
-
-
 // File: dir_dfcc64e98e4f62108d0fa0099ad7f9c0.xml
 
 
@@ -12548,9 +7874,6 @@ Creates averaged material. Square refractive index of returned material is arith
 // File: dir_d7a24665a95cfc15308ebd7b07b5ebd6.xml
 
 
-// File: dir_bf872a709c84554e66a8525bb546523f.xml
-
-
 // File: dir_5d2259b43612a5a0ff7512df653d7370.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 8d63436cf4e..f27eaa0c48e 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -4014,155 +4014,69 @@ class Rectangle(IShape2D):
 _libBornAgainCore.Rectangle_swigregister(Rectangle)
 
 class SimulationOptions(object):
-    r"""
-
-
-    Collect the different options for simulation.
-
-    SimulationOptions
-
-    C++ includes: SimulationOptions.h
-
-    """
+    r"""Proxy of C++ SimulationOptions class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self):
-        r"""
-        __init__(SimulationOptions self) -> SimulationOptions
-        SimulationOptions::SimulationOptions()
-
-        """
+        r"""__init__(SimulationOptions self) -> SimulationOptions"""
         _libBornAgainCore.SimulationOptions_swiginit(self, _libBornAgainCore.new_SimulationOptions())
 
     def isIntegrate(self):
-        r"""
-        isIntegrate(SimulationOptions self) -> bool
-        bool SimulationOptions::isIntegrate() const
-
-        """
+        r"""isIntegrate(SimulationOptions self) -> bool"""
         return _libBornAgainCore.SimulationOptions_isIntegrate(self)
 
     def getMcPoints(self):
-        r"""
-        getMcPoints(SimulationOptions self) -> size_t
-        size_t SimulationOptions::getMcPoints() const
-
-        """
+        r"""getMcPoints(SimulationOptions self) -> size_t"""
         return _libBornAgainCore.SimulationOptions_getMcPoints(self)
 
     def setMonteCarloIntegration(self, flag=True, mc_points=50):
-        r"""
-        setMonteCarloIntegration(SimulationOptions self, bool flag=True, size_t mc_points=50)
-        void SimulationOptions::setMonteCarloIntegration(bool flag=true, size_t mc_points=50)
-
-        Enables/disables MonetCarlo integration.
-
-        Parameters:
-        -----------
-
-        flag: 
-        If true, MonteCarlo integration will be used, otherwise analytical calculations
-
-        mc_points: 
-        Number of points for MonteCarlo integrator 
-
-        """
+        r"""setMonteCarloIntegration(SimulationOptions self, bool flag=True, size_t mc_points=50)"""
         return _libBornAgainCore.SimulationOptions_setMonteCarloIntegration(self, flag, mc_points)
 
     def setNumberOfThreads(self, nthreads):
-        r"""
-        setNumberOfThreads(SimulationOptions self, int nthreads)
-        void SimulationOptions::setNumberOfThreads(int nthreads)
-
-        Sets number of threads to use during the simulation (0 - take the default value from the hardware) 
-
-        """
+        r"""setNumberOfThreads(SimulationOptions self, int nthreads)"""
         return _libBornAgainCore.SimulationOptions_setNumberOfThreads(self, nthreads)
 
     def getNumberOfThreads(self):
-        r"""
-        getNumberOfThreads(SimulationOptions self) -> unsigned int
-        unsigned SimulationOptions::getNumberOfThreads() const
-
-        """
+        r"""getNumberOfThreads(SimulationOptions self) -> unsigned int"""
         return _libBornAgainCore.SimulationOptions_getNumberOfThreads(self)
 
     def setNumberOfBatches(self, nbatches):
-        r"""
-        setNumberOfBatches(SimulationOptions self, int nbatches)
-        void SimulationOptions::setNumberOfBatches(int nbatches)
-
-        Sets number of batches to split. 
-
-        """
+        r"""setNumberOfBatches(SimulationOptions self, int nbatches)"""
         return _libBornAgainCore.SimulationOptions_setNumberOfBatches(self, nbatches)
 
     def getNumberOfBatches(self):
-        r"""
-        getNumberOfBatches(SimulationOptions self) -> unsigned int
-        unsigned SimulationOptions::getNumberOfBatches() const
-
-        """
+        r"""getNumberOfBatches(SimulationOptions self) -> unsigned int"""
         return _libBornAgainCore.SimulationOptions_getNumberOfBatches(self)
 
     def getCurrentBatch(self):
-        r"""
-        getCurrentBatch(SimulationOptions self) -> unsigned int
-        unsigned SimulationOptions::getCurrentBatch() const
-
-        """
+        r"""getCurrentBatch(SimulationOptions self) -> unsigned int"""
         return _libBornAgainCore.SimulationOptions_getCurrentBatch(self)
 
     def setThreadInfo(self, thread_info):
-        r"""
-        setThreadInfo(SimulationOptions self, ThreadInfo const & thread_info)
-        void SimulationOptions::setThreadInfo(const ThreadInfo &thread_info)
-
-        Sets the batch and thread information to be used. 
-
-        """
+        r"""setThreadInfo(SimulationOptions self, ThreadInfo const & thread_info)"""
         return _libBornAgainCore.SimulationOptions_setThreadInfo(self, thread_info)
 
     def getHardwareConcurrency(self):
-        r"""
-        getHardwareConcurrency(SimulationOptions self) -> unsigned int
-        unsigned SimulationOptions::getHardwareConcurrency() const
-
-        """
+        r"""getHardwareConcurrency(SimulationOptions self) -> unsigned int"""
         return _libBornAgainCore.SimulationOptions_getHardwareConcurrency(self)
 
     def setIncludeSpecular(self, include_specular):
-        r"""
-        setIncludeSpecular(SimulationOptions self, bool include_specular)
-        void SimulationOptions::setIncludeSpecular(bool include_specular)
-
-        """
+        r"""setIncludeSpecular(SimulationOptions self, bool include_specular)"""
         return _libBornAgainCore.SimulationOptions_setIncludeSpecular(self, include_specular)
 
     def includeSpecular(self):
-        r"""
-        includeSpecular(SimulationOptions self) -> bool
-        bool SimulationOptions::includeSpecular() const
-
-        """
+        r"""includeSpecular(SimulationOptions self) -> bool"""
         return _libBornAgainCore.SimulationOptions_includeSpecular(self)
 
     def setUseAvgMaterials(self, use_avg_materials):
-        r"""
-        setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)
-        void SimulationOptions::setUseAvgMaterials(bool use_avg_materials)
-
-        """
+        r"""setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)"""
         return _libBornAgainCore.SimulationOptions_setUseAvgMaterials(self, use_avg_materials)
 
     def useAvgMaterials(self):
-        r"""
-        useAvgMaterials(SimulationOptions self) -> bool
-        bool SimulationOptions::useAvgMaterials() const
-
-        """
+        r"""useAvgMaterials(SimulationOptions self) -> bool"""
         return _libBornAgainCore.SimulationOptions_useAvgMaterials(self)
     __swig_destroy__ = _libBornAgainCore.delete_SimulationOptions
 
@@ -4900,196 +4814,99 @@ class PyObserverCallback(object):
 _libBornAgainCore.PyObserverCallback_swigregister(PyObserverCallback)
 
 class FormFactorCrystal(IFormFactor):
-    r"""
-
-
-    The form factor of a  MesoCrystal.
-
-    C++ includes: FormFactorCrystal.h
-
-    """
+    r"""Proxy of C++ FormFactorCrystal class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, lattice, basis_form_factor, meso_form_factor, position_variance=0.0):
-        r"""
-        __init__(FormFactorCrystal self, Lattice lattice, IFormFactor basis_form_factor, IFormFactor meso_form_factor, double position_variance=0.0) -> FormFactorCrystal
-        FormFactorCrystal::FormFactorCrystal(const Lattice &lattice, const IFormFactor &basis_form_factor, const IFormFactor &meso_form_factor, double position_variance=0.0)
-
-        """
+        r"""__init__(FormFactorCrystal self, Lattice lattice, IFormFactor basis_form_factor, IFormFactor meso_form_factor, double position_variance=0.0) -> FormFactorCrystal"""
         _libBornAgainCore.FormFactorCrystal_swiginit(self, _libBornAgainCore.new_FormFactorCrystal(lattice, basis_form_factor, meso_form_factor, position_variance))
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorCrystal
 
     def clone(self):
-        r"""
-        clone(FormFactorCrystal self) -> FormFactorCrystal
-        FormFactorCrystal* FormFactorCrystal::clone() const override final
-
-        """
+        r"""clone(FormFactorCrystal self) -> FormFactorCrystal"""
         return _libBornAgainCore.FormFactorCrystal_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FormFactorCrystal self, INodeVisitor * visitor)
-        void FormFactorCrystal::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FormFactorCrystal self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FormFactorCrystal_accept(self, visitor)
 
     def setAmbientMaterial(self, material):
-        r"""
-        setAmbientMaterial(FormFactorCrystal self, Material material)
-        void FormFactorCrystal::setAmbientMaterial(Material material) override
-
-        """
+        r"""setAmbientMaterial(FormFactorCrystal self, Material material)"""
         return _libBornAgainCore.FormFactorCrystal_setAmbientMaterial(self, material)
 
     def volume(self):
-        r"""
-        volume(FormFactorCrystal self) -> double
-        double FormFactorCrystal::volume() const override final
-
-        """
+        r"""volume(FormFactorCrystal self) -> double"""
         return _libBornAgainCore.FormFactorCrystal_volume(self)
 
     def radialExtension(self):
-        r"""
-        radialExtension(FormFactorCrystal self) -> double
-        double FormFactorCrystal::radialExtension() const override final
-
-        """
+        r"""radialExtension(FormFactorCrystal self) -> double"""
         return _libBornAgainCore.FormFactorCrystal_radialExtension(self)
 
     def bottomZ(self, rotation):
-        r"""
-        bottomZ(FormFactorCrystal self, IRotation rotation) -> double
-        double FormFactorCrystal::bottomZ(const IRotation &rotation) const override
-
-        """
+        r"""bottomZ(FormFactorCrystal self, IRotation rotation) -> double"""
         return _libBornAgainCore.FormFactorCrystal_bottomZ(self, rotation)
 
     def topZ(self, rotation):
-        r"""
-        topZ(FormFactorCrystal self, IRotation rotation) -> double
-        double FormFactorCrystal::topZ(const IRotation &rotation) const override final
-
-        """
+        r"""topZ(FormFactorCrystal self, IRotation rotation) -> double"""
         return _libBornAgainCore.FormFactorCrystal_topZ(self, rotation)
 
     def evaluate(self, wavevectors):
-        r"""
-        evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t
-        complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final
-
-        """
+        r"""evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t"""
         return _libBornAgainCore.FormFactorCrystal_evaluate(self, wavevectors)
 
 # Register FormFactorCrystal in _libBornAgainCore:
 _libBornAgainCore.FormFactorCrystal_swigregister(FormFactorCrystal)
 
 class FormFactorWeighted(IFormFactor):
-    r"""
-
-
-    Coherent sum of different scalar IFormFactor's with different weights.
-
-    Used by  ParticleComposition. If same particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
-
-    C++ includes: FormFactorWeighted.h
-
-    """
+    r"""Proxy of C++ FormFactorWeighted class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self):
-        r"""
-        __init__(FormFactorWeighted self) -> FormFactorWeighted
-        FormFactorWeighted::FormFactorWeighted()
-
-        """
+        r"""__init__(FormFactorWeighted self) -> FormFactorWeighted"""
         _libBornAgainCore.FormFactorWeighted_swiginit(self, _libBornAgainCore.new_FormFactorWeighted())
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorWeighted
 
     def clone(self):
-        r"""
-        clone(FormFactorWeighted self) -> FormFactorWeighted
-        FormFactorWeighted * FormFactorWeighted::clone() const override final
-
-        """
+        r"""clone(FormFactorWeighted self) -> FormFactorWeighted"""
         return _libBornAgainCore.FormFactorWeighted_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FormFactorWeighted self, INodeVisitor * visitor)
-        void FormFactorWeighted::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FormFactorWeighted self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FormFactorWeighted_accept(self, visitor)
 
     def radialExtension(self):
-        r"""
-        radialExtension(FormFactorWeighted self) -> double
-        double FormFactorWeighted::radialExtension() const override final
-
-        """
+        r"""radialExtension(FormFactorWeighted self) -> double"""
         return _libBornAgainCore.FormFactorWeighted_radialExtension(self)
 
     def bottomZ(self, rotation):
-        r"""
-        bottomZ(FormFactorWeighted self, IRotation rotation) -> double
-        double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final
-
-        """
+        r"""bottomZ(FormFactorWeighted self, IRotation rotation) -> double"""
         return _libBornAgainCore.FormFactorWeighted_bottomZ(self, rotation)
 
     def topZ(self, rotation):
-        r"""
-        topZ(FormFactorWeighted self, IRotation rotation) -> double
-        double FormFactorWeighted::topZ(const IRotation &rotation) const override final
-
-        """
+        r"""topZ(FormFactorWeighted self, IRotation rotation) -> double"""
         return _libBornAgainCore.FormFactorWeighted_topZ(self, rotation)
 
     def addFormFactor(self, form_factor, weight=1.0):
-        r"""
-        addFormFactor(FormFactorWeighted self, IFormFactor form_factor, double weight=1.0)
-        void FormFactorWeighted::addFormFactor(const IFormFactor &form_factor, double weight=1.0)
-
-        """
+        r"""addFormFactor(FormFactorWeighted self, IFormFactor form_factor, double weight=1.0)"""
         return _libBornAgainCore.FormFactorWeighted_addFormFactor(self, form_factor, weight)
 
     def setAmbientMaterial(self, material):
-        r"""
-        setAmbientMaterial(FormFactorWeighted self, Material material)
-        void FormFactorWeighted::setAmbientMaterial(Material material) override final
-
-        """
+        r"""setAmbientMaterial(FormFactorWeighted self, Material material)"""
         return _libBornAgainCore.FormFactorWeighted_setAmbientMaterial(self, material)
 
     def evaluate(self, wavevectors):
-        r"""
-        evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t
-        complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final
-
-        """
+        r"""evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t"""
         return _libBornAgainCore.FormFactorWeighted_evaluate(self, wavevectors)
 
 # Register FormFactorWeighted in _libBornAgainCore:
 _libBornAgainCore.FormFactorWeighted_swigregister(FormFactorWeighted)
 
 class IAbstractParticle(ISample):
-    r"""
-
-
-    Interface for a generic particle.
-
-    Inherited by  IParticle and  ParticleDistribution.
-
-    C++ includes: IAbstractParticle.h
-
-    """
+    r"""Proxy of C++ IAbstractParticle class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -5099,77 +4916,34 @@ class IAbstractParticle(ISample):
     __swig_destroy__ = _libBornAgainCore.delete_IAbstractParticle
 
     def clone(self):
-        r"""
-        clone(IAbstractParticle self) -> IAbstractParticle
-        virtual IAbstractParticle* IAbstractParticle::clone() const =0
-
-        """
+        r"""clone(IAbstractParticle self) -> IAbstractParticle"""
         return _libBornAgainCore.IAbstractParticle_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(IAbstractParticle self, INodeVisitor * visitor)
-        void IAbstractParticle::accept(INodeVisitor *visitor) const
-
-        """
+        r"""accept(IAbstractParticle self, INodeVisitor * visitor)"""
         return _libBornAgainCore.IAbstractParticle_accept(self, visitor)
 
     def abundance(self):
-        r"""
-        abundance(IAbstractParticle self) -> double
-        double IAbstractParticle::abundance() const
-
-        """
+        r"""abundance(IAbstractParticle self) -> double"""
         return _libBornAgainCore.IAbstractParticle_abundance(self)
 
     def setAbundance(self, abundance):
-        r"""
-        setAbundance(IAbstractParticle self, double abundance)
-        void IAbstractParticle::setAbundance(double abundance)
-
-        Sets particle abundance.
-
-        Parameters:
-        -----------
-
-        abundance: 
-        proportion of this type of particles normalized to the total number of particles in the layout. 
-
-        """
+        r"""setAbundance(IAbstractParticle self, double abundance)"""
         return _libBornAgainCore.IAbstractParticle_setAbundance(self, abundance)
 
     def translate(self, translation):
-        r"""
-        translate(IAbstractParticle self, kvector_t translation)
-        virtual void IAbstractParticle::translate(kvector_t translation)=0
-
-        Translates the particle with the given vector. 
-
-        """
+        r"""translate(IAbstractParticle self, kvector_t translation)"""
         return _libBornAgainCore.IAbstractParticle_translate(self, translation)
 
     def rotate(self, rotation):
-        r"""
-        rotate(IAbstractParticle self, IRotation rotation)
-        virtual void IAbstractParticle::rotate(const IRotation &rotation)=0
-
-        Applies the given rotation to the particle. 
-
-        """
+        r"""rotate(IAbstractParticle self, IRotation rotation)"""
         return _libBornAgainCore.IAbstractParticle_rotate(self, rotation)
 
 # Register IAbstractParticle in _libBornAgainCore:
 _libBornAgainCore.IAbstractParticle_swigregister(IAbstractParticle)
 
 class IClusteredParticles(ISample):
-    r"""
-
-
-    An ordered assembly of particles. Currently, the only child class is  Crystal.
-
-    C++ includes: IClusteredParticles.h
-
-    """
+    r"""Proxy of C++ IClusteredParticles class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -5178,31 +4952,15 @@ class IClusteredParticles(ISample):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IClusteredParticles self) -> IClusteredParticles
-        IClusteredParticles* IClusteredParticles::clone() const override=0
-
-        """
+        r"""clone(IClusteredParticles self) -> IClusteredParticles"""
         return _libBornAgainCore.IClusteredParticles_clone(self)
 
     def createTotalFormFactor(self, arg2, arg3, arg4):
-        r"""
-        createTotalFormFactor(IClusteredParticles self, IFormFactor arg2, IRotation arg3, kvector_t arg4) -> IFormFactor
-        virtual IFormFactor* IClusteredParticles::createTotalFormFactor(const IFormFactor &, const IRotation *, const kvector_t &) const =0
-
-        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 
-
-        """
+        r"""createTotalFormFactor(IClusteredParticles self, IFormFactor arg2, IRotation arg3, kvector_t arg4) -> IFormFactor"""
         return _libBornAgainCore.IClusteredParticles_createTotalFormFactor(self, arg2, arg3, arg4)
 
     def homogeneousRegions(self):
-        r"""
-        homogeneousRegions(IClusteredParticles self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >
-        virtual std::vector<HomogeneousRegion> IClusteredParticles::homogeneousRegions() const =0
-
-        Creates region information with volumetric densities instead of absolute volume These densities need to be multiplied by the total mesocrystal volume 
-
-        """
+        r"""homogeneousRegions(IClusteredParticles self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >"""
         return _libBornAgainCore.IClusteredParticles_homogeneousRegions(self)
     __swig_destroy__ = _libBornAgainCore.delete_IClusteredParticles
 
@@ -5210,99 +4968,49 @@ class IClusteredParticles(ISample):
 _libBornAgainCore.IClusteredParticles_swigregister(IClusteredParticles)
 
 class Crystal(IClusteredParticles):
-    r"""
-
-
-    A crystal structure with a  ParticleComposition as a basis. Used in  MesoCrystal, where it is given an outer shape.
-
-    C++ includes: Crystal.h
-
-    """
+    r"""Proxy of C++ Crystal class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, lattice_basis, lattice):
-        r"""
-        __init__(Crystal self, IParticle lattice_basis, Lattice lattice) -> Crystal
-        Crystal::Crystal(const IParticle &lattice_basis, const Lattice &lattice)
-
-        """
+        r"""__init__(Crystal self, IParticle lattice_basis, Lattice lattice) -> Crystal"""
         _libBornAgainCore.Crystal_swiginit(self, _libBornAgainCore.new_Crystal(lattice_basis, lattice))
     __swig_destroy__ = _libBornAgainCore.delete_Crystal
 
     def clone(self):
-        r"""
-        clone(Crystal self) -> Crystal
-        Crystal * Crystal::clone() const override final
-
-        """
+        r"""clone(Crystal self) -> Crystal"""
         return _libBornAgainCore.Crystal_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(Crystal self, INodeVisitor * visitor)
-        void Crystal::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(Crystal self, INodeVisitor * visitor)"""
         return _libBornAgainCore.Crystal_accept(self, visitor)
 
     def createTotalFormFactor(self, meso_crystal_form_factor, p_rotation, translation):
-        r"""
-        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 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 
-
-        """
+        r"""createTotalFormFactor(Crystal self, IFormFactor meso_crystal_form_factor, IRotation p_rotation, kvector_t translation) -> IFormFactor"""
         return _libBornAgainCore.Crystal_createTotalFormFactor(self, meso_crystal_form_factor, p_rotation, translation)
 
     def homogeneousRegions(self):
-        r"""
-        homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >
-        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 
-
-        """
+        r"""homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >"""
         return _libBornAgainCore.Crystal_homogeneousRegions(self)
 
     def transformedLattice(self, p_rotation=None):
-        r"""
-        transformedLattice(Crystal self, IRotation p_rotation=None) -> Lattice
-        Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const
-
-        """
+        r"""transformedLattice(Crystal self, IRotation p_rotation=None) -> Lattice"""
         return _libBornAgainCore.Crystal_transformedLattice(self, p_rotation)
 
     def setPositionVariance(self, position_variance):
-        r"""
-        setPositionVariance(Crystal self, double position_variance)
-        void Crystal::setPositionVariance(double position_variance)
-
-        """
+        r"""setPositionVariance(Crystal self, double position_variance)"""
         return _libBornAgainCore.Crystal_setPositionVariance(self, position_variance)
 
     def getChildren(self):
-        r"""
-        getChildren(Crystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Crystal::getChildren() const override final
-
-        """
+        r"""getChildren(Crystal self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.Crystal_getChildren(self)
 
 # Register Crystal in _libBornAgainCore:
 _libBornAgainCore.Crystal_swigregister(Crystal)
 
 class IParticle(IAbstractParticle):
-    r"""
-
-
-    Pure virtual base class for  Particle,  ParticleComposition,  ParticleCoreShell,  MesoCrystal. Provides position/rotation and form factor. Abundance is inherited from  IAbstractParticle.
-
-    C++ includes: IParticle.h
-
-    """
+    r"""Proxy of C++ IParticle class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -5312,223 +5020,99 @@ class IParticle(IAbstractParticle):
     __swig_destroy__ = _libBornAgainCore.delete_IParticle
 
     def clone(self):
-        r"""
-        clone(IParticle self) -> IParticle
-        IParticle* IParticle::clone() const override=0
-
-        """
+        r"""clone(IParticle self) -> IParticle"""
         return _libBornAgainCore.IParticle_clone(self)
 
     def createFormFactor(self):
-        r"""
-        createFormFactor(IParticle self) -> IFormFactor
-        IFormFactor * IParticle::createFormFactor() const
-
-        Creates a form factor for this particle. 
-
-        """
+        r"""createFormFactor(IParticle self) -> IFormFactor"""
         return _libBornAgainCore.IParticle_createFormFactor(self)
 
     def createSlicedParticle(self, limits):
-        r"""
-        createSlicedParticle(IParticle self, ZLimits limits) -> SlicedParticle
-        SlicedParticle IParticle::createSlicedParticle(ZLimits limits) const
-
-        Creates a sliced form factor for this particle. 
-
-        """
+        r"""createSlicedParticle(IParticle self, ZLimits limits) -> SlicedParticle"""
         return _libBornAgainCore.IParticle_createSlicedParticle(self, limits)
 
     def position(self):
-        r"""
-        position(IParticle self) -> kvector_t
-        kvector_t IParticle::position() const
-
-        Returns particle position. 
-
-        """
+        r"""position(IParticle self) -> kvector_t"""
         return _libBornAgainCore.IParticle_position(self)
 
     def setPosition(self, *args):
         r"""
         setPosition(IParticle self, kvector_t position)
         setPosition(IParticle self, double x, double y, double z)
-        void IParticle::setPosition(double x, double y, double z)
-
-        Sets relative position of the particle's reference point in the coordinate system of parent.
-
-        Parameters:
-        -----------
-
-        x: 
-        x-coordinate in nanometers
-
-        y: 
-        y-coordinate in nanometers
-
-        z: 
-        z-coordinate in nanometers 
-
         """
         return _libBornAgainCore.IParticle_setPosition(self, *args)
 
     def translate(self, translation):
-        r"""
-        translate(IParticle self, kvector_t translation)
-        void IParticle::translate(kvector_t translation) override final
-
-        Translates the particle. 
-
-        """
+        r"""translate(IParticle self, kvector_t translation)"""
         return _libBornAgainCore.IParticle_translate(self, translation)
 
     def rotation(self):
-        r"""
-        rotation(IParticle self) -> IRotation
-        const IRotation * IParticle::rotation() const
-
-        Returns rotation object. 
-
-        """
+        r"""rotation(IParticle self) -> IRotation"""
         return _libBornAgainCore.IParticle_rotation(self)
 
     def setRotation(self, rotation):
-        r"""
-        setRotation(IParticle self, IRotation rotation)
-        void IParticle::setRotation(const IRotation &rotation)
-
-        Sets transformation. 
-
-        """
+        r"""setRotation(IParticle self, IRotation rotation)"""
         return _libBornAgainCore.IParticle_setRotation(self, rotation)
 
     def rotate(self, rotation):
-        r"""
-        rotate(IParticle self, IRotation rotation)
-        void IParticle::rotate(const IRotation &rotation) override final
-
-        Rotates the particle. 
-
-        """
+        r"""rotate(IParticle self, IRotation rotation)"""
         return _libBornAgainCore.IParticle_rotate(self, rotation)
 
     def getChildren(self):
-        r"""
-        getChildren(IParticle self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > IParticle::getChildren() const override
-
-        """
-        return _libBornAgainCore.IParticle_getChildren(self)
+        r"""getChildren(IParticle self) -> swig_dummy_type_const_inode_vector"""
+        return _libBornAgainCore.IParticle_getChildren(self)
 
     def registerAbundance(self, make_registered=True):
-        r"""
-        registerAbundance(IParticle self, bool make_registered=True)
-        void IParticle::registerAbundance(bool make_registered=true)
-
-        """
+        r"""registerAbundance(IParticle self, bool make_registered=True)"""
         return _libBornAgainCore.IParticle_registerAbundance(self, make_registered)
 
     def registerPosition(self, make_registered=True):
-        r"""
-        registerPosition(IParticle self, bool make_registered=True)
-        void IParticle::registerPosition(bool make_registered=true)
-
-        Registers the three components of its position. 
-
-        """
+        r"""registerPosition(IParticle self, bool make_registered=True)"""
         return _libBornAgainCore.IParticle_registerPosition(self, make_registered)
 
     def decompose(self):
-        r"""
-        decompose(IParticle self) -> SafePointerVector< IParticle >
-        SafePointerVector< IParticle > IParticle::decompose() const
-
-        Decompose in constituent  IParticle objects. 
-
-        """
+        r"""decompose(IParticle self) -> SafePointerVector< IParticle >"""
         return _libBornAgainCore.IParticle_decompose(self)
 
     def bottomTopZ(self):
-        r"""
-        bottomTopZ(IParticle self) -> ParticleLimits
-        ParticleLimits IParticle::bottomTopZ() const
-
-        Top and bottom z-coordinate. 
-
-        """
+        r"""bottomTopZ(IParticle self) -> ParticleLimits"""
         return _libBornAgainCore.IParticle_bottomTopZ(self)
 
 # Register IParticle in _libBornAgainCore:
 _libBornAgainCore.IParticle_swigregister(IParticle)
 
 class MesoCrystal(IParticle):
-    r"""
-
-
-    A particle with an internal structure of smaller particles.
-
-    C++ includes: MesoCrystal.h
-
-    """
+    r"""Proxy of C++ MesoCrystal class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, particle_structure, form_factor):
-        r"""
-        __init__(MesoCrystal self, IClusteredParticles particle_structure, IFormFactor form_factor) -> MesoCrystal
-        MesoCrystal::MesoCrystal(const IClusteredParticles &particle_structure, const IFormFactor &form_factor)
-
-        """
+        r"""__init__(MesoCrystal self, IClusteredParticles particle_structure, IFormFactor form_factor) -> MesoCrystal"""
         _libBornAgainCore.MesoCrystal_swiginit(self, _libBornAgainCore.new_MesoCrystal(particle_structure, form_factor))
     __swig_destroy__ = _libBornAgainCore.delete_MesoCrystal
 
     def clone(self):
-        r"""
-        clone(MesoCrystal self) -> MesoCrystal
-        MesoCrystal * MesoCrystal::clone() const override final
-
-        """
+        r"""clone(MesoCrystal self) -> MesoCrystal"""
         return _libBornAgainCore.MesoCrystal_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(MesoCrystal self, INodeVisitor * visitor)
-        void MesoCrystal::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(MesoCrystal self, INodeVisitor * visitor)"""
         return _libBornAgainCore.MesoCrystal_accept(self, visitor)
 
     def createSlicedParticle(self, limits):
-        r"""
-        createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle
-        SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final
-
-        Creates a sliced form factor for this particle. 
-
-        """
+        r"""createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle"""
         return _libBornAgainCore.MesoCrystal_createSlicedParticle(self, limits)
 
     def getChildren(self):
-        r"""
-        getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > MesoCrystal::getChildren() const override final
-
-        """
+        r"""getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.MesoCrystal_getChildren(self)
 
 # Register MesoCrystal in _libBornAgainCore:
 _libBornAgainCore.MesoCrystal_swigregister(MesoCrystal)
 
 class Particle(IParticle):
-    r"""
-
-
-    A particle with a form factor and refractive index.
-
-    C++ includes: Particle.h
-
-    """
+    r"""Proxy of C++ Particle class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -5539,67 +5123,35 @@ class Particle(IParticle):
         __init__(Particle self, Material material) -> Particle
         __init__(Particle self, Material material, IFormFactor form_factor) -> Particle
         __init__(Particle self, Material material, IFormFactor form_factor, IRotation rotation) -> Particle
-        Particle::Particle(Material material, const IFormFactor &form_factor, const IRotation &rotation)
-
         """
         _libBornAgainCore.Particle_swiginit(self, _libBornAgainCore.new_Particle(*args))
 
     def clone(self):
-        r"""
-        clone(Particle self) -> Particle
-        Particle * Particle::clone() const override final
-
-        """
+        r"""clone(Particle self) -> Particle"""
         return _libBornAgainCore.Particle_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(Particle self, INodeVisitor * visitor)
-        void Particle::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(Particle self, INodeVisitor * visitor)"""
         return _libBornAgainCore.Particle_accept(self, visitor)
 
     def createSlicedParticle(self, limits):
-        r"""
-        createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle
-        SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final
-
-        Creates a sliced form factor for this particle. 
-
-        """
+        r"""createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle"""
         return _libBornAgainCore.Particle_createSlicedParticle(self, limits)
 
     def setMaterial(self, material):
-        r"""
-        setMaterial(Particle self, Material material)
-        void Particle::setMaterial(Material material)
-
-        """
+        r"""setMaterial(Particle self, Material material)"""
         return _libBornAgainCore.Particle_setMaterial(self, material)
 
     def material(self):
-        r"""
-        material(Particle self) -> Material
-        const Material* Particle::material() const override final
-
-        """
+        r"""material(Particle self) -> Material"""
         return _libBornAgainCore.Particle_material(self)
 
     def setFormFactor(self, form_factor):
-        r"""
-        setFormFactor(Particle self, IFormFactor form_factor)
-        void Particle::setFormFactor(const IFormFactor &form_factor)
-
-        """
+        r"""setFormFactor(Particle self, IFormFactor form_factor)"""
         return _libBornAgainCore.Particle_setFormFactor(self, form_factor)
 
     def getChildren(self):
-        r"""
-        getChildren(Particle self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Particle::getChildren() const override final
-
-        """
+        r"""getChildren(Particle self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.Particle_getChildren(self)
     __swig_destroy__ = _libBornAgainCore.delete_Particle
 
@@ -5607,14 +5159,7 @@ class Particle(IParticle):
 _libBornAgainCore.Particle_swigregister(Particle)
 
 class ParticleComposition(IParticle):
-    r"""
-
-
-    A composition of particles at fixed positions
-
-    C++ includes: ParticleComposition.h
-
-    """
+    r"""Proxy of C++ ParticleComposition class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -5623,274 +5168,134 @@ class ParticleComposition(IParticle):
         r"""
         __init__(ParticleComposition self) -> ParticleComposition
         __init__(ParticleComposition self, IParticle particle, vector_kvector_t positions) -> ParticleComposition
-        ParticleComposition::ParticleComposition(const IParticle &particle, std::vector< kvector_t > positions)
-
         """
         _libBornAgainCore.ParticleComposition_swiginit(self, _libBornAgainCore.new_ParticleComposition(*args))
     __swig_destroy__ = _libBornAgainCore.delete_ParticleComposition
 
     def clone(self):
-        r"""
-        clone(ParticleComposition self) -> ParticleComposition
-        ParticleComposition * ParticleComposition::clone() const override final
-
-        """
+        r"""clone(ParticleComposition self) -> ParticleComposition"""
         return _libBornAgainCore.ParticleComposition_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(ParticleComposition self, INodeVisitor * visitor)
-        void ParticleComposition::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(ParticleComposition self, INodeVisitor * visitor)"""
         return _libBornAgainCore.ParticleComposition_accept(self, visitor)
 
     def createFormFactor(self):
-        r"""
-        createFormFactor(ParticleComposition self) -> IFormFactor
-        IFormFactor * ParticleComposition::createFormFactor() const override final
-
-        Creates a form factor for this particle. 
-
-        """
+        r"""createFormFactor(ParticleComposition self) -> IFormFactor"""
         return _libBornAgainCore.ParticleComposition_createFormFactor(self)
 
     def addParticle(self, *args):
         r"""
         addParticle(ParticleComposition self, IParticle particle)
         addParticle(ParticleComposition self, IParticle particle, kvector_t position)
-        void ParticleComposition::addParticle(const IParticle &particle, kvector_t position)
-
         """
         return _libBornAgainCore.ParticleComposition_addParticle(self, *args)
 
     def addParticles(self, particle, positions):
-        r"""
-        addParticles(ParticleComposition self, IParticle particle, vector_kvector_t positions)
-        void ParticleComposition::addParticles(const IParticle &particle, std::vector< kvector_t > positions)
-
-        """
+        r"""addParticles(ParticleComposition self, IParticle particle, vector_kvector_t positions)"""
         return _libBornAgainCore.ParticleComposition_addParticles(self, particle, positions)
 
     def nbrParticles(self):
-        r"""
-        nbrParticles(ParticleComposition self) -> size_t
-        size_t ParticleComposition::nbrParticles() const
-
-        Returns number of different particles. 
-
-        """
+        r"""nbrParticles(ParticleComposition self) -> size_t"""
         return _libBornAgainCore.ParticleComposition_nbrParticles(self)
 
     def getChildren(self):
-        r"""
-        getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleComposition::getChildren() const override final
-
-        """
+        r"""getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.ParticleComposition_getChildren(self)
 
     def decompose(self):
-        r"""
-        decompose(ParticleComposition self) -> SafePointerVector< IParticle >
-        SafePointerVector< IParticle > ParticleComposition::decompose() const override final
-
-        Decompose in constituent  IParticle objects. 
-
-        """
+        r"""decompose(ParticleComposition self) -> SafePointerVector< IParticle >"""
         return _libBornAgainCore.ParticleComposition_decompose(self)
 
     def bottomTopZ(self):
-        r"""
-        bottomTopZ(ParticleComposition self) -> ParticleLimits
-        ParticleLimits ParticleComposition::bottomTopZ() const override final
-
-        Top and bottom z-coordinate. 
-
-        """
+        r"""bottomTopZ(ParticleComposition self) -> ParticleLimits"""
         return _libBornAgainCore.ParticleComposition_bottomTopZ(self)
 
 # Register ParticleComposition in _libBornAgainCore:
 _libBornAgainCore.ParticleComposition_swigregister(ParticleComposition)
 
 class ParticleCoreShell(IParticle):
-    r"""
-
-
-    A particle with a core/shell geometry.
-
-    C++ includes: ParticleCoreShell.h
-
-    """
+    r"""Proxy of C++ ParticleCoreShell class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, *args):
-        r"""
-        __init__(ParticleCoreShell self, Particle shell, Particle core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0)) -> ParticleCoreShell
-        ParticleCoreShell::ParticleCoreShell(const Particle &shell, const Particle &core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0))
-
-        """
+        r"""__init__(ParticleCoreShell self, Particle shell, Particle core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0)) -> ParticleCoreShell"""
         _libBornAgainCore.ParticleCoreShell_swiginit(self, _libBornAgainCore.new_ParticleCoreShell(*args))
     __swig_destroy__ = _libBornAgainCore.delete_ParticleCoreShell
 
     def clone(self):
-        r"""
-        clone(ParticleCoreShell self) -> ParticleCoreShell
-        ParticleCoreShell * ParticleCoreShell::clone() const override final
-
-        """
+        r"""clone(ParticleCoreShell self) -> ParticleCoreShell"""
         return _libBornAgainCore.ParticleCoreShell_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(ParticleCoreShell self, INodeVisitor * visitor)
-        void ParticleCoreShell::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(ParticleCoreShell self, INodeVisitor * visitor)"""
         return _libBornAgainCore.ParticleCoreShell_accept(self, visitor)
 
     def createSlicedParticle(self, limits):
-        r"""
-        createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle
-        SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final
-
-        Creates a sliced form factor for this particle. 
-
-        """
+        r"""createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle"""
         return _libBornAgainCore.ParticleCoreShell_createSlicedParticle(self, limits)
 
     def coreParticle(self):
-        r"""
-        coreParticle(ParticleCoreShell self) -> Particle
-        const Particle * ParticleCoreShell::coreParticle() const
-
-        """
+        r"""coreParticle(ParticleCoreShell self) -> Particle"""
         return _libBornAgainCore.ParticleCoreShell_coreParticle(self)
 
     def shellParticle(self):
-        r"""
-        shellParticle(ParticleCoreShell self) -> Particle
-        const Particle * ParticleCoreShell::shellParticle() const
-
-        """
+        r"""shellParticle(ParticleCoreShell self) -> Particle"""
         return _libBornAgainCore.ParticleCoreShell_shellParticle(self)
 
     def getChildren(self):
-        r"""
-        getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleCoreShell::getChildren() const override final
-
-        """
+        r"""getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.ParticleCoreShell_getChildren(self)
 
 # Register ParticleCoreShell in _libBornAgainCore:
 _libBornAgainCore.ParticleCoreShell_swigregister(ParticleCoreShell)
 
 class ParticleDistribution(IAbstractParticle):
-    r"""
-
-
-    A particle type that is a parametric distribution of  IParticle's.
-
-    C++ includes: ParticleDistribution.h
-
-    """
+    r"""Proxy of C++ ParticleDistribution class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, prototype, par_distr):
-        r"""
-        __init__(ParticleDistribution self, IParticle prototype, ParameterDistribution par_distr) -> ParticleDistribution
-        ParticleDistribution::ParticleDistribution(const IParticle &prototype, const ParameterDistribution &par_distr)
-
-        """
+        r"""__init__(ParticleDistribution self, IParticle prototype, ParameterDistribution par_distr) -> ParticleDistribution"""
         _libBornAgainCore.ParticleDistribution_swiginit(self, _libBornAgainCore.new_ParticleDistribution(prototype, par_distr))
 
     def clone(self):
-        r"""
-        clone(ParticleDistribution self) -> ParticleDistribution
-        ParticleDistribution * ParticleDistribution::clone() const override final
-
-        """
+        r"""clone(ParticleDistribution self) -> ParticleDistribution"""
         return _libBornAgainCore.ParticleDistribution_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(ParticleDistribution self, INodeVisitor * visitor)
-        void ParticleDistribution::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(ParticleDistribution self, INodeVisitor * visitor)"""
         return _libBornAgainCore.ParticleDistribution_accept(self, visitor)
 
     def translate(self, translation):
-        r"""
-        translate(ParticleDistribution self, kvector_t translation)
-        void ParticleDistribution::translate(kvector_t translation) override final
-
-        Translates the particle with the given vector. 
-
-        """
+        r"""translate(ParticleDistribution self, kvector_t translation)"""
         return _libBornAgainCore.ParticleDistribution_translate(self, translation)
 
     def rotate(self, rotation):
-        r"""
-        rotate(ParticleDistribution self, IRotation rotation)
-        void ParticleDistribution::rotate(const IRotation &rotation) override final
-
-        Applies the given rotation to the particle. 
-
-        """
+        r"""rotate(ParticleDistribution self, IRotation rotation)"""
         return _libBornAgainCore.ParticleDistribution_rotate(self, rotation)
 
     def generateParticles(self):
-        r"""
-        generateParticles(ParticleDistribution self) -> SafePointerVector< IParticle >
-        SafePointerVector< IParticle > ParticleDistribution::generateParticles() const
-
-        Returns list of new particles generated according to a distribution.
-
-        Returns particle clones with parameter values drawn from distribution. 
-
-        """
+        r"""generateParticles(ParticleDistribution self) -> SafePointerVector< IParticle >"""
         return _libBornAgainCore.ParticleDistribution_generateParticles(self)
 
     def prototype(self):
-        r"""
-        prototype(ParticleDistribution self) -> IParticle
-        const IParticle& ParticleDistribution::prototype() const
-
-        Returns the prototype particle, used for generating multiple ones. 
-
-        """
+        r"""prototype(ParticleDistribution self) -> IParticle"""
         return _libBornAgainCore.ParticleDistribution_prototype(self)
 
     def parameterDistribution(self):
-        r"""
-        parameterDistribution(ParticleDistribution self) -> ParameterDistribution
-        ParameterDistribution ParticleDistribution::parameterDistribution() const
-
-        Returns the distributed parameter data. 
-
-        """
+        r"""parameterDistribution(ParticleDistribution self) -> ParameterDistribution"""
         return _libBornAgainCore.ParticleDistribution_parameterDistribution(self)
 
     def getChildren(self):
-        r"""
-        getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleDistribution::getChildren() const override final
-
-        """
+        r"""getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.ParticleDistribution_getChildren(self)
 
     def mainUnits(self):
-        r"""
-        mainUnits(ParticleDistribution self) -> std::string
-        std::string ParticleDistribution::mainUnits() const
-
-        """
+        r"""mainUnits(ParticleDistribution self) -> std::string"""
         return _libBornAgainCore.ParticleDistribution_mainUnits(self)
     __swig_destroy__ = _libBornAgainCore.delete_ParticleDistribution
 
@@ -5898,14 +5303,7 @@ class ParticleDistribution(IAbstractParticle):
 _libBornAgainCore.ParticleDistribution_swigregister(ParticleDistribution)
 
 class IFTDecayFunction1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
-    r"""
-
-
-    Interface for a one-dimensional decay function, with evaluate(q) returning the Fourier transform, normalized to  $\\int dq\\; {\\rm evaluate}(q) = 1$.
-
-    C++ includes: FTDecay1D.h
-
-    """
+    r"""Proxy of C++ IFTDecayFunction1D class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -5914,27 +5312,15 @@ class IFTDecayFunction1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IFTDecayFunction1D self) -> IFTDecayFunction1D
-        virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0
-
-        """
+        r"""clone(IFTDecayFunction1D self) -> IFTDecayFunction1D"""
         return _libBornAgainCore.IFTDecayFunction1D_clone(self)
 
     def evaluate(self, q):
-        r"""
-        evaluate(IFTDecayFunction1D self, double q) -> double
-        virtual double IFTDecayFunction1D::evaluate(double q) const =0
-
-        """
+        r"""evaluate(IFTDecayFunction1D self, double q) -> double"""
         return _libBornAgainCore.IFTDecayFunction1D_evaluate(self, q)
 
     def decayLength(self):
-        r"""
-        decayLength(IFTDecayFunction1D self) -> double
-        double IFTDecayFunction1D::decayLength() const
-
-        """
+        r"""decayLength(IFTDecayFunction1D self) -> double"""
         return _libBornAgainCore.IFTDecayFunction1D_decayLength(self)
     __swig_destroy__ = _libBornAgainCore.delete_IFTDecayFunction1D
 
@@ -5942,14 +5328,7 @@ class IFTDecayFunction1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
 _libBornAgainCore.IFTDecayFunction1D_swigregister(IFTDecayFunction1D)
 
 class FTDecayFunction1DCauchy(IFTDecayFunction1D):
-    r"""
-
-
-    One-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-|x|/decay_length) in real space.
-
-    C++ includes: FTDecay1D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction1DCauchy class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -5958,33 +5337,19 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
         r"""
         __init__(FTDecayFunction1DCauchy self, vdouble1d_t P) -> FTDecayFunction1DCauchy
         __init__(FTDecayFunction1DCauchy self, double decay_length) -> FTDecayFunction1DCauchy
-        FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
-
         """
         _libBornAgainCore.FTDecayFunction1DCauchy_swiginit(self, _libBornAgainCore.new_FTDecayFunction1DCauchy(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy
-        FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
-
-        """
+        r"""clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy"""
         return _libBornAgainCore.FTDecayFunction1DCauchy_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction1DCauchy self, INodeVisitor * visitor)
-        void FTDecayFunction1DCauchy::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction1DCauchy self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction1DCauchy_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDecayFunction1DCauchy self, double q) -> double
-        double FTDecayFunction1DCauchy::evaluate(double q) const final
-
-        """
+        r"""evaluate(FTDecayFunction1DCauchy self, double q) -> double"""
         return _libBornAgainCore.FTDecayFunction1DCauchy_evaluate(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction1DCauchy
 
@@ -5992,14 +5357,7 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
 _libBornAgainCore.FTDecayFunction1DCauchy_swigregister(FTDecayFunction1DCauchy)
 
 class FTDecayFunction1DGauss(IFTDecayFunction1D):
-    r"""
-
-
-    One-dimensional Gauss decay function in reciprocal space; corresponds to exp[-x^2/(2*decay_length^2)] in real space.
-
-    C++ includes: FTDecay1D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction1DGauss class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6008,33 +5366,19 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
         r"""
         __init__(FTDecayFunction1DGauss self, vdouble1d_t P) -> FTDecayFunction1DGauss
         __init__(FTDecayFunction1DGauss self, double decay_length) -> FTDecayFunction1DGauss
-        FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
-
         """
         _libBornAgainCore.FTDecayFunction1DGauss_swiginit(self, _libBornAgainCore.new_FTDecayFunction1DGauss(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss
-        FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
-
-        """
+        r"""clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss"""
         return _libBornAgainCore.FTDecayFunction1DGauss_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction1DGauss self, INodeVisitor * visitor)
-        void FTDecayFunction1DGauss::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction1DGauss self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction1DGauss_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDecayFunction1DGauss self, double q) -> double
-        double FTDecayFunction1DGauss::evaluate(double q) const final
-
-        """
+        r"""evaluate(FTDecayFunction1DGauss self, double q) -> double"""
         return _libBornAgainCore.FTDecayFunction1DGauss_evaluate(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction1DGauss
 
@@ -6042,14 +5386,7 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
 _libBornAgainCore.FTDecayFunction1DGauss_swigregister(FTDecayFunction1DGauss)
 
 class FTDecayFunction1DTriangle(IFTDecayFunction1D):
-    r"""
-
-
-    One-dimensional triangle decay function in reciprocal space; corresponds to 1-|x|/decay_length if |x|<decay_length (and 0 otherwise) in real space.
-
-    C++ includes: FTDecay1D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction1DTriangle class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6058,33 +5395,19 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
         r"""
         __init__(FTDecayFunction1DTriangle self, vdouble1d_t P) -> FTDecayFunction1DTriangle
         __init__(FTDecayFunction1DTriangle self, double decay_length) -> FTDecayFunction1DTriangle
-        FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
-
         """
         _libBornAgainCore.FTDecayFunction1DTriangle_swiginit(self, _libBornAgainCore.new_FTDecayFunction1DTriangle(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle
-        FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
-
-        """
+        r"""clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle"""
         return _libBornAgainCore.FTDecayFunction1DTriangle_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction1DTriangle self, INodeVisitor * visitor)
-        void FTDecayFunction1DTriangle::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction1DTriangle self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction1DTriangle_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDecayFunction1DTriangle self, double q) -> double
-        double FTDecayFunction1DTriangle::evaluate(double q) const final
-
-        """
+        r"""evaluate(FTDecayFunction1DTriangle self, double q) -> double"""
         return _libBornAgainCore.FTDecayFunction1DTriangle_evaluate(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction1DTriangle
 
@@ -6092,14 +5415,7 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
 _libBornAgainCore.FTDecayFunction1DTriangle_swigregister(FTDecayFunction1DTriangle)
 
 class FTDecayFunction1DVoigt(IFTDecayFunction1D):
-    r"""
-
-
-    One-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*Cauchy.
-
-    C++ includes: FTDecay1D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction1DVoigt class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6108,41 +5424,23 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
         r"""
         __init__(FTDecayFunction1DVoigt self, vdouble1d_t P) -> FTDecayFunction1DVoigt
         __init__(FTDecayFunction1DVoigt self, double decay_length, double eta) -> FTDecayFunction1DVoigt
-        FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)
-
         """
         _libBornAgainCore.FTDecayFunction1DVoigt_swiginit(self, _libBornAgainCore.new_FTDecayFunction1DVoigt(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt
-        FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
-
-        """
+        r"""clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt"""
         return _libBornAgainCore.FTDecayFunction1DVoigt_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction1DVoigt self, INodeVisitor * visitor)
-        void FTDecayFunction1DVoigt::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction1DVoigt self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction1DVoigt_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDecayFunction1DVoigt self, double q) -> double
-        double FTDecayFunction1DVoigt::evaluate(double q) const final
-
-        """
+        r"""evaluate(FTDecayFunction1DVoigt self, double q) -> double"""
         return _libBornAgainCore.FTDecayFunction1DVoigt_evaluate(self, q)
 
     def eEta(self):
-        r"""
-        eEta(FTDecayFunction1DVoigt self) -> double
-        double FTDecayFunction1DVoigt::eEta() const
-
-        """
+        r"""eEta(FTDecayFunction1DVoigt self) -> double"""
         return _libBornAgainCore.FTDecayFunction1DVoigt_eEta(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction1DVoigt
 
@@ -6150,14 +5448,7 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
 _libBornAgainCore.FTDecayFunction1DVoigt_swigregister(FTDecayFunction1DVoigt)
 
 class IFTDecayFunction2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
-    r"""
-
-
-    Interface for two-dimensional decay function in reciprocal space.
-
-    C++ includes: FTDecay2D.h
-
-    """
+    r"""Proxy of C++ IFTDecayFunction2D class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -6166,63 +5457,27 @@ class IFTDecayFunction2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IFTDecayFunction2D self) -> IFTDecayFunction2D
-        virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0
-
-        """
+        r"""clone(IFTDecayFunction2D self) -> IFTDecayFunction2D"""
         return _libBornAgainCore.IFTDecayFunction2D_clone(self)
 
     def decayLengthX(self):
-        r"""
-        decayLengthX(IFTDecayFunction2D self) -> double
-        double IFTDecayFunction2D::decayLengthX() const
-
-        get decay length in distribution's X-direction 
-
-        """
+        r"""decayLengthX(IFTDecayFunction2D self) -> double"""
         return _libBornAgainCore.IFTDecayFunction2D_decayLengthX(self)
 
     def decayLengthY(self):
-        r"""
-        decayLengthY(IFTDecayFunction2D self) -> double
-        double IFTDecayFunction2D::decayLengthY() const
-
-        get decay length in distribution's Y-direction 
-
-        """
+        r"""decayLengthY(IFTDecayFunction2D self) -> double"""
         return _libBornAgainCore.IFTDecayFunction2D_decayLengthY(self)
 
     def gamma(self):
-        r"""
-        gamma(IFTDecayFunction2D self) -> double
-        double IFTDecayFunction2D::gamma() const
-
-        get angle between first lattice vector and X-axis of distribution (both in direct space) 
-
-        """
+        r"""gamma(IFTDecayFunction2D self) -> double"""
         return _libBornAgainCore.IFTDecayFunction2D_gamma(self)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(IFTDecayFunction2D self, double qx, double qy) -> double
-        virtual double IFTDecayFunction2D::evaluate(double qx, double qy) const =0
-
-        evaluate Fourier transformed decay function for q in X,Y coordinates 
-
-        """
+        r"""evaluate(IFTDecayFunction2D self, double qx, double qy) -> double"""
         return _libBornAgainCore.IFTDecayFunction2D_evaluate(self, qx, qy)
 
     def boundingReciprocalLatticeCoordinates(self, qX, qY, a, b, alpha):
-        r"""
-        boundingReciprocalLatticeCoordinates(IFTDecayFunction2D self, double qX, double qY, double a, double b, double alpha) -> pvacuum_double_t
-        std::pair< double, double > IFTDecayFunction2D::boundingReciprocalLatticeCoordinates(double qX, double qY, double a, double b, double alpha) const
-
-        transform back to a*, b* basis:
-
-        Calculates bounding values of reciprocal lattice coordinates that contain the centered rectangle with a corner defined by qX and qY 
-
-        """
+        r"""boundingReciprocalLatticeCoordinates(IFTDecayFunction2D self, double qX, double qY, double a, double b, double alpha) -> pvacuum_double_t"""
         return _libBornAgainCore.IFTDecayFunction2D_boundingReciprocalLatticeCoordinates(self, qX, qY, a, b, alpha)
     __swig_destroy__ = _libBornAgainCore.delete_IFTDecayFunction2D
 
@@ -6230,14 +5485,7 @@ class IFTDecayFunction2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
 _libBornAgainCore.IFTDecayFunction2D_swigregister(IFTDecayFunction2D)
 
 class FTDecayFunction2DCauchy(IFTDecayFunction2D):
-    r"""
-
-
-    Two-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-r) in real space, with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDecay2D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction2DCauchy class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6246,35 +5494,19 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
         r"""
         __init__(FTDecayFunction2DCauchy self, vdouble1d_t P) -> FTDecayFunction2DCauchy
         __init__(FTDecayFunction2DCauchy self, double decay_length_x, double decay_length_y, double gamma) -> FTDecayFunction2DCauchy
-        FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma)
-
         """
         _libBornAgainCore.FTDecayFunction2DCauchy_swiginit(self, _libBornAgainCore.new_FTDecayFunction2DCauchy(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy
-        FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
-
-        """
+        r"""clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy"""
         return _libBornAgainCore.FTDecayFunction2DCauchy_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction2DCauchy self, INodeVisitor * visitor)
-        void FTDecayFunction2DCauchy::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction2DCauchy self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction2DCauchy_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDecayFunction2DCauchy self, double qx, double qy) -> double
-        double FTDecayFunction2DCauchy::evaluate(double qx, double qy) const final
-
-        evaluate Fourier transformed decay function for q in X,Y coordinates 
-
-        """
+        r"""evaluate(FTDecayFunction2DCauchy self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDecayFunction2DCauchy_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction2DCauchy
 
@@ -6282,14 +5514,7 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
 _libBornAgainCore.FTDecayFunction2DCauchy_swigregister(FTDecayFunction2DCauchy)
 
 class FTDecayFunction2DGauss(IFTDecayFunction2D):
-    r"""
-
-
-    Two-dimensional Gauss decay function in reciprocal space; corresponds to exp(-r^2/2) in real space, with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDecay2D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction2DGauss class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6298,35 +5523,19 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
         r"""
         __init__(FTDecayFunction2DGauss self, vdouble1d_t P) -> FTDecayFunction2DGauss
         __init__(FTDecayFunction2DGauss self, double decay_length_x, double decay_length_y, double gamma) -> FTDecayFunction2DGauss
-        FTDecayFunction2DGauss::FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma)
-
         """
         _libBornAgainCore.FTDecayFunction2DGauss_swiginit(self, _libBornAgainCore.new_FTDecayFunction2DGauss(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss
-        FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
-
-        """
+        r"""clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss"""
         return _libBornAgainCore.FTDecayFunction2DGauss_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction2DGauss self, INodeVisitor * visitor)
-        void FTDecayFunction2DGauss::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction2DGauss self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction2DGauss_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDecayFunction2DGauss self, double qx, double qy) -> double
-        double FTDecayFunction2DGauss::evaluate(double qx, double qy) const final
-
-        evaluate Fourier transformed decay function for q in X,Y coordinates 
-
-        """
+        r"""evaluate(FTDecayFunction2DGauss self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDecayFunction2DGauss_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction2DGauss
 
@@ -6334,14 +5543,7 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
 _libBornAgainCore.FTDecayFunction2DGauss_swigregister(FTDecayFunction2DGauss)
 
 class FTDecayFunction2DVoigt(IFTDecayFunction2D):
-    r"""
-
-
-    Two-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*Cauchy.
-
-    C++ includes: FTDecay2D.h
-
-    """
+    r"""Proxy of C++ FTDecayFunction2DVoigt class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6350,43 +5552,23 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
         r"""
         __init__(FTDecayFunction2DVoigt self, vdouble1d_t P) -> FTDecayFunction2DVoigt
         __init__(FTDecayFunction2DVoigt self, double decay_length_x, double decay_length_y, double gamma, double eta) -> FTDecayFunction2DVoigt
-        FTDecayFunction2DVoigt::FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta)
-
         """
         _libBornAgainCore.FTDecayFunction2DVoigt_swiginit(self, _libBornAgainCore.new_FTDecayFunction2DVoigt(*args))
 
     def clone(self):
-        r"""
-        clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt
-        FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
-
-        """
+        r"""clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt"""
         return _libBornAgainCore.FTDecayFunction2DVoigt_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDecayFunction2DVoigt self, INodeVisitor * visitor)
-        void FTDecayFunction2DVoigt::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDecayFunction2DVoigt self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDecayFunction2DVoigt_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDecayFunction2DVoigt self, double qx, double qy) -> double
-        double FTDecayFunction2DVoigt::evaluate(double qx, double qy) const final
-
-        evaluate Fourier transformed decay function for q in X,Y coordinates 
-
-        """
+        r"""evaluate(FTDecayFunction2DVoigt self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDecayFunction2DVoigt_evaluate(self, qx, qy)
 
     def eta(self):
-        r"""
-        eta(FTDecayFunction2DVoigt self) -> double
-        double FTDecayFunction2DVoigt::eta() const
-
-        """
+        r"""eta(FTDecayFunction2DVoigt self) -> double"""
         return _libBornAgainCore.FTDecayFunction2DVoigt_eta(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDecayFunction2DVoigt
 
@@ -6394,14 +5576,7 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
 _libBornAgainCore.FTDecayFunction2DVoigt_swigregister(FTDecayFunction2DVoigt)
 
 class IFTDistribution1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
-    r"""
-
-
-    Interface for a one-dimensional distribution, with normalization adjusted so that the Fourier transform evaluate(q) is a decay function that starts at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ IFTDistribution1D class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -6410,39 +5585,19 @@ class IFTDistribution1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IFTDistribution1D self) -> IFTDistribution1D
-        virtual IFTDistribution1D* IFTDistribution1D::clone() const =0
-
-        """
+        r"""clone(IFTDistribution1D self) -> IFTDistribution1D"""
         return _libBornAgainCore.IFTDistribution1D_clone(self)
 
     def evaluate(self, q):
-        r"""
-        evaluate(IFTDistribution1D self, double q) -> double
-        virtual double IFTDistribution1D::evaluate(double q) const =0
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(IFTDistribution1D self, double q) -> double"""
         return _libBornAgainCore.IFTDistribution1D_evaluate(self, q)
 
     def omega(self):
-        r"""
-        omega(IFTDistribution1D self) -> double
-        double IFTDistribution1D::omega() const
-
-        """
+        r"""omega(IFTDistribution1D self) -> double"""
         return _libBornAgainCore.IFTDistribution1D_omega(self)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(IFTDistribution1D self) -> double
-        virtual double IFTDistribution1D::qSecondDerivative() const =0
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(IFTDistribution1D self) -> double"""
         return _libBornAgainCore.IFTDistribution1D_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_IFTDistribution1D
 
@@ -6450,14 +5605,7 @@ class IFTDistribution1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
 _libBornAgainCore.IFTDistribution1D_swigregister(IFTDistribution1D)
 
 class FTDistribution1DCauchy(IFTDistribution1D):
-    r"""
-
-
-    Exponential  IFTDistribution1D exp(-|omega*x|); its Fourier transform evaluate(q) is a Cauchy-Lorentzian starting at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DCauchy class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6466,45 +5614,23 @@ class FTDistribution1DCauchy(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DCauchy self, vdouble1d_t P) -> FTDistribution1DCauchy
         __init__(FTDistribution1DCauchy self, double omega) -> FTDistribution1DCauchy
-        FTDistribution1DCauchy::FTDistribution1DCauchy(double omega)
-
         """
         _libBornAgainCore.FTDistribution1DCauchy_swiginit(self, _libBornAgainCore.new_FTDistribution1DCauchy(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DCauchy self) -> FTDistribution1DCauchy
-        FTDistribution1DCauchy * FTDistribution1DCauchy::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DCauchy self) -> FTDistribution1DCauchy"""
         return _libBornAgainCore.FTDistribution1DCauchy_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DCauchy self, INodeVisitor * visitor)
-        void FTDistribution1DCauchy::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DCauchy self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DCauchy_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DCauchy self, double q) -> double
-        double FTDistribution1DCauchy::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DCauchy self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DCauchy_evaluate(self, q)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DCauchy self) -> double
-        double FTDistribution1DCauchy::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DCauchy self) -> double"""
         return _libBornAgainCore.FTDistribution1DCauchy_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DCauchy
 
@@ -6512,14 +5638,7 @@ class FTDistribution1DCauchy(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DCauchy_swigregister(FTDistribution1DCauchy)
 
 class FTDistribution1DGauss(IFTDistribution1D):
-    r"""
-
-
-    Gaussian  IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DGauss class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6528,45 +5647,23 @@ class FTDistribution1DGauss(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DGauss self, vdouble1d_t P) -> FTDistribution1DGauss
         __init__(FTDistribution1DGauss self, double omega) -> FTDistribution1DGauss
-        FTDistribution1DGauss::FTDistribution1DGauss(double omega)
-
         """
         _libBornAgainCore.FTDistribution1DGauss_swiginit(self, _libBornAgainCore.new_FTDistribution1DGauss(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DGauss self) -> FTDistribution1DGauss
-        FTDistribution1DGauss * FTDistribution1DGauss::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DGauss self) -> FTDistribution1DGauss"""
         return _libBornAgainCore.FTDistribution1DGauss_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DGauss self, INodeVisitor * visitor)
-        void FTDistribution1DGauss::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DGauss self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DGauss_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DGauss self, double q) -> double
-        double FTDistribution1DGauss::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DGauss self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DGauss_evaluate(self, q)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DGauss self) -> double
-        double FTDistribution1DGauss::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DGauss self) -> double"""
         return _libBornAgainCore.FTDistribution1DGauss_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DGauss
 
@@ -6574,14 +5671,7 @@ class FTDistribution1DGauss(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DGauss_swigregister(FTDistribution1DGauss)
 
 class FTDistribution1DGate(IFTDistribution1D):
-    r"""
-
-
-    Square gate  IFTDistribution1D; its Fourier transform evaluate(q) is a sinc function starting at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DGate class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6590,45 +5680,23 @@ class FTDistribution1DGate(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DGate self, vdouble1d_t P) -> FTDistribution1DGate
         __init__(FTDistribution1DGate self, double omega) -> FTDistribution1DGate
-        FTDistribution1DGate::FTDistribution1DGate(double omega)
-
         """
         _libBornAgainCore.FTDistribution1DGate_swiginit(self, _libBornAgainCore.new_FTDistribution1DGate(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DGate self) -> FTDistribution1DGate
-        FTDistribution1DGate * FTDistribution1DGate::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DGate self) -> FTDistribution1DGate"""
         return _libBornAgainCore.FTDistribution1DGate_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DGate self, INodeVisitor * visitor)
-        void FTDistribution1DGate::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DGate self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DGate_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DGate self, double q) -> double
-        double FTDistribution1DGate::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DGate self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DGate_evaluate(self, q)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DGate self) -> double
-        double FTDistribution1DGate::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DGate self) -> double"""
         return _libBornAgainCore.FTDistribution1DGate_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DGate
 
@@ -6636,14 +5704,7 @@ class FTDistribution1DGate(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DGate_swigregister(FTDistribution1DGate)
 
 class FTDistribution1DTriangle(IFTDistribution1D):
-    r"""
-
-
-    Triangle  IFTDistribution1D [1-|x|/omega if |x|<omega, and 0 otherwise]; its Fourier transform evaluate(q) is a squared sinc function starting at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DTriangle class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6652,45 +5713,23 @@ class FTDistribution1DTriangle(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DTriangle self, vdouble1d_t P) -> FTDistribution1DTriangle
         __init__(FTDistribution1DTriangle self, double omega) -> FTDistribution1DTriangle
-        FTDistribution1DTriangle::FTDistribution1DTriangle(double omega)
-
         """
         _libBornAgainCore.FTDistribution1DTriangle_swiginit(self, _libBornAgainCore.new_FTDistribution1DTriangle(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DTriangle self) -> FTDistribution1DTriangle
-        FTDistribution1DTriangle * FTDistribution1DTriangle::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DTriangle self) -> FTDistribution1DTriangle"""
         return _libBornAgainCore.FTDistribution1DTriangle_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DTriangle self, INodeVisitor * visitor)
-        void FTDistribution1DTriangle::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DTriangle self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DTriangle_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DTriangle self, double q) -> double
-        double FTDistribution1DTriangle::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DTriangle self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DTriangle_evaluate(self, q)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DTriangle self) -> double
-        double FTDistribution1DTriangle::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DTriangle self) -> double"""
         return _libBornAgainCore.FTDistribution1DTriangle_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DTriangle
 
@@ -6698,14 +5737,7 @@ class FTDistribution1DTriangle(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DTriangle_swigregister(FTDistribution1DTriangle)
 
 class FTDistribution1DCosine(IFTDistribution1D):
-    r"""
-
-
-    IFTDistribution1D consisting of one cosine wave [1+cos(pi*x/omega) if |x|<omega, and 0 otherwise]; its Fourier transform evaluate(q) starts at evaluate(0)=1.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DCosine class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6714,45 +5746,23 @@ class FTDistribution1DCosine(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DCosine self, vdouble1d_t P) -> FTDistribution1DCosine
         __init__(FTDistribution1DCosine self, double omega) -> FTDistribution1DCosine
-        FTDistribution1DCosine::FTDistribution1DCosine(double omega)
-
         """
         _libBornAgainCore.FTDistribution1DCosine_swiginit(self, _libBornAgainCore.new_FTDistribution1DCosine(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DCosine self) -> FTDistribution1DCosine
-        FTDistribution1DCosine * FTDistribution1DCosine::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DCosine self) -> FTDistribution1DCosine"""
         return _libBornAgainCore.FTDistribution1DCosine_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DCosine self, INodeVisitor * visitor)
-        void FTDistribution1DCosine::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DCosine self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DCosine_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DCosine self, double q) -> double
-        double FTDistribution1DCosine::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DCosine self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DCosine_evaluate(self, q)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DCosine self) -> double
-        double FTDistribution1DCosine::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DCosine self) -> double"""
         return _libBornAgainCore.FTDistribution1DCosine_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DCosine
 
@@ -6760,14 +5770,7 @@ class FTDistribution1DCosine(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DCosine_swigregister(FTDistribution1DCosine)
 
 class FTDistribution1DVoigt(IFTDistribution1D):
-    r"""
-
-
-    IFTDistribution1D that provides a Fourier transform evaluate(q) in form of a pseudo-Voigt decay function eta*Gauss + (1-eta)*Cauchy, with both components starting at 1 for q=0.
-
-    C++ includes: FTDistributions1D.h
-
-    """
+    r"""Proxy of C++ FTDistribution1DVoigt class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6776,53 +5779,27 @@ class FTDistribution1DVoigt(IFTDistribution1D):
         r"""
         __init__(FTDistribution1DVoigt self, vdouble1d_t P) -> FTDistribution1DVoigt
         __init__(FTDistribution1DVoigt self, double omega, double eta) -> FTDistribution1DVoigt
-        FTDistribution1DVoigt::FTDistribution1DVoigt(double omega, double eta)
-
         """
         _libBornAgainCore.FTDistribution1DVoigt_swiginit(self, _libBornAgainCore.new_FTDistribution1DVoigt(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution1DVoigt self) -> FTDistribution1DVoigt
-        FTDistribution1DVoigt * FTDistribution1DVoigt::clone() const override final
-
-        """
+        r"""clone(FTDistribution1DVoigt self) -> FTDistribution1DVoigt"""
         return _libBornAgainCore.FTDistribution1DVoigt_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution1DVoigt self, INodeVisitor * visitor)
-        void FTDistribution1DVoigt::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FTDistribution1DVoigt self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution1DVoigt_accept(self, visitor)
 
     def evaluate(self, q):
-        r"""
-        evaluate(FTDistribution1DVoigt self, double q) -> double
-        double FTDistribution1DVoigt::evaluate(double q) const override final
-
-        Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. 
-
-        """
+        r"""evaluate(FTDistribution1DVoigt self, double q) -> double"""
         return _libBornAgainCore.FTDistribution1DVoigt_evaluate(self, q)
 
     def eta(self):
-        r"""
-        eta(FTDistribution1DVoigt self) -> double
-        double FTDistribution1DVoigt::eta() const
-
-        """
+        r"""eta(FTDistribution1DVoigt self) -> double"""
         return _libBornAgainCore.FTDistribution1DVoigt_eta(self)
 
     def qSecondDerivative(self):
-        r"""
-        qSecondDerivative(FTDistribution1DVoigt self) -> double
-        double FTDistribution1DVoigt::qSecondDerivative() const override final
-
-        Returns the negative of the second order derivative in q space around q=0. 
-
-        """
+        r"""qSecondDerivative(FTDistribution1DVoigt self) -> double"""
         return _libBornAgainCore.FTDistribution1DVoigt_qSecondDerivative(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution1DVoigt
 
@@ -6830,14 +5807,7 @@ class FTDistribution1DVoigt(IFTDistribution1D):
 _libBornAgainCore.FTDistribution1DVoigt_swigregister(FTDistribution1DVoigt)
 
 class IFTDistribution2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
-    r"""
-
-
-    Interface for two-dimensional distributions in Fourier space.
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ IFTDistribution2D class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -6846,55 +5816,27 @@ class IFTDistribution2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IFTDistribution2D self) -> IFTDistribution2D
-        IFTDistribution2D* IFTDistribution2D::clone() const =0
-
-        """
+        r"""clone(IFTDistribution2D self) -> IFTDistribution2D"""
         return _libBornAgainCore.IFTDistribution2D_clone(self)
 
     def omegaX(self):
-        r"""
-        omegaX(IFTDistribution2D self) -> double
-        double IFTDistribution2D::omegaX() const
-
-        """
+        r"""omegaX(IFTDistribution2D self) -> double"""
         return _libBornAgainCore.IFTDistribution2D_omegaX(self)
 
     def omegaY(self):
-        r"""
-        omegaY(IFTDistribution2D self) -> double
-        double IFTDistribution2D::omegaY() const
-
-        """
+        r"""omegaY(IFTDistribution2D self) -> double"""
         return _libBornAgainCore.IFTDistribution2D_omegaY(self)
 
     def gamma(self):
-        r"""
-        gamma(IFTDistribution2D self) -> double
-        double IFTDistribution2D::gamma() const
-
-        """
+        r"""gamma(IFTDistribution2D self) -> double"""
         return _libBornAgainCore.IFTDistribution2D_gamma(self)
 
     def delta(self):
-        r"""
-        delta(IFTDistribution2D self) -> double
-        double IFTDistribution2D::delta() const
-
-        Angle in direct space between X- and Y-axis of distribution. 
-
-        """
+        r"""delta(IFTDistribution2D self) -> double"""
         return _libBornAgainCore.IFTDistribution2D_delta(self)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(IFTDistribution2D self, double qx, double qy) -> double
-        virtual double IFTDistribution2D::evaluate(double qx, double qy) const =0
-
-        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 
-
-        """
+        r"""evaluate(IFTDistribution2D self, double qx, double qy) -> double"""
         return _libBornAgainCore.IFTDistribution2D_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_IFTDistribution2D
 
@@ -6902,14 +5844,7 @@ class IFTDistribution2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
 _libBornAgainCore.IFTDistribution2D_swigregister(IFTDistribution2D)
 
 class FTDistribution2DCauchy(IFTDistribution2D):
-    r"""
-
-
-    Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real space, with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ FTDistribution2DCauchy class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6918,35 +5853,19 @@ class FTDistribution2DCauchy(IFTDistribution2D):
         r"""
         __init__(FTDistribution2DCauchy self, vdouble1d_t P) -> FTDistribution2DCauchy
         __init__(FTDistribution2DCauchy self, double omega_x, double omega_y, double gamma) -> FTDistribution2DCauchy
-        FTDistribution2DCauchy::FTDistribution2DCauchy(double omega_x, double omega_y, double gamma)
-
         """
         _libBornAgainCore.FTDistribution2DCauchy_swiginit(self, _libBornAgainCore.new_FTDistribution2DCauchy(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution2DCauchy self) -> FTDistribution2DCauchy
-        FTDistribution2DCauchy * FTDistribution2DCauchy::clone() const final
-
-        """
+        r"""clone(FTDistribution2DCauchy self) -> FTDistribution2DCauchy"""
         return _libBornAgainCore.FTDistribution2DCauchy_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution2DCauchy self, INodeVisitor * visitor)
-        void FTDistribution2DCauchy::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDistribution2DCauchy self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution2DCauchy_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDistribution2DCauchy self, double qx, double qy) -> double
-        double FTDistribution2DCauchy::evaluate(double qx, double qy) const final
-
-        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 
-
-        """
+        r"""evaluate(FTDistribution2DCauchy self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDistribution2DCauchy_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution2DCauchy
 
@@ -6954,14 +5873,7 @@ class FTDistribution2DCauchy(IFTDistribution2D):
 _libBornAgainCore.FTDistribution2DCauchy_swigregister(FTDistribution2DCauchy)
 
 class FTDistribution2DGauss(IFTDistribution2D):
-    r"""
-
-
-    Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real space with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ FTDistribution2DGauss class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -6970,35 +5882,19 @@ class FTDistribution2DGauss(IFTDistribution2D):
         r"""
         __init__(FTDistribution2DGauss self, vdouble1d_t P) -> FTDistribution2DGauss
         __init__(FTDistribution2DGauss self, double omega_x, double omega_y, double gamma) -> FTDistribution2DGauss
-        FTDistribution2DGauss::FTDistribution2DGauss(double omega_x, double omega_y, double gamma)
-
         """
         _libBornAgainCore.FTDistribution2DGauss_swiginit(self, _libBornAgainCore.new_FTDistribution2DGauss(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution2DGauss self) -> FTDistribution2DGauss
-        FTDistribution2DGauss * FTDistribution2DGauss::clone() const final
-
-        """
+        r"""clone(FTDistribution2DGauss self) -> FTDistribution2DGauss"""
         return _libBornAgainCore.FTDistribution2DGauss_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution2DGauss self, INodeVisitor * visitor)
-        void FTDistribution2DGauss::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDistribution2DGauss self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution2DGauss_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDistribution2DGauss self, double qx, double qy) -> double
-        double FTDistribution2DGauss::evaluate(double qx, double qy) const final
-
-        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 
-
-        """
+        r"""evaluate(FTDistribution2DGauss self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDistribution2DGauss_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution2DGauss
 
@@ -7006,14 +5902,7 @@ class FTDistribution2DGauss(IFTDistribution2D):
 _libBornAgainCore.FTDistribution2DGauss_swigregister(FTDistribution2DGauss)
 
 class FTDistribution2DGate(IFTDistribution2D):
-    r"""
-
-
-    Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 otherwise) in real space, with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ FTDistribution2DGate class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -7022,35 +5911,19 @@ class FTDistribution2DGate(IFTDistribution2D):
         r"""
         __init__(FTDistribution2DGate self, vdouble1d_t P) -> FTDistribution2DGate
         __init__(FTDistribution2DGate self, double omega_x, double omega_y, double gamma) -> FTDistribution2DGate
-        FTDistribution2DGate::FTDistribution2DGate(double omega_x, double omega_y, double gamma)
-
         """
         _libBornAgainCore.FTDistribution2DGate_swiginit(self, _libBornAgainCore.new_FTDistribution2DGate(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution2DGate self) -> FTDistribution2DGate
-        FTDistribution2DGate * FTDistribution2DGate::clone() const final
-
-        """
+        r"""clone(FTDistribution2DGate self) -> FTDistribution2DGate"""
         return _libBornAgainCore.FTDistribution2DGate_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution2DGate self, INodeVisitor * visitor)
-        void FTDistribution2DGate::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDistribution2DGate self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution2DGate_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDistribution2DGate self, double qx, double qy) -> double
-        double FTDistribution2DGate::evaluate(double qx, double qy) const final
-
-        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 
-
-        """
+        r"""evaluate(FTDistribution2DGate self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDistribution2DGate_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution2DGate
 
@@ -7058,14 +5931,7 @@ class FTDistribution2DGate(IFTDistribution2D):
 _libBornAgainCore.FTDistribution2DGate_swigregister(FTDistribution2DGate)
 
 class FTDistribution2DCone(IFTDistribution2D):
-    r"""
-
-
-    Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in real space with  $r=\\sqrt{(\\frac{x}{\\omega_x})^2 + (\\frac{y}{\\omega_y})^2}$.
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ FTDistribution2DCone class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -7074,35 +5940,19 @@ class FTDistribution2DCone(IFTDistribution2D):
         r"""
         __init__(FTDistribution2DCone self, vdouble1d_t P) -> FTDistribution2DCone
         __init__(FTDistribution2DCone self, double omega_x, double omega_y, double gamma) -> FTDistribution2DCone
-        FTDistribution2DCone::FTDistribution2DCone(double omega_x, double omega_y, double gamma)
-
         """
         _libBornAgainCore.FTDistribution2DCone_swiginit(self, _libBornAgainCore.new_FTDistribution2DCone(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution2DCone self) -> FTDistribution2DCone
-        FTDistribution2DCone * FTDistribution2DCone::clone() const final
-
-        """
+        r"""clone(FTDistribution2DCone self) -> FTDistribution2DCone"""
         return _libBornAgainCore.FTDistribution2DCone_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution2DCone self, INodeVisitor * visitor)
-        void FTDistribution2DCone::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDistribution2DCone self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution2DCone_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDistribution2DCone self, double qx, double qy) -> double
-        double FTDistribution2DCone::evaluate(double qx, double qy) const final
-
-        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 
-
-        """
+        r"""evaluate(FTDistribution2DCone self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDistribution2DCone_evaluate(self, qx, qy)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution2DCone
 
@@ -7110,14 +5960,7 @@ class FTDistribution2DCone(IFTDistribution2D):
 _libBornAgainCore.FTDistribution2DCone_swigregister(FTDistribution2DCone)
 
 class FTDistribution2DVoigt(IFTDistribution2D):
-    r"""
-
-
-    Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy
-
-    C++ includes: FTDistributions2D.h
-
-    """
+    r"""Proxy of C++ FTDistribution2DVoigt class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -7126,43 +5969,23 @@ class FTDistribution2DVoigt(IFTDistribution2D):
         r"""
         __init__(FTDistribution2DVoigt self, vdouble1d_t P) -> FTDistribution2DVoigt
         __init__(FTDistribution2DVoigt self, double omega_x, double omega_y, double gamma, double eta) -> FTDistribution2DVoigt
-        FTDistribution2DVoigt::FTDistribution2DVoigt(double omega_x, double omega_y, double gamma, double eta)
-
         """
         _libBornAgainCore.FTDistribution2DVoigt_swiginit(self, _libBornAgainCore.new_FTDistribution2DVoigt(*args))
 
     def clone(self):
-        r"""
-        clone(FTDistribution2DVoigt self) -> FTDistribution2DVoigt
-        FTDistribution2DVoigt * FTDistribution2DVoigt::clone() const final
-
-        """
+        r"""clone(FTDistribution2DVoigt self) -> FTDistribution2DVoigt"""
         return _libBornAgainCore.FTDistribution2DVoigt_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FTDistribution2DVoigt self, INodeVisitor * visitor)
-        void FTDistribution2DVoigt::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(FTDistribution2DVoigt self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FTDistribution2DVoigt_accept(self, visitor)
 
     def evaluate(self, qx, qy):
-        r"""
-        evaluate(FTDistribution2DVoigt self, double qx, double qy) -> double
-        double FTDistribution2DVoigt::evaluate(double qx, double qy) const final
-
-        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 
-
-        """
+        r"""evaluate(FTDistribution2DVoigt self, double qx, double qy) -> double"""
         return _libBornAgainCore.FTDistribution2DVoigt_evaluate(self, qx, qy)
 
     def eta(self):
-        r"""
-        eta(FTDistribution2DVoigt self) -> double
-        double FTDistribution2DVoigt::eta() const
-
-        """
+        r"""eta(FTDistribution2DVoigt self) -> double"""
         return _libBornAgainCore.FTDistribution2DVoigt_eta(self)
     __swig_destroy__ = _libBornAgainCore.delete_FTDistribution2DVoigt
 
@@ -7170,14 +5993,7 @@ class FTDistribution2DVoigt(IFTDistribution2D):
 _libBornAgainCore.FTDistribution2DVoigt_swigregister(FTDistribution2DVoigt)
 
 class ILayout(ISample):
-    r"""
-
-
-    Pure virtual interface class to equip a sample layer with scattering properties. Currently only inherited by  ParticleLayout; in the future also by domain structure.
-
-    C++ includes: ILayout.h
-
-    """
+    r"""Proxy of C++ ILayout class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -7187,103 +6003,46 @@ class ILayout(ISample):
     __swig_destroy__ = _libBornAgainCore.delete_ILayout
 
     def clone(self):
-        r"""
-        clone(ILayout self) -> ILayout
-        virtual ILayout* ILayout::clone() const =0
-
-        """
+        r"""clone(ILayout self) -> ILayout"""
         return _libBornAgainCore.ILayout_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(ILayout self, INodeVisitor * visitor)
-        virtual void ILayout::accept(INodeVisitor *visitor) const =0
-
-        """
+        r"""accept(ILayout self, INodeVisitor * visitor)"""
         return _libBornAgainCore.ILayout_accept(self, visitor)
 
     def particles(self):
-        r"""
-        particles(ILayout self) -> SafePointerVector< IParticle >
-        virtual SafePointerVector<IParticle> ILayout::particles() const =0
-
-        Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
-
-        """
+        r"""particles(ILayout self) -> SafePointerVector< IParticle >"""
         return _libBornAgainCore.ILayout_particles(self)
 
     def interferenceFunction(self):
-        r"""
-        interferenceFunction(ILayout self) -> IInterferenceFunction
-        virtual const IInterferenceFunction* ILayout::interferenceFunction() const =0
-
-        Returns the interference function. 
-
-        """
+        r"""interferenceFunction(ILayout self) -> IInterferenceFunction"""
         return _libBornAgainCore.ILayout_interferenceFunction(self)
 
     def getTotalAbundance(self):
-        r"""
-        getTotalAbundance(ILayout self) -> double
-        virtual double ILayout::getTotalAbundance() const =0
-
-        Get total abundance of all particles. 
-
-        """
+        r"""getTotalAbundance(ILayout self) -> double"""
         return _libBornAgainCore.ILayout_getTotalAbundance(self)
 
     def totalParticleSurfaceDensity(self):
-        r"""
-        totalParticleSurfaceDensity(ILayout self) -> double
-        virtual double ILayout::totalParticleSurfaceDensity() const =0
-
-        Returns surface density of all particles. 
-
-        """
+        r"""totalParticleSurfaceDensity(ILayout self) -> double"""
         return _libBornAgainCore.ILayout_totalParticleSurfaceDensity(self)
 
     def setTotalParticleSurfaceDensity(self, particle_density):
-        r"""
-        setTotalParticleSurfaceDensity(ILayout self, double particle_density)
-        virtual void ILayout::setTotalParticleSurfaceDensity(double particle_density)=0
-
-        Sets surface density of all particles. 
-
-        """
+        r"""setTotalParticleSurfaceDensity(ILayout self, double particle_density)"""
         return _libBornAgainCore.ILayout_setTotalParticleSurfaceDensity(self, particle_density)
 
     def weight(self):
-        r"""
-        weight(ILayout self) -> double
-        double ILayout::weight() const
-
-        Returns the relative weight of this layout. 
-
-        """
+        r"""weight(ILayout self) -> double"""
         return _libBornAgainCore.ILayout_weight(self)
 
     def setWeight(self, weight):
-        r"""
-        setWeight(ILayout self, double weight)
-        void ILayout::setWeight(double weight)
-
-        Sets the relative weight of this layout. 
-
-        """
+        r"""setWeight(ILayout self, double weight)"""
         return _libBornAgainCore.ILayout_setWeight(self, weight)
 
 # Register ILayout in _libBornAgainCore:
 _libBornAgainCore.ILayout_swigregister(ILayout)
 
 class IPeakShape(ISample):
-    r"""
-
-
-    Pure virtual interface class that defines the peak shape of a Bragg peak.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ IPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -7293,391 +6052,194 @@ class IPeakShape(ISample):
     __swig_destroy__ = _libBornAgainCore.delete_IPeakShape
 
     def clone(self):
-        r"""
-        clone(IPeakShape self) -> IPeakShape
-        virtual IPeakShape* IPeakShape::clone() const =0
-
-        """
+        r"""clone(IPeakShape self) -> IPeakShape"""
         return _libBornAgainCore.IPeakShape_clone(self)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(IPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        virtual double IPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const =0
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(IPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.IPeakShape_evaluate(self, q, q_lattice_point)
 
     def angularDisorder(self):
-        r"""
-        angularDisorder(IPeakShape self) -> bool
-        virtual bool IPeakShape::angularDisorder() const
-
-        Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-
-        """
+        r"""angularDisorder(IPeakShape self) -> bool"""
         return _libBornAgainCore.IPeakShape_angularDisorder(self)
 
 # Register IPeakShape in _libBornAgainCore:
 _libBornAgainCore.IPeakShape_swigregister(IPeakShape)
 
 class IsotropicGaussPeakShape(IPeakShape):
-    r"""
-
-
-    Class that implements an isotropic Gaussian peak shape of a Bragg peak.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ IsotropicGaussPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, domainsize):
-        r"""
-        __init__(IsotropicGaussPeakShape self, double max_intensity, double domainsize) -> IsotropicGaussPeakShape
-        IsotropicGaussPeakShape::IsotropicGaussPeakShape(double max_intensity, double domainsize)
-
-        """
+        r"""__init__(IsotropicGaussPeakShape self, double max_intensity, double domainsize) -> IsotropicGaussPeakShape"""
         _libBornAgainCore.IsotropicGaussPeakShape_swiginit(self, _libBornAgainCore.new_IsotropicGaussPeakShape(max_intensity, domainsize))
     __swig_destroy__ = _libBornAgainCore.delete_IsotropicGaussPeakShape
 
     def clone(self):
-        r"""
-        clone(IsotropicGaussPeakShape self) -> IsotropicGaussPeakShape
-        IsotropicGaussPeakShape * IsotropicGaussPeakShape::clone() const override
-
-        """
+        r"""clone(IsotropicGaussPeakShape self) -> IsotropicGaussPeakShape"""
         return _libBornAgainCore.IsotropicGaussPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(IsotropicGaussPeakShape self, INodeVisitor * visitor)
-        void IsotropicGaussPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(IsotropicGaussPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.IsotropicGaussPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(IsotropicGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double IsotropicGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(IsotropicGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.IsotropicGaussPeakShape_evaluate(self, q, q_lattice_point)
 
 # Register IsotropicGaussPeakShape in _libBornAgainCore:
 _libBornAgainCore.IsotropicGaussPeakShape_swigregister(IsotropicGaussPeakShape)
 
 class IsotropicLorentzPeakShape(IPeakShape):
-    r"""
-
-
-    An isotropic Lorentzian peak shape of a Bragg peak.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ IsotropicLorentzPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, domainsize):
-        r"""
-        __init__(IsotropicLorentzPeakShape self, double max_intensity, double domainsize) -> IsotropicLorentzPeakShape
-        IsotropicLorentzPeakShape::IsotropicLorentzPeakShape(double max_intensity, double domainsize)
-
-        """
+        r"""__init__(IsotropicLorentzPeakShape self, double max_intensity, double domainsize) -> IsotropicLorentzPeakShape"""
         _libBornAgainCore.IsotropicLorentzPeakShape_swiginit(self, _libBornAgainCore.new_IsotropicLorentzPeakShape(max_intensity, domainsize))
     __swig_destroy__ = _libBornAgainCore.delete_IsotropicLorentzPeakShape
 
     def clone(self):
-        r"""
-        clone(IsotropicLorentzPeakShape self) -> IsotropicLorentzPeakShape
-        IsotropicLorentzPeakShape * IsotropicLorentzPeakShape::clone() const override
-
-        """
+        r"""clone(IsotropicLorentzPeakShape self) -> IsotropicLorentzPeakShape"""
         return _libBornAgainCore.IsotropicLorentzPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(IsotropicLorentzPeakShape self, INodeVisitor * visitor)
-        void IsotropicLorentzPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(IsotropicLorentzPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.IsotropicLorentzPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(IsotropicLorentzPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double IsotropicLorentzPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(IsotropicLorentzPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.IsotropicLorentzPeakShape_evaluate(self, q, q_lattice_point)
 
 # Register IsotropicLorentzPeakShape in _libBornAgainCore:
 _libBornAgainCore.IsotropicLorentzPeakShape_swigregister(IsotropicLorentzPeakShape)
 
 class GaussFisherPeakShape(IPeakShape):
-    r"""
-
-
-    A peak shape that is Gaussian in the radial direction and uses the Mises-Fisher distribution in the angular direction.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ GaussFisherPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, radial_size, kappa):
-        r"""
-        __init__(GaussFisherPeakShape self, double max_intensity, double radial_size, double kappa) -> GaussFisherPeakShape
-        GaussFisherPeakShape::GaussFisherPeakShape(double max_intensity, double radial_size, double kappa)
-
-        """
+        r"""__init__(GaussFisherPeakShape self, double max_intensity, double radial_size, double kappa) -> GaussFisherPeakShape"""
         _libBornAgainCore.GaussFisherPeakShape_swiginit(self, _libBornAgainCore.new_GaussFisherPeakShape(max_intensity, radial_size, kappa))
     __swig_destroy__ = _libBornAgainCore.delete_GaussFisherPeakShape
 
     def clone(self):
-        r"""
-        clone(GaussFisherPeakShape self) -> GaussFisherPeakShape
-        GaussFisherPeakShape * GaussFisherPeakShape::clone() const override
-
-        """
+        r"""clone(GaussFisherPeakShape self) -> GaussFisherPeakShape"""
         return _libBornAgainCore.GaussFisherPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(GaussFisherPeakShape self, INodeVisitor * visitor)
-        void GaussFisherPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(GaussFisherPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.GaussFisherPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(GaussFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double GaussFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(GaussFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.GaussFisherPeakShape_evaluate(self, q, q_lattice_point)
 
     def angularDisorder(self):
-        r"""
-        angularDisorder(GaussFisherPeakShape self) -> bool
-        bool GaussFisherPeakShape::angularDisorder() const override
-
-        Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-
-        """
+        r"""angularDisorder(GaussFisherPeakShape self) -> bool"""
         return _libBornAgainCore.GaussFisherPeakShape_angularDisorder(self)
 
 # Register GaussFisherPeakShape in _libBornAgainCore:
 _libBornAgainCore.GaussFisherPeakShape_swigregister(GaussFisherPeakShape)
 
 class LorentzFisherPeakShape(IPeakShape):
-    r"""
-
-
-    A peak shape that is Lorentzian in the radial direction and uses the Mises-Fisher distribution in the angular direction.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ LorentzFisherPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, radial_size, kappa):
-        r"""
-        __init__(LorentzFisherPeakShape self, double max_intensity, double radial_size, double kappa) -> LorentzFisherPeakShape
-        LorentzFisherPeakShape::LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa)
-
-        """
+        r"""__init__(LorentzFisherPeakShape self, double max_intensity, double radial_size, double kappa) -> LorentzFisherPeakShape"""
         _libBornAgainCore.LorentzFisherPeakShape_swiginit(self, _libBornAgainCore.new_LorentzFisherPeakShape(max_intensity, radial_size, kappa))
     __swig_destroy__ = _libBornAgainCore.delete_LorentzFisherPeakShape
 
     def clone(self):
-        r"""
-        clone(LorentzFisherPeakShape self) -> LorentzFisherPeakShape
-        LorentzFisherPeakShape * LorentzFisherPeakShape::clone() const override
-
-        """
+        r"""clone(LorentzFisherPeakShape self) -> LorentzFisherPeakShape"""
         return _libBornAgainCore.LorentzFisherPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(LorentzFisherPeakShape self, INodeVisitor * visitor)
-        void LorentzFisherPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(LorentzFisherPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.LorentzFisherPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(LorentzFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double LorentzFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(LorentzFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.LorentzFisherPeakShape_evaluate(self, q, q_lattice_point)
 
     def angularDisorder(self):
-        r"""
-        angularDisorder(LorentzFisherPeakShape self) -> bool
-        bool LorentzFisherPeakShape::angularDisorder() const override
-
-        Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-
-        """
+        r"""angularDisorder(LorentzFisherPeakShape self) -> bool"""
         return _libBornAgainCore.LorentzFisherPeakShape_angularDisorder(self)
 
 # Register LorentzFisherPeakShape in _libBornAgainCore:
 _libBornAgainCore.LorentzFisherPeakShape_swigregister(LorentzFisherPeakShape)
 
 class MisesFisherGaussPeakShape(IPeakShape):
-    r"""
-
-
-    A peak shape that is Gaussian in the radial direction and a convolution of a Mises-Fisher distribution with a Mises distribution on the two-sphere.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ MisesFisherGaussPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, radial_size, zenith, kappa_1, kappa_2):
-        r"""
-        __init__(MisesFisherGaussPeakShape self, double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2) -> MisesFisherGaussPeakShape
-        MisesFisherGaussPeakShape::MisesFisherGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2)
-
-        """
+        r"""__init__(MisesFisherGaussPeakShape self, double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2) -> MisesFisherGaussPeakShape"""
         _libBornAgainCore.MisesFisherGaussPeakShape_swiginit(self, _libBornAgainCore.new_MisesFisherGaussPeakShape(max_intensity, radial_size, zenith, kappa_1, kappa_2))
     __swig_destroy__ = _libBornAgainCore.delete_MisesFisherGaussPeakShape
 
     def clone(self):
-        r"""
-        clone(MisesFisherGaussPeakShape self) -> MisesFisherGaussPeakShape
-        MisesFisherGaussPeakShape * MisesFisherGaussPeakShape::clone() const override
-
-        """
+        r"""clone(MisesFisherGaussPeakShape self) -> MisesFisherGaussPeakShape"""
         return _libBornAgainCore.MisesFisherGaussPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(MisesFisherGaussPeakShape self, INodeVisitor * visitor)
-        void MisesFisherGaussPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(MisesFisherGaussPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.MisesFisherGaussPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(MisesFisherGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double MisesFisherGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(MisesFisherGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.MisesFisherGaussPeakShape_evaluate(self, q, q_lattice_point)
 
     def angularDisorder(self):
-        r"""
-        angularDisorder(MisesFisherGaussPeakShape self) -> bool
-        bool MisesFisherGaussPeakShape::angularDisorder() const override
-
-        Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-
-        """
+        r"""angularDisorder(MisesFisherGaussPeakShape self) -> bool"""
         return _libBornAgainCore.MisesFisherGaussPeakShape_angularDisorder(self)
 
 # Register MisesFisherGaussPeakShape in _libBornAgainCore:
 _libBornAgainCore.MisesFisherGaussPeakShape_swigregister(MisesFisherGaussPeakShape)
 
 class MisesGaussPeakShape(IPeakShape):
-    r"""
-
-
-    A peak shape that is a convolution of a Mises-Fisher distribution with a 3d Gaussian.
-
-    C++ includes: IPeakShape.h
-
-    """
+    r"""Proxy of C++ MisesGaussPeakShape class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, max_intensity, radial_size, zenith, kappa):
-        r"""
-        __init__(MisesGaussPeakShape self, double max_intensity, double radial_size, kvector_t zenith, double kappa) -> MisesGaussPeakShape
-        MisesGaussPeakShape::MisesGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa)
-
-        """
+        r"""__init__(MisesGaussPeakShape self, double max_intensity, double radial_size, kvector_t zenith, double kappa) -> MisesGaussPeakShape"""
         _libBornAgainCore.MisesGaussPeakShape_swiginit(self, _libBornAgainCore.new_MisesGaussPeakShape(max_intensity, radial_size, zenith, kappa))
     __swig_destroy__ = _libBornAgainCore.delete_MisesGaussPeakShape
 
     def clone(self):
-        r"""
-        clone(MisesGaussPeakShape self) -> MisesGaussPeakShape
-        MisesGaussPeakShape * MisesGaussPeakShape::clone() const override
-
-        """
+        r"""clone(MisesGaussPeakShape self) -> MisesGaussPeakShape"""
         return _libBornAgainCore.MisesGaussPeakShape_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(MisesGaussPeakShape self, INodeVisitor * visitor)
-        void MisesGaussPeakShape::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(MisesGaussPeakShape self, INodeVisitor * visitor)"""
         return _libBornAgainCore.MisesGaussPeakShape_accept(self, visitor)
 
     def evaluate(self, q, q_lattice_point):
-        r"""
-        evaluate(MisesGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double
-        double MisesGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override
-
-        Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. 
-
-        """
+        r"""evaluate(MisesGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"""
         return _libBornAgainCore.MisesGaussPeakShape_evaluate(self, q, q_lattice_point)
 
     def angularDisorder(self):
-        r"""
-        angularDisorder(MisesGaussPeakShape self) -> bool
-        bool MisesGaussPeakShape::angularDisorder() const override
-
-        Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed 
-
-        """
+        r"""angularDisorder(MisesGaussPeakShape self) -> bool"""
         return _libBornAgainCore.MisesGaussPeakShape_angularDisorder(self)
 
 # Register MisesGaussPeakShape in _libBornAgainCore:
 _libBornAgainCore.MisesGaussPeakShape_swigregister(MisesGaussPeakShape)
 
 class IInterferenceFunction(ISample):
-    r"""
-
-
-    Pure virtual base class of interference functions.
-
-    C++ includes: IInterferenceFunction.h
-
-    """
+    r"""Proxy of C++ IInterferenceFunction class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -7686,71 +6248,31 @@ class IInterferenceFunction(ISample):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(IInterferenceFunction self) -> IInterferenceFunction
-        virtual IInterferenceFunction* IInterferenceFunction::clone() const =0
-
-        """
+        r"""clone(IInterferenceFunction self) -> IInterferenceFunction"""
         return _libBornAgainCore.IInterferenceFunction_clone(self)
 
     def evaluate(self, q, outer_iff=1.0):
-        r"""
-        evaluate(IInterferenceFunction self, kvector_t q, double outer_iff=1.0) -> double
-        double IInterferenceFunction::evaluate(const kvector_t q, double outer_iff=1.0) const
-
-        Evaluates the interference function for a given wavevector transfer. 
-
-        """
+        r"""evaluate(IInterferenceFunction self, kvector_t q, double outer_iff=1.0) -> double"""
         return _libBornAgainCore.IInterferenceFunction_evaluate(self, q, outer_iff)
 
     def setPositionVariance(self, var):
-        r"""
-        setPositionVariance(IInterferenceFunction self, double var)
-        void IInterferenceFunction::setPositionVariance(double var)
-
-        Sets the variance of the position for the calculation of the DW factor It is defined as the variance in each relevant dimension 
-
-        """
+        r"""setPositionVariance(IInterferenceFunction self, double var)"""
         return _libBornAgainCore.IInterferenceFunction_setPositionVariance(self, var)
 
     def positionVariance(self):
-        r"""
-        positionVariance(IInterferenceFunction self) -> double
-        double IInterferenceFunction::positionVariance() const
-
-        Returns the position variance. 
-
-        """
+        r"""positionVariance(IInterferenceFunction self) -> double"""
         return _libBornAgainCore.IInterferenceFunction_positionVariance(self)
 
     def getParticleDensity(self):
-        r"""
-        getParticleDensity(IInterferenceFunction self) -> double
-        virtual double IInterferenceFunction::getParticleDensity() const
-
-        If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-
-        """
+        r"""getParticleDensity(IInterferenceFunction self) -> double"""
         return _libBornAgainCore.IInterferenceFunction_getParticleDensity(self)
 
     def supportsMultilayer(self):
-        r"""
-        supportsMultilayer(IInterferenceFunction self) -> bool
-        virtual bool IInterferenceFunction::supportsMultilayer() const
-
-        Indicates if this interference function can be used with a multilayer (DWBA mode) 
-
-        """
+        r"""supportsMultilayer(IInterferenceFunction self) -> bool"""
         return _libBornAgainCore.IInterferenceFunction_supportsMultilayer(self)
 
     def DWfactor(self, q):
-        r"""
-        DWfactor(IInterferenceFunction self, kvector_t q) -> double
-        double IInterferenceFunction::DWfactor(kvector_t q) const
-
-        Evaluates the Debye-Waller factor for a given wavevector transfer. 
-
-        """
+        r"""DWfactor(IInterferenceFunction self, kvector_t q) -> double"""
         return _libBornAgainCore.IInterferenceFunction_DWfactor(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_IInterferenceFunction
 
@@ -7758,106 +6280,45 @@ class IInterferenceFunction(ISample):
 _libBornAgainCore.IInterferenceFunction_swigregister(IInterferenceFunction)
 
 class InterferenceFunction1DLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a 1D lattice.
-
-    C++ includes: InterferenceFunction1DLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunction1DLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, length, xi):
-        r"""
-        __init__(InterferenceFunction1DLattice self, double length, double xi) -> InterferenceFunction1DLattice
-        InterferenceFunction1DLattice::InterferenceFunction1DLattice(double length, double xi)
-
-        Constructor of interference function of one-dimensional lattice.
-
-        Parameters:
-        -----------
-
-        length: 
-        lattice constant in nanometers
-
-        xi: 
-        rotation of lattice with respect to x-axis in radians 
-
-        """
+        r"""__init__(InterferenceFunction1DLattice self, double length, double xi) -> InterferenceFunction1DLattice"""
         _libBornAgainCore.InterferenceFunction1DLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunction1DLattice(length, xi))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction1DLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunction1DLattice self) -> InterferenceFunction1DLattice
-        InterferenceFunction1DLattice * InterferenceFunction1DLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunction1DLattice self) -> InterferenceFunction1DLattice"""
         return _libBornAgainCore.InterferenceFunction1DLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunction1DLattice self, INodeVisitor * visitor)
-        void InterferenceFunction1DLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunction1DLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunction1DLattice_accept(self, visitor)
 
     def setDecayFunction(self, decay):
-        r"""
-        setDecayFunction(InterferenceFunction1DLattice self, IFTDecayFunction1D decay)
-        void InterferenceFunction1DLattice::setDecayFunction(const IFTDecayFunction1D &decay)
-
-        Sets one-dimensional decay function.
-
-        Parameters:
-        -----------
-
-        decay: 
-        one-dimensional decay function in reciprocal space 
-
-        """
+        r"""setDecayFunction(InterferenceFunction1DLattice self, IFTDecayFunction1D decay)"""
         return _libBornAgainCore.InterferenceFunction1DLattice_setDecayFunction(self, decay)
 
     def getLength(self):
-        r"""
-        getLength(InterferenceFunction1DLattice self) -> double
-        double InterferenceFunction1DLattice::getLength() const
-
-        """
+        r"""getLength(InterferenceFunction1DLattice self) -> double"""
         return _libBornAgainCore.InterferenceFunction1DLattice_getLength(self)
 
     def getXi(self):
-        r"""
-        getXi(InterferenceFunction1DLattice self) -> double
-        double InterferenceFunction1DLattice::getXi() const
-
-        """
+        r"""getXi(InterferenceFunction1DLattice self) -> double"""
         return _libBornAgainCore.InterferenceFunction1DLattice_getXi(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunction1DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunction1DLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunction1DLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunction1DLattice_getChildren(self)
 
 # Register InterferenceFunction1DLattice in _libBornAgainCore:
 _libBornAgainCore.InterferenceFunction1DLattice_swigregister(InterferenceFunction1DLattice)
 
 class InterferenceFunction2DLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a 2D lattice.
-
-    C++ includes: InterferenceFunction2DLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunction2DLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -7866,26 +6327,16 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         r"""
         __init__(InterferenceFunction2DLattice self, double length_1, double length_2, double alpha, double xi) -> InterferenceFunction2DLattice
         __init__(InterferenceFunction2DLattice self, Lattice2D lattice) -> InterferenceFunction2DLattice
-        InterferenceFunction2DLattice::InterferenceFunction2DLattice(const Lattice2D &lattice)
-
         """
         _libBornAgainCore.InterferenceFunction2DLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunction2DLattice(*args))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunction2DLattice self) -> InterferenceFunction2DLattice
-        InterferenceFunction2DLattice * InterferenceFunction2DLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunction2DLattice self) -> InterferenceFunction2DLattice"""
         return _libBornAgainCore.InterferenceFunction2DLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunction2DLattice self, INodeVisitor * visitor)
-        void InterferenceFunction2DLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunction2DLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunction2DLattice_accept(self, visitor)
 
     @staticmethod
@@ -7899,69 +6350,31 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         return _libBornAgainCore.InterferenceFunction2DLattice_createHexagonal(lattice_length, xi)
 
     def setDecayFunction(self, decay):
-        r"""
-        setDecayFunction(InterferenceFunction2DLattice self, IFTDecayFunction2D decay)
-        void InterferenceFunction2DLattice::setDecayFunction(const IFTDecayFunction2D &decay)
-
-        Sets two-dimensional decay function.
-
-        Parameters:
-        -----------
-
-        decay: 
-        two-dimensional decay function in reciprocal space 
-
-        """
+        r"""setDecayFunction(InterferenceFunction2DLattice self, IFTDecayFunction2D decay)"""
         return _libBornAgainCore.InterferenceFunction2DLattice_setDecayFunction(self, decay)
 
     def setIntegrationOverXi(self, integrate_xi):
-        r"""
-        setIntegrationOverXi(InterferenceFunction2DLattice self, bool integrate_xi)
-        void InterferenceFunction2DLattice::setIntegrationOverXi(bool integrate_xi)
-
-        """
+        r"""setIntegrationOverXi(InterferenceFunction2DLattice self, bool integrate_xi)"""
         return _libBornAgainCore.InterferenceFunction2DLattice_setIntegrationOverXi(self, integrate_xi)
 
     def integrationOverXi(self):
-        r"""
-        integrationOverXi(InterferenceFunction2DLattice self) -> bool
-        bool InterferenceFunction2DLattice::integrationOverXi() const
-
-        """
+        r"""integrationOverXi(InterferenceFunction2DLattice self) -> bool"""
         return _libBornAgainCore.InterferenceFunction2DLattice_integrationOverXi(self)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunction2DLattice self) -> Lattice2D
-        const Lattice2D & InterferenceFunction2DLattice::lattice() const
-
-        """
+        r"""lattice(InterferenceFunction2DLattice self) -> Lattice2D"""
         return _libBornAgainCore.InterferenceFunction2DLattice_lattice(self)
 
     def getParticleDensity(self):
-        r"""
-        getParticleDensity(InterferenceFunction2DLattice self) -> double
-        double InterferenceFunction2DLattice::getParticleDensity() const override final
-
-        Returns the particle density associated with this 2d lattice. 
-
-        """
+        r"""getParticleDensity(InterferenceFunction2DLattice self) -> double"""
         return _libBornAgainCore.InterferenceFunction2DLattice_getParticleDensity(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunction2DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunction2DLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunction2DLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunction2DLattice_getChildren(self)
 
     def onChange(self):
-        r"""
-        onChange(InterferenceFunction2DLattice self)
-        void InterferenceFunction2DLattice::onChange() override final
-
-        """
+        r"""onChange(InterferenceFunction2DLattice self)"""
         return _libBornAgainCore.InterferenceFunction2DLattice_onChange(self)
 
 # Register InterferenceFunction2DLattice in _libBornAgainCore:
@@ -7976,14 +6389,7 @@ def InterferenceFunction2DLattice_createHexagonal(lattice_length, xi):
     return _libBornAgainCore.InterferenceFunction2DLattice_createHexagonal(lattice_length, xi)
 
 class InterferenceFunction2DParaCrystal(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a 2D paracrystal.
-
-    C++ includes: InterferenceFunction2DParaCrystal.h
-
-    """
+    r"""Proxy of C++ InterferenceFunction2DParaCrystal class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -7992,46 +6398,16 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         r"""
         __init__(InterferenceFunction2DParaCrystal self, Lattice2D lattice, double damping_length, double domain_size_1, double domain_size_2) -> InterferenceFunction2DParaCrystal
         __init__(InterferenceFunction2DParaCrystal self, double length_1, double length_2, double alpha, double xi, double damping_length) -> InterferenceFunction2DParaCrystal
-        InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(double length_1, double length_2, double alpha, double xi, double damping_length)
-
-        Constructor of interference function of two-dimensional paracrystal.
-
-        Parameters:
-        -----------
-
-        length_1: 
-        length of first lattice vector in nanometers
-
-        length_2: 
-        length of second lattice vector in nanometers
-
-        alpha: 
-        angle between lattice vectors in radians
-
-        xi: 
-        rotation of lattice with respect to x-axis (beam direction) in radians
-
-        damping_length: 
-        the damping (coherence) length of the paracrystal in nanometers 
-
         """
         _libBornAgainCore.InterferenceFunction2DParaCrystal_swiginit(self, _libBornAgainCore.new_InterferenceFunction2DParaCrystal(*args))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DParaCrystal
 
     def clone(self):
-        r"""
-        clone(InterferenceFunction2DParaCrystal self) -> InterferenceFunction2DParaCrystal
-        InterferenceFunction2DParaCrystal * InterferenceFunction2DParaCrystal::clone() const override final
-
-        """
+        r"""clone(InterferenceFunction2DParaCrystal self) -> InterferenceFunction2DParaCrystal"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunction2DParaCrystal self, INodeVisitor * visitor)
-        void InterferenceFunction2DParaCrystal::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunction2DParaCrystal self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_accept(self, visitor)
 
     @staticmethod
@@ -8045,139 +6421,51 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_length, domain_size_1, domain_size_2)
 
     def setDomainSizes(self, size_1, size_2):
-        r"""
-        setDomainSizes(InterferenceFunction2DParaCrystal self, double size_1, double size_2)
-        void InterferenceFunction2DParaCrystal::setDomainSizes(double size_1, double size_2)
-
-        Sets the sizes of coherence domains.
-
-        Parameters:
-        -----------
-
-        size_1: 
-        coherence domain size along the first basis vector in nanometers
-
-        size_2: 
-        coherence domain size along the second basis vector in nanometers 
-
-        """
+        r"""setDomainSizes(InterferenceFunction2DParaCrystal self, double size_1, double size_2)"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_setDomainSizes(self, size_1, size_2)
 
     def setProbabilityDistributions(self, pdf_1, pdf_2):
-        r"""
-        setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)
-        void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)
-
-        Sets the probability distributions (Fourier transformed) for the two lattice directions.
-
-        Parameters:
-        -----------
-
-        pdf_1: 
-        probability distribution in first lattice direction
-
-        pdf_2: 
-        probability distribution in second lattice direction 
-
-        """
+        r"""setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_setProbabilityDistributions(self, pdf_1, pdf_2)
 
     def setDampingLength(self, damping_length):
-        r"""
-        setDampingLength(InterferenceFunction2DParaCrystal self, double damping_length)
-        void InterferenceFunction2DParaCrystal::setDampingLength(double damping_length)
-
-        Sets the damping length.
-
-        Parameters:
-        -----------
-
-        damping_length: 
-        the damping (coherence) length of the paracrystal in nanometers 
-
-        """
+        r"""setDampingLength(InterferenceFunction2DParaCrystal self, double damping_length)"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_setDampingLength(self, damping_length)
 
     def domainSizes(self):
-        r"""
-        domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t
-        std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const
-
-        """
+        r"""domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_domainSizes(self)
 
     def setIntegrationOverXi(self, integrate_xi):
-        r"""
-        setIntegrationOverXi(InterferenceFunction2DParaCrystal self, bool integrate_xi)
-        void InterferenceFunction2DParaCrystal::setIntegrationOverXi(bool integrate_xi)
-
-        Enables/disables averaging over the lattice rotation angle.
-
-        Parameters:
-        -----------
-
-        integrate_xi: 
-        integration flag 
-
-        """
+        r"""setIntegrationOverXi(InterferenceFunction2DParaCrystal self, bool integrate_xi)"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_setIntegrationOverXi(self, integrate_xi)
 
     def integrationOverXi(self):
-        r"""
-        integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool
-        bool InterferenceFunction2DParaCrystal::integrationOverXi() const
-
-        """
+        r"""integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_integrationOverXi(self)
 
     def dampingLength(self):
-        r"""
-        dampingLength(InterferenceFunction2DParaCrystal self) -> double
-        double InterferenceFunction2DParaCrystal::dampingLength() const
-
-        """
+        r"""dampingLength(InterferenceFunction2DParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_dampingLength(self)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D
-        const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const
-
-        """
+        r"""lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_lattice(self)
 
     def getParticleDensity(self):
-        r"""
-        getParticleDensity(InterferenceFunction2DParaCrystal self) -> double
-        double InterferenceFunction2DParaCrystal::getParticleDensity() const override final
-
-        If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-
-        """
+        r"""getParticleDensity(InterferenceFunction2DParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_getParticleDensity(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunction2DParaCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunction2DParaCrystal::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunction2DParaCrystal self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_getChildren(self)
 
     def pdf1(self):
-        r"""
-        pdf1(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D
-        const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf1() const
-
-        """
+        r"""pdf1(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_pdf1(self)
 
     def pdf2(self):
-        r"""
-        pdf2(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D
-        const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf2() const
-
-        """
+        r"""pdf2(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D"""
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_pdf2(self)
 
 # Register InterferenceFunction2DParaCrystal in _libBornAgainCore:
@@ -8192,14 +6480,7 @@ def InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_le
     return _libBornAgainCore.InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_length, domain_size_1, domain_size_2)
 
 class InterferenceFunction2DSuperLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a 2D superlattice with a configurable interference function for each lattice site.
-
-    C++ includes: InterferenceFunction2DSuperLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunction2DSuperLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -8208,65 +6489,24 @@ class InterferenceFunction2DSuperLattice(IInterferenceFunction):
         r"""
         __init__(InterferenceFunction2DSuperLattice self, Lattice2D lattice, unsigned int size_1, unsigned int size_2) -> InterferenceFunction2DSuperLattice
         __init__(InterferenceFunction2DSuperLattice self, double length_1, double length_2, double alpha, double xi, unsigned int size_1, unsigned int size_2) -> InterferenceFunction2DSuperLattice
-        InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(double length_1, double length_2, double alpha, double xi, unsigned size_1, unsigned size_2)
-
-        Constructor of two-dimensional interference function.
-
-        Parameters:
-        -----------
-
-        length_1: 
-        length of first lattice vector in nanometers
-
-        length_2: 
-        length of second lattice vector in nanometers
-
-        alpha: 
-        angle between lattice vectors in radians
-
-        xi: 
-        rotation of lattice with respect to x-axis (beam direction) in radians
-
-        size_1: 
-        correlation length in direction 1
-
-        size_2: 
-        correlation length in direction 2 
-
         """
         _libBornAgainCore.InterferenceFunction2DSuperLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunction2DSuperLattice(*args))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DSuperLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunction2DSuperLattice self) -> InterferenceFunction2DSuperLattice
-        InterferenceFunction2DSuperLattice * InterferenceFunction2DSuperLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunction2DSuperLattice self) -> InterferenceFunction2DSuperLattice"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunction2DSuperLattice self, INodeVisitor * visitor)
-        void InterferenceFunction2DSuperLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunction2DSuperLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_accept(self, visitor)
 
     def setSubstructureIFF(self, sub_iff):
-        r"""
-        setSubstructureIFF(InterferenceFunction2DSuperLattice self, IInterferenceFunction sub_iff)
-        void InterferenceFunction2DSuperLattice::setSubstructureIFF(const IInterferenceFunction &sub_iff)
-
-        """
+        r"""setSubstructureIFF(InterferenceFunction2DSuperLattice self, IInterferenceFunction sub_iff)"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_setSubstructureIFF(self, sub_iff)
 
     def substructureIFF(self):
-        r"""
-        substructureIFF(InterferenceFunction2DSuperLattice self) -> IInterferenceFunction
-        const IInterferenceFunction & InterferenceFunction2DSuperLattice::substructureIFF() const
-
-        """
+        r"""substructureIFF(InterferenceFunction2DSuperLattice self) -> IInterferenceFunction"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_substructureIFF(self)
 
     @staticmethod
@@ -8280,61 +6520,31 @@ class InterferenceFunction2DSuperLattice(IInterferenceFunction):
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_createHexagonal(lattice_length, xi, size_1, size_2)
 
     def evaluate(self, q, outer_iff=1.0):
-        r"""
-        evaluate(InterferenceFunction2DSuperLattice self, kvector_t q, double outer_iff=1.0) -> double
-        double InterferenceFunction2DSuperLattice::evaluate(const kvector_t q, double outer_iff=1.0) const override final
-
-        Evaluates the interference function for a given wavevector transfer. 
-
-        """
+        r"""evaluate(InterferenceFunction2DSuperLattice self, kvector_t q, double outer_iff=1.0) -> double"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_evaluate(self, q, outer_iff)
 
     def domainSize1(self):
-        r"""
-        domainSize1(InterferenceFunction2DSuperLattice self) -> unsigned int
-        unsigned InterferenceFunction2DSuperLattice::domainSize1() const
-
-        """
+        r"""domainSize1(InterferenceFunction2DSuperLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_domainSize1(self)
 
     def domainSize2(self):
-        r"""
-        domainSize2(InterferenceFunction2DSuperLattice self) -> unsigned int
-        unsigned InterferenceFunction2DSuperLattice::domainSize2() const
-
-        """
+        r"""domainSize2(InterferenceFunction2DSuperLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_domainSize2(self)
 
     def setIntegrationOverXi(self, integrate_xi):
-        r"""
-        setIntegrationOverXi(InterferenceFunction2DSuperLattice self, bool integrate_xi)
-        void InterferenceFunction2DSuperLattice::setIntegrationOverXi(bool integrate_xi)
-
-        """
+        r"""setIntegrationOverXi(InterferenceFunction2DSuperLattice self, bool integrate_xi)"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_setIntegrationOverXi(self, integrate_xi)
 
     def integrationOverXi(self):
-        r"""
-        integrationOverXi(InterferenceFunction2DSuperLattice self) -> bool
-        bool InterferenceFunction2DSuperLattice::integrationOverXi() const
-
-        """
+        r"""integrationOverXi(InterferenceFunction2DSuperLattice self) -> bool"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_integrationOverXi(self)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunction2DSuperLattice self) -> Lattice2D
-        const Lattice2D & InterferenceFunction2DSuperLattice::lattice() const
-
-        """
+        r"""lattice(InterferenceFunction2DSuperLattice self) -> Lattice2D"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_lattice(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunction2DSuperLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunction2DSuperLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunction2DSuperLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunction2DSuperLattice_getChildren(self)
 
 # Register InterferenceFunction2DSuperLattice in _libBornAgainCore:
@@ -8349,97 +6559,49 @@ def InterferenceFunction2DSuperLattice_createHexagonal(lattice_length, xi, size_
     return _libBornAgainCore.InterferenceFunction2DSuperLattice_createHexagonal(lattice_length, xi, size_1, size_2)
 
 class InterferenceFunction3DLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a 3D lattice.
-
-    C++ includes: InterferenceFunction3DLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunction3DLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, lattice):
-        r"""
-        __init__(InterferenceFunction3DLattice self, Lattice lattice) -> InterferenceFunction3DLattice
-        InterferenceFunction3DLattice::InterferenceFunction3DLattice(const Lattice &lattice)
-
-        """
+        r"""__init__(InterferenceFunction3DLattice self, Lattice lattice) -> InterferenceFunction3DLattice"""
         _libBornAgainCore.InterferenceFunction3DLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunction3DLattice(lattice))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction3DLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunction3DLattice self) -> InterferenceFunction3DLattice
-        InterferenceFunction3DLattice * InterferenceFunction3DLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunction3DLattice self) -> InterferenceFunction3DLattice"""
         return _libBornAgainCore.InterferenceFunction3DLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunction3DLattice self, INodeVisitor * visitor)
-        void InterferenceFunction3DLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunction3DLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunction3DLattice_accept(self, visitor)
 
     def setPeakShape(self, peak_shape):
-        r"""
-        setPeakShape(InterferenceFunction3DLattice self, IPeakShape peak_shape)
-        void InterferenceFunction3DLattice::setPeakShape(const IPeakShape &peak_shape)
-
-        """
+        r"""setPeakShape(InterferenceFunction3DLattice self, IPeakShape peak_shape)"""
         return _libBornAgainCore.InterferenceFunction3DLattice_setPeakShape(self, peak_shape)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunction3DLattice self) -> Lattice
-        const Lattice & InterferenceFunction3DLattice::lattice() const
-
-        """
+        r"""lattice(InterferenceFunction3DLattice self) -> Lattice"""
         return _libBornAgainCore.InterferenceFunction3DLattice_lattice(self)
 
     def supportsMultilayer(self):
-        r"""
-        supportsMultilayer(InterferenceFunction3DLattice self) -> bool
-        bool InterferenceFunction3DLattice::supportsMultilayer() const override final
-
-        Indicates if this interference function can be used with a multilayer (DWBA mode) 
-
-        """
+        r"""supportsMultilayer(InterferenceFunction3DLattice self) -> bool"""
         return _libBornAgainCore.InterferenceFunction3DLattice_supportsMultilayer(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunction3DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunction3DLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunction3DLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunction3DLattice_getChildren(self)
 
     def onChange(self):
-        r"""
-        onChange(InterferenceFunction3DLattice self)
-        void InterferenceFunction3DLattice::onChange() override final
-
-        """
+        r"""onChange(InterferenceFunction3DLattice self)"""
         return _libBornAgainCore.InterferenceFunction3DLattice_onChange(self)
 
 # Register InterferenceFunction3DLattice in _libBornAgainCore:
 _libBornAgainCore.InterferenceFunction3DLattice_swigregister(InterferenceFunction3DLattice)
 
 class InterferenceFunctionFinite2DLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a finite 2D lattice.
-
-    C++ includes: InterferenceFunctionFinite2DLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionFinite2DLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -8448,49 +6610,16 @@ class InterferenceFunctionFinite2DLattice(IInterferenceFunction):
         r"""
         __init__(InterferenceFunctionFinite2DLattice self, Lattice2D lattice, unsigned int N_1, unsigned int N_2) -> InterferenceFunctionFinite2DLattice
         __init__(InterferenceFunctionFinite2DLattice self, double length_1, double length_2, double alpha, double xi, unsigned int N_1, unsigned int N_2) -> InterferenceFunctionFinite2DLattice
-        InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(double length_1, double length_2, double alpha, double xi, unsigned N_1, unsigned N_2)
-
-        Constructor of two-dimensional finite lattice interference function.
-
-        Parameters:
-        -----------
-
-        length_1: 
-        length of first lattice vector in nanometers
-
-        length_2: 
-        length of second lattice vector in nanometers
-
-        alpha: 
-        angle between lattice vectors in radians
-
-        xi: 
-        rotation of lattice with respect to x-axis (beam direction) in radians
-
-        N_1: 
-        number of lattice cells in the first lattice direction
-
-        N_2: 
-        number of lattice cells in the second lattice direction 
-
         """
         _libBornAgainCore.InterferenceFunctionFinite2DLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunctionFinite2DLattice(*args))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionFinite2DLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionFinite2DLattice self) -> InterferenceFunctionFinite2DLattice
-        InterferenceFunctionFinite2DLattice * InterferenceFunctionFinite2DLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionFinite2DLattice self) -> InterferenceFunctionFinite2DLattice"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionFinite2DLattice self, INodeVisitor * visitor)
-        void InterferenceFunctionFinite2DLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionFinite2DLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_accept(self, visitor)
 
     @staticmethod
@@ -8504,61 +6633,31 @@ class InterferenceFunctionFinite2DLattice(IInterferenceFunction):
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_createHexagonal(lattice_length, xi, N_1, N_2)
 
     def numberUnitCells1(self):
-        r"""
-        numberUnitCells1(InterferenceFunctionFinite2DLattice self) -> unsigned int
-        unsigned InterferenceFunctionFinite2DLattice::numberUnitCells1() const
-
-        """
+        r"""numberUnitCells1(InterferenceFunctionFinite2DLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_numberUnitCells1(self)
 
     def numberUnitCells2(self):
-        r"""
-        numberUnitCells2(InterferenceFunctionFinite2DLattice self) -> unsigned int
-        unsigned InterferenceFunctionFinite2DLattice::numberUnitCells2() const
-
-        """
+        r"""numberUnitCells2(InterferenceFunctionFinite2DLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_numberUnitCells2(self)
 
     def setIntegrationOverXi(self, integrate_xi):
-        r"""
-        setIntegrationOverXi(InterferenceFunctionFinite2DLattice self, bool integrate_xi)
-        void InterferenceFunctionFinite2DLattice::setIntegrationOverXi(bool integrate_xi)
-
-        """
+        r"""setIntegrationOverXi(InterferenceFunctionFinite2DLattice self, bool integrate_xi)"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_setIntegrationOverXi(self, integrate_xi)
 
     def integrationOverXi(self):
-        r"""
-        integrationOverXi(InterferenceFunctionFinite2DLattice self) -> bool
-        bool InterferenceFunctionFinite2DLattice::integrationOverXi() const
-
-        """
+        r"""integrationOverXi(InterferenceFunctionFinite2DLattice self) -> bool"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_integrationOverXi(self)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunctionFinite2DLattice self) -> Lattice2D
-        const Lattice2D & InterferenceFunctionFinite2DLattice::lattice() const
-
-        """
+        r"""lattice(InterferenceFunctionFinite2DLattice self) -> Lattice2D"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_lattice(self)
 
     def getParticleDensity(self):
-        r"""
-        getParticleDensity(InterferenceFunctionFinite2DLattice self) -> double
-        double InterferenceFunctionFinite2DLattice::getParticleDensity() const override final
-
-        Returns the particle density associated with this 2d lattice. 
-
-        """
+        r"""getParticleDensity(InterferenceFunctionFinite2DLattice self) -> double"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_getParticleDensity(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunctionFinite2DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunctionFinite2DLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunctionFinite2DLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunctionFinite2DLattice_getChildren(self)
 
 # Register InterferenceFunctionFinite2DLattice in _libBornAgainCore:
@@ -8573,200 +6672,101 @@ def InterferenceFunctionFinite2DLattice_createHexagonal(lattice_length, xi, N_1,
     return _libBornAgainCore.InterferenceFunctionFinite2DLattice_createHexagonal(lattice_length, xi, N_1, N_2)
 
 class InterferenceFunctionFinite3DLattice(IInterferenceFunction):
-    r"""
-
-
-    Interference function of a finite 3D lattice.
-
-    C++ includes: InterferenceFunctionFinite3DLattice.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionFinite3DLattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, lattice, N_1, N_2, N_3):
-        r"""
-        __init__(InterferenceFunctionFinite3DLattice self, Lattice lattice, unsigned int N_1, unsigned int N_2, unsigned int N_3) -> InterferenceFunctionFinite3DLattice
-        InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice(const Lattice &lattice, unsigned N_1, unsigned N_2, unsigned N_3)
-
-        """
+        r"""__init__(InterferenceFunctionFinite3DLattice self, Lattice lattice, unsigned int N_1, unsigned int N_2, unsigned int N_3) -> InterferenceFunctionFinite3DLattice"""
         _libBornAgainCore.InterferenceFunctionFinite3DLattice_swiginit(self, _libBornAgainCore.new_InterferenceFunctionFinite3DLattice(lattice, N_1, N_2, N_3))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionFinite3DLattice
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionFinite3DLattice self) -> InterferenceFunctionFinite3DLattice
-        InterferenceFunctionFinite3DLattice * InterferenceFunctionFinite3DLattice::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionFinite3DLattice self) -> InterferenceFunctionFinite3DLattice"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionFinite3DLattice self, INodeVisitor * visitor)
-        void InterferenceFunctionFinite3DLattice::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionFinite3DLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_accept(self, visitor)
 
     def numberUnitCells1(self):
-        r"""
-        numberUnitCells1(InterferenceFunctionFinite3DLattice self) -> unsigned int
-        unsigned InterferenceFunctionFinite3DLattice::numberUnitCells1() const
-
-        """
+        r"""numberUnitCells1(InterferenceFunctionFinite3DLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_numberUnitCells1(self)
 
     def numberUnitCells2(self):
-        r"""
-        numberUnitCells2(InterferenceFunctionFinite3DLattice self) -> unsigned int
-        unsigned InterferenceFunctionFinite3DLattice::numberUnitCells2() const
-
-        """
+        r"""numberUnitCells2(InterferenceFunctionFinite3DLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_numberUnitCells2(self)
 
     def numberUnitCells3(self):
-        r"""
-        numberUnitCells3(InterferenceFunctionFinite3DLattice self) -> unsigned int
-        unsigned InterferenceFunctionFinite3DLattice::numberUnitCells3() const
-
-        """
+        r"""numberUnitCells3(InterferenceFunctionFinite3DLattice self) -> unsigned int"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_numberUnitCells3(self)
 
     def lattice(self):
-        r"""
-        lattice(InterferenceFunctionFinite3DLattice self) -> Lattice
-        const Lattice & InterferenceFunctionFinite3DLattice::lattice() const
-
-        """
+        r"""lattice(InterferenceFunctionFinite3DLattice self) -> Lattice"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_lattice(self)
 
     def supportsMultilayer(self):
-        r"""
-        supportsMultilayer(InterferenceFunctionFinite3DLattice self) -> bool
-        bool InterferenceFunctionFinite3DLattice::supportsMultilayer() const override final
-
-        Indicates if this interference function can be used with a multilayer (DWBA mode) 
-
-        """
+        r"""supportsMultilayer(InterferenceFunctionFinite3DLattice self) -> bool"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_supportsMultilayer(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunctionFinite3DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunctionFinite3DLattice::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunctionFinite3DLattice self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunctionFinite3DLattice_getChildren(self)
 
 # Register InterferenceFunctionFinite3DLattice in _libBornAgainCore:
 _libBornAgainCore.InterferenceFunctionFinite3DLattice_swigregister(InterferenceFunctionFinite3DLattice)
 
 class InterferenceFunctionHardDisk(IInterferenceFunction):
-    r"""
-
-
-    Percus-Yevick hard disk interference function.
-
-    M.S. Ripoll & C.F. Tejero (1995) Approximate analytical expression for the direct correlation function of hard discs within the Percus-Yevick equation, Molecular Physics, 85:2, 423-428, DOI: 10.1080/00268979500101211
-
-    C++ includes: InterferenceFunctionHardDisk.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionHardDisk class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, radius, density, position_var=0):
-        r"""
-        __init__(InterferenceFunctionHardDisk self, double radius, double density, double position_var=0) -> InterferenceFunctionHardDisk
-        InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(double radius, double density, double position_var=0)
-
-        """
+        r"""__init__(InterferenceFunctionHardDisk self, double radius, double density, double position_var=0) -> InterferenceFunctionHardDisk"""
         _libBornAgainCore.InterferenceFunctionHardDisk_swiginit(self, _libBornAgainCore.new_InterferenceFunctionHardDisk(radius, density, position_var))
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionHardDisk
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionHardDisk self) -> InterferenceFunctionHardDisk
-        InterferenceFunctionHardDisk * InterferenceFunctionHardDisk::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionHardDisk self) -> InterferenceFunctionHardDisk"""
         return _libBornAgainCore.InterferenceFunctionHardDisk_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionHardDisk self, INodeVisitor * visitor)
-        void InterferenceFunctionHardDisk::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionHardDisk self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionHardDisk_accept(self, visitor)
 
     def getParticleDensity(self):
-        r"""
-        getParticleDensity(InterferenceFunctionHardDisk self) -> double
-        double InterferenceFunctionHardDisk::getParticleDensity() const override final
-
-        If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
-
-        """
+        r"""getParticleDensity(InterferenceFunctionHardDisk self) -> double"""
         return _libBornAgainCore.InterferenceFunctionHardDisk_getParticleDensity(self)
 
     def radius(self):
-        r"""
-        radius(InterferenceFunctionHardDisk self) -> double
-        double InterferenceFunctionHardDisk::radius() const
-
-        """
+        r"""radius(InterferenceFunctionHardDisk self) -> double"""
         return _libBornAgainCore.InterferenceFunctionHardDisk_radius(self)
 
     def density(self):
-        r"""
-        density(InterferenceFunctionHardDisk self) -> double
-        double InterferenceFunctionHardDisk::density() const
-
-        """
+        r"""density(InterferenceFunctionHardDisk self) -> double"""
         return _libBornAgainCore.InterferenceFunctionHardDisk_density(self)
 
 # Register InterferenceFunctionHardDisk in _libBornAgainCore:
 _libBornAgainCore.InterferenceFunctionHardDisk_swigregister(InterferenceFunctionHardDisk)
 
 class InterferenceFunctionNone(IInterferenceFunction):
-    r"""
-
-
-    Default interference function (i.e. absence of any interference).
-
-    C++ includes: InterferenceFunctionNone.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionNone class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self):
-        r"""
-        __init__(InterferenceFunctionNone self) -> InterferenceFunctionNone
-        InterferenceFunctionNone::InterferenceFunctionNone()
-
-        """
+        r"""__init__(InterferenceFunctionNone self) -> InterferenceFunctionNone"""
         _libBornAgainCore.InterferenceFunctionNone_swiginit(self, _libBornAgainCore.new_InterferenceFunctionNone())
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionNone self) -> InterferenceFunctionNone
-        InterferenceFunctionNone * InterferenceFunctionNone::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionNone self) -> InterferenceFunctionNone"""
         return _libBornAgainCore.InterferenceFunctionNone_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionNone self, INodeVisitor * visitor)
-        void InterferenceFunctionNone::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionNone self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionNone_accept(self, visitor)
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionNone
 
@@ -8774,149 +6774,61 @@ class InterferenceFunctionNone(IInterferenceFunction):
 _libBornAgainCore.InterferenceFunctionNone_swigregister(InterferenceFunctionNone)
 
 class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
-    r"""
-
-
-    Interference function of radial paracrystal.
-
-    C++ includes: InterferenceFunctionRadialParaCrystal.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionRadialParaCrystal class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, peak_distance, damping_length):
-        r"""
-        __init__(InterferenceFunctionRadialParaCrystal self, double peak_distance, double damping_length) -> InterferenceFunctionRadialParaCrystal
-        InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(double peak_distance, double damping_length)
-
-        Constructor of interference function of radial paracrystal.
-
-        Parameters:
-        -----------
-
-        peak_distance: 
-        average distance to the next neighbor in nanometers
-
-        damping_length: 
-        the damping (coherence) length of the paracrystal in nanometers 
-
-        """
+        r"""__init__(InterferenceFunctionRadialParaCrystal self, double peak_distance, double damping_length) -> InterferenceFunctionRadialParaCrystal"""
         _libBornAgainCore.InterferenceFunctionRadialParaCrystal_swiginit(self, _libBornAgainCore.new_InterferenceFunctionRadialParaCrystal(peak_distance, damping_length))
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionRadialParaCrystal self) -> InterferenceFunctionRadialParaCrystal
-        InterferenceFunctionRadialParaCrystal * InterferenceFunctionRadialParaCrystal::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionRadialParaCrystal self) -> InterferenceFunctionRadialParaCrystal"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionRadialParaCrystal self, INodeVisitor * visitor)
-        void InterferenceFunctionRadialParaCrystal::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionRadialParaCrystal self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_accept(self, visitor)
 
     def setKappa(self, kappa):
-        r"""
-        setKappa(InterferenceFunctionRadialParaCrystal self, double kappa)
-        void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)
-
-        Sets size spacing coupling parameter of the Size Spacing Correlation Approximation. 
-
-        """
+        r"""setKappa(InterferenceFunctionRadialParaCrystal self, double kappa)"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_setKappa(self, kappa)
 
     def kappa(self):
-        r"""
-        kappa(InterferenceFunctionRadialParaCrystal self) -> double
-        double InterferenceFunctionRadialParaCrystal::kappa() const
-
-        """
+        r"""kappa(InterferenceFunctionRadialParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_kappa(self)
 
     def setDomainSize(self, size):
-        r"""
-        setDomainSize(InterferenceFunctionRadialParaCrystal self, double size)
-        void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)
-
-        Sets domain size (finite size corrections).
-
-        Parameters:
-        -----------
-
-        size: 
-        size of coherence domain along the lattice main axis in nanometers 
-
-        """
+        r"""setDomainSize(InterferenceFunctionRadialParaCrystal self, double size)"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_setDomainSize(self, size)
 
     def domainSize(self):
-        r"""
-        domainSize(InterferenceFunctionRadialParaCrystal self) -> double
-        double InterferenceFunctionRadialParaCrystal::domainSize() const
-
-        """
+        r"""domainSize(InterferenceFunctionRadialParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_domainSize(self)
 
     def FTPDF(self, qpar):
-        r"""
-        FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t
-        complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const
-
-        """
+        r"""FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_FTPDF(self, qpar)
 
     def setProbabilityDistribution(self, pdf):
-        r"""
-        setProbabilityDistribution(InterferenceFunctionRadialParaCrystal self, IFTDistribution1D pdf)
-        void InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(const IFTDistribution1D &pdf)
-
-        Sets one-dimensional probability distribution.
-
-        Parameters:
-        -----------
-
-        pdf: 
-        probability distribution (Fourier transform of probability density) 
-
-        """
+        r"""setProbabilityDistribution(InterferenceFunctionRadialParaCrystal self, IFTDistribution1D pdf)"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_setProbabilityDistribution(self, pdf)
 
     def peakDistance(self):
-        r"""
-        peakDistance(InterferenceFunctionRadialParaCrystal self) -> double
-        double InterferenceFunctionRadialParaCrystal::peakDistance() const
-
-        """
+        r"""peakDistance(InterferenceFunctionRadialParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_peakDistance(self)
 
     def dampingLength(self):
-        r"""
-        dampingLength(InterferenceFunctionRadialParaCrystal self) -> double
-        double InterferenceFunctionRadialParaCrystal::dampingLength() const
-
-        """
+        r"""dampingLength(InterferenceFunctionRadialParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_dampingLength(self)
 
     def getChildren(self):
-        r"""
-        getChildren(InterferenceFunctionRadialParaCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFunctionRadialParaCrystal::getChildren() const override final
-
-        """
+        r"""getChildren(InterferenceFunctionRadialParaCrystal self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_getChildren(self)
 
     def randomSample(self):
-        r"""
-        randomSample(InterferenceFunctionRadialParaCrystal self) -> double
-        double InterferenceFunctionRadialParaCrystal::randomSample() const
-
-        """
+        r"""randomSample(InterferenceFunctionRadialParaCrystal self) -> double"""
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_randomSample(self)
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionRadialParaCrystal
 
@@ -8924,64 +6836,33 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
 _libBornAgainCore.InterferenceFunctionRadialParaCrystal_swigregister(InterferenceFunctionRadialParaCrystal)
 
 class InterferenceFunctionTwin(IInterferenceFunction):
-    r"""
-
-
-    Interference function for two particles at a mean distance and given standard deviation from each other in a given direction.
-
-    C++ includes: InterferenceFunctionTwin.h
-
-    """
+    r"""Proxy of C++ InterferenceFunctionTwin class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, direction, mean_distance, std_dev):
-        r"""
-        __init__(InterferenceFunctionTwin self, kvector_t direction, double mean_distance, double std_dev) -> InterferenceFunctionTwin
-        InterferenceFunctionTwin::InterferenceFunctionTwin(const kvector_t &direction, double mean_distance, double std_dev)
-
-        """
+        r"""__init__(InterferenceFunctionTwin self, kvector_t direction, double mean_distance, double std_dev) -> InterferenceFunctionTwin"""
         _libBornAgainCore.InterferenceFunctionTwin_swiginit(self, _libBornAgainCore.new_InterferenceFunctionTwin(direction, mean_distance, std_dev))
 
     def clone(self):
-        r"""
-        clone(InterferenceFunctionTwin self) -> InterferenceFunctionTwin
-        InterferenceFunctionTwin * InterferenceFunctionTwin::clone() const override final
-
-        """
+        r"""clone(InterferenceFunctionTwin self) -> InterferenceFunctionTwin"""
         return _libBornAgainCore.InterferenceFunctionTwin_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(InterferenceFunctionTwin self, INodeVisitor * visitor)
-        void InterferenceFunctionTwin::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(InterferenceFunctionTwin self, INodeVisitor * visitor)"""
         return _libBornAgainCore.InterferenceFunctionTwin_accept(self, visitor)
 
-    def direction(self):
-        r"""
-        direction(InterferenceFunctionTwin self) -> kvector_t
-        kvector_t InterferenceFunctionTwin::direction() const
-
-        """
+    def direction(self):
+        r"""direction(InterferenceFunctionTwin self) -> kvector_t"""
         return _libBornAgainCore.InterferenceFunctionTwin_direction(self)
 
     def meanDistance(self):
-        r"""
-        meanDistance(InterferenceFunctionTwin self) -> double
-        double InterferenceFunctionTwin::meanDistance() const
-
-        """
+        r"""meanDistance(InterferenceFunctionTwin self) -> double"""
         return _libBornAgainCore.InterferenceFunctionTwin_meanDistance(self)
 
     def stdDev(self):
-        r"""
-        stdDev(InterferenceFunctionTwin self) -> double
-        double InterferenceFunctionTwin::stdDev() const
-
-        """
+        r"""stdDev(InterferenceFunctionTwin self) -> double"""
         return _libBornAgainCore.InterferenceFunctionTwin_stdDev(self)
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunctionTwin
 
@@ -8989,14 +6870,7 @@ class InterferenceFunctionTwin(IInterferenceFunction):
 _libBornAgainCore.InterferenceFunctionTwin_swigregister(InterferenceFunctionTwin)
 
 class ParticleLayout(ILayout):
-    r"""
-
-
-    Decorator class that adds particles to ISample objects.
-
-    C++ includes: ParticleLayout.h
-
-    """
+    r"""Proxy of C++ ParticleLayout class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -9005,125 +6879,48 @@ class ParticleLayout(ILayout):
         r"""
         __init__(ParticleLayout self) -> ParticleLayout
         __init__(ParticleLayout self, IAbstractParticle particle, double abundance=-1.0) -> ParticleLayout
-        ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance=-1.0)
-
         """
         _libBornAgainCore.ParticleLayout_swiginit(self, _libBornAgainCore.new_ParticleLayout(*args))
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLayout
 
     def clone(self):
-        r"""
-        clone(ParticleLayout self) -> ParticleLayout
-        ParticleLayout * ParticleLayout::clone() const final override
-
-        """
+        r"""clone(ParticleLayout self) -> ParticleLayout"""
         return _libBornAgainCore.ParticleLayout_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(ParticleLayout self, INodeVisitor * visitor)
-        void ParticleLayout::accept(INodeVisitor *visitor) const final override
-
-        """
+        r"""accept(ParticleLayout self, INodeVisitor * visitor)"""
         return _libBornAgainCore.ParticleLayout_accept(self, visitor)
 
     def addParticle(self, *args):
-        r"""
-        addParticle(ParticleLayout self, IAbstractParticle particle, double abundance=-1.0, kvector_t position={}, IRotation rotation=IdentityRotation())
-        void ParticleLayout::addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())
-
-        Adds particle to the layout with abundance, position and the rotation defined.
-
-        Parameters:
-        -----------
-
-        particle: 
-        to be added
-
-        abundance: 
-         Particle abundance
-
-        position: 
-         Particle position
-
-        rotation: 
-         Particle rotation 
-
-        """
+        r"""addParticle(ParticleLayout self, IAbstractParticle particle, double abundance=-1.0, kvector_t position={}, IRotation rotation=IdentityRotation())"""
         return _libBornAgainCore.ParticleLayout_addParticle(self, *args)
 
     def particles(self):
-        r"""
-        particles(ParticleLayout self) -> SafePointerVector< IParticle >
-        SafePointerVector< IParticle > ParticleLayout::particles() const final override
-
-        Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
-
-        """
+        r"""particles(ParticleLayout self) -> SafePointerVector< IParticle >"""
         return _libBornAgainCore.ParticleLayout_particles(self)
 
     def interferenceFunction(self):
-        r"""
-        interferenceFunction(ParticleLayout self) -> IInterferenceFunction
-        const IInterferenceFunction * ParticleLayout::interferenceFunction() const final override
-
-        Returns the interference function. 
-
-        """
+        r"""interferenceFunction(ParticleLayout self) -> IInterferenceFunction"""
         return _libBornAgainCore.ParticleLayout_interferenceFunction(self)
 
     def getTotalAbundance(self):
-        r"""
-        getTotalAbundance(ParticleLayout self) -> double
-        double ParticleLayout::getTotalAbundance() const final override
-
-        Get total abundance of all particles. 
-
-        """
+        r"""getTotalAbundance(ParticleLayout self) -> double"""
         return _libBornAgainCore.ParticleLayout_getTotalAbundance(self)
 
     def setInterferenceFunction(self, interference_function):
-        r"""
-        setInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)
-        void ParticleLayout::setInterferenceFunction(const IInterferenceFunction &interference_function)
-
-        Adds interference functions. 
-
-        """
+        r"""setInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)"""
         return _libBornAgainCore.ParticleLayout_setInterferenceFunction(self, interference_function)
 
     def totalParticleSurfaceDensity(self):
-        r"""
-        totalParticleSurfaceDensity(ParticleLayout self) -> double
-        double ParticleLayout::totalParticleSurfaceDensity() const final override
-
-        Returns surface density of all particles. 
-
-        """
+        r"""totalParticleSurfaceDensity(ParticleLayout self) -> double"""
         return _libBornAgainCore.ParticleLayout_totalParticleSurfaceDensity(self)
 
     def setTotalParticleSurfaceDensity(self, particle_density):
-        r"""
-        setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)
-        void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override
-
-        Sets total particle surface density.
-
-        Parameters:
-        -----------
-
-        particle_density: 
-        number of particles per square nanometer 
-
-        """
+        r"""setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)"""
         return _libBornAgainCore.ParticleLayout_setTotalParticleSurfaceDensity(self, particle_density)
 
     def getChildren(self):
-        r"""
-        getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleLayout::getChildren() const final override
-
-        """
+        r"""getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.ParticleLayout_getChildren(self)
 
 # Register ParticleLayout in _libBornAgainCore:
@@ -9562,158 +7359,73 @@ class ISampleBuilder(libBornAgainParam.IParameterized):
 _libBornAgainCore.ISampleBuilder_swigregister(ISampleBuilder)
 
 class Layer(ISample):
-    r"""
-
-
-    A layer, with thickness (in nanometer) and material.
-
-    C++ includes: Layer.h
-
-    """
+    r"""Proxy of C++ Layer class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, material, thickness=0):
-        r"""
-        __init__(Layer self, Material material, double thickness=0) -> Layer
-        Layer::Layer(Material material, double thickness=0)
-
-        Constructor of a layer with thickness and material
-
-        Parameters:
-        -----------
-
-        material: 
-        material the layer is made of
-
-        thickness: 
-        thickness of a layer in nanometers 
-
-        """
+        r"""__init__(Layer self, Material material, double thickness=0) -> Layer"""
         _libBornAgainCore.Layer_swiginit(self, _libBornAgainCore.new_Layer(material, thickness))
     __swig_destroy__ = _libBornAgainCore.delete_Layer
 
     def clone(self):
-        r"""
-        clone(Layer self) -> Layer
-        Layer * Layer::clone() const override final
-
-        """
+        r"""clone(Layer self) -> Layer"""
         return _libBornAgainCore.Layer_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(Layer self, INodeVisitor * visitor)
-        void Layer::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(Layer self, INodeVisitor * visitor)"""
         return _libBornAgainCore.Layer_accept(self, visitor)
 
     def setThickness(self, thickness):
-        r"""
-        setThickness(Layer self, double thickness)
-        void Layer::setThickness(double thickness)
-
-        Sets layer thickness in nanometers. 
-
-        """
+        r"""setThickness(Layer self, double thickness)"""
         return _libBornAgainCore.Layer_setThickness(self, thickness)
 
     def thickness(self):
-        r"""
-        thickness(Layer self) -> double
-        double Layer::thickness() const
-
-        """
+        r"""thickness(Layer self) -> double"""
         return _libBornAgainCore.Layer_thickness(self)
 
     def material(self):
-        r"""
-        material(Layer self) -> Material
-        const Material* Layer::material() const override final
-
-        """
+        r"""material(Layer self) -> Material"""
         return _libBornAgainCore.Layer_material(self)
 
     def setMaterial(self, material):
-        r"""
-        setMaterial(Layer self, Material material)
-        void Layer::setMaterial(Material material)
-
-        """
+        r"""setMaterial(Layer self, Material material)"""
         return _libBornAgainCore.Layer_setMaterial(self, material)
 
     def addLayout(self, decoration):
-        r"""
-        addLayout(Layer self, ILayout decoration)
-        void Layer::addLayout(const ILayout &decoration)
-
-        """
+        r"""addLayout(Layer self, ILayout decoration)"""
         return _libBornAgainCore.Layer_addLayout(self, decoration)
 
     def numberOfLayouts(self):
-        r"""
-        numberOfLayouts(Layer self) -> size_t
-        size_t Layer::numberOfLayouts() const
-
-        """
+        r"""numberOfLayouts(Layer self) -> size_t"""
         return _libBornAgainCore.Layer_numberOfLayouts(self)
 
     def layouts(self):
-        r"""
-        layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >
-        std::vector< const ILayout * > Layer::layouts() const
-
-        """
+        r"""layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >"""
         return _libBornAgainCore.Layer_layouts(self)
 
     def getChildren(self):
-        r"""
-        getChildren(Layer self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Layer::getChildren() const override final
-
-        """
+        r"""getChildren(Layer self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.Layer_getChildren(self)
 
     def registerThickness(self, make_registered=True):
-        r"""
-        registerThickness(Layer self, bool make_registered=True)
-        void Layer::registerThickness(bool make_registered=true)
-
-        """
+        r"""registerThickness(Layer self, bool make_registered=True)"""
         return _libBornAgainCore.Layer_registerThickness(self, make_registered)
 
     def setNumberOfSlices(self, n_slices):
-        r"""
-        setNumberOfSlices(Layer self, unsigned int n_slices)
-        void Layer::setNumberOfSlices(unsigned int n_slices)
-
-        """
+        r"""setNumberOfSlices(Layer self, unsigned int n_slices)"""
         return _libBornAgainCore.Layer_setNumberOfSlices(self, n_slices)
 
     def numberOfSlices(self):
-        r"""
-        numberOfSlices(Layer self) -> unsigned int
-        unsigned int Layer::numberOfSlices() const
-
-        """
+        r"""numberOfSlices(Layer self) -> unsigned int"""
         return _libBornAgainCore.Layer_numberOfSlices(self)
 
 # Register Layer in _libBornAgainCore:
 _libBornAgainCore.Layer_swigregister(Layer)
 
 class LayerRoughness(ISample):
-    r"""
-
-
-    A roughness of interface between two layers.
-
-    Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 "X-ray reflection and transmission by rough surfaces"
-
-    C++ includes: LayerRoughness.h
-
-    """
+    r"""Proxy of C++ LayerRoughness class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -9722,109 +7434,47 @@ class LayerRoughness(ISample):
         r"""
         __init__(LayerRoughness self, double sigma, double hurstParameter, double lateralCorrLength) -> LayerRoughness
         __init__(LayerRoughness self) -> LayerRoughness
-        LayerRoughness::LayerRoughness()
-
         """
         _libBornAgainCore.LayerRoughness_swiginit(self, _libBornAgainCore.new_LayerRoughness(*args))
 
     def clone(self):
-        r"""
-        clone(LayerRoughness self) -> LayerRoughness
-        LayerRoughness* LayerRoughness::clone() const
-
-        """
+        r"""clone(LayerRoughness self) -> LayerRoughness"""
         return _libBornAgainCore.LayerRoughness_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(LayerRoughness self, INodeVisitor * visitor)
-        virtual void LayerRoughness::accept(INodeVisitor *visitor) const
-
-        """
+        r"""accept(LayerRoughness self, INodeVisitor * visitor)"""
         return _libBornAgainCore.LayerRoughness_accept(self, visitor)
 
     def getSpectralFun(self, kvec):
-        r"""
-        getSpectralFun(LayerRoughness self, kvector_t kvec) -> double
-        double LayerRoughness::getSpectralFun(const kvector_t kvec) const
-
-        Returns power spectral density of the surface roughness.
-
-        Power spectral density of the surface roughness is a result of two-dimensional Fourier transform of the correlation function of the roughness profile.
-
-        Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 "X-ray reflection and transmission by rough surfaces" 
-
-        """
+        r"""getSpectralFun(LayerRoughness self, kvector_t kvec) -> double"""
         return _libBornAgainCore.LayerRoughness_getSpectralFun(self, kvec)
 
     def getCorrFun(self, k):
-        r"""
-        getCorrFun(LayerRoughness self, kvector_t k) -> double
-        double LayerRoughness::getCorrFun(const kvector_t k) const
-
-        Correlation function of the roughness profile. 
-
-        """
+        r"""getCorrFun(LayerRoughness self, kvector_t k) -> double"""
         return _libBornAgainCore.LayerRoughness_getCorrFun(self, k)
 
     def setSigma(self, sigma):
-        r"""
-        setSigma(LayerRoughness self, double sigma)
-        void LayerRoughness::setSigma(double sigma)
-
-        Sets rms of roughness. 
-
-        """
+        r"""setSigma(LayerRoughness self, double sigma)"""
         return _libBornAgainCore.LayerRoughness_setSigma(self, sigma)
 
     def getSigma(self):
-        r"""
-        getSigma(LayerRoughness self) -> double
-        double LayerRoughness::getSigma() const
-
-        Returns rms of roughness. 
-
-        """
+        r"""getSigma(LayerRoughness self) -> double"""
         return _libBornAgainCore.LayerRoughness_getSigma(self)
 
     def setHurstParameter(self, hurstParameter):
-        r"""
-        setHurstParameter(LayerRoughness self, double hurstParameter)
-        void LayerRoughness::setHurstParameter(double hurstParameter)
-
-        Sets hurst parameter. It describes how jagged the surface is. 
-
-        """
+        r"""setHurstParameter(LayerRoughness self, double hurstParameter)"""
         return _libBornAgainCore.LayerRoughness_setHurstParameter(self, hurstParameter)
 
     def getHurstParameter(self):
-        r"""
-        getHurstParameter(LayerRoughness self) -> double
-        double LayerRoughness::getHurstParameter() const
-
-        Returns hurst parameter. 
-
-        """
+        r"""getHurstParameter(LayerRoughness self) -> double"""
         return _libBornAgainCore.LayerRoughness_getHurstParameter(self)
 
     def setLatteralCorrLength(self, lateralCorrLength):
-        r"""
-        setLatteralCorrLength(LayerRoughness self, double lateralCorrLength)
-        void LayerRoughness::setLatteralCorrLength(double lateralCorrLength)
-
-        Sets lateral correlation length. 
-
-        """
+        r"""setLatteralCorrLength(LayerRoughness self, double lateralCorrLength)"""
         return _libBornAgainCore.LayerRoughness_setLatteralCorrLength(self, lateralCorrLength)
 
     def getLatteralCorrLength(self):
-        r"""
-        getLatteralCorrLength(LayerRoughness self) -> double
-        double LayerRoughness::getLatteralCorrLength() const
-
-        Returns lateral correlation length. 
-
-        """
+        r"""getLatteralCorrLength(LayerRoughness self) -> double"""
         return _libBornAgainCore.LayerRoughness_getLatteralCorrLength(self)
     __swig_destroy__ = _libBornAgainCore.delete_LayerRoughness
 
@@ -9832,159 +7482,70 @@ class LayerRoughness(ISample):
 _libBornAgainCore.LayerRoughness_swigregister(LayerRoughness)
 
 class MultiLayer(ISample):
-    r"""
-
-
-    Our sample model: a stack of layers one below the other.Example of system of 4 layers (3 interfaces):
-
-    ambience layer #0 ------ interface #0 z=0.0 Fe, 20A layer #1 ------ interface #1 z=-20.0 Cr, 40A layer #2 ------ interface #2 z=-60.0 substrate layer #3
-
-    C++ includes: MultiLayer.h
-
-    """
+    r"""Proxy of C++ MultiLayer class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self):
-        r"""
-        __init__(MultiLayer self) -> MultiLayer
-        MultiLayer::MultiLayer()
-
-        """
+        r"""__init__(MultiLayer self) -> MultiLayer"""
         _libBornAgainCore.MultiLayer_swiginit(self, _libBornAgainCore.new_MultiLayer())
     __swig_destroy__ = _libBornAgainCore.delete_MultiLayer
 
     def clone(self):
-        r"""
-        clone(MultiLayer self) -> MultiLayer
-        MultiLayer * MultiLayer::clone() const final override
-
-        Returns a clone of multilayer with clones of all layers and interfaces between layers 
-
-        """
+        r"""clone(MultiLayer self) -> MultiLayer"""
         return _libBornAgainCore.MultiLayer_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(MultiLayer self, INodeVisitor * visitor)
-        void MultiLayer::accept(INodeVisitor *visitor) const final override
-
-        """
+        r"""accept(MultiLayer self, INodeVisitor * visitor)"""
         return _libBornAgainCore.MultiLayer_accept(self, visitor)
 
     def numberOfLayers(self):
-        r"""
-        numberOfLayers(MultiLayer self) -> size_t
-        size_t MultiLayer::numberOfLayers() const
-
-        """
+        r"""numberOfLayers(MultiLayer self) -> size_t"""
         return _libBornAgainCore.MultiLayer_numberOfLayers(self)
 
     def addLayer(self, layer):
-        r"""
-        addLayer(MultiLayer self, Layer layer)
-        void MultiLayer::addLayer(const Layer &layer)
-
-        Adds object to multilayer.
-
-        Adds layer with default (zero) roughness. 
-
-        """
+        r"""addLayer(MultiLayer self, Layer layer)"""
         return _libBornAgainCore.MultiLayer_addLayer(self, layer)
 
     def addLayerWithTopRoughness(self, layer, roughness):
-        r"""
-        addLayerWithTopRoughness(MultiLayer self, Layer layer, LayerRoughness roughness)
-        void MultiLayer::addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
-
-        Adds layer with top roughness. 
-
-        """
+        r"""addLayerWithTopRoughness(MultiLayer self, Layer layer, LayerRoughness roughness)"""
         return _libBornAgainCore.MultiLayer_addLayerWithTopRoughness(self, layer, roughness)
 
     def layer(self, i_layer):
-        r"""
-        layer(MultiLayer self, size_t i_layer) -> Layer
-        const Layer * MultiLayer::layer(size_t i_layer) const
-
-        Returns layer with given index. 
-
-        """
+        r"""layer(MultiLayer self, size_t i_layer) -> Layer"""
         return _libBornAgainCore.MultiLayer_layer(self, i_layer)
 
     def layerInterface(self, i_interface):
-        r"""
-        layerInterface(MultiLayer self, size_t i_interface) -> LayerInterface const *
-        const LayerInterface * MultiLayer::layerInterface(size_t i_interface) const
-
-        Returns interface with given index. 
-
-        """
+        r"""layerInterface(MultiLayer self, size_t i_interface) -> LayerInterface const *"""
         return _libBornAgainCore.MultiLayer_layerInterface(self, i_interface)
 
     def setCrossCorrLength(self, crossCorrLength):
-        r"""
-        setCrossCorrLength(MultiLayer self, double crossCorrLength)
-        void MultiLayer::setCrossCorrLength(double crossCorrLength)
-
-        Sets cross correlation length of roughnesses between interfaces. 
-
-        """
+        r"""setCrossCorrLength(MultiLayer self, double crossCorrLength)"""
         return _libBornAgainCore.MultiLayer_setCrossCorrLength(self, crossCorrLength)
 
     def crossCorrLength(self):
-        r"""
-        crossCorrLength(MultiLayer self) -> double
-        double MultiLayer::crossCorrLength() const
-
-        Returns cross correlation length of roughnesses between interfaces. 
-
-        """
+        r"""crossCorrLength(MultiLayer self) -> double"""
         return _libBornAgainCore.MultiLayer_crossCorrLength(self)
 
     def setExternalField(self, ext_field):
-        r"""
-        setExternalField(MultiLayer self, kvector_t ext_field)
-        void MultiLayer::setExternalField(kvector_t ext_field)
-
-        Sets the external field applied to the multilayer (units: A/m) 
-
-        """
+        r"""setExternalField(MultiLayer self, kvector_t ext_field)"""
         return _libBornAgainCore.MultiLayer_setExternalField(self, ext_field)
 
     def externalField(self):
-        r"""
-        externalField(MultiLayer self) -> kvector_t
-        kvector_t MultiLayer::externalField() const
-
-        Returns the external field applied to the multilayer (units: A/m) 
-
-        """
+        r"""externalField(MultiLayer self) -> kvector_t"""
         return _libBornAgainCore.MultiLayer_externalField(self)
 
     def getChildren(self):
-        r"""
-        getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > MultiLayer::getChildren() const final override
-
-        """
+        r"""getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector"""
         return _libBornAgainCore.MultiLayer_getChildren(self)
 
     def setRoughnessModel(self, roughnessModel):
-        r"""
-        setRoughnessModel(MultiLayer self, RoughnessModel roughnessModel)
-        void MultiLayer::setRoughnessModel(RoughnessModel roughnessModel)
-
-        """
+        r"""setRoughnessModel(MultiLayer self, RoughnessModel roughnessModel)"""
         return _libBornAgainCore.MultiLayer_setRoughnessModel(self, roughnessModel)
 
     def roughnessModel(self):
-        r"""
-        roughnessModel(MultiLayer self) -> RoughnessModel
-        RoughnessModel MultiLayer::roughnessModel() const
-
-        """
+        r"""roughnessModel(MultiLayer self) -> RoughnessModel"""
         return _libBornAgainCore.MultiLayer_roughnessModel(self)
 
 # Register MultiLayer in _libBornAgainCore:
@@ -11258,14 +8819,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
 _libBornAgainCore.FormFactorTruncatedSpheroid_swigregister(FormFactorTruncatedSpheroid)
 
 class FormFactorGaussSphere(IFormFactorBorn):
-    r"""
-
-
-    The form factor of a Gaussian sphere.
-
-    C++ includes: FormFactorGauss.h
-
-    """
+    r"""Proxy of C++ FormFactorGaussSphere class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -11274,49 +8828,27 @@ class FormFactorGaussSphere(IFormFactorBorn):
         r"""
         __init__(FormFactorGaussSphere self, vdouble1d_t P) -> FormFactorGaussSphere
         __init__(FormFactorGaussSphere self, double mean_radius) -> FormFactorGaussSphere
-        FormFactorGaussSphere::FormFactorGaussSphere(double mean_radius)
-
         """
         _libBornAgainCore.FormFactorGaussSphere_swiginit(self, _libBornAgainCore.new_FormFactorGaussSphere(*args))
 
     def clone(self):
-        r"""
-        clone(FormFactorGaussSphere self) -> FormFactorGaussSphere
-        FormFactorGaussSphere* FormFactorGaussSphere::clone() const override final
-
-        """
+        r"""clone(FormFactorGaussSphere self) -> FormFactorGaussSphere"""
         return _libBornAgainCore.FormFactorGaussSphere_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FormFactorGaussSphere self, INodeVisitor * visitor)
-        void FormFactorGaussSphere::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FormFactorGaussSphere self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FormFactorGaussSphere_accept(self, visitor)
 
     def getMeanRadius(self):
-        r"""
-        getMeanRadius(FormFactorGaussSphere self) -> double
-        double FormFactorGaussSphere::getMeanRadius() const
-
-        """
+        r"""getMeanRadius(FormFactorGaussSphere self) -> double"""
         return _libBornAgainCore.FormFactorGaussSphere_getMeanRadius(self)
 
     def radialExtension(self):
-        r"""
-        radialExtension(FormFactorGaussSphere self) -> double
-        double FormFactorGaussSphere::radialExtension() const override final
-
-        """
+        r"""radialExtension(FormFactorGaussSphere self) -> double"""
         return _libBornAgainCore.FormFactorGaussSphere_radialExtension(self)
 
     def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t
-        complex_t FormFactorGaussSphere::evaluate_for_q(cvector_t q) const override final
-
-        """
+        r"""evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t"""
         return _libBornAgainCore.FormFactorGaussSphere_evaluate_for_q(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorGaussSphere
 
@@ -11324,14 +8856,7 @@ class FormFactorGaussSphere(IFormFactorBorn):
 _libBornAgainCore.FormFactorGaussSphere_swigregister(FormFactorGaussSphere)
 
 class FormFactorSphereGaussianRadius(IFormFactorBorn):
-    r"""
-
-
-    A sphere with gaussian radius distribution.
-
-    C++ includes: FormFactorSphereGaussianRadius.h
-
-    """
+    r"""Proxy of C++ FormFactorSphereGaussianRadius class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -11340,41 +8865,23 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         r"""
         __init__(FormFactorSphereGaussianRadius self, vdouble1d_t P) -> FormFactorSphereGaussianRadius
         __init__(FormFactorSphereGaussianRadius self, double mean, double sigma) -> FormFactorSphereGaussianRadius
-        FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)
-
         """
         _libBornAgainCore.FormFactorSphereGaussianRadius_swiginit(self, _libBornAgainCore.new_FormFactorSphereGaussianRadius(*args))
 
     def clone(self):
-        r"""
-        clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius
-        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final
-
-        """
+        r"""clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius"""
         return _libBornAgainCore.FormFactorSphereGaussianRadius_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FormFactorSphereGaussianRadius self, INodeVisitor * visitor)
-        void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FormFactorSphereGaussianRadius self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FormFactorSphereGaussianRadius_accept(self, visitor)
 
     def radialExtension(self):
-        r"""
-        radialExtension(FormFactorSphereGaussianRadius self) -> double
-        double FormFactorSphereGaussianRadius::radialExtension() const override final
-
-        """
+        r"""radialExtension(FormFactorSphereGaussianRadius self) -> double"""
         return _libBornAgainCore.FormFactorSphereGaussianRadius_radialExtension(self)
 
     def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t
-        complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final
-
-        """
+        r"""evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t"""
         return _libBornAgainCore.FormFactorSphereGaussianRadius_evaluate_for_q(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorSphereGaussianRadius
 
@@ -11382,14 +8889,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
 _libBornAgainCore.FormFactorSphereGaussianRadius_swigregister(FormFactorSphereGaussianRadius)
 
 class FormFactorSphereLogNormalRadius(IFormFactorBorn):
-    r"""
-
-
-    A sphere with log normal radius distribution.
-
-    C++ includes: FormFactorSphereLogNormalRadius.h
-
-    """
+    r"""Proxy of C++ FormFactorSphereLogNormalRadius class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -11398,41 +8898,23 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         r"""
         __init__(FormFactorSphereLogNormalRadius self, vdouble1d_t P, size_t n_samples=0) -> FormFactorSphereLogNormalRadius
         __init__(FormFactorSphereLogNormalRadius self, double mean, double scale_param, size_t n_samples) -> FormFactorSphereLogNormalRadius
-        FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples)
-
         """
         _libBornAgainCore.FormFactorSphereLogNormalRadius_swiginit(self, _libBornAgainCore.new_FormFactorSphereLogNormalRadius(*args))
 
     def clone(self):
-        r"""
-        clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius
-        FormFactorSphereLogNormalRadius * FormFactorSphereLogNormalRadius::clone() const override final
-
-        """
+        r"""clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius"""
         return _libBornAgainCore.FormFactorSphereLogNormalRadius_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(FormFactorSphereLogNormalRadius self, INodeVisitor * visitor)
-        void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final
-
-        """
+        r"""accept(FormFactorSphereLogNormalRadius self, INodeVisitor * visitor)"""
         return _libBornAgainCore.FormFactorSphereLogNormalRadius_accept(self, visitor)
 
     def radialExtension(self):
-        r"""
-        radialExtension(FormFactorSphereLogNormalRadius self) -> double
-        double FormFactorSphereLogNormalRadius::radialExtension() const override final
-
-        """
+        r"""radialExtension(FormFactorSphereLogNormalRadius self) -> double"""
         return _libBornAgainCore.FormFactorSphereLogNormalRadius_radialExtension(self)
 
     def evaluate_for_q(self, q):
-        r"""
-        evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t
-        complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final
-
-        """
+        r"""evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t"""
         return _libBornAgainCore.FormFactorSphereLogNormalRadius_evaluate_for_q(self, q)
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorSphereLogNormalRadius
 
@@ -11570,7 +9052,7 @@ class Simulation(libBornAgainBase.ICloneable, libBornAgainParam.INode):
         setSample(Simulation self, MultiLayer sample)
         void Simulation::setSample(const MultiLayer &sample)
 
-        The  MultiLayer object will not be owned by the  Simulation object. 
+        The MultiLayer object will not be owned by the  Simulation object. 
 
         """
         return _libBornAgainCore.Simulation_setSample(self, sample)
@@ -15300,51 +12782,28 @@ class ILatticeOrientation(object):
     __swig_destroy__ = _libBornAgainCore.delete_ILatticeOrientation
 
     def clone(self):
-        r"""
-        clone(ILatticeOrientation self) -> ILatticeOrientation
-        virtual ILatticeOrientation* ILatticeOrientation::clone() const =0
-
-        """
+        r"""clone(ILatticeOrientation self) -> ILatticeOrientation"""
         return _libBornAgainCore.ILatticeOrientation_clone(self)
 
     def usePrimitiveLattice(self, lattice):
-        r"""
-        usePrimitiveLattice(ILatticeOrientation self, Lattice lattice)
-        virtual void ILatticeOrientation::usePrimitiveLattice(const Lattice &lattice)=0
-
-        """
+        r"""usePrimitiveLattice(ILatticeOrientation self, Lattice lattice)"""
         return _libBornAgainCore.ILatticeOrientation_usePrimitiveLattice(self, lattice)
 
     def transformationMatrix(self):
-        r"""
-        transformationMatrix(ILatticeOrientation self) -> Transform3D
-        virtual Transform3D ILatticeOrientation::transformationMatrix() const =0
-
-        """
+        r"""transformationMatrix(ILatticeOrientation self) -> Transform3D"""
         return _libBornAgainCore.ILatticeOrientation_transformationMatrix(self)
 
 # Register ILatticeOrientation in _libBornAgainCore:
 _libBornAgainCore.ILatticeOrientation_swigregister(ILatticeOrientation)
 
 class MillerIndex(object):
-    r"""
-
-
-    A direction in reciprocal space, specified by double-valued indices hkl.
-
-    C++ includes: ILatticeOrientation.h
-
-    """
+    r"""Proxy of C++ MillerIndex class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, h_, k_, l_):
-        r"""
-        __init__(MillerIndex self, double h_, double k_, double l_) -> MillerIndex
-        MillerIndex::MillerIndex(double h_, double k_, double l_)
-
-        """
+        r"""__init__(MillerIndex self, double h_, double k_, double l_) -> MillerIndex"""
         _libBornAgainCore.MillerIndex_swiginit(self, _libBornAgainCore.new_MillerIndex(h_, k_, l_))
     h = property(_libBornAgainCore.MillerIndex_h_get, _libBornAgainCore.MillerIndex_h_set, doc=r"""h : double""")
     k = property(_libBornAgainCore.MillerIndex_k_get, _libBornAgainCore.MillerIndex_k_set, doc=r"""k : double""")
@@ -15355,14 +12814,7 @@ class MillerIndex(object):
 _libBornAgainCore.MillerIndex_swigregister(MillerIndex)
 
 class MillerIndexOrientation(ILatticeOrientation):
-    r"""
-
-
-    Specifies a rotation of a lattice through the Miller indices of two coordinate axes.
-
-    C++ includes: ILatticeOrientation.h
-
-    """
+    r"""Proxy of C++ MillerIndexOrientation class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -15374,52 +12826,27 @@ class MillerIndexOrientation(ILatticeOrientation):
     
 
     def __init__(self, q1, index1, q2, index2):
-        r"""
-        __init__(MillerIndexOrientation self, MillerIndexOrientation::QComponent q1, MillerIndex index1, MillerIndexOrientation::QComponent q2, MillerIndex index2) -> MillerIndexOrientation
-        MillerIndexOrientation::MillerIndexOrientation(QComponent q1, MillerIndex index1, QComponent q2, MillerIndex index2)
-
-        This constructor is best explained by an example. Arguments QX, (1,1,0), QY, (0,2,1) mean: Rotate the lattice such that the axis [110] points into x direction, and the axis [021], projected into the yz plane, points into z direction. 
-
-        """
+        r"""__init__(MillerIndexOrientation self, MillerIndexOrientation::QComponent q1, MillerIndex index1, MillerIndexOrientation::QComponent q2, MillerIndex index2) -> MillerIndexOrientation"""
         _libBornAgainCore.MillerIndexOrientation_swiginit(self, _libBornAgainCore.new_MillerIndexOrientation(q1, index1, q2, index2))
     __swig_destroy__ = _libBornAgainCore.delete_MillerIndexOrientation
 
     def clone(self):
-        r"""
-        clone(MillerIndexOrientation self) -> MillerIndexOrientation
-        MillerIndexOrientation * MillerIndexOrientation::clone() const override
-
-        """
+        r"""clone(MillerIndexOrientation self) -> MillerIndexOrientation"""
         return _libBornAgainCore.MillerIndexOrientation_clone(self)
 
     def usePrimitiveLattice(self, lattice):
-        r"""
-        usePrimitiveLattice(MillerIndexOrientation self, Lattice lattice)
-        void MillerIndexOrientation::usePrimitiveLattice(const Lattice &lattice) override
-
-        """
+        r"""usePrimitiveLattice(MillerIndexOrientation self, Lattice lattice)"""
         return _libBornAgainCore.MillerIndexOrientation_usePrimitiveLattice(self, lattice)
 
     def transformationMatrix(self):
-        r"""
-        transformationMatrix(MillerIndexOrientation self) -> Transform3D
-        Transform3D MillerIndexOrientation::transformationMatrix() const override
-
-        """
+        r"""transformationMatrix(MillerIndexOrientation self) -> Transform3D"""
         return _libBornAgainCore.MillerIndexOrientation_transformationMatrix(self)
 
 # Register MillerIndexOrientation in _libBornAgainCore:
 _libBornAgainCore.MillerIndexOrientation_swigregister(MillerIndexOrientation)
 
 class ISelectionRule(object):
-    r"""
-
-
-    Pure virtual base class for selection rules.
-
-    C++ includes: ISelectionRule.h
-
-    """
+    r"""Proxy of C++ ISelectionRule class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
@@ -15429,74 +12856,40 @@ class ISelectionRule(object):
     __swig_destroy__ = _libBornAgainCore.delete_ISelectionRule
 
     def clone(self):
-        r"""
-        clone(ISelectionRule self) -> ISelectionRule
-        virtual ISelectionRule* ISelectionRule::clone() const =0
-
-        """
+        r"""clone(ISelectionRule self) -> ISelectionRule"""
         return _libBornAgainCore.ISelectionRule_clone(self)
 
     def coordinateSelected(self, coordinate):
-        r"""
-        coordinateSelected(ISelectionRule self, ivector_t const & coordinate) -> bool
-        virtual bool ISelectionRule::coordinateSelected(const ivector_t &coordinate) const =0
-
-        """
+        r"""coordinateSelected(ISelectionRule self, ivector_t const & coordinate) -> bool"""
         return _libBornAgainCore.ISelectionRule_coordinateSelected(self, coordinate)
 
 # Register ISelectionRule in _libBornAgainCore:
 _libBornAgainCore.ISelectionRule_swigregister(ISelectionRule)
 
 class SimpleSelectionRule(ISelectionRule):
-    r"""
-
-
-    Selection rule (v*q)modulus!=0, defined by vector v(a,b,c) and modulus.
-
-    C++ includes: ISelectionRule.h
-
-    """
+    r"""Proxy of C++ SimpleSelectionRule class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, a, b, c, modulus):
-        r"""
-        __init__(SimpleSelectionRule self, int a, int b, int c, int modulus) -> SimpleSelectionRule
-        SimpleSelectionRule::SimpleSelectionRule(int a, int b, int c, int modulus)
-
-        """
+        r"""__init__(SimpleSelectionRule self, int a, int b, int c, int modulus) -> SimpleSelectionRule"""
         _libBornAgainCore.SimpleSelectionRule_swiginit(self, _libBornAgainCore.new_SimpleSelectionRule(a, b, c, modulus))
     __swig_destroy__ = _libBornAgainCore.delete_SimpleSelectionRule
 
     def clone(self):
-        r"""
-        clone(SimpleSelectionRule self) -> SimpleSelectionRule
-        SimpleSelectionRule * SimpleSelectionRule::clone() const
-
-        """
+        r"""clone(SimpleSelectionRule self) -> SimpleSelectionRule"""
         return _libBornAgainCore.SimpleSelectionRule_clone(self)
 
     def coordinateSelected(self, coordinate):
-        r"""
-        coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool
-        bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const
-
-        """
+        r"""coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool"""
         return _libBornAgainCore.SimpleSelectionRule_coordinateSelected(self, coordinate)
 
 # Register SimpleSelectionRule in _libBornAgainCore:
 _libBornAgainCore.SimpleSelectionRule_swigregister(SimpleSelectionRule)
 
 class Lattice(libBornAgainParam.INode):
-    r"""
-
-
-    A lattice with three basis vectors.
-
-    C++ includes: Lattice.h
-
-    """
+    r"""Proxy of C++ Lattice class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
@@ -15506,148 +12899,64 @@ class Lattice(libBornAgainParam.INode):
         __init__(Lattice self) -> Lattice
         __init__(Lattice self, kvector_t a1, kvector_t a2, kvector_t a3) -> Lattice
         __init__(Lattice self, Lattice lattice) -> Lattice
-        Lattice::Lattice(const Lattice &lattice)
-
         """
         _libBornAgainCore.Lattice_swiginit(self, _libBornAgainCore.new_Lattice(*args))
     __swig_destroy__ = _libBornAgainCore.delete_Lattice
 
     def accept(self, visitor):
-        r"""
-        accept(Lattice self, INodeVisitor * visitor)
-        void Lattice::accept(INodeVisitor *visitor) const override
-
-        """
+        r"""accept(Lattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.Lattice_accept(self, visitor)
 
     def createTransformedLattice(self, transform):
-        r"""
-        createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice
-        Lattice Lattice::createTransformedLattice(const Transform3D &transform) const
-
-        Creates transformed lattice. 
-
-        """
+        r"""createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice"""
         return _libBornAgainCore.Lattice_createTransformedLattice(self, transform)
 
     def initialize(self):
-        r"""
-        initialize(Lattice self)
-        void Lattice::initialize() const
-
-        Initializes cached data. 
-
-        """
+        r"""initialize(Lattice self)"""
         return _libBornAgainCore.Lattice_initialize(self)
 
     def getBasisVectorA(self):
-        r"""
-        getBasisVectorA(Lattice self) -> kvector_t
-        kvector_t Lattice::getBasisVectorA() const
-
-        Returns basis vector a. 
-
-        """
+        r"""getBasisVectorA(Lattice self) -> kvector_t"""
         return _libBornAgainCore.Lattice_getBasisVectorA(self)
 
     def getBasisVectorB(self):
-        r"""
-        getBasisVectorB(Lattice self) -> kvector_t
-        kvector_t Lattice::getBasisVectorB() const
-
-        Returns basis vector b. 
-
-        """
+        r"""getBasisVectorB(Lattice self) -> kvector_t"""
         return _libBornAgainCore.Lattice_getBasisVectorB(self)
 
     def getBasisVectorC(self):
-        r"""
-        getBasisVectorC(Lattice self) -> kvector_t
-        kvector_t Lattice::getBasisVectorC() const
-
-        Returns basis vector c. 
-
-        """
+        r"""getBasisVectorC(Lattice self) -> kvector_t"""
         return _libBornAgainCore.Lattice_getBasisVectorC(self)
 
     def resetBasis(self, a1, a2, a3):
-        r"""
-        resetBasis(Lattice self, kvector_t a1, kvector_t a2, kvector_t a3)
-        void Lattice::resetBasis(const kvector_t a1, const kvector_t a2, const kvector_t a3)
-
-        Resets the basis vectors. 
-
-        """
+        r"""resetBasis(Lattice self, kvector_t a1, kvector_t a2, kvector_t a3)"""
         return _libBornAgainCore.Lattice_resetBasis(self, a1, a2, a3)
 
     def getMillerDirection(self, h, k, l):
-        r"""
-        getMillerDirection(Lattice self, double h, double k, double l) -> kvector_t
-        kvector_t Lattice::getMillerDirection(double h, double k, double l) const
-
-        Returns normalized direction corresponding to the given Miller indices. 
-
-        """
+        r"""getMillerDirection(Lattice self, double h, double k, double l) -> kvector_t"""
         return _libBornAgainCore.Lattice_getMillerDirection(self, h, k, l)
 
     def volume(self):
-        r"""
-        volume(Lattice self) -> double
-        double Lattice::volume() const
-
-        Returns the volume of the unit cell. 
-
-        """
+        r"""volume(Lattice self) -> double"""
         return _libBornAgainCore.Lattice_volume(self)
 
     def getReciprocalLatticeBasis(self, b1, b2, b3):
-        r"""
-        getReciprocalLatticeBasis(Lattice self, kvector_t b1, kvector_t b2, kvector_t b3)
-        void Lattice::getReciprocalLatticeBasis(kvector_t &b1, kvector_t &b2, kvector_t &b3) const
-
-        Returns the reciprocal basis vectors. 
-
-        """
+        r"""getReciprocalLatticeBasis(Lattice self, kvector_t b1, kvector_t b2, kvector_t b3)"""
         return _libBornAgainCore.Lattice_getReciprocalLatticeBasis(self, b1, b2, b3)
 
     def getNearestLatticeVectorCoordinates(self, vector_in):
-        r"""
-        getNearestLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t
-        ivector_t Lattice::getNearestLatticeVectorCoordinates(const kvector_t vector_in) const
-
-        Returns the nearest lattice point from a given vector. 
-
-        """
+        r"""getNearestLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t"""
         return _libBornAgainCore.Lattice_getNearestLatticeVectorCoordinates(self, vector_in)
 
     def getNearestReciprocalLatticeVectorCoordinates(self, vector_in):
-        r"""
-        getNearestReciprocalLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t
-        ivector_t Lattice::getNearestReciprocalLatticeVectorCoordinates(const kvector_t vector_in) const
-
-        Returns the nearest reciprocal lattice point from a given vector. 
-
-        """
+        r"""getNearestReciprocalLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t"""
         return _libBornAgainCore.Lattice_getNearestReciprocalLatticeVectorCoordinates(self, vector_in)
 
     def reciprocalLatticeVectorsWithinRadius(self, input_vector, radius):
-        r"""
-        reciprocalLatticeVectorsWithinRadius(Lattice self, kvector_t input_vector, double radius) -> vector_kvector_t
-        std::vector< kvector_t > Lattice::reciprocalLatticeVectorsWithinRadius(const kvector_t input_vector, double radius) const
-
-        Computes a list of reciprocal lattice vectors within a specified distance of a given vector. 
-
-        """
+        r"""reciprocalLatticeVectorsWithinRadius(Lattice self, kvector_t input_vector, double radius) -> vector_kvector_t"""
         return _libBornAgainCore.Lattice_reciprocalLatticeVectorsWithinRadius(self, input_vector, radius)
 
     def setSelectionRule(self, p_selection_rule):
-        r"""
-        setSelectionRule(Lattice self, ISelectionRule p_selection_rule)
-        void Lattice::setSelectionRule(const ISelectionRule &p_selection_rule)
-
-        Sets a selection rule for the reciprocal vectors. 
-
-        """
+        r"""setSelectionRule(Lattice self, ISelectionRule p_selection_rule)"""
         return _libBornAgainCore.Lattice_setSelectionRule(self, p_selection_rule)
 
     @staticmethod
@@ -15681,11 +12990,7 @@ class Lattice(libBornAgainParam.INode):
         return _libBornAgainCore.Lattice_createBCTLattice(a, c)
 
     def onChange(self):
-        r"""
-        onChange(Lattice self)
-        void Lattice::onChange() override
-
-        """
+        r"""onChange(Lattice self)"""
         return _libBornAgainCore.Lattice_onChange(self)
 
 # Register Lattice in _libBornAgainCore:
@@ -15725,67 +13030,35 @@ class Lattice2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
 
     def clone(self):
-        r"""
-        clone(Lattice2D self) -> Lattice2D
-        virtual Lattice2D* Lattice2D::clone() const =0
-
-        """
+        r"""clone(Lattice2D self) -> Lattice2D"""
         return _libBornAgainCore.Lattice2D_clone(self)
 
     def length1(self):
-        r"""
-        length1(Lattice2D self) -> double
-        virtual double Lattice2D::length1() const =0
-
-        """
+        r"""length1(Lattice2D self) -> double"""
         return _libBornAgainCore.Lattice2D_length1(self)
 
     def length2(self):
-        r"""
-        length2(Lattice2D self) -> double
-        virtual double Lattice2D::length2() const =0
-
-        """
+        r"""length2(Lattice2D self) -> double"""
         return _libBornAgainCore.Lattice2D_length2(self)
 
     def latticeAngle(self):
-        r"""
-        latticeAngle(Lattice2D self) -> double
-        virtual double Lattice2D::latticeAngle() const =0
-
-        """
+        r"""latticeAngle(Lattice2D self) -> double"""
         return _libBornAgainCore.Lattice2D_latticeAngle(self)
 
     def unitCellArea(self):
-        r"""
-        unitCellArea(Lattice2D self) -> double
-        virtual double Lattice2D::unitCellArea() const =0
-
-        """
+        r"""unitCellArea(Lattice2D self) -> double"""
         return _libBornAgainCore.Lattice2D_unitCellArea(self)
 
     def rotationAngle(self):
-        r"""
-        rotationAngle(Lattice2D self) -> double
-        double Lattice2D::rotationAngle() const
-
-        """
+        r"""rotationAngle(Lattice2D self) -> double"""
         return _libBornAgainCore.Lattice2D_rotationAngle(self)
 
     def reciprocalBases(self):
-        r"""
-        reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases
-        Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const
-
-        """
+        r"""reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases"""
         return _libBornAgainCore.Lattice2D_reciprocalBases(self)
 
     def setRotationEnabled(self, enabled):
-        r"""
-        setRotationEnabled(Lattice2D self, bool enabled)
-        void Lattice2D::setRotationEnabled(bool enabled)
-
-        """
+        r"""setRotationEnabled(Lattice2D self, bool enabled)"""
         return _libBornAgainCore.Lattice2D_setRotationEnabled(self, enabled)
     __swig_destroy__ = _libBornAgainCore.delete_Lattice2D
 
@@ -15799,59 +13072,31 @@ class BasicLattice(Lattice2D):
     __repr__ = _swig_repr
 
     def __init__(self, length1, length2, angle, xi):
-        r"""
-        __init__(BasicLattice self, double length1, double length2, double angle, double xi) -> BasicLattice
-        BasicLattice::BasicLattice(double length1, double length2, double angle, double xi)
-
-        """
+        r"""__init__(BasicLattice self, double length1, double length2, double angle, double xi) -> BasicLattice"""
         _libBornAgainCore.BasicLattice_swiginit(self, _libBornAgainCore.new_BasicLattice(length1, length2, angle, xi))
 
     def clone(self):
-        r"""
-        clone(BasicLattice self) -> BasicLattice
-        BasicLattice * BasicLattice::clone() const
-
-        """
+        r"""clone(BasicLattice self) -> BasicLattice"""
         return _libBornAgainCore.BasicLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(BasicLattice self, INodeVisitor * visitor)
-        void BasicLattice::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(BasicLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.BasicLattice_accept(self, visitor)
 
     def length1(self):
-        r"""
-        length1(BasicLattice self) -> double
-        virtual double BasicLattice::length1() const
-
-        """
+        r"""length1(BasicLattice self) -> double"""
         return _libBornAgainCore.BasicLattice_length1(self)
 
     def length2(self):
-        r"""
-        length2(BasicLattice self) -> double
-        virtual double BasicLattice::length2() const
-
-        """
+        r"""length2(BasicLattice self) -> double"""
         return _libBornAgainCore.BasicLattice_length2(self)
 
     def latticeAngle(self):
-        r"""
-        latticeAngle(BasicLattice self) -> double
-        virtual double BasicLattice::latticeAngle() const
-
-        """
+        r"""latticeAngle(BasicLattice self) -> double"""
         return _libBornAgainCore.BasicLattice_latticeAngle(self)
 
     def unitCellArea(self):
-        r"""
-        unitCellArea(BasicLattice self) -> double
-        double BasicLattice::unitCellArea() const
-
-        """
+        r"""unitCellArea(BasicLattice self) -> double"""
         return _libBornAgainCore.BasicLattice_unitCellArea(self)
     __swig_destroy__ = _libBornAgainCore.delete_BasicLattice
 
@@ -15865,59 +13110,31 @@ class SquareLattice(Lattice2D):
     __repr__ = _swig_repr
 
     def __init__(self, length, xi=0.0):
-        r"""
-        __init__(SquareLattice self, double length, double xi=0.0) -> SquareLattice
-        SquareLattice::SquareLattice(double length, double xi=0.0)
-
-        """
+        r"""__init__(SquareLattice self, double length, double xi=0.0) -> SquareLattice"""
         _libBornAgainCore.SquareLattice_swiginit(self, _libBornAgainCore.new_SquareLattice(length, xi))
 
     def clone(self):
-        r"""
-        clone(SquareLattice self) -> SquareLattice
-        SquareLattice * SquareLattice::clone() const
-
-        """
+        r"""clone(SquareLattice self) -> SquareLattice"""
         return _libBornAgainCore.SquareLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(SquareLattice self, INodeVisitor * visitor)
-        void SquareLattice::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(SquareLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.SquareLattice_accept(self, visitor)
 
     def length1(self):
-        r"""
-        length1(SquareLattice self) -> double
-        virtual double SquareLattice::length1() const
-
-        """
+        r"""length1(SquareLattice self) -> double"""
         return _libBornAgainCore.SquareLattice_length1(self)
 
     def length2(self):
-        r"""
-        length2(SquareLattice self) -> double
-        virtual double SquareLattice::length2() const
-
-        """
+        r"""length2(SquareLattice self) -> double"""
         return _libBornAgainCore.SquareLattice_length2(self)
 
     def latticeAngle(self):
-        r"""
-        latticeAngle(SquareLattice self) -> double
-        double SquareLattice::latticeAngle() const
-
-        """
+        r"""latticeAngle(SquareLattice self) -> double"""
         return _libBornAgainCore.SquareLattice_latticeAngle(self)
 
     def unitCellArea(self):
-        r"""
-        unitCellArea(SquareLattice self) -> double
-        double SquareLattice::unitCellArea() const
-
-        """
+        r"""unitCellArea(SquareLattice self) -> double"""
         return _libBornAgainCore.SquareLattice_unitCellArea(self)
     __swig_destroy__ = _libBornAgainCore.delete_SquareLattice
 
@@ -15931,59 +13148,31 @@ class HexagonalLattice(Lattice2D):
     __repr__ = _swig_repr
 
     def __init__(self, length, xi):
-        r"""
-        __init__(HexagonalLattice self, double length, double xi) -> HexagonalLattice
-        HexagonalLattice::HexagonalLattice(double length, double xi)
-
-        """
+        r"""__init__(HexagonalLattice self, double length, double xi) -> HexagonalLattice"""
         _libBornAgainCore.HexagonalLattice_swiginit(self, _libBornAgainCore.new_HexagonalLattice(length, xi))
 
     def clone(self):
-        r"""
-        clone(HexagonalLattice self) -> HexagonalLattice
-        HexagonalLattice * HexagonalLattice::clone() const
-
-        """
+        r"""clone(HexagonalLattice self) -> HexagonalLattice"""
         return _libBornAgainCore.HexagonalLattice_clone(self)
 
     def accept(self, visitor):
-        r"""
-        accept(HexagonalLattice self, INodeVisitor * visitor)
-        void HexagonalLattice::accept(INodeVisitor *visitor) const final
-
-        """
+        r"""accept(HexagonalLattice self, INodeVisitor * visitor)"""
         return _libBornAgainCore.HexagonalLattice_accept(self, visitor)
 
     def length1(self):
-        r"""
-        length1(HexagonalLattice self) -> double
-        virtual double HexagonalLattice::length1() const
-
-        """
+        r"""length1(HexagonalLattice self) -> double"""
         return _libBornAgainCore.HexagonalLattice_length1(self)
 
     def length2(self):
-        r"""
-        length2(HexagonalLattice self) -> double
-        virtual double HexagonalLattice::length2() const
-
-        """
+        r"""length2(HexagonalLattice self) -> double"""
         return _libBornAgainCore.HexagonalLattice_length2(self)
 
     def latticeAngle(self):
-        r"""
-        latticeAngle(HexagonalLattice self) -> double
-        double HexagonalLattice::latticeAngle() const
-
-        """
+        r"""latticeAngle(HexagonalLattice self) -> double"""
         return _libBornAgainCore.HexagonalLattice_latticeAngle(self)
 
     def unitCellArea(self):
-        r"""
-        unitCellArea(HexagonalLattice self) -> double
-        double HexagonalLattice::unitCellArea() const
-
-        """
+        r"""unitCellArea(HexagonalLattice self) -> double"""
         return _libBornAgainCore.HexagonalLattice_unitCellArea(self)
     __swig_destroy__ = _libBornAgainCore.delete_HexagonalLattice
 
@@ -15992,27 +13181,15 @@ _libBornAgainCore.HexagonalLattice_swigregister(HexagonalLattice)
 
 
 def createFCCLattice(lattice_constant, orientation):
-    r"""
-    createFCCLattice(double lattice_constant, ILatticeOrientation orientation) -> Lattice
-    Lattice LatticeUtils::createFCCLattice(double lattice_constant, const ILatticeOrientation &orientation)
-
-    """
+    r"""createFCCLattice(double lattice_constant, ILatticeOrientation orientation) -> Lattice"""
     return _libBornAgainCore.createFCCLattice(lattice_constant, orientation)
 
 def createHCPLattice(a, c, orientation):
-    r"""
-    createHCPLattice(double a, double c, ILatticeOrientation orientation) -> Lattice
-    Lattice LatticeUtils::createHCPLattice(double a, double c, const ILatticeOrientation &orientation)
-
-    """
+    r"""createHCPLattice(double a, double c, ILatticeOrientation orientation) -> Lattice"""
     return _libBornAgainCore.createHCPLattice(a, c, orientation)
 
 def createBCTLattice(a, c, orientation):
-    r"""
-    createBCTLattice(double a, double c, ILatticeOrientation orientation) -> Lattice
-    Lattice LatticeUtils::createBCTLattice(double a, double c, const ILatticeOrientation &orientation)
-
-    """
+    r"""createBCTLattice(double a, double c, ILatticeOrientation orientation) -> Lattice"""
     return _libBornAgainCore.createBCTLattice(a, c, orientation)
 class Material(object):
     r"""Proxy of C++ Material class."""
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 52d1134ebfc..8e7959705e6 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -6889,25 +6889,25 @@ SWIGINTERN std::vector< std::pair< double,double > >::iterator std_vector_Sl_std
 SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_1(std::vector< std::pair< double,double > > *self,std::vector< std::pair< double,double > >::iterator pos,std::vector< std::pair< double,double > >::size_type n,std::vector< std::pair< double,double > >::value_type const &x){ self->insert(pos, n, x); }
 
 #include "BAVersion.h"
-#include "Core/Correlations/FTDecay1D.h"
-#include "Core/Correlations/FTDecay2D.h"
-#include "Core/Correlations/FTDistributions1D.h"
-#include "Core/Correlations/FTDistributions2D.h"
-#include "Core/Correlations/ILayout.h"
-#include "Core/Correlations/IPeakShape.h"
-#include "Core/Aggregate/IInterferenceFunction.h"
-#include "Core/Aggregate/InterferenceFunction1DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DLattice.h"
-#include "Core/Aggregate/InterferenceFunction2DParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunction2DSuperLattice.h"
-#include "Core/Aggregate/InterferenceFunction3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite2DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionFinite3DLattice.h"
-#include "Core/Aggregate/InterferenceFunctionHardDisk.h"
-#include "Core/Aggregate/InterferenceFunctionNone.h"
-#include "Core/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Core/Aggregate/InterferenceFunctionTwin.h"
-#include "Core/Aggregate/ParticleLayout.h"
+#include "Sample/Correlations/FTDecay1D.h"
+#include "Sample/Correlations/FTDecay2D.h"
+#include "Sample/Correlations/FTDistributions1D.h"
+#include "Sample/Correlations/FTDistributions2D.h"
+#include "Sample/Correlations/ILayout.h"
+#include "Sample/Correlations/IPeakShape.h"
+#include "Sample/Aggregate/IInterferenceFunction.h"
+#include "Sample/Aggregate/InterferenceFunction1DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunction2DParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunction2DSuperLattice.h"
+#include "Sample/Aggregate/InterferenceFunction3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite2DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionFinite3DLattice.h"
+#include "Sample/Aggregate/InterferenceFunctionHardDisk.h"
+#include "Sample/Aggregate/InterferenceFunctionNone.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Aggregate/InterferenceFunctionTwin.h"
+#include "Sample/Aggregate/ParticleLayout.h"
 #include "Core/Beam/Beam.h"
 #include "Core/Beam/FootprintGauss.h"
 #include "Core/Beam/FootprintSquare.h"
@@ -6974,11 +6974,11 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Core/Intensity/IIntensityFunction.h"
 #include "Core/Instrument/IntensityDataFunctions.h"
 #include "Core/Data/OutputData.h"
-#include "Core/Lattice/ILatticeOrientation.h"
-#include "Core/Lattice/ISelectionRule.h"
-#include "Core/Lattice/Lattice.h"
-#include "Core/Lattice/Lattice2D.h"
-#include "Core/Lattice/LatticeUtils.h"
+#include "Sample/Lattice/ILatticeOrientation.h"
+#include "Sample/Lattice/ISelectionRule.h"
+#include "Sample/Lattice/Lattice.h"
+#include "Sample/Lattice/Lattice2D.h"
+#include "Sample/Lattice/LatticeUtils.h"
 #include "Device/Mask/Ellipse.h"
 #include "Device/Mask/IShape2D.h"
 #include "Device/Mask/Line.h"
@@ -6987,23 +6987,23 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Sample/Material/MaterialFactoryFuncs.h"
 #include "Sample/Material/WavevectorInfo.h"
 #include "Core/SampleBuilderEngine/ISampleBuilder.h"
-#include "Core/Multilayer/Layer.h"
-#include "Core/Multilayer/LayerInterface.h"
-#include "Core/Multilayer/LayerRoughness.h"
-#include "Core/Multilayer/MultiLayer.h"
-#include "Core/RT/SimulationOptions.h"
-#include "Core/Particle/Crystal.h"
-#include "Core/Particle/FormFactorCrystal.h"
-#include "Core/Particle/FormFactorWeighted.h"
-#include "Core/Particle/IAbstractParticle.h"
-#include "Core/Particle/IClusteredParticles.h"
-#include "Core/Particle/IParticle.h"
-#include "Core/Particle/MesoCrystal.h"
-#include "Core/Particle/Particle.h"
-#include "Core/Particle/ParticleComposition.h"
-#include "Core/Particle/ParticleCoreShell.h"
-#include "Core/Particle/ParticleDistribution.h"
-#include "Core/Particle/SlicedParticle.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/LayerInterface.h"
+#include "Sample/Multilayer/LayerRoughness.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/RT/SimulationOptions.h"
+#include "Sample/Particle/Crystal.h"
+#include "Sample/Particle/FormFactorCrystal.h"
+#include "Sample/Particle/FormFactorWeighted.h"
+#include "Sample/Particle/IAbstractParticle.h"
+#include "Sample/Particle/IClusteredParticles.h"
+#include "Sample/Particle/IParticle.h"
+#include "Sample/Particle/MesoCrystal.h"
+#include "Sample/Particle/Particle.h"
+#include "Sample/Particle/ParticleComposition.h"
+#include "Sample/Particle/ParticleCoreShell.h"
+#include "Sample/Particle/ParticleDistribution.h"
+#include "Sample/Particle/SlicedParticle.h"
 #include "Sample/Scattering/IFormFactorDecorator.h"
 #include "Sample/Scattering/ISample.h"
 #include "Sample/Scattering/Rotations.h"
@@ -7013,9 +7013,9 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Core/Simulation/Simulation.h"
 #include "Core/Simulation/Simulation2D.h"
 #include "Core/Simulation/SpecularSimulation.h"
-#include "Core/SoftParticle/FormFactorGauss.h"
-#include "Core/SoftParticle/FormFactorSphereGaussianRadius.h"
-#include "Core/SoftParticle/FormFactorSphereLogNormalRadius.h"
+#include "Sample/SoftParticle/FormFactorGauss.h"
+#include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
+#include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 #include "Core/StandardSamples/SampleBuilderFactory.h"
 #include "Core/Simulation/SimulationFactory.h"
 #include "Fit/Kernel/FitOptions.h"
@@ -99643,98 +99643,21 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_Rectangle", _wrap_delete_Rectangle, METH_O, "delete_Rectangle(Rectangle self)"},
 	 { "Rectangle_swigregister", Rectangle_swigregister, METH_O, NULL},
 	 { "Rectangle_swiginit", Rectangle_swiginit, METH_VARARGS, NULL},
-	 { "new_SimulationOptions", _wrap_new_SimulationOptions, METH_NOARGS, "\n"
-		"new_SimulationOptions() -> SimulationOptions\n"
-		"SimulationOptions::SimulationOptions()\n"
-		"\n"
-		""},
-	 { "SimulationOptions_isIntegrate", _wrap_SimulationOptions_isIntegrate, METH_O, "\n"
-		"SimulationOptions_isIntegrate(SimulationOptions self) -> bool\n"
-		"bool SimulationOptions::isIntegrate() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_getMcPoints", _wrap_SimulationOptions_getMcPoints, METH_O, "\n"
-		"SimulationOptions_getMcPoints(SimulationOptions self) -> size_t\n"
-		"size_t SimulationOptions::getMcPoints() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_setMonteCarloIntegration", _wrap_SimulationOptions_setMonteCarloIntegration, METH_VARARGS, "\n"
-		"SimulationOptions_setMonteCarloIntegration(SimulationOptions self, bool flag=True, size_t mc_points=50)\n"
-		"void SimulationOptions::setMonteCarloIntegration(bool flag=true, size_t mc_points=50)\n"
-		"\n"
-		"Enables/disables MonetCarlo integration.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"flag: \n"
-		"If true, MonteCarlo integration will be used, otherwise analytical calculations\n"
-		"\n"
-		"mc_points: \n"
-		"Number of points for MonteCarlo integrator \n"
-		"\n"
-		""},
-	 { "SimulationOptions_setNumberOfThreads", _wrap_SimulationOptions_setNumberOfThreads, METH_VARARGS, "\n"
-		"SimulationOptions_setNumberOfThreads(SimulationOptions self, int nthreads)\n"
-		"void SimulationOptions::setNumberOfThreads(int nthreads)\n"
-		"\n"
-		"Sets number of threads to use during the simulation (0 - take the default value from the hardware) \n"
-		"\n"
-		""},
-	 { "SimulationOptions_getNumberOfThreads", _wrap_SimulationOptions_getNumberOfThreads, METH_O, "\n"
-		"SimulationOptions_getNumberOfThreads(SimulationOptions self) -> unsigned int\n"
-		"unsigned SimulationOptions::getNumberOfThreads() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_setNumberOfBatches", _wrap_SimulationOptions_setNumberOfBatches, METH_VARARGS, "\n"
-		"SimulationOptions_setNumberOfBatches(SimulationOptions self, int nbatches)\n"
-		"void SimulationOptions::setNumberOfBatches(int nbatches)\n"
-		"\n"
-		"Sets number of batches to split. \n"
-		"\n"
-		""},
-	 { "SimulationOptions_getNumberOfBatches", _wrap_SimulationOptions_getNumberOfBatches, METH_O, "\n"
-		"SimulationOptions_getNumberOfBatches(SimulationOptions self) -> unsigned int\n"
-		"unsigned SimulationOptions::getNumberOfBatches() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_getCurrentBatch", _wrap_SimulationOptions_getCurrentBatch, METH_O, "\n"
-		"SimulationOptions_getCurrentBatch(SimulationOptions self) -> unsigned int\n"
-		"unsigned SimulationOptions::getCurrentBatch() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_setThreadInfo", _wrap_SimulationOptions_setThreadInfo, METH_VARARGS, "\n"
-		"SimulationOptions_setThreadInfo(SimulationOptions self, ThreadInfo const & thread_info)\n"
-		"void SimulationOptions::setThreadInfo(const ThreadInfo &thread_info)\n"
-		"\n"
-		"Sets the batch and thread information to be used. \n"
-		"\n"
-		""},
-	 { "SimulationOptions_getHardwareConcurrency", _wrap_SimulationOptions_getHardwareConcurrency, METH_O, "\n"
-		"SimulationOptions_getHardwareConcurrency(SimulationOptions self) -> unsigned int\n"
-		"unsigned SimulationOptions::getHardwareConcurrency() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_setIncludeSpecular", _wrap_SimulationOptions_setIncludeSpecular, METH_VARARGS, "\n"
-		"SimulationOptions_setIncludeSpecular(SimulationOptions self, bool include_specular)\n"
-		"void SimulationOptions::setIncludeSpecular(bool include_specular)\n"
-		"\n"
-		""},
-	 { "SimulationOptions_includeSpecular", _wrap_SimulationOptions_includeSpecular, METH_O, "\n"
-		"SimulationOptions_includeSpecular(SimulationOptions self) -> bool\n"
-		"bool SimulationOptions::includeSpecular() const\n"
-		"\n"
-		""},
-	 { "SimulationOptions_setUseAvgMaterials", _wrap_SimulationOptions_setUseAvgMaterials, METH_VARARGS, "\n"
-		"SimulationOptions_setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)\n"
-		"void SimulationOptions::setUseAvgMaterials(bool use_avg_materials)\n"
-		"\n"
-		""},
-	 { "SimulationOptions_useAvgMaterials", _wrap_SimulationOptions_useAvgMaterials, METH_O, "\n"
-		"SimulationOptions_useAvgMaterials(SimulationOptions self) -> bool\n"
-		"bool SimulationOptions::useAvgMaterials() const\n"
-		"\n"
-		""},
+	 { "new_SimulationOptions", _wrap_new_SimulationOptions, METH_NOARGS, "new_SimulationOptions() -> SimulationOptions"},
+	 { "SimulationOptions_isIntegrate", _wrap_SimulationOptions_isIntegrate, METH_O, "SimulationOptions_isIntegrate(SimulationOptions self) -> bool"},
+	 { "SimulationOptions_getMcPoints", _wrap_SimulationOptions_getMcPoints, METH_O, "SimulationOptions_getMcPoints(SimulationOptions self) -> size_t"},
+	 { "SimulationOptions_setMonteCarloIntegration", _wrap_SimulationOptions_setMonteCarloIntegration, METH_VARARGS, "SimulationOptions_setMonteCarloIntegration(SimulationOptions self, bool flag=True, size_t mc_points=50)"},
+	 { "SimulationOptions_setNumberOfThreads", _wrap_SimulationOptions_setNumberOfThreads, METH_VARARGS, "SimulationOptions_setNumberOfThreads(SimulationOptions self, int nthreads)"},
+	 { "SimulationOptions_getNumberOfThreads", _wrap_SimulationOptions_getNumberOfThreads, METH_O, "SimulationOptions_getNumberOfThreads(SimulationOptions self) -> unsigned int"},
+	 { "SimulationOptions_setNumberOfBatches", _wrap_SimulationOptions_setNumberOfBatches, METH_VARARGS, "SimulationOptions_setNumberOfBatches(SimulationOptions self, int nbatches)"},
+	 { "SimulationOptions_getNumberOfBatches", _wrap_SimulationOptions_getNumberOfBatches, METH_O, "SimulationOptions_getNumberOfBatches(SimulationOptions self) -> unsigned int"},
+	 { "SimulationOptions_getCurrentBatch", _wrap_SimulationOptions_getCurrentBatch, METH_O, "SimulationOptions_getCurrentBatch(SimulationOptions self) -> unsigned int"},
+	 { "SimulationOptions_setThreadInfo", _wrap_SimulationOptions_setThreadInfo, METH_VARARGS, "SimulationOptions_setThreadInfo(SimulationOptions self, ThreadInfo const & thread_info)"},
+	 { "SimulationOptions_getHardwareConcurrency", _wrap_SimulationOptions_getHardwareConcurrency, METH_O, "SimulationOptions_getHardwareConcurrency(SimulationOptions self) -> unsigned int"},
+	 { "SimulationOptions_setIncludeSpecular", _wrap_SimulationOptions_setIncludeSpecular, METH_VARARGS, "SimulationOptions_setIncludeSpecular(SimulationOptions self, bool include_specular)"},
+	 { "SimulationOptions_includeSpecular", _wrap_SimulationOptions_includeSpecular, METH_O, "SimulationOptions_includeSpecular(SimulationOptions self) -> bool"},
+	 { "SimulationOptions_setUseAvgMaterials", _wrap_SimulationOptions_setUseAvgMaterials, METH_VARARGS, "SimulationOptions_setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)"},
+	 { "SimulationOptions_useAvgMaterials", _wrap_SimulationOptions_useAvgMaterials, METH_O, "SimulationOptions_useAvgMaterials(SimulationOptions self) -> bool"},
 	 { "delete_SimulationOptions", _wrap_delete_SimulationOptions, METH_O, "delete_SimulationOptions(SimulationOptions self)"},
 	 { "SimulationOptions_swigregister", SimulationOptions_swigregister, METH_O, NULL},
 	 { "SimulationOptions_swiginit", SimulationOptions_swiginit, METH_VARARGS, NULL},
@@ -99997,373 +99920,79 @@ static PyMethodDef SwigMethods[] = {
 	 { "disown_PyObserverCallback", _wrap_disown_PyObserverCallback, METH_O, NULL},
 	 { "PyObserverCallback_swigregister", PyObserverCallback_swigregister, METH_O, NULL},
 	 { "PyObserverCallback_swiginit", PyObserverCallback_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorCrystal", _wrap_new_FormFactorCrystal, METH_VARARGS, "\n"
-		"FormFactorCrystal(Lattice lattice, IFormFactor basis_form_factor, IFormFactor meso_form_factor, double position_variance=0.0)\n"
-		"FormFactorCrystal::FormFactorCrystal(const Lattice &lattice, const IFormFactor &basis_form_factor, const IFormFactor &meso_form_factor, double position_variance=0.0)\n"
-		"\n"
-		""},
-	 { "delete_FormFactorCrystal", _wrap_delete_FormFactorCrystal, METH_O, "\n"
-		"delete_FormFactorCrystal(FormFactorCrystal self)\n"
-		"FormFactorCrystal::~FormFactorCrystal() override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_clone", _wrap_FormFactorCrystal_clone, METH_O, "\n"
-		"FormFactorCrystal_clone(FormFactorCrystal self) -> FormFactorCrystal\n"
-		"FormFactorCrystal* FormFactorCrystal::clone() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_accept", _wrap_FormFactorCrystal_accept, METH_VARARGS, "\n"
-		"FormFactorCrystal_accept(FormFactorCrystal self, INodeVisitor * visitor)\n"
-		"void FormFactorCrystal::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_setAmbientMaterial", _wrap_FormFactorCrystal_setAmbientMaterial, METH_VARARGS, "\n"
-		"FormFactorCrystal_setAmbientMaterial(FormFactorCrystal self, Material material)\n"
-		"void FormFactorCrystal::setAmbientMaterial(Material material) override\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_volume", _wrap_FormFactorCrystal_volume, METH_O, "\n"
-		"FormFactorCrystal_volume(FormFactorCrystal self) -> double\n"
-		"double FormFactorCrystal::volume() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_radialExtension", _wrap_FormFactorCrystal_radialExtension, METH_O, "\n"
-		"FormFactorCrystal_radialExtension(FormFactorCrystal self) -> double\n"
-		"double FormFactorCrystal::radialExtension() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_bottomZ", _wrap_FormFactorCrystal_bottomZ, METH_VARARGS, "\n"
-		"FormFactorCrystal_bottomZ(FormFactorCrystal self, IRotation rotation) -> double\n"
-		"double FormFactorCrystal::bottomZ(const IRotation &rotation) const override\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_topZ", _wrap_FormFactorCrystal_topZ, METH_VARARGS, "\n"
-		"FormFactorCrystal_topZ(FormFactorCrystal self, IRotation rotation) -> double\n"
-		"double FormFactorCrystal::topZ(const IRotation &rotation) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorCrystal_evaluate", _wrap_FormFactorCrystal_evaluate, METH_VARARGS, "\n"
-		"FormFactorCrystal_evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t\n"
-		"complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const override final\n"
-		"\n"
-		""},
+	 { "new_FormFactorCrystal", _wrap_new_FormFactorCrystal, METH_VARARGS, "FormFactorCrystal(Lattice lattice, IFormFactor basis_form_factor, IFormFactor meso_form_factor, double position_variance=0.0)"},
+	 { "delete_FormFactorCrystal", _wrap_delete_FormFactorCrystal, METH_O, "delete_FormFactorCrystal(FormFactorCrystal self)"},
+	 { "FormFactorCrystal_clone", _wrap_FormFactorCrystal_clone, METH_O, "FormFactorCrystal_clone(FormFactorCrystal self) -> FormFactorCrystal"},
+	 { "FormFactorCrystal_accept", _wrap_FormFactorCrystal_accept, METH_VARARGS, "FormFactorCrystal_accept(FormFactorCrystal self, INodeVisitor * visitor)"},
+	 { "FormFactorCrystal_setAmbientMaterial", _wrap_FormFactorCrystal_setAmbientMaterial, METH_VARARGS, "FormFactorCrystal_setAmbientMaterial(FormFactorCrystal self, Material material)"},
+	 { "FormFactorCrystal_volume", _wrap_FormFactorCrystal_volume, METH_O, "FormFactorCrystal_volume(FormFactorCrystal self) -> double"},
+	 { "FormFactorCrystal_radialExtension", _wrap_FormFactorCrystal_radialExtension, METH_O, "FormFactorCrystal_radialExtension(FormFactorCrystal self) -> double"},
+	 { "FormFactorCrystal_bottomZ", _wrap_FormFactorCrystal_bottomZ, METH_VARARGS, "FormFactorCrystal_bottomZ(FormFactorCrystal self, IRotation rotation) -> double"},
+	 { "FormFactorCrystal_topZ", _wrap_FormFactorCrystal_topZ, METH_VARARGS, "FormFactorCrystal_topZ(FormFactorCrystal self, IRotation rotation) -> double"},
+	 { "FormFactorCrystal_evaluate", _wrap_FormFactorCrystal_evaluate, METH_VARARGS, "FormFactorCrystal_evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t"},
 	 { "FormFactorCrystal_swigregister", FormFactorCrystal_swigregister, METH_O, NULL},
 	 { "FormFactorCrystal_swiginit", FormFactorCrystal_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorWeighted", _wrap_new_FormFactorWeighted, METH_NOARGS, "\n"
-		"new_FormFactorWeighted() -> FormFactorWeighted\n"
-		"FormFactorWeighted::FormFactorWeighted()\n"
-		"\n"
-		""},
-	 { "delete_FormFactorWeighted", _wrap_delete_FormFactorWeighted, METH_O, "\n"
-		"delete_FormFactorWeighted(FormFactorWeighted self)\n"
-		"FormFactorWeighted::~FormFactorWeighted() override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_clone", _wrap_FormFactorWeighted_clone, METH_O, "\n"
-		"FormFactorWeighted_clone(FormFactorWeighted self) -> FormFactorWeighted\n"
-		"FormFactorWeighted * FormFactorWeighted::clone() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_accept", _wrap_FormFactorWeighted_accept, METH_VARARGS, "\n"
-		"FormFactorWeighted_accept(FormFactorWeighted self, INodeVisitor * visitor)\n"
-		"void FormFactorWeighted::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_radialExtension", _wrap_FormFactorWeighted_radialExtension, METH_O, "\n"
-		"FormFactorWeighted_radialExtension(FormFactorWeighted self) -> double\n"
-		"double FormFactorWeighted::radialExtension() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_bottomZ", _wrap_FormFactorWeighted_bottomZ, METH_VARARGS, "\n"
-		"FormFactorWeighted_bottomZ(FormFactorWeighted self, IRotation rotation) -> double\n"
-		"double FormFactorWeighted::bottomZ(const IRotation &rotation) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_topZ", _wrap_FormFactorWeighted_topZ, METH_VARARGS, "\n"
-		"FormFactorWeighted_topZ(FormFactorWeighted self, IRotation rotation) -> double\n"
-		"double FormFactorWeighted::topZ(const IRotation &rotation) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_addFormFactor", _wrap_FormFactorWeighted_addFormFactor, METH_VARARGS, "\n"
-		"FormFactorWeighted_addFormFactor(FormFactorWeighted self, IFormFactor form_factor, double weight=1.0)\n"
-		"void FormFactorWeighted::addFormFactor(const IFormFactor &form_factor, double weight=1.0)\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_setAmbientMaterial", _wrap_FormFactorWeighted_setAmbientMaterial, METH_VARARGS, "\n"
-		"FormFactorWeighted_setAmbientMaterial(FormFactorWeighted self, Material material)\n"
-		"void FormFactorWeighted::setAmbientMaterial(Material material) override final\n"
-		"\n"
-		""},
-	 { "FormFactorWeighted_evaluate", _wrap_FormFactorWeighted_evaluate, METH_VARARGS, "\n"
-		"FormFactorWeighted_evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t\n"
-		"complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const override final\n"
-		"\n"
-		""},
+	 { "new_FormFactorWeighted", _wrap_new_FormFactorWeighted, METH_NOARGS, "new_FormFactorWeighted() -> FormFactorWeighted"},
+	 { "delete_FormFactorWeighted", _wrap_delete_FormFactorWeighted, METH_O, "delete_FormFactorWeighted(FormFactorWeighted self)"},
+	 { "FormFactorWeighted_clone", _wrap_FormFactorWeighted_clone, METH_O, "FormFactorWeighted_clone(FormFactorWeighted self) -> FormFactorWeighted"},
+	 { "FormFactorWeighted_accept", _wrap_FormFactorWeighted_accept, METH_VARARGS, "FormFactorWeighted_accept(FormFactorWeighted self, INodeVisitor * visitor)"},
+	 { "FormFactorWeighted_radialExtension", _wrap_FormFactorWeighted_radialExtension, METH_O, "FormFactorWeighted_radialExtension(FormFactorWeighted self) -> double"},
+	 { "FormFactorWeighted_bottomZ", _wrap_FormFactorWeighted_bottomZ, METH_VARARGS, "FormFactorWeighted_bottomZ(FormFactorWeighted self, IRotation rotation) -> double"},
+	 { "FormFactorWeighted_topZ", _wrap_FormFactorWeighted_topZ, METH_VARARGS, "FormFactorWeighted_topZ(FormFactorWeighted self, IRotation rotation) -> double"},
+	 { "FormFactorWeighted_addFormFactor", _wrap_FormFactorWeighted_addFormFactor, METH_VARARGS, "FormFactorWeighted_addFormFactor(FormFactorWeighted self, IFormFactor form_factor, double weight=1.0)"},
+	 { "FormFactorWeighted_setAmbientMaterial", _wrap_FormFactorWeighted_setAmbientMaterial, METH_VARARGS, "FormFactorWeighted_setAmbientMaterial(FormFactorWeighted self, Material material)"},
+	 { "FormFactorWeighted_evaluate", _wrap_FormFactorWeighted_evaluate, METH_VARARGS, "FormFactorWeighted_evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t"},
 	 { "FormFactorWeighted_swigregister", FormFactorWeighted_swigregister, METH_O, NULL},
 	 { "FormFactorWeighted_swiginit", FormFactorWeighted_swiginit, METH_VARARGS, NULL},
-	 { "delete_IAbstractParticle", _wrap_delete_IAbstractParticle, METH_O, "\n"
-		"delete_IAbstractParticle(IAbstractParticle self)\n"
-		"virtual IAbstractParticle::~IAbstractParticle()=default\n"
-		"\n"
-		""},
-	 { "IAbstractParticle_clone", _wrap_IAbstractParticle_clone, METH_O, "\n"
-		"IAbstractParticle_clone(IAbstractParticle self) -> IAbstractParticle\n"
-		"virtual IAbstractParticle* IAbstractParticle::clone() const =0\n"
-		"\n"
-		""},
-	 { "IAbstractParticle_accept", _wrap_IAbstractParticle_accept, METH_VARARGS, "\n"
-		"IAbstractParticle_accept(IAbstractParticle self, INodeVisitor * visitor)\n"
-		"void IAbstractParticle::accept(INodeVisitor *visitor) const\n"
-		"\n"
-		""},
-	 { "IAbstractParticle_abundance", _wrap_IAbstractParticle_abundance, METH_O, "\n"
-		"IAbstractParticle_abundance(IAbstractParticle self) -> double\n"
-		"double IAbstractParticle::abundance() const\n"
-		"\n"
-		""},
-	 { "IAbstractParticle_setAbundance", _wrap_IAbstractParticle_setAbundance, METH_VARARGS, "\n"
-		"IAbstractParticle_setAbundance(IAbstractParticle self, double abundance)\n"
-		"void IAbstractParticle::setAbundance(double abundance)\n"
-		"\n"
-		"Sets particle abundance.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"abundance: \n"
-		"proportion of this type of particles normalized to the total number of particles in the layout. \n"
-		"\n"
-		""},
-	 { "IAbstractParticle_translate", _wrap_IAbstractParticle_translate, METH_VARARGS, "\n"
-		"IAbstractParticle_translate(IAbstractParticle self, kvector_t translation)\n"
-		"virtual void IAbstractParticle::translate(kvector_t translation)=0\n"
-		"\n"
-		"Translates the particle with the given vector. \n"
-		"\n"
-		""},
-	 { "IAbstractParticle_rotate", _wrap_IAbstractParticle_rotate, METH_VARARGS, "\n"
-		"IAbstractParticle_rotate(IAbstractParticle self, IRotation rotation)\n"
-		"virtual void IAbstractParticle::rotate(const IRotation &rotation)=0\n"
-		"\n"
-		"Applies the given rotation to the particle. \n"
-		"\n"
-		""},
+	 { "delete_IAbstractParticle", _wrap_delete_IAbstractParticle, METH_O, "delete_IAbstractParticle(IAbstractParticle self)"},
+	 { "IAbstractParticle_clone", _wrap_IAbstractParticle_clone, METH_O, "IAbstractParticle_clone(IAbstractParticle self) -> IAbstractParticle"},
+	 { "IAbstractParticle_accept", _wrap_IAbstractParticle_accept, METH_VARARGS, "IAbstractParticle_accept(IAbstractParticle self, INodeVisitor * visitor)"},
+	 { "IAbstractParticle_abundance", _wrap_IAbstractParticle_abundance, METH_O, "IAbstractParticle_abundance(IAbstractParticle self) -> double"},
+	 { "IAbstractParticle_setAbundance", _wrap_IAbstractParticle_setAbundance, METH_VARARGS, "IAbstractParticle_setAbundance(IAbstractParticle self, double abundance)"},
+	 { "IAbstractParticle_translate", _wrap_IAbstractParticle_translate, METH_VARARGS, "IAbstractParticle_translate(IAbstractParticle self, kvector_t translation)"},
+	 { "IAbstractParticle_rotate", _wrap_IAbstractParticle_rotate, METH_VARARGS, "IAbstractParticle_rotate(IAbstractParticle self, IRotation rotation)"},
 	 { "IAbstractParticle_swigregister", IAbstractParticle_swigregister, METH_O, NULL},
-	 { "IClusteredParticles_clone", _wrap_IClusteredParticles_clone, METH_O, "\n"
-		"IClusteredParticles_clone(IClusteredParticles self) -> IClusteredParticles\n"
-		"IClusteredParticles* IClusteredParticles::clone() const override=0\n"
-		"\n"
-		""},
-	 { "IClusteredParticles_createTotalFormFactor", _wrap_IClusteredParticles_createTotalFormFactor, METH_VARARGS, "\n"
-		"IClusteredParticles_createTotalFormFactor(IClusteredParticles self, IFormFactor arg2, IRotation arg3, kvector_t arg4) -> IFormFactor\n"
-		"virtual IFormFactor* IClusteredParticles::createTotalFormFactor(const IFormFactor &, const IRotation *, const kvector_t &) const =0\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"
-		""},
-	 { "IClusteredParticles_homogeneousRegions", _wrap_IClusteredParticles_homogeneousRegions, METH_O, "\n"
-		"IClusteredParticles_homogeneousRegions(IClusteredParticles self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >\n"
-		"virtual std::vector<HomogeneousRegion> IClusteredParticles::homogeneousRegions() const =0\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"
-		""},
+	 { "IClusteredParticles_clone", _wrap_IClusteredParticles_clone, METH_O, "IClusteredParticles_clone(IClusteredParticles self) -> IClusteredParticles"},
+	 { "IClusteredParticles_createTotalFormFactor", _wrap_IClusteredParticles_createTotalFormFactor, METH_VARARGS, "IClusteredParticles_createTotalFormFactor(IClusteredParticles self, IFormFactor arg2, IRotation arg3, kvector_t arg4) -> IFormFactor"},
+	 { "IClusteredParticles_homogeneousRegions", _wrap_IClusteredParticles_homogeneousRegions, METH_O, "IClusteredParticles_homogeneousRegions(IClusteredParticles self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >"},
 	 { "delete_IClusteredParticles", _wrap_delete_IClusteredParticles, METH_O, "delete_IClusteredParticles(IClusteredParticles self)"},
 	 { "IClusteredParticles_swigregister", IClusteredParticles_swigregister, METH_O, NULL},
-	 { "new_Crystal", _wrap_new_Crystal, METH_VARARGS, "\n"
-		"new_Crystal(IParticle lattice_basis, Lattice lattice) -> Crystal\n"
-		"Crystal::Crystal(const IParticle &lattice_basis, const Lattice &lattice)\n"
-		"\n"
-		""},
-	 { "delete_Crystal", _wrap_delete_Crystal, METH_O, "\n"
-		"delete_Crystal(Crystal self)\n"
-		"Crystal::~Crystal()\n"
-		"\n"
-		""},
-	 { "Crystal_clone", _wrap_Crystal_clone, METH_O, "\n"
-		"Crystal_clone(Crystal self) -> Crystal\n"
-		"Crystal * Crystal::clone() const override final\n"
-		"\n"
-		""},
-	 { "Crystal_accept", _wrap_Crystal_accept, METH_VARARGS, "\n"
-		"Crystal_accept(Crystal self, INodeVisitor * visitor)\n"
-		"void Crystal::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "Crystal_createTotalFormFactor", _wrap_Crystal_createTotalFormFactor, METH_VARARGS, "\n"
-		"Crystal_createTotalFormFactor(Crystal self, IFormFactor meso_crystal_form_factor, IRotation p_rotation, kvector_t translation) -> IFormFactor\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"
-		""},
-	 { "Crystal_homogeneousRegions", _wrap_Crystal_homogeneousRegions, METH_O, "\n"
-		"Crystal_homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >\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"
-		""},
-	 { "Crystal_transformedLattice", _wrap_Crystal_transformedLattice, METH_VARARGS, "\n"
-		"Crystal_transformedLattice(Crystal self, IRotation p_rotation=None) -> Lattice\n"
-		"Lattice Crystal::transformedLattice(const IRotation *p_rotation=nullptr) const\n"
-		"\n"
-		""},
-	 { "Crystal_setPositionVariance", _wrap_Crystal_setPositionVariance, METH_VARARGS, "\n"
-		"Crystal_setPositionVariance(Crystal self, double position_variance)\n"
-		"void Crystal::setPositionVariance(double position_variance)\n"
-		"\n"
-		""},
-	 { "Crystal_getChildren", _wrap_Crystal_getChildren, METH_O, "\n"
-		"Crystal_getChildren(Crystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Crystal::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "new_Crystal", _wrap_new_Crystal, METH_VARARGS, "new_Crystal(IParticle lattice_basis, Lattice lattice) -> Crystal"},
+	 { "delete_Crystal", _wrap_delete_Crystal, METH_O, "delete_Crystal(Crystal self)"},
+	 { "Crystal_clone", _wrap_Crystal_clone, METH_O, "Crystal_clone(Crystal self) -> Crystal"},
+	 { "Crystal_accept", _wrap_Crystal_accept, METH_VARARGS, "Crystal_accept(Crystal self, INodeVisitor * visitor)"},
+	 { "Crystal_createTotalFormFactor", _wrap_Crystal_createTotalFormFactor, METH_VARARGS, "Crystal_createTotalFormFactor(Crystal self, IFormFactor meso_crystal_form_factor, IRotation p_rotation, kvector_t translation) -> IFormFactor"},
+	 { "Crystal_homogeneousRegions", _wrap_Crystal_homogeneousRegions, METH_O, "Crystal_homogeneousRegions(Crystal self) -> std::vector< HomogeneousRegion,std::allocator< HomogeneousRegion > >"},
+	 { "Crystal_transformedLattice", _wrap_Crystal_transformedLattice, METH_VARARGS, "Crystal_transformedLattice(Crystal self, IRotation p_rotation=None) -> Lattice"},
+	 { "Crystal_setPositionVariance", _wrap_Crystal_setPositionVariance, METH_VARARGS, "Crystal_setPositionVariance(Crystal self, double position_variance)"},
+	 { "Crystal_getChildren", _wrap_Crystal_getChildren, METH_O, "Crystal_getChildren(Crystal self) -> swig_dummy_type_const_inode_vector"},
 	 { "Crystal_swigregister", Crystal_swigregister, METH_O, NULL},
 	 { "Crystal_swiginit", Crystal_swiginit, METH_VARARGS, NULL},
-	 { "delete_IParticle", _wrap_delete_IParticle, METH_O, "\n"
-		"delete_IParticle(IParticle self)\n"
-		"IParticle::~IParticle()\n"
-		"\n"
-		""},
-	 { "IParticle_clone", _wrap_IParticle_clone, METH_O, "\n"
-		"IParticle_clone(IParticle self) -> IParticle\n"
-		"IParticle* IParticle::clone() const override=0\n"
-		"\n"
-		""},
-	 { "IParticle_createFormFactor", _wrap_IParticle_createFormFactor, METH_O, "\n"
-		"IParticle_createFormFactor(IParticle self) -> IFormFactor\n"
-		"IFormFactor * IParticle::createFormFactor() const\n"
-		"\n"
-		"Creates a form factor for this particle. \n"
-		"\n"
-		""},
-	 { "IParticle_createSlicedParticle", _wrap_IParticle_createSlicedParticle, METH_VARARGS, "\n"
-		"IParticle_createSlicedParticle(IParticle self, ZLimits limits) -> SlicedParticle\n"
-		"SlicedParticle IParticle::createSlicedParticle(ZLimits limits) const\n"
-		"\n"
-		"Creates a sliced form factor for this particle. \n"
-		"\n"
-		""},
-	 { "IParticle_position", _wrap_IParticle_position, METH_O, "\n"
-		"IParticle_position(IParticle self) -> kvector_t\n"
-		"kvector_t IParticle::position() const\n"
-		"\n"
-		"Returns particle position. \n"
-		"\n"
-		""},
+	 { "delete_IParticle", _wrap_delete_IParticle, METH_O, "delete_IParticle(IParticle self)"},
+	 { "IParticle_clone", _wrap_IParticle_clone, METH_O, "IParticle_clone(IParticle self) -> IParticle"},
+	 { "IParticle_createFormFactor", _wrap_IParticle_createFormFactor, METH_O, "IParticle_createFormFactor(IParticle self) -> IFormFactor"},
+	 { "IParticle_createSlicedParticle", _wrap_IParticle_createSlicedParticle, METH_VARARGS, "IParticle_createSlicedParticle(IParticle self, ZLimits limits) -> SlicedParticle"},
+	 { "IParticle_position", _wrap_IParticle_position, METH_O, "IParticle_position(IParticle self) -> kvector_t"},
 	 { "IParticle_setPosition", _wrap_IParticle_setPosition, METH_VARARGS, "\n"
 		"IParticle_setPosition(IParticle self, kvector_t position)\n"
 		"IParticle_setPosition(IParticle self, double x, double y, double z)\n"
-		"void IParticle::setPosition(double x, double y, double z)\n"
-		"\n"
-		"Sets relative position of the particle's reference point in the coordinate system of parent.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"x: \n"
-		"x-coordinate in nanometers\n"
-		"\n"
-		"y: \n"
-		"y-coordinate in nanometers\n"
-		"\n"
-		"z: \n"
-		"z-coordinate in nanometers \n"
-		"\n"
-		""},
-	 { "IParticle_translate", _wrap_IParticle_translate, METH_VARARGS, "\n"
-		"IParticle_translate(IParticle self, kvector_t translation)\n"
-		"void IParticle::translate(kvector_t translation) override final\n"
-		"\n"
-		"Translates the particle. \n"
-		"\n"
-		""},
-	 { "IParticle_rotation", _wrap_IParticle_rotation, METH_O, "\n"
-		"IParticle_rotation(IParticle self) -> IRotation\n"
-		"const IRotation * IParticle::rotation() const\n"
-		"\n"
-		"Returns rotation object. \n"
-		"\n"
-		""},
-	 { "IParticle_setRotation", _wrap_IParticle_setRotation, METH_VARARGS, "\n"
-		"IParticle_setRotation(IParticle self, IRotation rotation)\n"
-		"void IParticle::setRotation(const IRotation &rotation)\n"
-		"\n"
-		"Sets transformation. \n"
-		"\n"
-		""},
-	 { "IParticle_rotate", _wrap_IParticle_rotate, METH_VARARGS, "\n"
-		"IParticle_rotate(IParticle self, IRotation rotation)\n"
-		"void IParticle::rotate(const IRotation &rotation) override final\n"
-		"\n"
-		"Rotates the particle. \n"
-		"\n"
-		""},
-	 { "IParticle_getChildren", _wrap_IParticle_getChildren, METH_O, "\n"
-		"IParticle_getChildren(IParticle self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > IParticle::getChildren() const override\n"
-		"\n"
-		""},
-	 { "IParticle_registerAbundance", _wrap_IParticle_registerAbundance, METH_VARARGS, "\n"
-		"IParticle_registerAbundance(IParticle self, bool make_registered=True)\n"
-		"void IParticle::registerAbundance(bool make_registered=true)\n"
-		"\n"
-		""},
-	 { "IParticle_registerPosition", _wrap_IParticle_registerPosition, METH_VARARGS, "\n"
-		"IParticle_registerPosition(IParticle self, bool make_registered=True)\n"
-		"void IParticle::registerPosition(bool make_registered=true)\n"
-		"\n"
-		"Registers the three components of its position. \n"
-		"\n"
-		""},
-	 { "IParticle_decompose", _wrap_IParticle_decompose, METH_O, "\n"
-		"IParticle_decompose(IParticle self) -> SafePointerVector< IParticle >\n"
-		"SafePointerVector< IParticle > IParticle::decompose() const\n"
-		"\n"
-		"Decompose in constituent  IParticle objects. \n"
-		"\n"
-		""},
-	 { "IParticle_bottomTopZ", _wrap_IParticle_bottomTopZ, METH_O, "\n"
-		"IParticle_bottomTopZ(IParticle self) -> ParticleLimits\n"
-		"ParticleLimits IParticle::bottomTopZ() const\n"
-		"\n"
-		"Top and bottom z-coordinate. \n"
-		"\n"
 		""},
+	 { "IParticle_translate", _wrap_IParticle_translate, METH_VARARGS, "IParticle_translate(IParticle self, kvector_t translation)"},
+	 { "IParticle_rotation", _wrap_IParticle_rotation, METH_O, "IParticle_rotation(IParticle self) -> IRotation"},
+	 { "IParticle_setRotation", _wrap_IParticle_setRotation, METH_VARARGS, "IParticle_setRotation(IParticle self, IRotation rotation)"},
+	 { "IParticle_rotate", _wrap_IParticle_rotate, METH_VARARGS, "IParticle_rotate(IParticle self, IRotation rotation)"},
+	 { "IParticle_getChildren", _wrap_IParticle_getChildren, METH_O, "IParticle_getChildren(IParticle self) -> swig_dummy_type_const_inode_vector"},
+	 { "IParticle_registerAbundance", _wrap_IParticle_registerAbundance, METH_VARARGS, "IParticle_registerAbundance(IParticle self, bool make_registered=True)"},
+	 { "IParticle_registerPosition", _wrap_IParticle_registerPosition, METH_VARARGS, "IParticle_registerPosition(IParticle self, bool make_registered=True)"},
+	 { "IParticle_decompose", _wrap_IParticle_decompose, METH_O, "IParticle_decompose(IParticle self) -> SafePointerVector< IParticle >"},
+	 { "IParticle_bottomTopZ", _wrap_IParticle_bottomTopZ, METH_O, "IParticle_bottomTopZ(IParticle self) -> ParticleLimits"},
 	 { "IParticle_swigregister", IParticle_swigregister, METH_O, NULL},
-	 { "new_MesoCrystal", _wrap_new_MesoCrystal, METH_VARARGS, "\n"
-		"new_MesoCrystal(IClusteredParticles particle_structure, IFormFactor form_factor) -> MesoCrystal\n"
-		"MesoCrystal::MesoCrystal(const IClusteredParticles &particle_structure, const IFormFactor &form_factor)\n"
-		"\n"
-		""},
-	 { "delete_MesoCrystal", _wrap_delete_MesoCrystal, METH_O, "\n"
-		"delete_MesoCrystal(MesoCrystal self)\n"
-		"MesoCrystal::~MesoCrystal()\n"
-		"\n"
-		""},
-	 { "MesoCrystal_clone", _wrap_MesoCrystal_clone, METH_O, "\n"
-		"MesoCrystal_clone(MesoCrystal self) -> MesoCrystal\n"
-		"MesoCrystal * MesoCrystal::clone() const override final\n"
-		"\n"
-		""},
-	 { "MesoCrystal_accept", _wrap_MesoCrystal_accept, METH_VARARGS, "\n"
-		"MesoCrystal_accept(MesoCrystal self, INodeVisitor * visitor)\n"
-		"void MesoCrystal::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "MesoCrystal_createSlicedParticle", _wrap_MesoCrystal_createSlicedParticle, METH_VARARGS, "\n"
-		"MesoCrystal_createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle\n"
-		"SlicedParticle MesoCrystal::createSlicedParticle(ZLimits limits) const override final\n"
-		"\n"
-		"Creates a sliced form factor for this particle. \n"
-		"\n"
-		""},
-	 { "MesoCrystal_getChildren", _wrap_MesoCrystal_getChildren, METH_O, "\n"
-		"MesoCrystal_getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > MesoCrystal::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "new_MesoCrystal", _wrap_new_MesoCrystal, METH_VARARGS, "new_MesoCrystal(IClusteredParticles particle_structure, IFormFactor form_factor) -> MesoCrystal"},
+	 { "delete_MesoCrystal", _wrap_delete_MesoCrystal, METH_O, "delete_MesoCrystal(MesoCrystal self)"},
+	 { "MesoCrystal_clone", _wrap_MesoCrystal_clone, METH_O, "MesoCrystal_clone(MesoCrystal self) -> MesoCrystal"},
+	 { "MesoCrystal_accept", _wrap_MesoCrystal_accept, METH_VARARGS, "MesoCrystal_accept(MesoCrystal self, INodeVisitor * visitor)"},
+	 { "MesoCrystal_createSlicedParticle", _wrap_MesoCrystal_createSlicedParticle, METH_VARARGS, "MesoCrystal_createSlicedParticle(MesoCrystal self, ZLimits limits) -> SlicedParticle"},
+	 { "MesoCrystal_getChildren", _wrap_MesoCrystal_getChildren, METH_O, "MesoCrystal_getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector"},
 	 { "MesoCrystal_swigregister", MesoCrystal_swigregister, METH_O, NULL},
 	 { "MesoCrystal_swiginit", MesoCrystal_swiginit, METH_VARARGS, NULL},
 	 { "new_Particle", _wrap_new_Particle, METH_VARARGS, "\n"
@@ -100371,2053 +100000,514 @@ static PyMethodDef SwigMethods[] = {
 		"Particle(Material material)\n"
 		"Particle(Material material, IFormFactor form_factor)\n"
 		"new_Particle(Material material, IFormFactor form_factor, IRotation rotation) -> Particle\n"
-		"Particle::Particle(Material material, const IFormFactor &form_factor, const IRotation &rotation)\n"
-		"\n"
-		""},
-	 { "Particle_clone", _wrap_Particle_clone, METH_O, "\n"
-		"Particle_clone(Particle self) -> Particle\n"
-		"Particle * Particle::clone() const override final\n"
-		"\n"
-		""},
-	 { "Particle_accept", _wrap_Particle_accept, METH_VARARGS, "\n"
-		"Particle_accept(Particle self, INodeVisitor * visitor)\n"
-		"void Particle::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "Particle_createSlicedParticle", _wrap_Particle_createSlicedParticle, METH_VARARGS, "\n"
-		"Particle_createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle\n"
-		"SlicedParticle Particle::createSlicedParticle(ZLimits limits) const override final\n"
-		"\n"
-		"Creates a sliced form factor for this particle. \n"
-		"\n"
-		""},
-	 { "Particle_setMaterial", _wrap_Particle_setMaterial, METH_VARARGS, "\n"
-		"Particle_setMaterial(Particle self, Material material)\n"
-		"void Particle::setMaterial(Material material)\n"
-		"\n"
-		""},
-	 { "Particle_material", _wrap_Particle_material, METH_O, "\n"
-		"Particle_material(Particle self) -> Material\n"
-		"const Material* Particle::material() const override final\n"
-		"\n"
-		""},
-	 { "Particle_setFormFactor", _wrap_Particle_setFormFactor, METH_VARARGS, "\n"
-		"Particle_setFormFactor(Particle self, IFormFactor form_factor)\n"
-		"void Particle::setFormFactor(const IFormFactor &form_factor)\n"
-		"\n"
-		""},
-	 { "Particle_getChildren", _wrap_Particle_getChildren, METH_O, "\n"
-		"Particle_getChildren(Particle self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Particle::getChildren() const override final\n"
-		"\n"
 		""},
+	 { "Particle_clone", _wrap_Particle_clone, METH_O, "Particle_clone(Particle self) -> Particle"},
+	 { "Particle_accept", _wrap_Particle_accept, METH_VARARGS, "Particle_accept(Particle self, INodeVisitor * visitor)"},
+	 { "Particle_createSlicedParticle", _wrap_Particle_createSlicedParticle, METH_VARARGS, "Particle_createSlicedParticle(Particle self, ZLimits limits) -> SlicedParticle"},
+	 { "Particle_setMaterial", _wrap_Particle_setMaterial, METH_VARARGS, "Particle_setMaterial(Particle self, Material material)"},
+	 { "Particle_material", _wrap_Particle_material, METH_O, "Particle_material(Particle self) -> Material"},
+	 { "Particle_setFormFactor", _wrap_Particle_setFormFactor, METH_VARARGS, "Particle_setFormFactor(Particle self, IFormFactor form_factor)"},
+	 { "Particle_getChildren", _wrap_Particle_getChildren, METH_O, "Particle_getChildren(Particle self) -> swig_dummy_type_const_inode_vector"},
 	 { "delete_Particle", _wrap_delete_Particle, METH_O, "delete_Particle(Particle self)"},
 	 { "Particle_swigregister", Particle_swigregister, METH_O, NULL},
 	 { "Particle_swiginit", Particle_swiginit, METH_VARARGS, NULL},
 	 { "new_ParticleComposition", _wrap_new_ParticleComposition, METH_VARARGS, "\n"
 		"ParticleComposition()\n"
 		"new_ParticleComposition(IParticle particle, vector_kvector_t positions) -> ParticleComposition\n"
-		"ParticleComposition::ParticleComposition(const IParticle &particle, std::vector< kvector_t > positions)\n"
-		"\n"
-		""},
-	 { "delete_ParticleComposition", _wrap_delete_ParticleComposition, METH_O, "\n"
-		"delete_ParticleComposition(ParticleComposition self)\n"
-		"ParticleComposition::~ParticleComposition()\n"
-		"\n"
-		""},
-	 { "ParticleComposition_clone", _wrap_ParticleComposition_clone, METH_O, "\n"
-		"ParticleComposition_clone(ParticleComposition self) -> ParticleComposition\n"
-		"ParticleComposition * ParticleComposition::clone() const override final\n"
-		"\n"
-		""},
-	 { "ParticleComposition_accept", _wrap_ParticleComposition_accept, METH_VARARGS, "\n"
-		"ParticleComposition_accept(ParticleComposition self, INodeVisitor * visitor)\n"
-		"void ParticleComposition::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "ParticleComposition_createFormFactor", _wrap_ParticleComposition_createFormFactor, METH_O, "\n"
-		"ParticleComposition_createFormFactor(ParticleComposition self) -> IFormFactor\n"
-		"IFormFactor * ParticleComposition::createFormFactor() const override final\n"
-		"\n"
-		"Creates a form factor for this particle. \n"
-		"\n"
 		""},
+	 { "delete_ParticleComposition", _wrap_delete_ParticleComposition, METH_O, "delete_ParticleComposition(ParticleComposition self)"},
+	 { "ParticleComposition_clone", _wrap_ParticleComposition_clone, METH_O, "ParticleComposition_clone(ParticleComposition self) -> ParticleComposition"},
+	 { "ParticleComposition_accept", _wrap_ParticleComposition_accept, METH_VARARGS, "ParticleComposition_accept(ParticleComposition self, INodeVisitor * visitor)"},
+	 { "ParticleComposition_createFormFactor", _wrap_ParticleComposition_createFormFactor, METH_O, "ParticleComposition_createFormFactor(ParticleComposition self) -> IFormFactor"},
 	 { "ParticleComposition_addParticle", _wrap_ParticleComposition_addParticle, METH_VARARGS, "\n"
 		"ParticleComposition_addParticle(ParticleComposition self, IParticle particle)\n"
 		"ParticleComposition_addParticle(ParticleComposition self, IParticle particle, kvector_t position)\n"
-		"void ParticleComposition::addParticle(const IParticle &particle, kvector_t position)\n"
-		"\n"
-		""},
-	 { "ParticleComposition_addParticles", _wrap_ParticleComposition_addParticles, METH_VARARGS, "\n"
-		"ParticleComposition_addParticles(ParticleComposition self, IParticle particle, vector_kvector_t positions)\n"
-		"void ParticleComposition::addParticles(const IParticle &particle, std::vector< kvector_t > positions)\n"
-		"\n"
-		""},
-	 { "ParticleComposition_nbrParticles", _wrap_ParticleComposition_nbrParticles, METH_O, "\n"
-		"ParticleComposition_nbrParticles(ParticleComposition self) -> size_t\n"
-		"size_t ParticleComposition::nbrParticles() const\n"
-		"\n"
-		"Returns number of different particles. \n"
-		"\n"
-		""},
-	 { "ParticleComposition_getChildren", _wrap_ParticleComposition_getChildren, METH_O, "\n"
-		"ParticleComposition_getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleComposition::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "ParticleComposition_decompose", _wrap_ParticleComposition_decompose, METH_O, "\n"
-		"ParticleComposition_decompose(ParticleComposition self) -> SafePointerVector< IParticle >\n"
-		"SafePointerVector< IParticle > ParticleComposition::decompose() const override final\n"
-		"\n"
-		"Decompose in constituent  IParticle objects. \n"
-		"\n"
-		""},
-	 { "ParticleComposition_bottomTopZ", _wrap_ParticleComposition_bottomTopZ, METH_O, "\n"
-		"ParticleComposition_bottomTopZ(ParticleComposition self) -> ParticleLimits\n"
-		"ParticleLimits ParticleComposition::bottomTopZ() const override final\n"
-		"\n"
-		"Top and bottom z-coordinate. \n"
-		"\n"
 		""},
+	 { "ParticleComposition_addParticles", _wrap_ParticleComposition_addParticles, METH_VARARGS, "ParticleComposition_addParticles(ParticleComposition self, IParticle particle, vector_kvector_t positions)"},
+	 { "ParticleComposition_nbrParticles", _wrap_ParticleComposition_nbrParticles, METH_O, "ParticleComposition_nbrParticles(ParticleComposition self) -> size_t"},
+	 { "ParticleComposition_getChildren", _wrap_ParticleComposition_getChildren, METH_O, "ParticleComposition_getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector"},
+	 { "ParticleComposition_decompose", _wrap_ParticleComposition_decompose, METH_O, "ParticleComposition_decompose(ParticleComposition self) -> SafePointerVector< IParticle >"},
+	 { "ParticleComposition_bottomTopZ", _wrap_ParticleComposition_bottomTopZ, METH_O, "ParticleComposition_bottomTopZ(ParticleComposition self) -> ParticleLimits"},
 	 { "ParticleComposition_swigregister", ParticleComposition_swigregister, METH_O, NULL},
 	 { "ParticleComposition_swiginit", ParticleComposition_swiginit, METH_VARARGS, NULL},
-	 { "new_ParticleCoreShell", _wrap_new_ParticleCoreShell, METH_VARARGS, "\n"
-		"ParticleCoreShell(Particle shell, Particle core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0))\n"
-		"ParticleCoreShell::ParticleCoreShell(const Particle &shell, const Particle &core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0))\n"
-		"\n"
-		""},
-	 { "delete_ParticleCoreShell", _wrap_delete_ParticleCoreShell, METH_O, "\n"
-		"delete_ParticleCoreShell(ParticleCoreShell self)\n"
-		"ParticleCoreShell::~ParticleCoreShell()\n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_clone", _wrap_ParticleCoreShell_clone, METH_O, "\n"
-		"ParticleCoreShell_clone(ParticleCoreShell self) -> ParticleCoreShell\n"
-		"ParticleCoreShell * ParticleCoreShell::clone() const override final\n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_accept", _wrap_ParticleCoreShell_accept, METH_VARARGS, "\n"
-		"ParticleCoreShell_accept(ParticleCoreShell self, INodeVisitor * visitor)\n"
-		"void ParticleCoreShell::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_createSlicedParticle", _wrap_ParticleCoreShell_createSlicedParticle, METH_VARARGS, "\n"
-		"ParticleCoreShell_createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle\n"
-		"SlicedParticle ParticleCoreShell::createSlicedParticle(ZLimits limits) const override final\n"
-		"\n"
-		"Creates a sliced form factor for this particle. \n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_coreParticle", _wrap_ParticleCoreShell_coreParticle, METH_O, "\n"
-		"ParticleCoreShell_coreParticle(ParticleCoreShell self) -> Particle\n"
-		"const Particle * ParticleCoreShell::coreParticle() const\n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_shellParticle", _wrap_ParticleCoreShell_shellParticle, METH_O, "\n"
-		"ParticleCoreShell_shellParticle(ParticleCoreShell self) -> Particle\n"
-		"const Particle * ParticleCoreShell::shellParticle() const\n"
-		"\n"
-		""},
-	 { "ParticleCoreShell_getChildren", _wrap_ParticleCoreShell_getChildren, METH_O, "\n"
-		"ParticleCoreShell_getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleCoreShell::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "new_ParticleCoreShell", _wrap_new_ParticleCoreShell, METH_VARARGS, "ParticleCoreShell(Particle shell, Particle core, kvector_t relative_core_position=kvector_t(0.0, 0.0, 0.0))"},
+	 { "delete_ParticleCoreShell", _wrap_delete_ParticleCoreShell, METH_O, "delete_ParticleCoreShell(ParticleCoreShell self)"},
+	 { "ParticleCoreShell_clone", _wrap_ParticleCoreShell_clone, METH_O, "ParticleCoreShell_clone(ParticleCoreShell self) -> ParticleCoreShell"},
+	 { "ParticleCoreShell_accept", _wrap_ParticleCoreShell_accept, METH_VARARGS, "ParticleCoreShell_accept(ParticleCoreShell self, INodeVisitor * visitor)"},
+	 { "ParticleCoreShell_createSlicedParticle", _wrap_ParticleCoreShell_createSlicedParticle, METH_VARARGS, "ParticleCoreShell_createSlicedParticle(ParticleCoreShell self, ZLimits limits) -> SlicedParticle"},
+	 { "ParticleCoreShell_coreParticle", _wrap_ParticleCoreShell_coreParticle, METH_O, "ParticleCoreShell_coreParticle(ParticleCoreShell self) -> Particle"},
+	 { "ParticleCoreShell_shellParticle", _wrap_ParticleCoreShell_shellParticle, METH_O, "ParticleCoreShell_shellParticle(ParticleCoreShell self) -> Particle"},
+	 { "ParticleCoreShell_getChildren", _wrap_ParticleCoreShell_getChildren, METH_O, "ParticleCoreShell_getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector"},
 	 { "ParticleCoreShell_swigregister", ParticleCoreShell_swigregister, METH_O, NULL},
 	 { "ParticleCoreShell_swiginit", ParticleCoreShell_swiginit, METH_VARARGS, NULL},
-	 { "new_ParticleDistribution", _wrap_new_ParticleDistribution, METH_VARARGS, "\n"
-		"new_ParticleDistribution(IParticle prototype, ParameterDistribution par_distr) -> ParticleDistribution\n"
-		"ParticleDistribution::ParticleDistribution(const IParticle &prototype, const ParameterDistribution &par_distr)\n"
-		"\n"
-		""},
-	 { "ParticleDistribution_clone", _wrap_ParticleDistribution_clone, METH_O, "\n"
-		"ParticleDistribution_clone(ParticleDistribution self) -> ParticleDistribution\n"
-		"ParticleDistribution * ParticleDistribution::clone() const override final\n"
-		"\n"
-		""},
-	 { "ParticleDistribution_accept", _wrap_ParticleDistribution_accept, METH_VARARGS, "\n"
-		"ParticleDistribution_accept(ParticleDistribution self, INodeVisitor * visitor)\n"
-		"void ParticleDistribution::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "ParticleDistribution_translate", _wrap_ParticleDistribution_translate, METH_VARARGS, "\n"
-		"ParticleDistribution_translate(ParticleDistribution self, kvector_t translation)\n"
-		"void ParticleDistribution::translate(kvector_t translation) override final\n"
-		"\n"
-		"Translates the particle with the given vector. \n"
-		"\n"
-		""},
-	 { "ParticleDistribution_rotate", _wrap_ParticleDistribution_rotate, METH_VARARGS, "\n"
-		"ParticleDistribution_rotate(ParticleDistribution self, IRotation rotation)\n"
-		"void ParticleDistribution::rotate(const IRotation &rotation) override final\n"
-		"\n"
-		"Applies the given rotation to the particle. \n"
-		"\n"
-		""},
-	 { "ParticleDistribution_generateParticles", _wrap_ParticleDistribution_generateParticles, METH_O, "\n"
-		"ParticleDistribution_generateParticles(ParticleDistribution self) -> SafePointerVector< IParticle >\n"
-		"SafePointerVector< IParticle > ParticleDistribution::generateParticles() const\n"
-		"\n"
-		"Returns list of new particles generated according to a distribution.\n"
-		"\n"
-		"Returns particle clones with parameter values drawn from distribution. \n"
-		"\n"
-		""},
-	 { "ParticleDistribution_prototype", _wrap_ParticleDistribution_prototype, METH_O, "\n"
-		"ParticleDistribution_prototype(ParticleDistribution self) -> IParticle\n"
-		"const IParticle& ParticleDistribution::prototype() const\n"
-		"\n"
-		"Returns the prototype particle, used for generating multiple ones. \n"
-		"\n"
-		""},
-	 { "ParticleDistribution_parameterDistribution", _wrap_ParticleDistribution_parameterDistribution, METH_O, "\n"
-		"ParticleDistribution_parameterDistribution(ParticleDistribution self) -> ParameterDistribution\n"
-		"ParameterDistribution ParticleDistribution::parameterDistribution() const\n"
-		"\n"
-		"Returns the distributed parameter data. \n"
-		"\n"
-		""},
-	 { "ParticleDistribution_getChildren", _wrap_ParticleDistribution_getChildren, METH_O, "\n"
-		"ParticleDistribution_getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleDistribution::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "ParticleDistribution_mainUnits", _wrap_ParticleDistribution_mainUnits, METH_O, "\n"
-		"ParticleDistribution_mainUnits(ParticleDistribution self) -> std::string\n"
-		"std::string ParticleDistribution::mainUnits() const\n"
-		"\n"
-		""},
+	 { "new_ParticleDistribution", _wrap_new_ParticleDistribution, METH_VARARGS, "new_ParticleDistribution(IParticle prototype, ParameterDistribution par_distr) -> ParticleDistribution"},
+	 { "ParticleDistribution_clone", _wrap_ParticleDistribution_clone, METH_O, "ParticleDistribution_clone(ParticleDistribution self) -> ParticleDistribution"},
+	 { "ParticleDistribution_accept", _wrap_ParticleDistribution_accept, METH_VARARGS, "ParticleDistribution_accept(ParticleDistribution self, INodeVisitor * visitor)"},
+	 { "ParticleDistribution_translate", _wrap_ParticleDistribution_translate, METH_VARARGS, "ParticleDistribution_translate(ParticleDistribution self, kvector_t translation)"},
+	 { "ParticleDistribution_rotate", _wrap_ParticleDistribution_rotate, METH_VARARGS, "ParticleDistribution_rotate(ParticleDistribution self, IRotation rotation)"},
+	 { "ParticleDistribution_generateParticles", _wrap_ParticleDistribution_generateParticles, METH_O, "ParticleDistribution_generateParticles(ParticleDistribution self) -> SafePointerVector< IParticle >"},
+	 { "ParticleDistribution_prototype", _wrap_ParticleDistribution_prototype, METH_O, "ParticleDistribution_prototype(ParticleDistribution self) -> IParticle"},
+	 { "ParticleDistribution_parameterDistribution", _wrap_ParticleDistribution_parameterDistribution, METH_O, "ParticleDistribution_parameterDistribution(ParticleDistribution self) -> ParameterDistribution"},
+	 { "ParticleDistribution_getChildren", _wrap_ParticleDistribution_getChildren, METH_O, "ParticleDistribution_getChildren(ParticleDistribution self) -> swig_dummy_type_const_inode_vector"},
+	 { "ParticleDistribution_mainUnits", _wrap_ParticleDistribution_mainUnits, METH_O, "ParticleDistribution_mainUnits(ParticleDistribution self) -> std::string"},
 	 { "delete_ParticleDistribution", _wrap_delete_ParticleDistribution, METH_O, "delete_ParticleDistribution(ParticleDistribution self)"},
 	 { "ParticleDistribution_swigregister", ParticleDistribution_swigregister, METH_O, NULL},
 	 { "ParticleDistribution_swiginit", ParticleDistribution_swiginit, METH_VARARGS, NULL},
-	 { "IFTDecayFunction1D_clone", _wrap_IFTDecayFunction1D_clone, METH_O, "\n"
-		"IFTDecayFunction1D_clone(IFTDecayFunction1D self) -> IFTDecayFunction1D\n"
-		"virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0\n"
-		"\n"
-		""},
-	 { "IFTDecayFunction1D_evaluate", _wrap_IFTDecayFunction1D_evaluate, METH_VARARGS, "\n"
-		"IFTDecayFunction1D_evaluate(IFTDecayFunction1D self, double q) -> double\n"
-		"virtual double IFTDecayFunction1D::evaluate(double q) const =0\n"
-		"\n"
-		""},
-	 { "IFTDecayFunction1D_decayLength", _wrap_IFTDecayFunction1D_decayLength, METH_O, "\n"
-		"IFTDecayFunction1D_decayLength(IFTDecayFunction1D self) -> double\n"
-		"double IFTDecayFunction1D::decayLength() const\n"
-		"\n"
-		""},
+	 { "IFTDecayFunction1D_clone", _wrap_IFTDecayFunction1D_clone, METH_O, "IFTDecayFunction1D_clone(IFTDecayFunction1D self) -> IFTDecayFunction1D"},
+	 { "IFTDecayFunction1D_evaluate", _wrap_IFTDecayFunction1D_evaluate, METH_VARARGS, "IFTDecayFunction1D_evaluate(IFTDecayFunction1D self, double q) -> double"},
+	 { "IFTDecayFunction1D_decayLength", _wrap_IFTDecayFunction1D_decayLength, METH_O, "IFTDecayFunction1D_decayLength(IFTDecayFunction1D self) -> double"},
 	 { "delete_IFTDecayFunction1D", _wrap_delete_IFTDecayFunction1D, METH_O, "delete_IFTDecayFunction1D(IFTDecayFunction1D self)"},
 	 { "IFTDecayFunction1D_swigregister", IFTDecayFunction1D_swigregister, METH_O, NULL},
 	 { "new_FTDecayFunction1DCauchy", _wrap_new_FTDecayFunction1DCauchy, METH_VARARGS, "\n"
 		"FTDecayFunction1DCauchy(vdouble1d_t P)\n"
 		"new_FTDecayFunction1DCauchy(double decay_length) -> FTDecayFunction1DCauchy\n"
-		"FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DCauchy_clone", _wrap_FTDecayFunction1DCauchy_clone, METH_O, "\n"
-		"FTDecayFunction1DCauchy_clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy\n"
-		"FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DCauchy_accept", _wrap_FTDecayFunction1DCauchy_accept, METH_VARARGS, "\n"
-		"FTDecayFunction1DCauchy_accept(FTDecayFunction1DCauchy self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction1DCauchy::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DCauchy_evaluate", _wrap_FTDecayFunction1DCauchy_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction1DCauchy_evaluate(FTDecayFunction1DCauchy self, double q) -> double\n"
-		"double FTDecayFunction1DCauchy::evaluate(double q) const final\n"
-		"\n"
 		""},
+	 { "FTDecayFunction1DCauchy_clone", _wrap_FTDecayFunction1DCauchy_clone, METH_O, "FTDecayFunction1DCauchy_clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy"},
+	 { "FTDecayFunction1DCauchy_accept", _wrap_FTDecayFunction1DCauchy_accept, METH_VARARGS, "FTDecayFunction1DCauchy_accept(FTDecayFunction1DCauchy self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction1DCauchy_evaluate", _wrap_FTDecayFunction1DCauchy_evaluate, METH_VARARGS, "FTDecayFunction1DCauchy_evaluate(FTDecayFunction1DCauchy self, double q) -> double"},
 	 { "delete_FTDecayFunction1DCauchy", _wrap_delete_FTDecayFunction1DCauchy, METH_O, "delete_FTDecayFunction1DCauchy(FTDecayFunction1DCauchy self)"},
 	 { "FTDecayFunction1DCauchy_swigregister", FTDecayFunction1DCauchy_swigregister, METH_O, NULL},
 	 { "FTDecayFunction1DCauchy_swiginit", FTDecayFunction1DCauchy_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDecayFunction1DGauss", _wrap_new_FTDecayFunction1DGauss, METH_VARARGS, "\n"
 		"FTDecayFunction1DGauss(vdouble1d_t P)\n"
 		"new_FTDecayFunction1DGauss(double decay_length) -> FTDecayFunction1DGauss\n"
-		"FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DGauss_clone", _wrap_FTDecayFunction1DGauss_clone, METH_O, "\n"
-		"FTDecayFunction1DGauss_clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss\n"
-		"FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DGauss_accept", _wrap_FTDecayFunction1DGauss_accept, METH_VARARGS, "\n"
-		"FTDecayFunction1DGauss_accept(FTDecayFunction1DGauss self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction1DGauss::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DGauss_evaluate", _wrap_FTDecayFunction1DGauss_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction1DGauss_evaluate(FTDecayFunction1DGauss self, double q) -> double\n"
-		"double FTDecayFunction1DGauss::evaluate(double q) const final\n"
-		"\n"
 		""},
+	 { "FTDecayFunction1DGauss_clone", _wrap_FTDecayFunction1DGauss_clone, METH_O, "FTDecayFunction1DGauss_clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss"},
+	 { "FTDecayFunction1DGauss_accept", _wrap_FTDecayFunction1DGauss_accept, METH_VARARGS, "FTDecayFunction1DGauss_accept(FTDecayFunction1DGauss self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction1DGauss_evaluate", _wrap_FTDecayFunction1DGauss_evaluate, METH_VARARGS, "FTDecayFunction1DGauss_evaluate(FTDecayFunction1DGauss self, double q) -> double"},
 	 { "delete_FTDecayFunction1DGauss", _wrap_delete_FTDecayFunction1DGauss, METH_O, "delete_FTDecayFunction1DGauss(FTDecayFunction1DGauss self)"},
 	 { "FTDecayFunction1DGauss_swigregister", FTDecayFunction1DGauss_swigregister, METH_O, NULL},
 	 { "FTDecayFunction1DGauss_swiginit", FTDecayFunction1DGauss_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDecayFunction1DTriangle", _wrap_new_FTDecayFunction1DTriangle, METH_VARARGS, "\n"
 		"FTDecayFunction1DTriangle(vdouble1d_t P)\n"
 		"new_FTDecayFunction1DTriangle(double decay_length) -> FTDecayFunction1DTriangle\n"
-		"FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DTriangle_clone", _wrap_FTDecayFunction1DTriangle_clone, METH_O, "\n"
-		"FTDecayFunction1DTriangle_clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle\n"
-		"FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DTriangle_accept", _wrap_FTDecayFunction1DTriangle_accept, METH_VARARGS, "\n"
-		"FTDecayFunction1DTriangle_accept(FTDecayFunction1DTriangle self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction1DTriangle::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DTriangle_evaluate", _wrap_FTDecayFunction1DTriangle_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction1DTriangle_evaluate(FTDecayFunction1DTriangle self, double q) -> double\n"
-		"double FTDecayFunction1DTriangle::evaluate(double q) const final\n"
-		"\n"
 		""},
+	 { "FTDecayFunction1DTriangle_clone", _wrap_FTDecayFunction1DTriangle_clone, METH_O, "FTDecayFunction1DTriangle_clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle"},
+	 { "FTDecayFunction1DTriangle_accept", _wrap_FTDecayFunction1DTriangle_accept, METH_VARARGS, "FTDecayFunction1DTriangle_accept(FTDecayFunction1DTriangle self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction1DTriangle_evaluate", _wrap_FTDecayFunction1DTriangle_evaluate, METH_VARARGS, "FTDecayFunction1DTriangle_evaluate(FTDecayFunction1DTriangle self, double q) -> double"},
 	 { "delete_FTDecayFunction1DTriangle", _wrap_delete_FTDecayFunction1DTriangle, METH_O, "delete_FTDecayFunction1DTriangle(FTDecayFunction1DTriangle self)"},
 	 { "FTDecayFunction1DTriangle_swigregister", FTDecayFunction1DTriangle_swigregister, METH_O, NULL},
 	 { "FTDecayFunction1DTriangle_swiginit", FTDecayFunction1DTriangle_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDecayFunction1DVoigt", _wrap_new_FTDecayFunction1DVoigt, METH_VARARGS, "\n"
 		"FTDecayFunction1DVoigt(vdouble1d_t P)\n"
 		"new_FTDecayFunction1DVoigt(double decay_length, double eta) -> FTDecayFunction1DVoigt\n"
-		"FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DVoigt_clone", _wrap_FTDecayFunction1DVoigt_clone, METH_O, "\n"
-		"FTDecayFunction1DVoigt_clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt\n"
-		"FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DVoigt_accept", _wrap_FTDecayFunction1DVoigt_accept, METH_VARARGS, "\n"
-		"FTDecayFunction1DVoigt_accept(FTDecayFunction1DVoigt self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction1DVoigt::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DVoigt_evaluate", _wrap_FTDecayFunction1DVoigt_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction1DVoigt_evaluate(FTDecayFunction1DVoigt self, double q) -> double\n"
-		"double FTDecayFunction1DVoigt::evaluate(double q) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction1DVoigt_eEta", _wrap_FTDecayFunction1DVoigt_eEta, METH_O, "\n"
-		"FTDecayFunction1DVoigt_eEta(FTDecayFunction1DVoigt self) -> double\n"
-		"double FTDecayFunction1DVoigt::eEta() const\n"
-		"\n"
 		""},
+	 { "FTDecayFunction1DVoigt_clone", _wrap_FTDecayFunction1DVoigt_clone, METH_O, "FTDecayFunction1DVoigt_clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt"},
+	 { "FTDecayFunction1DVoigt_accept", _wrap_FTDecayFunction1DVoigt_accept, METH_VARARGS, "FTDecayFunction1DVoigt_accept(FTDecayFunction1DVoigt self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction1DVoigt_evaluate", _wrap_FTDecayFunction1DVoigt_evaluate, METH_VARARGS, "FTDecayFunction1DVoigt_evaluate(FTDecayFunction1DVoigt self, double q) -> double"},
+	 { "FTDecayFunction1DVoigt_eEta", _wrap_FTDecayFunction1DVoigt_eEta, METH_O, "FTDecayFunction1DVoigt_eEta(FTDecayFunction1DVoigt self) -> double"},
 	 { "delete_FTDecayFunction1DVoigt", _wrap_delete_FTDecayFunction1DVoigt, METH_O, "delete_FTDecayFunction1DVoigt(FTDecayFunction1DVoigt self)"},
 	 { "FTDecayFunction1DVoigt_swigregister", FTDecayFunction1DVoigt_swigregister, METH_O, NULL},
 	 { "FTDecayFunction1DVoigt_swiginit", FTDecayFunction1DVoigt_swiginit, METH_VARARGS, NULL},
-	 { "IFTDecayFunction2D_clone", _wrap_IFTDecayFunction2D_clone, METH_O, "\n"
-		"IFTDecayFunction2D_clone(IFTDecayFunction2D self) -> IFTDecayFunction2D\n"
-		"virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0\n"
-		"\n"
-		""},
-	 { "IFTDecayFunction2D_decayLengthX", _wrap_IFTDecayFunction2D_decayLengthX, METH_O, "\n"
-		"IFTDecayFunction2D_decayLengthX(IFTDecayFunction2D self) -> double\n"
-		"double IFTDecayFunction2D::decayLengthX() const\n"
-		"\n"
-		"get decay length in distribution's X-direction \n"
-		"\n"
-		""},
-	 { "IFTDecayFunction2D_decayLengthY", _wrap_IFTDecayFunction2D_decayLengthY, METH_O, "\n"
-		"IFTDecayFunction2D_decayLengthY(IFTDecayFunction2D self) -> double\n"
-		"double IFTDecayFunction2D::decayLengthY() const\n"
-		"\n"
-		"get decay length in distribution's Y-direction \n"
-		"\n"
-		""},
-	 { "IFTDecayFunction2D_gamma", _wrap_IFTDecayFunction2D_gamma, METH_O, "\n"
-		"IFTDecayFunction2D_gamma(IFTDecayFunction2D self) -> double\n"
-		"double IFTDecayFunction2D::gamma() const\n"
-		"\n"
-		"get angle between first lattice vector and X-axis of distribution (both in direct space) \n"
-		"\n"
-		""},
-	 { "IFTDecayFunction2D_evaluate", _wrap_IFTDecayFunction2D_evaluate, METH_VARARGS, "\n"
-		"IFTDecayFunction2D_evaluate(IFTDecayFunction2D self, double qx, double qy) -> double\n"
-		"virtual double IFTDecayFunction2D::evaluate(double qx, double qy) const =0\n"
-		"\n"
-		"evaluate Fourier transformed decay function for q in X,Y coordinates \n"
-		"\n"
-		""},
-	 { "IFTDecayFunction2D_boundingReciprocalLatticeCoordinates", _wrap_IFTDecayFunction2D_boundingReciprocalLatticeCoordinates, METH_VARARGS, "\n"
-		"IFTDecayFunction2D_boundingReciprocalLatticeCoordinates(IFTDecayFunction2D self, double qX, double qY, double a, double b, double alpha) -> pvacuum_double_t\n"
-		"std::pair< double, double > IFTDecayFunction2D::boundingReciprocalLatticeCoordinates(double qX, double qY, double a, double b, double alpha) const\n"
-		"\n"
-		"transform back to a*, b* basis:\n"
-		"\n"
-		"Calculates bounding values of reciprocal lattice coordinates that contain the centered rectangle with a corner defined by qX and qY \n"
-		"\n"
-		""},
+	 { "IFTDecayFunction2D_clone", _wrap_IFTDecayFunction2D_clone, METH_O, "IFTDecayFunction2D_clone(IFTDecayFunction2D self) -> IFTDecayFunction2D"},
+	 { "IFTDecayFunction2D_decayLengthX", _wrap_IFTDecayFunction2D_decayLengthX, METH_O, "IFTDecayFunction2D_decayLengthX(IFTDecayFunction2D self) -> double"},
+	 { "IFTDecayFunction2D_decayLengthY", _wrap_IFTDecayFunction2D_decayLengthY, METH_O, "IFTDecayFunction2D_decayLengthY(IFTDecayFunction2D self) -> double"},
+	 { "IFTDecayFunction2D_gamma", _wrap_IFTDecayFunction2D_gamma, METH_O, "IFTDecayFunction2D_gamma(IFTDecayFunction2D self) -> double"},
+	 { "IFTDecayFunction2D_evaluate", _wrap_IFTDecayFunction2D_evaluate, METH_VARARGS, "IFTDecayFunction2D_evaluate(IFTDecayFunction2D self, double qx, double qy) -> double"},
+	 { "IFTDecayFunction2D_boundingReciprocalLatticeCoordinates", _wrap_IFTDecayFunction2D_boundingReciprocalLatticeCoordinates, METH_VARARGS, "IFTDecayFunction2D_boundingReciprocalLatticeCoordinates(IFTDecayFunction2D self, double qX, double qY, double a, double b, double alpha) -> pvacuum_double_t"},
 	 { "delete_IFTDecayFunction2D", _wrap_delete_IFTDecayFunction2D, METH_O, "delete_IFTDecayFunction2D(IFTDecayFunction2D self)"},
 	 { "IFTDecayFunction2D_swigregister", IFTDecayFunction2D_swigregister, METH_O, NULL},
 	 { "new_FTDecayFunction2DCauchy", _wrap_new_FTDecayFunction2DCauchy, METH_VARARGS, "\n"
 		"FTDecayFunction2DCauchy(vdouble1d_t P)\n"
 		"new_FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma) -> FTDecayFunction2DCauchy\n"
-		"FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DCauchy_clone", _wrap_FTDecayFunction2DCauchy_clone, METH_O, "\n"
-		"FTDecayFunction2DCauchy_clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy\n"
-		"FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DCauchy_accept", _wrap_FTDecayFunction2DCauchy_accept, METH_VARARGS, "\n"
-		"FTDecayFunction2DCauchy_accept(FTDecayFunction2DCauchy self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction2DCauchy::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DCauchy_evaluate", _wrap_FTDecayFunction2DCauchy_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction2DCauchy_evaluate(FTDecayFunction2DCauchy self, double qx, double qy) -> double\n"
-		"double FTDecayFunction2DCauchy::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"evaluate Fourier transformed decay function for q in X,Y coordinates \n"
-		"\n"
 		""},
+	 { "FTDecayFunction2DCauchy_clone", _wrap_FTDecayFunction2DCauchy_clone, METH_O, "FTDecayFunction2DCauchy_clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy"},
+	 { "FTDecayFunction2DCauchy_accept", _wrap_FTDecayFunction2DCauchy_accept, METH_VARARGS, "FTDecayFunction2DCauchy_accept(FTDecayFunction2DCauchy self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction2DCauchy_evaluate", _wrap_FTDecayFunction2DCauchy_evaluate, METH_VARARGS, "FTDecayFunction2DCauchy_evaluate(FTDecayFunction2DCauchy self, double qx, double qy) -> double"},
 	 { "delete_FTDecayFunction2DCauchy", _wrap_delete_FTDecayFunction2DCauchy, METH_O, "delete_FTDecayFunction2DCauchy(FTDecayFunction2DCauchy self)"},
 	 { "FTDecayFunction2DCauchy_swigregister", FTDecayFunction2DCauchy_swigregister, METH_O, NULL},
 	 { "FTDecayFunction2DCauchy_swiginit", FTDecayFunction2DCauchy_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDecayFunction2DGauss", _wrap_new_FTDecayFunction2DGauss, METH_VARARGS, "\n"
 		"FTDecayFunction2DGauss(vdouble1d_t P)\n"
 		"new_FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma) -> FTDecayFunction2DGauss\n"
-		"FTDecayFunction2DGauss::FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DGauss_clone", _wrap_FTDecayFunction2DGauss_clone, METH_O, "\n"
-		"FTDecayFunction2DGauss_clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss\n"
-		"FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DGauss_accept", _wrap_FTDecayFunction2DGauss_accept, METH_VARARGS, "\n"
-		"FTDecayFunction2DGauss_accept(FTDecayFunction2DGauss self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction2DGauss::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DGauss_evaluate", _wrap_FTDecayFunction2DGauss_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction2DGauss_evaluate(FTDecayFunction2DGauss self, double qx, double qy) -> double\n"
-		"double FTDecayFunction2DGauss::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"evaluate Fourier transformed decay function for q in X,Y coordinates \n"
-		"\n"
 		""},
+	 { "FTDecayFunction2DGauss_clone", _wrap_FTDecayFunction2DGauss_clone, METH_O, "FTDecayFunction2DGauss_clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss"},
+	 { "FTDecayFunction2DGauss_accept", _wrap_FTDecayFunction2DGauss_accept, METH_VARARGS, "FTDecayFunction2DGauss_accept(FTDecayFunction2DGauss self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction2DGauss_evaluate", _wrap_FTDecayFunction2DGauss_evaluate, METH_VARARGS, "FTDecayFunction2DGauss_evaluate(FTDecayFunction2DGauss self, double qx, double qy) -> double"},
 	 { "delete_FTDecayFunction2DGauss", _wrap_delete_FTDecayFunction2DGauss, METH_O, "delete_FTDecayFunction2DGauss(FTDecayFunction2DGauss self)"},
 	 { "FTDecayFunction2DGauss_swigregister", FTDecayFunction2DGauss_swigregister, METH_O, NULL},
 	 { "FTDecayFunction2DGauss_swiginit", FTDecayFunction2DGauss_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDecayFunction2DVoigt", _wrap_new_FTDecayFunction2DVoigt, METH_VARARGS, "\n"
 		"FTDecayFunction2DVoigt(vdouble1d_t P)\n"
 		"new_FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta) -> FTDecayFunction2DVoigt\n"
-		"FTDecayFunction2DVoigt::FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta)\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DVoigt_clone", _wrap_FTDecayFunction2DVoigt_clone, METH_O, "\n"
-		"FTDecayFunction2DVoigt_clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt\n"
-		"FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DVoigt_accept", _wrap_FTDecayFunction2DVoigt_accept, METH_VARARGS, "\n"
-		"FTDecayFunction2DVoigt_accept(FTDecayFunction2DVoigt self, INodeVisitor * visitor)\n"
-		"void FTDecayFunction2DVoigt::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DVoigt_evaluate", _wrap_FTDecayFunction2DVoigt_evaluate, METH_VARARGS, "\n"
-		"FTDecayFunction2DVoigt_evaluate(FTDecayFunction2DVoigt self, double qx, double qy) -> double\n"
-		"double FTDecayFunction2DVoigt::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"evaluate Fourier transformed decay function for q in X,Y coordinates \n"
-		"\n"
-		""},
-	 { "FTDecayFunction2DVoigt_eta", _wrap_FTDecayFunction2DVoigt_eta, METH_O, "\n"
-		"FTDecayFunction2DVoigt_eta(FTDecayFunction2DVoigt self) -> double\n"
-		"double FTDecayFunction2DVoigt::eta() const\n"
-		"\n"
 		""},
+	 { "FTDecayFunction2DVoigt_clone", _wrap_FTDecayFunction2DVoigt_clone, METH_O, "FTDecayFunction2DVoigt_clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt"},
+	 { "FTDecayFunction2DVoigt_accept", _wrap_FTDecayFunction2DVoigt_accept, METH_VARARGS, "FTDecayFunction2DVoigt_accept(FTDecayFunction2DVoigt self, INodeVisitor * visitor)"},
+	 { "FTDecayFunction2DVoigt_evaluate", _wrap_FTDecayFunction2DVoigt_evaluate, METH_VARARGS, "FTDecayFunction2DVoigt_evaluate(FTDecayFunction2DVoigt self, double qx, double qy) -> double"},
+	 { "FTDecayFunction2DVoigt_eta", _wrap_FTDecayFunction2DVoigt_eta, METH_O, "FTDecayFunction2DVoigt_eta(FTDecayFunction2DVoigt self) -> double"},
 	 { "delete_FTDecayFunction2DVoigt", _wrap_delete_FTDecayFunction2DVoigt, METH_O, "delete_FTDecayFunction2DVoigt(FTDecayFunction2DVoigt self)"},
 	 { "FTDecayFunction2DVoigt_swigregister", FTDecayFunction2DVoigt_swigregister, METH_O, NULL},
 	 { "FTDecayFunction2DVoigt_swiginit", FTDecayFunction2DVoigt_swiginit, METH_VARARGS, NULL},
-	 { "IFTDistribution1D_clone", _wrap_IFTDistribution1D_clone, METH_O, "\n"
-		"IFTDistribution1D_clone(IFTDistribution1D self) -> IFTDistribution1D\n"
-		"virtual IFTDistribution1D* IFTDistribution1D::clone() const =0\n"
-		"\n"
-		""},
-	 { "IFTDistribution1D_evaluate", _wrap_IFTDistribution1D_evaluate, METH_VARARGS, "\n"
-		"IFTDistribution1D_evaluate(IFTDistribution1D self, double q) -> double\n"
-		"virtual double IFTDistribution1D::evaluate(double q) const =0\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "IFTDistribution1D_omega", _wrap_IFTDistribution1D_omega, METH_O, "\n"
-		"IFTDistribution1D_omega(IFTDistribution1D self) -> double\n"
-		"double IFTDistribution1D::omega() const\n"
-		"\n"
-		""},
-	 { "IFTDistribution1D_qSecondDerivative", _wrap_IFTDistribution1D_qSecondDerivative, METH_O, "\n"
-		"IFTDistribution1D_qSecondDerivative(IFTDistribution1D self) -> double\n"
-		"virtual double IFTDistribution1D::qSecondDerivative() const =0\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
-		""},
+	 { "IFTDistribution1D_clone", _wrap_IFTDistribution1D_clone, METH_O, "IFTDistribution1D_clone(IFTDistribution1D self) -> IFTDistribution1D"},
+	 { "IFTDistribution1D_evaluate", _wrap_IFTDistribution1D_evaluate, METH_VARARGS, "IFTDistribution1D_evaluate(IFTDistribution1D self, double q) -> double"},
+	 { "IFTDistribution1D_omega", _wrap_IFTDistribution1D_omega, METH_O, "IFTDistribution1D_omega(IFTDistribution1D self) -> double"},
+	 { "IFTDistribution1D_qSecondDerivative", _wrap_IFTDistribution1D_qSecondDerivative, METH_O, "IFTDistribution1D_qSecondDerivative(IFTDistribution1D self) -> double"},
 	 { "delete_IFTDistribution1D", _wrap_delete_IFTDistribution1D, METH_O, "delete_IFTDistribution1D(IFTDistribution1D self)"},
 	 { "IFTDistribution1D_swigregister", IFTDistribution1D_swigregister, METH_O, NULL},
 	 { "new_FTDistribution1DCauchy", _wrap_new_FTDistribution1DCauchy, METH_VARARGS, "\n"
 		"FTDistribution1DCauchy(vdouble1d_t P)\n"
 		"new_FTDistribution1DCauchy(double omega) -> FTDistribution1DCauchy\n"
-		"FTDistribution1DCauchy::FTDistribution1DCauchy(double omega)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCauchy_clone", _wrap_FTDistribution1DCauchy_clone, METH_O, "\n"
-		"FTDistribution1DCauchy_clone(FTDistribution1DCauchy self) -> FTDistribution1DCauchy\n"
-		"FTDistribution1DCauchy * FTDistribution1DCauchy::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCauchy_accept", _wrap_FTDistribution1DCauchy_accept, METH_VARARGS, "\n"
-		"FTDistribution1DCauchy_accept(FTDistribution1DCauchy self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DCauchy::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCauchy_evaluate", _wrap_FTDistribution1DCauchy_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DCauchy_evaluate(FTDistribution1DCauchy self, double q) -> double\n"
-		"double FTDistribution1DCauchy::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DCauchy_qSecondDerivative", _wrap_FTDistribution1DCauchy_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DCauchy_qSecondDerivative(FTDistribution1DCauchy self) -> double\n"
-		"double FTDistribution1DCauchy::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DCauchy_clone", _wrap_FTDistribution1DCauchy_clone, METH_O, "FTDistribution1DCauchy_clone(FTDistribution1DCauchy self) -> FTDistribution1DCauchy"},
+	 { "FTDistribution1DCauchy_accept", _wrap_FTDistribution1DCauchy_accept, METH_VARARGS, "FTDistribution1DCauchy_accept(FTDistribution1DCauchy self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DCauchy_evaluate", _wrap_FTDistribution1DCauchy_evaluate, METH_VARARGS, "FTDistribution1DCauchy_evaluate(FTDistribution1DCauchy self, double q) -> double"},
+	 { "FTDistribution1DCauchy_qSecondDerivative", _wrap_FTDistribution1DCauchy_qSecondDerivative, METH_O, "FTDistribution1DCauchy_qSecondDerivative(FTDistribution1DCauchy self) -> double"},
 	 { "delete_FTDistribution1DCauchy", _wrap_delete_FTDistribution1DCauchy, METH_O, "delete_FTDistribution1DCauchy(FTDistribution1DCauchy self)"},
 	 { "FTDistribution1DCauchy_swigregister", FTDistribution1DCauchy_swigregister, METH_O, NULL},
 	 { "FTDistribution1DCauchy_swiginit", FTDistribution1DCauchy_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution1DGauss", _wrap_new_FTDistribution1DGauss, METH_VARARGS, "\n"
 		"FTDistribution1DGauss(vdouble1d_t P)\n"
 		"new_FTDistribution1DGauss(double omega) -> FTDistribution1DGauss\n"
-		"FTDistribution1DGauss::FTDistribution1DGauss(double omega)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGauss_clone", _wrap_FTDistribution1DGauss_clone, METH_O, "\n"
-		"FTDistribution1DGauss_clone(FTDistribution1DGauss self) -> FTDistribution1DGauss\n"
-		"FTDistribution1DGauss * FTDistribution1DGauss::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGauss_accept", _wrap_FTDistribution1DGauss_accept, METH_VARARGS, "\n"
-		"FTDistribution1DGauss_accept(FTDistribution1DGauss self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DGauss::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGauss_evaluate", _wrap_FTDistribution1DGauss_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DGauss_evaluate(FTDistribution1DGauss self, double q) -> double\n"
-		"double FTDistribution1DGauss::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DGauss_qSecondDerivative", _wrap_FTDistribution1DGauss_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DGauss_qSecondDerivative(FTDistribution1DGauss self) -> double\n"
-		"double FTDistribution1DGauss::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DGauss_clone", _wrap_FTDistribution1DGauss_clone, METH_O, "FTDistribution1DGauss_clone(FTDistribution1DGauss self) -> FTDistribution1DGauss"},
+	 { "FTDistribution1DGauss_accept", _wrap_FTDistribution1DGauss_accept, METH_VARARGS, "FTDistribution1DGauss_accept(FTDistribution1DGauss self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DGauss_evaluate", _wrap_FTDistribution1DGauss_evaluate, METH_VARARGS, "FTDistribution1DGauss_evaluate(FTDistribution1DGauss self, double q) -> double"},
+	 { "FTDistribution1DGauss_qSecondDerivative", _wrap_FTDistribution1DGauss_qSecondDerivative, METH_O, "FTDistribution1DGauss_qSecondDerivative(FTDistribution1DGauss self) -> double"},
 	 { "delete_FTDistribution1DGauss", _wrap_delete_FTDistribution1DGauss, METH_O, "delete_FTDistribution1DGauss(FTDistribution1DGauss self)"},
 	 { "FTDistribution1DGauss_swigregister", FTDistribution1DGauss_swigregister, METH_O, NULL},
 	 { "FTDistribution1DGauss_swiginit", FTDistribution1DGauss_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution1DGate", _wrap_new_FTDistribution1DGate, METH_VARARGS, "\n"
 		"FTDistribution1DGate(vdouble1d_t P)\n"
 		"new_FTDistribution1DGate(double omega) -> FTDistribution1DGate\n"
-		"FTDistribution1DGate::FTDistribution1DGate(double omega)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGate_clone", _wrap_FTDistribution1DGate_clone, METH_O, "\n"
-		"FTDistribution1DGate_clone(FTDistribution1DGate self) -> FTDistribution1DGate\n"
-		"FTDistribution1DGate * FTDistribution1DGate::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGate_accept", _wrap_FTDistribution1DGate_accept, METH_VARARGS, "\n"
-		"FTDistribution1DGate_accept(FTDistribution1DGate self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DGate::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DGate_evaluate", _wrap_FTDistribution1DGate_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DGate_evaluate(FTDistribution1DGate self, double q) -> double\n"
-		"double FTDistribution1DGate::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DGate_qSecondDerivative", _wrap_FTDistribution1DGate_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DGate_qSecondDerivative(FTDistribution1DGate self) -> double\n"
-		"double FTDistribution1DGate::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DGate_clone", _wrap_FTDistribution1DGate_clone, METH_O, "FTDistribution1DGate_clone(FTDistribution1DGate self) -> FTDistribution1DGate"},
+	 { "FTDistribution1DGate_accept", _wrap_FTDistribution1DGate_accept, METH_VARARGS, "FTDistribution1DGate_accept(FTDistribution1DGate self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DGate_evaluate", _wrap_FTDistribution1DGate_evaluate, METH_VARARGS, "FTDistribution1DGate_evaluate(FTDistribution1DGate self, double q) -> double"},
+	 { "FTDistribution1DGate_qSecondDerivative", _wrap_FTDistribution1DGate_qSecondDerivative, METH_O, "FTDistribution1DGate_qSecondDerivative(FTDistribution1DGate self) -> double"},
 	 { "delete_FTDistribution1DGate", _wrap_delete_FTDistribution1DGate, METH_O, "delete_FTDistribution1DGate(FTDistribution1DGate self)"},
 	 { "FTDistribution1DGate_swigregister", FTDistribution1DGate_swigregister, METH_O, NULL},
 	 { "FTDistribution1DGate_swiginit", FTDistribution1DGate_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution1DTriangle", _wrap_new_FTDistribution1DTriangle, METH_VARARGS, "\n"
 		"FTDistribution1DTriangle(vdouble1d_t P)\n"
 		"new_FTDistribution1DTriangle(double omega) -> FTDistribution1DTriangle\n"
-		"FTDistribution1DTriangle::FTDistribution1DTriangle(double omega)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DTriangle_clone", _wrap_FTDistribution1DTriangle_clone, METH_O, "\n"
-		"FTDistribution1DTriangle_clone(FTDistribution1DTriangle self) -> FTDistribution1DTriangle\n"
-		"FTDistribution1DTriangle * FTDistribution1DTriangle::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DTriangle_accept", _wrap_FTDistribution1DTriangle_accept, METH_VARARGS, "\n"
-		"FTDistribution1DTriangle_accept(FTDistribution1DTriangle self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DTriangle::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DTriangle_evaluate", _wrap_FTDistribution1DTriangle_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DTriangle_evaluate(FTDistribution1DTriangle self, double q) -> double\n"
-		"double FTDistribution1DTriangle::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DTriangle_qSecondDerivative", _wrap_FTDistribution1DTriangle_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DTriangle_qSecondDerivative(FTDistribution1DTriangle self) -> double\n"
-		"double FTDistribution1DTriangle::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DTriangle_clone", _wrap_FTDistribution1DTriangle_clone, METH_O, "FTDistribution1DTriangle_clone(FTDistribution1DTriangle self) -> FTDistribution1DTriangle"},
+	 { "FTDistribution1DTriangle_accept", _wrap_FTDistribution1DTriangle_accept, METH_VARARGS, "FTDistribution1DTriangle_accept(FTDistribution1DTriangle self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DTriangle_evaluate", _wrap_FTDistribution1DTriangle_evaluate, METH_VARARGS, "FTDistribution1DTriangle_evaluate(FTDistribution1DTriangle self, double q) -> double"},
+	 { "FTDistribution1DTriangle_qSecondDerivative", _wrap_FTDistribution1DTriangle_qSecondDerivative, METH_O, "FTDistribution1DTriangle_qSecondDerivative(FTDistribution1DTriangle self) -> double"},
 	 { "delete_FTDistribution1DTriangle", _wrap_delete_FTDistribution1DTriangle, METH_O, "delete_FTDistribution1DTriangle(FTDistribution1DTriangle self)"},
 	 { "FTDistribution1DTriangle_swigregister", FTDistribution1DTriangle_swigregister, METH_O, NULL},
 	 { "FTDistribution1DTriangle_swiginit", FTDistribution1DTriangle_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution1DCosine", _wrap_new_FTDistribution1DCosine, METH_VARARGS, "\n"
 		"FTDistribution1DCosine(vdouble1d_t P)\n"
 		"new_FTDistribution1DCosine(double omega) -> FTDistribution1DCosine\n"
-		"FTDistribution1DCosine::FTDistribution1DCosine(double omega)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCosine_clone", _wrap_FTDistribution1DCosine_clone, METH_O, "\n"
-		"FTDistribution1DCosine_clone(FTDistribution1DCosine self) -> FTDistribution1DCosine\n"
-		"FTDistribution1DCosine * FTDistribution1DCosine::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCosine_accept", _wrap_FTDistribution1DCosine_accept, METH_VARARGS, "\n"
-		"FTDistribution1DCosine_accept(FTDistribution1DCosine self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DCosine::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DCosine_evaluate", _wrap_FTDistribution1DCosine_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DCosine_evaluate(FTDistribution1DCosine self, double q) -> double\n"
-		"double FTDistribution1DCosine::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DCosine_qSecondDerivative", _wrap_FTDistribution1DCosine_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DCosine_qSecondDerivative(FTDistribution1DCosine self) -> double\n"
-		"double FTDistribution1DCosine::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DCosine_clone", _wrap_FTDistribution1DCosine_clone, METH_O, "FTDistribution1DCosine_clone(FTDistribution1DCosine self) -> FTDistribution1DCosine"},
+	 { "FTDistribution1DCosine_accept", _wrap_FTDistribution1DCosine_accept, METH_VARARGS, "FTDistribution1DCosine_accept(FTDistribution1DCosine self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DCosine_evaluate", _wrap_FTDistribution1DCosine_evaluate, METH_VARARGS, "FTDistribution1DCosine_evaluate(FTDistribution1DCosine self, double q) -> double"},
+	 { "FTDistribution1DCosine_qSecondDerivative", _wrap_FTDistribution1DCosine_qSecondDerivative, METH_O, "FTDistribution1DCosine_qSecondDerivative(FTDistribution1DCosine self) -> double"},
 	 { "delete_FTDistribution1DCosine", _wrap_delete_FTDistribution1DCosine, METH_O, "delete_FTDistribution1DCosine(FTDistribution1DCosine self)"},
 	 { "FTDistribution1DCosine_swigregister", FTDistribution1DCosine_swigregister, METH_O, NULL},
 	 { "FTDistribution1DCosine_swiginit", FTDistribution1DCosine_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution1DVoigt", _wrap_new_FTDistribution1DVoigt, METH_VARARGS, "\n"
 		"FTDistribution1DVoigt(vdouble1d_t P)\n"
 		"new_FTDistribution1DVoigt(double omega, double eta) -> FTDistribution1DVoigt\n"
-		"FTDistribution1DVoigt::FTDistribution1DVoigt(double omega, double eta)\n"
-		"\n"
-		""},
-	 { "FTDistribution1DVoigt_clone", _wrap_FTDistribution1DVoigt_clone, METH_O, "\n"
-		"FTDistribution1DVoigt_clone(FTDistribution1DVoigt self) -> FTDistribution1DVoigt\n"
-		"FTDistribution1DVoigt * FTDistribution1DVoigt::clone() const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DVoigt_accept", _wrap_FTDistribution1DVoigt_accept, METH_VARARGS, "\n"
-		"FTDistribution1DVoigt_accept(FTDistribution1DVoigt self, INodeVisitor * visitor)\n"
-		"void FTDistribution1DVoigt::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FTDistribution1DVoigt_evaluate", _wrap_FTDistribution1DVoigt_evaluate, METH_VARARGS, "\n"
-		"FTDistribution1DVoigt_evaluate(FTDistribution1DVoigt self, double q) -> double\n"
-		"double FTDistribution1DVoigt::evaluate(double q) const override final\n"
-		"\n"
-		"Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1. \n"
-		"\n"
-		""},
-	 { "FTDistribution1DVoigt_eta", _wrap_FTDistribution1DVoigt_eta, METH_O, "\n"
-		"FTDistribution1DVoigt_eta(FTDistribution1DVoigt self) -> double\n"
-		"double FTDistribution1DVoigt::eta() const\n"
-		"\n"
-		""},
-	 { "FTDistribution1DVoigt_qSecondDerivative", _wrap_FTDistribution1DVoigt_qSecondDerivative, METH_O, "\n"
-		"FTDistribution1DVoigt_qSecondDerivative(FTDistribution1DVoigt self) -> double\n"
-		"double FTDistribution1DVoigt::qSecondDerivative() const override final\n"
-		"\n"
-		"Returns the negative of the second order derivative in q space around q=0. \n"
-		"\n"
 		""},
+	 { "FTDistribution1DVoigt_clone", _wrap_FTDistribution1DVoigt_clone, METH_O, "FTDistribution1DVoigt_clone(FTDistribution1DVoigt self) -> FTDistribution1DVoigt"},
+	 { "FTDistribution1DVoigt_accept", _wrap_FTDistribution1DVoigt_accept, METH_VARARGS, "FTDistribution1DVoigt_accept(FTDistribution1DVoigt self, INodeVisitor * visitor)"},
+	 { "FTDistribution1DVoigt_evaluate", _wrap_FTDistribution1DVoigt_evaluate, METH_VARARGS, "FTDistribution1DVoigt_evaluate(FTDistribution1DVoigt self, double q) -> double"},
+	 { "FTDistribution1DVoigt_eta", _wrap_FTDistribution1DVoigt_eta, METH_O, "FTDistribution1DVoigt_eta(FTDistribution1DVoigt self) -> double"},
+	 { "FTDistribution1DVoigt_qSecondDerivative", _wrap_FTDistribution1DVoigt_qSecondDerivative, METH_O, "FTDistribution1DVoigt_qSecondDerivative(FTDistribution1DVoigt self) -> double"},
 	 { "delete_FTDistribution1DVoigt", _wrap_delete_FTDistribution1DVoigt, METH_O, "delete_FTDistribution1DVoigt(FTDistribution1DVoigt self)"},
 	 { "FTDistribution1DVoigt_swigregister", FTDistribution1DVoigt_swigregister, METH_O, NULL},
 	 { "FTDistribution1DVoigt_swiginit", FTDistribution1DVoigt_swiginit, METH_VARARGS, NULL},
-	 { "IFTDistribution2D_clone", _wrap_IFTDistribution2D_clone, METH_O, "\n"
-		"IFTDistribution2D_clone(IFTDistribution2D self) -> IFTDistribution2D\n"
-		"IFTDistribution2D* IFTDistribution2D::clone() const =0\n"
-		"\n"
-		""},
-	 { "IFTDistribution2D_omegaX", _wrap_IFTDistribution2D_omegaX, METH_O, "\n"
-		"IFTDistribution2D_omegaX(IFTDistribution2D self) -> double\n"
-		"double IFTDistribution2D::omegaX() const\n"
-		"\n"
-		""},
-	 { "IFTDistribution2D_omegaY", _wrap_IFTDistribution2D_omegaY, METH_O, "\n"
-		"IFTDistribution2D_omegaY(IFTDistribution2D self) -> double\n"
-		"double IFTDistribution2D::omegaY() const\n"
-		"\n"
-		""},
-	 { "IFTDistribution2D_gamma", _wrap_IFTDistribution2D_gamma, METH_O, "\n"
-		"IFTDistribution2D_gamma(IFTDistribution2D self) -> double\n"
-		"double IFTDistribution2D::gamma() const\n"
-		"\n"
-		""},
-	 { "IFTDistribution2D_delta", _wrap_IFTDistribution2D_delta, METH_O, "\n"
-		"IFTDistribution2D_delta(IFTDistribution2D self) -> double\n"
-		"double IFTDistribution2D::delta() const\n"
-		"\n"
-		"Angle in direct space between X- and Y-axis of distribution. \n"
-		"\n"
-		""},
-	 { "IFTDistribution2D_evaluate", _wrap_IFTDistribution2D_evaluate, METH_VARARGS, "\n"
-		"IFTDistribution2D_evaluate(IFTDistribution2D self, double qx, double qy) -> double\n"
-		"virtual double IFTDistribution2D::evaluate(double qx, double qy) const =0\n"
-		"\n"
-		"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 \n"
-		"\n"
-		""},
+	 { "IFTDistribution2D_clone", _wrap_IFTDistribution2D_clone, METH_O, "IFTDistribution2D_clone(IFTDistribution2D self) -> IFTDistribution2D"},
+	 { "IFTDistribution2D_omegaX", _wrap_IFTDistribution2D_omegaX, METH_O, "IFTDistribution2D_omegaX(IFTDistribution2D self) -> double"},
+	 { "IFTDistribution2D_omegaY", _wrap_IFTDistribution2D_omegaY, METH_O, "IFTDistribution2D_omegaY(IFTDistribution2D self) -> double"},
+	 { "IFTDistribution2D_gamma", _wrap_IFTDistribution2D_gamma, METH_O, "IFTDistribution2D_gamma(IFTDistribution2D self) -> double"},
+	 { "IFTDistribution2D_delta", _wrap_IFTDistribution2D_delta, METH_O, "IFTDistribution2D_delta(IFTDistribution2D self) -> double"},
+	 { "IFTDistribution2D_evaluate", _wrap_IFTDistribution2D_evaluate, METH_VARARGS, "IFTDistribution2D_evaluate(IFTDistribution2D self, double qx, double qy) -> double"},
 	 { "delete_IFTDistribution2D", _wrap_delete_IFTDistribution2D, METH_O, "delete_IFTDistribution2D(IFTDistribution2D self)"},
 	 { "IFTDistribution2D_swigregister", IFTDistribution2D_swigregister, METH_O, NULL},
 	 { "new_FTDistribution2DCauchy", _wrap_new_FTDistribution2DCauchy, METH_VARARGS, "\n"
 		"FTDistribution2DCauchy(vdouble1d_t P)\n"
 		"new_FTDistribution2DCauchy(double omega_x, double omega_y, double gamma) -> FTDistribution2DCauchy\n"
-		"FTDistribution2DCauchy::FTDistribution2DCauchy(double omega_x, double omega_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCauchy_clone", _wrap_FTDistribution2DCauchy_clone, METH_O, "\n"
-		"FTDistribution2DCauchy_clone(FTDistribution2DCauchy self) -> FTDistribution2DCauchy\n"
-		"FTDistribution2DCauchy * FTDistribution2DCauchy::clone() const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCauchy_accept", _wrap_FTDistribution2DCauchy_accept, METH_VARARGS, "\n"
-		"FTDistribution2DCauchy_accept(FTDistribution2DCauchy self, INodeVisitor * visitor)\n"
-		"void FTDistribution2DCauchy::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCauchy_evaluate", _wrap_FTDistribution2DCauchy_evaluate, METH_VARARGS, "\n"
-		"FTDistribution2DCauchy_evaluate(FTDistribution2DCauchy self, double qx, double qy) -> double\n"
-		"double FTDistribution2DCauchy::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"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 \n"
-		"\n"
 		""},
+	 { "FTDistribution2DCauchy_clone", _wrap_FTDistribution2DCauchy_clone, METH_O, "FTDistribution2DCauchy_clone(FTDistribution2DCauchy self) -> FTDistribution2DCauchy"},
+	 { "FTDistribution2DCauchy_accept", _wrap_FTDistribution2DCauchy_accept, METH_VARARGS, "FTDistribution2DCauchy_accept(FTDistribution2DCauchy self, INodeVisitor * visitor)"},
+	 { "FTDistribution2DCauchy_evaluate", _wrap_FTDistribution2DCauchy_evaluate, METH_VARARGS, "FTDistribution2DCauchy_evaluate(FTDistribution2DCauchy self, double qx, double qy) -> double"},
 	 { "delete_FTDistribution2DCauchy", _wrap_delete_FTDistribution2DCauchy, METH_O, "delete_FTDistribution2DCauchy(FTDistribution2DCauchy self)"},
 	 { "FTDistribution2DCauchy_swigregister", FTDistribution2DCauchy_swigregister, METH_O, NULL},
 	 { "FTDistribution2DCauchy_swiginit", FTDistribution2DCauchy_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution2DGauss", _wrap_new_FTDistribution2DGauss, METH_VARARGS, "\n"
 		"FTDistribution2DGauss(vdouble1d_t P)\n"
 		"new_FTDistribution2DGauss(double omega_x, double omega_y, double gamma) -> FTDistribution2DGauss\n"
-		"FTDistribution2DGauss::FTDistribution2DGauss(double omega_x, double omega_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGauss_clone", _wrap_FTDistribution2DGauss_clone, METH_O, "\n"
-		"FTDistribution2DGauss_clone(FTDistribution2DGauss self) -> FTDistribution2DGauss\n"
-		"FTDistribution2DGauss * FTDistribution2DGauss::clone() const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGauss_accept", _wrap_FTDistribution2DGauss_accept, METH_VARARGS, "\n"
-		"FTDistribution2DGauss_accept(FTDistribution2DGauss self, INodeVisitor * visitor)\n"
-		"void FTDistribution2DGauss::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGauss_evaluate", _wrap_FTDistribution2DGauss_evaluate, METH_VARARGS, "\n"
-		"FTDistribution2DGauss_evaluate(FTDistribution2DGauss self, double qx, double qy) -> double\n"
-		"double FTDistribution2DGauss::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"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 \n"
-		"\n"
 		""},
+	 { "FTDistribution2DGauss_clone", _wrap_FTDistribution2DGauss_clone, METH_O, "FTDistribution2DGauss_clone(FTDistribution2DGauss self) -> FTDistribution2DGauss"},
+	 { "FTDistribution2DGauss_accept", _wrap_FTDistribution2DGauss_accept, METH_VARARGS, "FTDistribution2DGauss_accept(FTDistribution2DGauss self, INodeVisitor * visitor)"},
+	 { "FTDistribution2DGauss_evaluate", _wrap_FTDistribution2DGauss_evaluate, METH_VARARGS, "FTDistribution2DGauss_evaluate(FTDistribution2DGauss self, double qx, double qy) -> double"},
 	 { "delete_FTDistribution2DGauss", _wrap_delete_FTDistribution2DGauss, METH_O, "delete_FTDistribution2DGauss(FTDistribution2DGauss self)"},
 	 { "FTDistribution2DGauss_swigregister", FTDistribution2DGauss_swigregister, METH_O, NULL},
 	 { "FTDistribution2DGauss_swiginit", FTDistribution2DGauss_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution2DGate", _wrap_new_FTDistribution2DGate, METH_VARARGS, "\n"
 		"FTDistribution2DGate(vdouble1d_t P)\n"
 		"new_FTDistribution2DGate(double omega_x, double omega_y, double gamma) -> FTDistribution2DGate\n"
-		"FTDistribution2DGate::FTDistribution2DGate(double omega_x, double omega_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGate_clone", _wrap_FTDistribution2DGate_clone, METH_O, "\n"
-		"FTDistribution2DGate_clone(FTDistribution2DGate self) -> FTDistribution2DGate\n"
-		"FTDistribution2DGate * FTDistribution2DGate::clone() const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGate_accept", _wrap_FTDistribution2DGate_accept, METH_VARARGS, "\n"
-		"FTDistribution2DGate_accept(FTDistribution2DGate self, INodeVisitor * visitor)\n"
-		"void FTDistribution2DGate::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DGate_evaluate", _wrap_FTDistribution2DGate_evaluate, METH_VARARGS, "\n"
-		"FTDistribution2DGate_evaluate(FTDistribution2DGate self, double qx, double qy) -> double\n"
-		"double FTDistribution2DGate::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"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 \n"
-		"\n"
 		""},
+	 { "FTDistribution2DGate_clone", _wrap_FTDistribution2DGate_clone, METH_O, "FTDistribution2DGate_clone(FTDistribution2DGate self) -> FTDistribution2DGate"},
+	 { "FTDistribution2DGate_accept", _wrap_FTDistribution2DGate_accept, METH_VARARGS, "FTDistribution2DGate_accept(FTDistribution2DGate self, INodeVisitor * visitor)"},
+	 { "FTDistribution2DGate_evaluate", _wrap_FTDistribution2DGate_evaluate, METH_VARARGS, "FTDistribution2DGate_evaluate(FTDistribution2DGate self, double qx, double qy) -> double"},
 	 { "delete_FTDistribution2DGate", _wrap_delete_FTDistribution2DGate, METH_O, "delete_FTDistribution2DGate(FTDistribution2DGate self)"},
 	 { "FTDistribution2DGate_swigregister", FTDistribution2DGate_swigregister, METH_O, NULL},
 	 { "FTDistribution2DGate_swiginit", FTDistribution2DGate_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution2DCone", _wrap_new_FTDistribution2DCone, METH_VARARGS, "\n"
 		"FTDistribution2DCone(vdouble1d_t P)\n"
 		"new_FTDistribution2DCone(double omega_x, double omega_y, double gamma) -> FTDistribution2DCone\n"
-		"FTDistribution2DCone::FTDistribution2DCone(double omega_x, double omega_y, double gamma)\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCone_clone", _wrap_FTDistribution2DCone_clone, METH_O, "\n"
-		"FTDistribution2DCone_clone(FTDistribution2DCone self) -> FTDistribution2DCone\n"
-		"FTDistribution2DCone * FTDistribution2DCone::clone() const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCone_accept", _wrap_FTDistribution2DCone_accept, METH_VARARGS, "\n"
-		"FTDistribution2DCone_accept(FTDistribution2DCone self, INodeVisitor * visitor)\n"
-		"void FTDistribution2DCone::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DCone_evaluate", _wrap_FTDistribution2DCone_evaluate, METH_VARARGS, "\n"
-		"FTDistribution2DCone_evaluate(FTDistribution2DCone self, double qx, double qy) -> double\n"
-		"double FTDistribution2DCone::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"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 \n"
-		"\n"
 		""},
+	 { "FTDistribution2DCone_clone", _wrap_FTDistribution2DCone_clone, METH_O, "FTDistribution2DCone_clone(FTDistribution2DCone self) -> FTDistribution2DCone"},
+	 { "FTDistribution2DCone_accept", _wrap_FTDistribution2DCone_accept, METH_VARARGS, "FTDistribution2DCone_accept(FTDistribution2DCone self, INodeVisitor * visitor)"},
+	 { "FTDistribution2DCone_evaluate", _wrap_FTDistribution2DCone_evaluate, METH_VARARGS, "FTDistribution2DCone_evaluate(FTDistribution2DCone self, double qx, double qy) -> double"},
 	 { "delete_FTDistribution2DCone", _wrap_delete_FTDistribution2DCone, METH_O, "delete_FTDistribution2DCone(FTDistribution2DCone self)"},
 	 { "FTDistribution2DCone_swigregister", FTDistribution2DCone_swigregister, METH_O, NULL},
 	 { "FTDistribution2DCone_swiginit", FTDistribution2DCone_swiginit, METH_VARARGS, NULL},
 	 { "new_FTDistribution2DVoigt", _wrap_new_FTDistribution2DVoigt, METH_VARARGS, "\n"
 		"FTDistribution2DVoigt(vdouble1d_t P)\n"
 		"new_FTDistribution2DVoigt(double omega_x, double omega_y, double gamma, double eta) -> FTDistribution2DVoigt\n"
-		"FTDistribution2DVoigt::FTDistribution2DVoigt(double omega_x, double omega_y, double gamma, double eta)\n"
-		"\n"
-		""},
-	 { "FTDistribution2DVoigt_clone", _wrap_FTDistribution2DVoigt_clone, METH_O, "\n"
-		"FTDistribution2DVoigt_clone(FTDistribution2DVoigt self) -> FTDistribution2DVoigt\n"
-		"FTDistribution2DVoigt * FTDistribution2DVoigt::clone() const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DVoigt_accept", _wrap_FTDistribution2DVoigt_accept, METH_VARARGS, "\n"
-		"FTDistribution2DVoigt_accept(FTDistribution2DVoigt self, INodeVisitor * visitor)\n"
-		"void FTDistribution2DVoigt::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "FTDistribution2DVoigt_evaluate", _wrap_FTDistribution2DVoigt_evaluate, METH_VARARGS, "\n"
-		"FTDistribution2DVoigt_evaluate(FTDistribution2DVoigt self, double qx, double qy) -> double\n"
-		"double FTDistribution2DVoigt::evaluate(double qx, double qy) const final\n"
-		"\n"
-		"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 \n"
-		"\n"
-		""},
-	 { "FTDistribution2DVoigt_eta", _wrap_FTDistribution2DVoigt_eta, METH_O, "\n"
-		"FTDistribution2DVoigt_eta(FTDistribution2DVoigt self) -> double\n"
-		"double FTDistribution2DVoigt::eta() const\n"
-		"\n"
 		""},
+	 { "FTDistribution2DVoigt_clone", _wrap_FTDistribution2DVoigt_clone, METH_O, "FTDistribution2DVoigt_clone(FTDistribution2DVoigt self) -> FTDistribution2DVoigt"},
+	 { "FTDistribution2DVoigt_accept", _wrap_FTDistribution2DVoigt_accept, METH_VARARGS, "FTDistribution2DVoigt_accept(FTDistribution2DVoigt self, INodeVisitor * visitor)"},
+	 { "FTDistribution2DVoigt_evaluate", _wrap_FTDistribution2DVoigt_evaluate, METH_VARARGS, "FTDistribution2DVoigt_evaluate(FTDistribution2DVoigt self, double qx, double qy) -> double"},
+	 { "FTDistribution2DVoigt_eta", _wrap_FTDistribution2DVoigt_eta, METH_O, "FTDistribution2DVoigt_eta(FTDistribution2DVoigt self) -> double"},
 	 { "delete_FTDistribution2DVoigt", _wrap_delete_FTDistribution2DVoigt, METH_O, "delete_FTDistribution2DVoigt(FTDistribution2DVoigt self)"},
 	 { "FTDistribution2DVoigt_swigregister", FTDistribution2DVoigt_swigregister, METH_O, NULL},
 	 { "FTDistribution2DVoigt_swiginit", FTDistribution2DVoigt_swiginit, METH_VARARGS, NULL},
-	 { "delete_ILayout", _wrap_delete_ILayout, METH_O, "\n"
-		"delete_ILayout(ILayout self)\n"
-		"ILayout::~ILayout()\n"
-		"\n"
-		""},
-	 { "ILayout_clone", _wrap_ILayout_clone, METH_O, "\n"
-		"ILayout_clone(ILayout self) -> ILayout\n"
-		"virtual ILayout* ILayout::clone() const =0\n"
-		"\n"
-		""},
-	 { "ILayout_accept", _wrap_ILayout_accept, METH_VARARGS, "\n"
-		"ILayout_accept(ILayout self, INodeVisitor * visitor)\n"
-		"virtual void ILayout::accept(INodeVisitor *visitor) const =0\n"
-		"\n"
-		""},
-	 { "ILayout_particles", _wrap_ILayout_particles, METH_O, "\n"
-		"ILayout_particles(ILayout self) -> SafePointerVector< IParticle >\n"
-		"virtual SafePointerVector<IParticle> ILayout::particles() const =0\n"
-		"\n"
-		"Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection \n"
-		"\n"
-		""},
-	 { "ILayout_interferenceFunction", _wrap_ILayout_interferenceFunction, METH_O, "\n"
-		"ILayout_interferenceFunction(ILayout self) -> IInterferenceFunction\n"
-		"virtual const IInterferenceFunction* ILayout::interferenceFunction() const =0\n"
-		"\n"
-		"Returns the interference function. \n"
-		"\n"
-		""},
-	 { "ILayout_getTotalAbundance", _wrap_ILayout_getTotalAbundance, METH_O, "\n"
-		"ILayout_getTotalAbundance(ILayout self) -> double\n"
-		"virtual double ILayout::getTotalAbundance() const =0\n"
-		"\n"
-		"Get total abundance of all particles. \n"
-		"\n"
-		""},
-	 { "ILayout_totalParticleSurfaceDensity", _wrap_ILayout_totalParticleSurfaceDensity, METH_O, "\n"
-		"ILayout_totalParticleSurfaceDensity(ILayout self) -> double\n"
-		"virtual double ILayout::totalParticleSurfaceDensity() const =0\n"
-		"\n"
-		"Returns surface density of all particles. \n"
-		"\n"
-		""},
-	 { "ILayout_setTotalParticleSurfaceDensity", _wrap_ILayout_setTotalParticleSurfaceDensity, METH_VARARGS, "\n"
-		"ILayout_setTotalParticleSurfaceDensity(ILayout self, double particle_density)\n"
-		"virtual void ILayout::setTotalParticleSurfaceDensity(double particle_density)=0\n"
-		"\n"
-		"Sets surface density of all particles. \n"
-		"\n"
-		""},
-	 { "ILayout_weight", _wrap_ILayout_weight, METH_O, "\n"
-		"ILayout_weight(ILayout self) -> double\n"
-		"double ILayout::weight() const\n"
-		"\n"
-		"Returns the relative weight of this layout. \n"
-		"\n"
-		""},
-	 { "ILayout_setWeight", _wrap_ILayout_setWeight, METH_VARARGS, "\n"
-		"ILayout_setWeight(ILayout self, double weight)\n"
-		"void ILayout::setWeight(double weight)\n"
-		"\n"
-		"Sets the relative weight of this layout. \n"
-		"\n"
-		""},
+	 { "delete_ILayout", _wrap_delete_ILayout, METH_O, "delete_ILayout(ILayout self)"},
+	 { "ILayout_clone", _wrap_ILayout_clone, METH_O, "ILayout_clone(ILayout self) -> ILayout"},
+	 { "ILayout_accept", _wrap_ILayout_accept, METH_VARARGS, "ILayout_accept(ILayout self, INodeVisitor * visitor)"},
+	 { "ILayout_particles", _wrap_ILayout_particles, METH_O, "ILayout_particles(ILayout self) -> SafePointerVector< IParticle >"},
+	 { "ILayout_interferenceFunction", _wrap_ILayout_interferenceFunction, METH_O, "ILayout_interferenceFunction(ILayout self) -> IInterferenceFunction"},
+	 { "ILayout_getTotalAbundance", _wrap_ILayout_getTotalAbundance, METH_O, "ILayout_getTotalAbundance(ILayout self) -> double"},
+	 { "ILayout_totalParticleSurfaceDensity", _wrap_ILayout_totalParticleSurfaceDensity, METH_O, "ILayout_totalParticleSurfaceDensity(ILayout self) -> double"},
+	 { "ILayout_setTotalParticleSurfaceDensity", _wrap_ILayout_setTotalParticleSurfaceDensity, METH_VARARGS, "ILayout_setTotalParticleSurfaceDensity(ILayout self, double particle_density)"},
+	 { "ILayout_weight", _wrap_ILayout_weight, METH_O, "ILayout_weight(ILayout self) -> double"},
+	 { "ILayout_setWeight", _wrap_ILayout_setWeight, METH_VARARGS, "ILayout_setWeight(ILayout self, double weight)"},
 	 { "ILayout_swigregister", ILayout_swigregister, METH_O, NULL},
-	 { "delete_IPeakShape", _wrap_delete_IPeakShape, METH_O, "\n"
-		"delete_IPeakShape(IPeakShape self)\n"
-		"IPeakShape::~IPeakShape()\n"
-		"\n"
-		""},
-	 { "IPeakShape_clone", _wrap_IPeakShape_clone, METH_O, "\n"
-		"IPeakShape_clone(IPeakShape self) -> IPeakShape\n"
-		"virtual IPeakShape* IPeakShape::clone() const =0\n"
-		"\n"
-		""},
-	 { "IPeakShape_evaluate", _wrap_IPeakShape_evaluate, METH_VARARGS, "\n"
-		"IPeakShape_evaluate(IPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"virtual double IPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const =0\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
-	 { "IPeakShape_angularDisorder", _wrap_IPeakShape_angularDisorder, METH_O, "\n"
-		"IPeakShape_angularDisorder(IPeakShape self) -> bool\n"
-		"virtual bool IPeakShape::angularDisorder() const\n"
-		"\n"
-		"Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed \n"
-		"\n"
-		""},
+	 { "delete_IPeakShape", _wrap_delete_IPeakShape, METH_O, "delete_IPeakShape(IPeakShape self)"},
+	 { "IPeakShape_clone", _wrap_IPeakShape_clone, METH_O, "IPeakShape_clone(IPeakShape self) -> IPeakShape"},
+	 { "IPeakShape_evaluate", _wrap_IPeakShape_evaluate, METH_VARARGS, "IPeakShape_evaluate(IPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
+	 { "IPeakShape_angularDisorder", _wrap_IPeakShape_angularDisorder, METH_O, "IPeakShape_angularDisorder(IPeakShape self) -> bool"},
 	 { "IPeakShape_swigregister", IPeakShape_swigregister, METH_O, NULL},
-	 { "new_IsotropicGaussPeakShape", _wrap_new_IsotropicGaussPeakShape, METH_VARARGS, "\n"
-		"new_IsotropicGaussPeakShape(double max_intensity, double domainsize) -> IsotropicGaussPeakShape\n"
-		"IsotropicGaussPeakShape::IsotropicGaussPeakShape(double max_intensity, double domainsize)\n"
-		"\n"
-		""},
-	 { "delete_IsotropicGaussPeakShape", _wrap_delete_IsotropicGaussPeakShape, METH_O, "\n"
-		"delete_IsotropicGaussPeakShape(IsotropicGaussPeakShape self)\n"
-		"IsotropicGaussPeakShape::~IsotropicGaussPeakShape() override\n"
-		"\n"
-		""},
-	 { "IsotropicGaussPeakShape_clone", _wrap_IsotropicGaussPeakShape_clone, METH_O, "\n"
-		"IsotropicGaussPeakShape_clone(IsotropicGaussPeakShape self) -> IsotropicGaussPeakShape\n"
-		"IsotropicGaussPeakShape * IsotropicGaussPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "IsotropicGaussPeakShape_accept", _wrap_IsotropicGaussPeakShape_accept, METH_VARARGS, "\n"
-		"IsotropicGaussPeakShape_accept(IsotropicGaussPeakShape self, INodeVisitor * visitor)\n"
-		"void IsotropicGaussPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "IsotropicGaussPeakShape_evaluate", _wrap_IsotropicGaussPeakShape_evaluate, METH_VARARGS, "\n"
-		"IsotropicGaussPeakShape_evaluate(IsotropicGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double IsotropicGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
+	 { "new_IsotropicGaussPeakShape", _wrap_new_IsotropicGaussPeakShape, METH_VARARGS, "new_IsotropicGaussPeakShape(double max_intensity, double domainsize) -> IsotropicGaussPeakShape"},
+	 { "delete_IsotropicGaussPeakShape", _wrap_delete_IsotropicGaussPeakShape, METH_O, "delete_IsotropicGaussPeakShape(IsotropicGaussPeakShape self)"},
+	 { "IsotropicGaussPeakShape_clone", _wrap_IsotropicGaussPeakShape_clone, METH_O, "IsotropicGaussPeakShape_clone(IsotropicGaussPeakShape self) -> IsotropicGaussPeakShape"},
+	 { "IsotropicGaussPeakShape_accept", _wrap_IsotropicGaussPeakShape_accept, METH_VARARGS, "IsotropicGaussPeakShape_accept(IsotropicGaussPeakShape self, INodeVisitor * visitor)"},
+	 { "IsotropicGaussPeakShape_evaluate", _wrap_IsotropicGaussPeakShape_evaluate, METH_VARARGS, "IsotropicGaussPeakShape_evaluate(IsotropicGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
 	 { "IsotropicGaussPeakShape_swigregister", IsotropicGaussPeakShape_swigregister, METH_O, NULL},
 	 { "IsotropicGaussPeakShape_swiginit", IsotropicGaussPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "new_IsotropicLorentzPeakShape", _wrap_new_IsotropicLorentzPeakShape, METH_VARARGS, "\n"
-		"new_IsotropicLorentzPeakShape(double max_intensity, double domainsize) -> IsotropicLorentzPeakShape\n"
-		"IsotropicLorentzPeakShape::IsotropicLorentzPeakShape(double max_intensity, double domainsize)\n"
-		"\n"
-		""},
-	 { "delete_IsotropicLorentzPeakShape", _wrap_delete_IsotropicLorentzPeakShape, METH_O, "\n"
-		"delete_IsotropicLorentzPeakShape(IsotropicLorentzPeakShape self)\n"
-		"IsotropicLorentzPeakShape::~IsotropicLorentzPeakShape() override\n"
-		"\n"
-		""},
-	 { "IsotropicLorentzPeakShape_clone", _wrap_IsotropicLorentzPeakShape_clone, METH_O, "\n"
-		"IsotropicLorentzPeakShape_clone(IsotropicLorentzPeakShape self) -> IsotropicLorentzPeakShape\n"
-		"IsotropicLorentzPeakShape * IsotropicLorentzPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "IsotropicLorentzPeakShape_accept", _wrap_IsotropicLorentzPeakShape_accept, METH_VARARGS, "\n"
-		"IsotropicLorentzPeakShape_accept(IsotropicLorentzPeakShape self, INodeVisitor * visitor)\n"
-		"void IsotropicLorentzPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "IsotropicLorentzPeakShape_evaluate", _wrap_IsotropicLorentzPeakShape_evaluate, METH_VARARGS, "\n"
-		"IsotropicLorentzPeakShape_evaluate(IsotropicLorentzPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double IsotropicLorentzPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
+	 { "new_IsotropicLorentzPeakShape", _wrap_new_IsotropicLorentzPeakShape, METH_VARARGS, "new_IsotropicLorentzPeakShape(double max_intensity, double domainsize) -> IsotropicLorentzPeakShape"},
+	 { "delete_IsotropicLorentzPeakShape", _wrap_delete_IsotropicLorentzPeakShape, METH_O, "delete_IsotropicLorentzPeakShape(IsotropicLorentzPeakShape self)"},
+	 { "IsotropicLorentzPeakShape_clone", _wrap_IsotropicLorentzPeakShape_clone, METH_O, "IsotropicLorentzPeakShape_clone(IsotropicLorentzPeakShape self) -> IsotropicLorentzPeakShape"},
+	 { "IsotropicLorentzPeakShape_accept", _wrap_IsotropicLorentzPeakShape_accept, METH_VARARGS, "IsotropicLorentzPeakShape_accept(IsotropicLorentzPeakShape self, INodeVisitor * visitor)"},
+	 { "IsotropicLorentzPeakShape_evaluate", _wrap_IsotropicLorentzPeakShape_evaluate, METH_VARARGS, "IsotropicLorentzPeakShape_evaluate(IsotropicLorentzPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
 	 { "IsotropicLorentzPeakShape_swigregister", IsotropicLorentzPeakShape_swigregister, METH_O, NULL},
 	 { "IsotropicLorentzPeakShape_swiginit", IsotropicLorentzPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "new_GaussFisherPeakShape", _wrap_new_GaussFisherPeakShape, METH_VARARGS, "\n"
-		"new_GaussFisherPeakShape(double max_intensity, double radial_size, double kappa) -> GaussFisherPeakShape\n"
-		"GaussFisherPeakShape::GaussFisherPeakShape(double max_intensity, double radial_size, double kappa)\n"
-		"\n"
-		""},
-	 { "delete_GaussFisherPeakShape", _wrap_delete_GaussFisherPeakShape, METH_O, "\n"
-		"delete_GaussFisherPeakShape(GaussFisherPeakShape self)\n"
-		"GaussFisherPeakShape::~GaussFisherPeakShape() override\n"
-		"\n"
-		""},
-	 { "GaussFisherPeakShape_clone", _wrap_GaussFisherPeakShape_clone, METH_O, "\n"
-		"GaussFisherPeakShape_clone(GaussFisherPeakShape self) -> GaussFisherPeakShape\n"
-		"GaussFisherPeakShape * GaussFisherPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "GaussFisherPeakShape_accept", _wrap_GaussFisherPeakShape_accept, METH_VARARGS, "\n"
-		"GaussFisherPeakShape_accept(GaussFisherPeakShape self, INodeVisitor * visitor)\n"
-		"void GaussFisherPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "GaussFisherPeakShape_evaluate", _wrap_GaussFisherPeakShape_evaluate, METH_VARARGS, "\n"
-		"GaussFisherPeakShape_evaluate(GaussFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double GaussFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
-	 { "GaussFisherPeakShape_angularDisorder", _wrap_GaussFisherPeakShape_angularDisorder, METH_O, "\n"
-		"GaussFisherPeakShape_angularDisorder(GaussFisherPeakShape self) -> bool\n"
-		"bool GaussFisherPeakShape::angularDisorder() const override\n"
-		"\n"
-		"Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed \n"
-		"\n"
-		""},
+	 { "new_GaussFisherPeakShape", _wrap_new_GaussFisherPeakShape, METH_VARARGS, "new_GaussFisherPeakShape(double max_intensity, double radial_size, double kappa) -> GaussFisherPeakShape"},
+	 { "delete_GaussFisherPeakShape", _wrap_delete_GaussFisherPeakShape, METH_O, "delete_GaussFisherPeakShape(GaussFisherPeakShape self)"},
+	 { "GaussFisherPeakShape_clone", _wrap_GaussFisherPeakShape_clone, METH_O, "GaussFisherPeakShape_clone(GaussFisherPeakShape self) -> GaussFisherPeakShape"},
+	 { "GaussFisherPeakShape_accept", _wrap_GaussFisherPeakShape_accept, METH_VARARGS, "GaussFisherPeakShape_accept(GaussFisherPeakShape self, INodeVisitor * visitor)"},
+	 { "GaussFisherPeakShape_evaluate", _wrap_GaussFisherPeakShape_evaluate, METH_VARARGS, "GaussFisherPeakShape_evaluate(GaussFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
+	 { "GaussFisherPeakShape_angularDisorder", _wrap_GaussFisherPeakShape_angularDisorder, METH_O, "GaussFisherPeakShape_angularDisorder(GaussFisherPeakShape self) -> bool"},
 	 { "GaussFisherPeakShape_swigregister", GaussFisherPeakShape_swigregister, METH_O, NULL},
 	 { "GaussFisherPeakShape_swiginit", GaussFisherPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "new_LorentzFisherPeakShape", _wrap_new_LorentzFisherPeakShape, METH_VARARGS, "\n"
-		"new_LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa) -> LorentzFisherPeakShape\n"
-		"LorentzFisherPeakShape::LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa)\n"
-		"\n"
-		""},
-	 { "delete_LorentzFisherPeakShape", _wrap_delete_LorentzFisherPeakShape, METH_O, "\n"
-		"delete_LorentzFisherPeakShape(LorentzFisherPeakShape self)\n"
-		"LorentzFisherPeakShape::~LorentzFisherPeakShape() override\n"
-		"\n"
-		""},
-	 { "LorentzFisherPeakShape_clone", _wrap_LorentzFisherPeakShape_clone, METH_O, "\n"
-		"LorentzFisherPeakShape_clone(LorentzFisherPeakShape self) -> LorentzFisherPeakShape\n"
-		"LorentzFisherPeakShape * LorentzFisherPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "LorentzFisherPeakShape_accept", _wrap_LorentzFisherPeakShape_accept, METH_VARARGS, "\n"
-		"LorentzFisherPeakShape_accept(LorentzFisherPeakShape self, INodeVisitor * visitor)\n"
-		"void LorentzFisherPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "LorentzFisherPeakShape_evaluate", _wrap_LorentzFisherPeakShape_evaluate, METH_VARARGS, "\n"
-		"LorentzFisherPeakShape_evaluate(LorentzFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double LorentzFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
-	 { "LorentzFisherPeakShape_angularDisorder", _wrap_LorentzFisherPeakShape_angularDisorder, METH_O, "\n"
-		"LorentzFisherPeakShape_angularDisorder(LorentzFisherPeakShape self) -> bool\n"
-		"bool LorentzFisherPeakShape::angularDisorder() const override\n"
-		"\n"
-		"Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed \n"
-		"\n"
-		""},
+	 { "new_LorentzFisherPeakShape", _wrap_new_LorentzFisherPeakShape, METH_VARARGS, "new_LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa) -> LorentzFisherPeakShape"},
+	 { "delete_LorentzFisherPeakShape", _wrap_delete_LorentzFisherPeakShape, METH_O, "delete_LorentzFisherPeakShape(LorentzFisherPeakShape self)"},
+	 { "LorentzFisherPeakShape_clone", _wrap_LorentzFisherPeakShape_clone, METH_O, "LorentzFisherPeakShape_clone(LorentzFisherPeakShape self) -> LorentzFisherPeakShape"},
+	 { "LorentzFisherPeakShape_accept", _wrap_LorentzFisherPeakShape_accept, METH_VARARGS, "LorentzFisherPeakShape_accept(LorentzFisherPeakShape self, INodeVisitor * visitor)"},
+	 { "LorentzFisherPeakShape_evaluate", _wrap_LorentzFisherPeakShape_evaluate, METH_VARARGS, "LorentzFisherPeakShape_evaluate(LorentzFisherPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
+	 { "LorentzFisherPeakShape_angularDisorder", _wrap_LorentzFisherPeakShape_angularDisorder, METH_O, "LorentzFisherPeakShape_angularDisorder(LorentzFisherPeakShape self) -> bool"},
 	 { "LorentzFisherPeakShape_swigregister", LorentzFisherPeakShape_swigregister, METH_O, NULL},
 	 { "LorentzFisherPeakShape_swiginit", LorentzFisherPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "new_MisesFisherGaussPeakShape", _wrap_new_MisesFisherGaussPeakShape, METH_VARARGS, "\n"
-		"new_MisesFisherGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2) -> MisesFisherGaussPeakShape\n"
-		"MisesFisherGaussPeakShape::MisesFisherGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2)\n"
-		"\n"
-		""},
-	 { "delete_MisesFisherGaussPeakShape", _wrap_delete_MisesFisherGaussPeakShape, METH_O, "\n"
-		"delete_MisesFisherGaussPeakShape(MisesFisherGaussPeakShape self)\n"
-		"MisesFisherGaussPeakShape::~MisesFisherGaussPeakShape() override\n"
-		"\n"
-		""},
-	 { "MisesFisherGaussPeakShape_clone", _wrap_MisesFisherGaussPeakShape_clone, METH_O, "\n"
-		"MisesFisherGaussPeakShape_clone(MisesFisherGaussPeakShape self) -> MisesFisherGaussPeakShape\n"
-		"MisesFisherGaussPeakShape * MisesFisherGaussPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "MisesFisherGaussPeakShape_accept", _wrap_MisesFisherGaussPeakShape_accept, METH_VARARGS, "\n"
-		"MisesFisherGaussPeakShape_accept(MisesFisherGaussPeakShape self, INodeVisitor * visitor)\n"
-		"void MisesFisherGaussPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "MisesFisherGaussPeakShape_evaluate", _wrap_MisesFisherGaussPeakShape_evaluate, METH_VARARGS, "\n"
-		"MisesFisherGaussPeakShape_evaluate(MisesFisherGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double MisesFisherGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
-	 { "MisesFisherGaussPeakShape_angularDisorder", _wrap_MisesFisherGaussPeakShape_angularDisorder, METH_O, "\n"
-		"MisesFisherGaussPeakShape_angularDisorder(MisesFisherGaussPeakShape self) -> bool\n"
-		"bool MisesFisherGaussPeakShape::angularDisorder() const override\n"
-		"\n"
-		"Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed \n"
-		"\n"
-		""},
+	 { "new_MisesFisherGaussPeakShape", _wrap_new_MisesFisherGaussPeakShape, METH_VARARGS, "new_MisesFisherGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa_1, double kappa_2) -> MisesFisherGaussPeakShape"},
+	 { "delete_MisesFisherGaussPeakShape", _wrap_delete_MisesFisherGaussPeakShape, METH_O, "delete_MisesFisherGaussPeakShape(MisesFisherGaussPeakShape self)"},
+	 { "MisesFisherGaussPeakShape_clone", _wrap_MisesFisherGaussPeakShape_clone, METH_O, "MisesFisherGaussPeakShape_clone(MisesFisherGaussPeakShape self) -> MisesFisherGaussPeakShape"},
+	 { "MisesFisherGaussPeakShape_accept", _wrap_MisesFisherGaussPeakShape_accept, METH_VARARGS, "MisesFisherGaussPeakShape_accept(MisesFisherGaussPeakShape self, INodeVisitor * visitor)"},
+	 { "MisesFisherGaussPeakShape_evaluate", _wrap_MisesFisherGaussPeakShape_evaluate, METH_VARARGS, "MisesFisherGaussPeakShape_evaluate(MisesFisherGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
+	 { "MisesFisherGaussPeakShape_angularDisorder", _wrap_MisesFisherGaussPeakShape_angularDisorder, METH_O, "MisesFisherGaussPeakShape_angularDisorder(MisesFisherGaussPeakShape self) -> bool"},
 	 { "MisesFisherGaussPeakShape_swigregister", MisesFisherGaussPeakShape_swigregister, METH_O, NULL},
 	 { "MisesFisherGaussPeakShape_swiginit", MisesFisherGaussPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "new_MisesGaussPeakShape", _wrap_new_MisesGaussPeakShape, METH_VARARGS, "\n"
-		"new_MisesGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa) -> MisesGaussPeakShape\n"
-		"MisesGaussPeakShape::MisesGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa)\n"
-		"\n"
-		""},
-	 { "delete_MisesGaussPeakShape", _wrap_delete_MisesGaussPeakShape, METH_O, "\n"
-		"delete_MisesGaussPeakShape(MisesGaussPeakShape self)\n"
-		"MisesGaussPeakShape::~MisesGaussPeakShape() override\n"
-		"\n"
-		""},
-	 { "MisesGaussPeakShape_clone", _wrap_MisesGaussPeakShape_clone, METH_O, "\n"
-		"MisesGaussPeakShape_clone(MisesGaussPeakShape self) -> MisesGaussPeakShape\n"
-		"MisesGaussPeakShape * MisesGaussPeakShape::clone() const override\n"
-		"\n"
-		""},
-	 { "MisesGaussPeakShape_accept", _wrap_MisesGaussPeakShape_accept, METH_VARARGS, "\n"
-		"MisesGaussPeakShape_accept(MisesGaussPeakShape self, INodeVisitor * visitor)\n"
-		"void MisesGaussPeakShape::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "MisesGaussPeakShape_evaluate", _wrap_MisesGaussPeakShape_evaluate, METH_VARARGS, "\n"
-		"MisesGaussPeakShape_evaluate(MisesGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double\n"
-		"double MisesGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const override\n"
-		"\n"
-		"Evaluates the peak shape at q from a reciprocal lattice point at q_lattice_point. \n"
-		"\n"
-		""},
-	 { "MisesGaussPeakShape_angularDisorder", _wrap_MisesGaussPeakShape_angularDisorder, METH_O, "\n"
-		"MisesGaussPeakShape_angularDisorder(MisesGaussPeakShape self) -> bool\n"
-		"bool MisesGaussPeakShape::angularDisorder() const override\n"
-		"\n"
-		"Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell are needed \n"
-		"\n"
-		""},
+	 { "new_MisesGaussPeakShape", _wrap_new_MisesGaussPeakShape, METH_VARARGS, "new_MisesGaussPeakShape(double max_intensity, double radial_size, kvector_t zenith, double kappa) -> MisesGaussPeakShape"},
+	 { "delete_MisesGaussPeakShape", _wrap_delete_MisesGaussPeakShape, METH_O, "delete_MisesGaussPeakShape(MisesGaussPeakShape self)"},
+	 { "MisesGaussPeakShape_clone", _wrap_MisesGaussPeakShape_clone, METH_O, "MisesGaussPeakShape_clone(MisesGaussPeakShape self) -> MisesGaussPeakShape"},
+	 { "MisesGaussPeakShape_accept", _wrap_MisesGaussPeakShape_accept, METH_VARARGS, "MisesGaussPeakShape_accept(MisesGaussPeakShape self, INodeVisitor * visitor)"},
+	 { "MisesGaussPeakShape_evaluate", _wrap_MisesGaussPeakShape_evaluate, METH_VARARGS, "MisesGaussPeakShape_evaluate(MisesGaussPeakShape self, kvector_t q, kvector_t q_lattice_point) -> double"},
+	 { "MisesGaussPeakShape_angularDisorder", _wrap_MisesGaussPeakShape_angularDisorder, METH_O, "MisesGaussPeakShape_angularDisorder(MisesGaussPeakShape self) -> bool"},
 	 { "MisesGaussPeakShape_swigregister", MisesGaussPeakShape_swigregister, METH_O, NULL},
 	 { "MisesGaussPeakShape_swiginit", MisesGaussPeakShape_swiginit, METH_VARARGS, NULL},
-	 { "IInterferenceFunction_clone", _wrap_IInterferenceFunction_clone, METH_O, "\n"
-		"IInterferenceFunction_clone(IInterferenceFunction self) -> IInterferenceFunction\n"
-		"virtual IInterferenceFunction* IInterferenceFunction::clone() const =0\n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_evaluate", _wrap_IInterferenceFunction_evaluate, METH_VARARGS, "\n"
-		"IInterferenceFunction_evaluate(IInterferenceFunction self, kvector_t q, double outer_iff=1.0) -> double\n"
-		"double IInterferenceFunction::evaluate(const kvector_t q, double outer_iff=1.0) const\n"
-		"\n"
-		"Evaluates the interference function for a given wavevector transfer. \n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_setPositionVariance", _wrap_IInterferenceFunction_setPositionVariance, METH_VARARGS, "\n"
-		"IInterferenceFunction_setPositionVariance(IInterferenceFunction self, double var)\n"
-		"void IInterferenceFunction::setPositionVariance(double var)\n"
-		"\n"
-		"Sets the variance of the position for the calculation of the DW factor It is defined as the variance in each relevant dimension \n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_positionVariance", _wrap_IInterferenceFunction_positionVariance, METH_O, "\n"
-		"IInterferenceFunction_positionVariance(IInterferenceFunction self) -> double\n"
-		"double IInterferenceFunction::positionVariance() const\n"
-		"\n"
-		"Returns the position variance. \n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_getParticleDensity", _wrap_IInterferenceFunction_getParticleDensity, METH_O, "\n"
-		"IInterferenceFunction_getParticleDensity(IInterferenceFunction self) -> double\n"
-		"virtual double IInterferenceFunction::getParticleDensity() const\n"
-		"\n"
-		"If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value \n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_supportsMultilayer", _wrap_IInterferenceFunction_supportsMultilayer, METH_O, "\n"
-		"IInterferenceFunction_supportsMultilayer(IInterferenceFunction self) -> bool\n"
-		"virtual bool IInterferenceFunction::supportsMultilayer() const\n"
-		"\n"
-		"Indicates if this interference function can be used with a multilayer (DWBA mode) \n"
-		"\n"
-		""},
-	 { "IInterferenceFunction_DWfactor", _wrap_IInterferenceFunction_DWfactor, METH_VARARGS, "\n"
-		"IInterferenceFunction_DWfactor(IInterferenceFunction self, kvector_t q) -> double\n"
-		"double IInterferenceFunction::DWfactor(kvector_t q) const\n"
-		"\n"
-		"Evaluates the Debye-Waller factor for a given wavevector transfer. \n"
-		"\n"
-		""},
+	 { "IInterferenceFunction_clone", _wrap_IInterferenceFunction_clone, METH_O, "IInterferenceFunction_clone(IInterferenceFunction self) -> IInterferenceFunction"},
+	 { "IInterferenceFunction_evaluate", _wrap_IInterferenceFunction_evaluate, METH_VARARGS, "IInterferenceFunction_evaluate(IInterferenceFunction self, kvector_t q, double outer_iff=1.0) -> double"},
+	 { "IInterferenceFunction_setPositionVariance", _wrap_IInterferenceFunction_setPositionVariance, METH_VARARGS, "IInterferenceFunction_setPositionVariance(IInterferenceFunction self, double var)"},
+	 { "IInterferenceFunction_positionVariance", _wrap_IInterferenceFunction_positionVariance, METH_O, "IInterferenceFunction_positionVariance(IInterferenceFunction self) -> double"},
+	 { "IInterferenceFunction_getParticleDensity", _wrap_IInterferenceFunction_getParticleDensity, METH_O, "IInterferenceFunction_getParticleDensity(IInterferenceFunction self) -> double"},
+	 { "IInterferenceFunction_supportsMultilayer", _wrap_IInterferenceFunction_supportsMultilayer, METH_O, "IInterferenceFunction_supportsMultilayer(IInterferenceFunction self) -> bool"},
+	 { "IInterferenceFunction_DWfactor", _wrap_IInterferenceFunction_DWfactor, METH_VARARGS, "IInterferenceFunction_DWfactor(IInterferenceFunction self, kvector_t q) -> double"},
 	 { "delete_IInterferenceFunction", _wrap_delete_IInterferenceFunction, METH_O, "delete_IInterferenceFunction(IInterferenceFunction self)"},
 	 { "IInterferenceFunction_swigregister", IInterferenceFunction_swigregister, METH_O, NULL},
-	 { "new_InterferenceFunction1DLattice", _wrap_new_InterferenceFunction1DLattice, METH_VARARGS, "\n"
-		"new_InterferenceFunction1DLattice(double length, double xi) -> InterferenceFunction1DLattice\n"
-		"InterferenceFunction1DLattice::InterferenceFunction1DLattice(double length, double xi)\n"
-		"\n"
-		"Constructor of interference function of one-dimensional lattice.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length: \n"
-		"lattice constant in nanometers\n"
-		"\n"
-		"xi: \n"
-		"rotation of lattice with respect to x-axis in radians \n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunction1DLattice", _wrap_delete_InterferenceFunction1DLattice, METH_O, "\n"
-		"delete_InterferenceFunction1DLattice(InterferenceFunction1DLattice self)\n"
-		"InterferenceFunction1DLattice::~InterferenceFunction1DLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_clone", _wrap_InterferenceFunction1DLattice_clone, METH_O, "\n"
-		"InterferenceFunction1DLattice_clone(InterferenceFunction1DLattice self) -> InterferenceFunction1DLattice\n"
-		"InterferenceFunction1DLattice * InterferenceFunction1DLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_accept", _wrap_InterferenceFunction1DLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunction1DLattice_accept(InterferenceFunction1DLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunction1DLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_setDecayFunction", _wrap_InterferenceFunction1DLattice_setDecayFunction, METH_VARARGS, "\n"
-		"InterferenceFunction1DLattice_setDecayFunction(InterferenceFunction1DLattice self, IFTDecayFunction1D decay)\n"
-		"void InterferenceFunction1DLattice::setDecayFunction(const IFTDecayFunction1D &decay)\n"
-		"\n"
-		"Sets one-dimensional decay function.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"decay: \n"
-		"one-dimensional decay function in reciprocal space \n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_getLength", _wrap_InterferenceFunction1DLattice_getLength, METH_O, "\n"
-		"InterferenceFunction1DLattice_getLength(InterferenceFunction1DLattice self) -> double\n"
-		"double InterferenceFunction1DLattice::getLength() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_getXi", _wrap_InterferenceFunction1DLattice_getXi, METH_O, "\n"
-		"InterferenceFunction1DLattice_getXi(InterferenceFunction1DLattice self) -> double\n"
-		"double InterferenceFunction1DLattice::getXi() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction1DLattice_getChildren", _wrap_InterferenceFunction1DLattice_getChildren, METH_O, "\n"
-		"InterferenceFunction1DLattice_getChildren(InterferenceFunction1DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunction1DLattice::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunction1DLattice", _wrap_new_InterferenceFunction1DLattice, METH_VARARGS, "new_InterferenceFunction1DLattice(double length, double xi) -> InterferenceFunction1DLattice"},
+	 { "delete_InterferenceFunction1DLattice", _wrap_delete_InterferenceFunction1DLattice, METH_O, "delete_InterferenceFunction1DLattice(InterferenceFunction1DLattice self)"},
+	 { "InterferenceFunction1DLattice_clone", _wrap_InterferenceFunction1DLattice_clone, METH_O, "InterferenceFunction1DLattice_clone(InterferenceFunction1DLattice self) -> InterferenceFunction1DLattice"},
+	 { "InterferenceFunction1DLattice_accept", _wrap_InterferenceFunction1DLattice_accept, METH_VARARGS, "InterferenceFunction1DLattice_accept(InterferenceFunction1DLattice self, INodeVisitor * visitor)"},
+	 { "InterferenceFunction1DLattice_setDecayFunction", _wrap_InterferenceFunction1DLattice_setDecayFunction, METH_VARARGS, "InterferenceFunction1DLattice_setDecayFunction(InterferenceFunction1DLattice self, IFTDecayFunction1D decay)"},
+	 { "InterferenceFunction1DLattice_getLength", _wrap_InterferenceFunction1DLattice_getLength, METH_O, "InterferenceFunction1DLattice_getLength(InterferenceFunction1DLattice self) -> double"},
+	 { "InterferenceFunction1DLattice_getXi", _wrap_InterferenceFunction1DLattice_getXi, METH_O, "InterferenceFunction1DLattice_getXi(InterferenceFunction1DLattice self) -> double"},
+	 { "InterferenceFunction1DLattice_getChildren", _wrap_InterferenceFunction1DLattice_getChildren, METH_O, "InterferenceFunction1DLattice_getChildren(InterferenceFunction1DLattice self) -> swig_dummy_type_const_inode_vector"},
 	 { "InterferenceFunction1DLattice_swigregister", InterferenceFunction1DLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunction1DLattice_swiginit", InterferenceFunction1DLattice_swiginit, METH_VARARGS, NULL},
 	 { "new_InterferenceFunction2DLattice", _wrap_new_InterferenceFunction2DLattice, METH_VARARGS, "\n"
 		"InterferenceFunction2DLattice(double length_1, double length_2, double alpha, double xi)\n"
 		"new_InterferenceFunction2DLattice(Lattice2D lattice) -> InterferenceFunction2DLattice\n"
-		"InterferenceFunction2DLattice::InterferenceFunction2DLattice(const Lattice2D &lattice)\n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunction2DLattice", _wrap_delete_InterferenceFunction2DLattice, METH_O, "\n"
-		"delete_InterferenceFunction2DLattice(InterferenceFunction2DLattice self)\n"
-		"InterferenceFunction2DLattice::~InterferenceFunction2DLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_clone", _wrap_InterferenceFunction2DLattice_clone, METH_O, "\n"
-		"InterferenceFunction2DLattice_clone(InterferenceFunction2DLattice self) -> InterferenceFunction2DLattice\n"
-		"InterferenceFunction2DLattice * InterferenceFunction2DLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_accept", _wrap_InterferenceFunction2DLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunction2DLattice_accept(InterferenceFunction2DLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunction2DLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
 		""},
+	 { "delete_InterferenceFunction2DLattice", _wrap_delete_InterferenceFunction2DLattice, METH_O, "delete_InterferenceFunction2DLattice(InterferenceFunction2DLattice self)"},
+	 { "InterferenceFunction2DLattice_clone", _wrap_InterferenceFunction2DLattice_clone, METH_O, "InterferenceFunction2DLattice_clone(InterferenceFunction2DLattice self) -> InterferenceFunction2DLattice"},
+	 { "InterferenceFunction2DLattice_accept", _wrap_InterferenceFunction2DLattice_accept, METH_VARARGS, "InterferenceFunction2DLattice_accept(InterferenceFunction2DLattice self, INodeVisitor * visitor)"},
 	 { "InterferenceFunction2DLattice_createSquare", _wrap_InterferenceFunction2DLattice_createSquare, METH_VARARGS, "InterferenceFunction2DLattice_createSquare(double lattice_length, double xi) -> InterferenceFunction2DLattice"},
 	 { "InterferenceFunction2DLattice_createHexagonal", _wrap_InterferenceFunction2DLattice_createHexagonal, METH_VARARGS, "InterferenceFunction2DLattice_createHexagonal(double lattice_length, double xi) -> InterferenceFunction2DLattice"},
-	 { "InterferenceFunction2DLattice_setDecayFunction", _wrap_InterferenceFunction2DLattice_setDecayFunction, METH_VARARGS, "\n"
-		"InterferenceFunction2DLattice_setDecayFunction(InterferenceFunction2DLattice self, IFTDecayFunction2D decay)\n"
-		"void InterferenceFunction2DLattice::setDecayFunction(const IFTDecayFunction2D &decay)\n"
-		"\n"
-		"Sets two-dimensional decay function.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"decay: \n"
-		"two-dimensional decay function in reciprocal space \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_setIntegrationOverXi", _wrap_InterferenceFunction2DLattice_setIntegrationOverXi, METH_VARARGS, "\n"
-		"InterferenceFunction2DLattice_setIntegrationOverXi(InterferenceFunction2DLattice self, bool integrate_xi)\n"
-		"void InterferenceFunction2DLattice::setIntegrationOverXi(bool integrate_xi)\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_integrationOverXi", _wrap_InterferenceFunction2DLattice_integrationOverXi, METH_O, "\n"
-		"InterferenceFunction2DLattice_integrationOverXi(InterferenceFunction2DLattice self) -> bool\n"
-		"bool InterferenceFunction2DLattice::integrationOverXi() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_lattice", _wrap_InterferenceFunction2DLattice_lattice, METH_O, "\n"
-		"InterferenceFunction2DLattice_lattice(InterferenceFunction2DLattice self) -> Lattice2D\n"
-		"const Lattice2D & InterferenceFunction2DLattice::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_getParticleDensity", _wrap_InterferenceFunction2DLattice_getParticleDensity, METH_O, "\n"
-		"InterferenceFunction2DLattice_getParticleDensity(InterferenceFunction2DLattice self) -> double\n"
-		"double InterferenceFunction2DLattice::getParticleDensity() const override final\n"
-		"\n"
-		"Returns the particle density associated with this 2d lattice. \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_getChildren", _wrap_InterferenceFunction2DLattice_getChildren, METH_O, "\n"
-		"InterferenceFunction2DLattice_getChildren(InterferenceFunction2DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunction2DLattice::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DLattice_onChange", _wrap_InterferenceFunction2DLattice_onChange, METH_O, "\n"
-		"InterferenceFunction2DLattice_onChange(InterferenceFunction2DLattice self)\n"
-		"void InterferenceFunction2DLattice::onChange() override final\n"
-		"\n"
-		""},
+	 { "InterferenceFunction2DLattice_setDecayFunction", _wrap_InterferenceFunction2DLattice_setDecayFunction, METH_VARARGS, "InterferenceFunction2DLattice_setDecayFunction(InterferenceFunction2DLattice self, IFTDecayFunction2D decay)"},
+	 { "InterferenceFunction2DLattice_setIntegrationOverXi", _wrap_InterferenceFunction2DLattice_setIntegrationOverXi, METH_VARARGS, "InterferenceFunction2DLattice_setIntegrationOverXi(InterferenceFunction2DLattice self, bool integrate_xi)"},
+	 { "InterferenceFunction2DLattice_integrationOverXi", _wrap_InterferenceFunction2DLattice_integrationOverXi, METH_O, "InterferenceFunction2DLattice_integrationOverXi(InterferenceFunction2DLattice self) -> bool"},
+	 { "InterferenceFunction2DLattice_lattice", _wrap_InterferenceFunction2DLattice_lattice, METH_O, "InterferenceFunction2DLattice_lattice(InterferenceFunction2DLattice self) -> Lattice2D"},
+	 { "InterferenceFunction2DLattice_getParticleDensity", _wrap_InterferenceFunction2DLattice_getParticleDensity, METH_O, "InterferenceFunction2DLattice_getParticleDensity(InterferenceFunction2DLattice self) -> double"},
+	 { "InterferenceFunction2DLattice_getChildren", _wrap_InterferenceFunction2DLattice_getChildren, METH_O, "InterferenceFunction2DLattice_getChildren(InterferenceFunction2DLattice self) -> swig_dummy_type_const_inode_vector"},
+	 { "InterferenceFunction2DLattice_onChange", _wrap_InterferenceFunction2DLattice_onChange, METH_O, "InterferenceFunction2DLattice_onChange(InterferenceFunction2DLattice self)"},
 	 { "InterferenceFunction2DLattice_swigregister", InterferenceFunction2DLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunction2DLattice_swiginit", InterferenceFunction2DLattice_swiginit, METH_VARARGS, NULL},
 	 { "new_InterferenceFunction2DParaCrystal", _wrap_new_InterferenceFunction2DParaCrystal, METH_VARARGS, "\n"
 		"InterferenceFunction2DParaCrystal(Lattice2D lattice, double damping_length, double domain_size_1, double domain_size_2)\n"
 		"new_InterferenceFunction2DParaCrystal(double length_1, double length_2, double alpha, double xi, double damping_length) -> InterferenceFunction2DParaCrystal\n"
-		"InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(double length_1, double length_2, double alpha, double xi, double damping_length)\n"
-		"\n"
-		"Constructor of interference function of two-dimensional paracrystal.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length_1: \n"
-		"length of first lattice vector in nanometers\n"
-		"\n"
-		"length_2: \n"
-		"length of second lattice vector in nanometers\n"
-		"\n"
-		"alpha: \n"
-		"angle between lattice vectors in radians\n"
-		"\n"
-		"xi: \n"
-		"rotation of lattice with respect to x-axis (beam direction) in radians\n"
-		"\n"
-		"damping_length: \n"
-		"the damping (coherence) length of the paracrystal in nanometers \n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunction2DParaCrystal", _wrap_delete_InterferenceFunction2DParaCrystal, METH_O, "\n"
-		"delete_InterferenceFunction2DParaCrystal(InterferenceFunction2DParaCrystal self)\n"
-		"InterferenceFunction2DParaCrystal::~InterferenceFunction2DParaCrystal() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_clone", _wrap_InterferenceFunction2DParaCrystal_clone, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_clone(InterferenceFunction2DParaCrystal self) -> InterferenceFunction2DParaCrystal\n"
-		"InterferenceFunction2DParaCrystal * InterferenceFunction2DParaCrystal::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_accept", _wrap_InterferenceFunction2DParaCrystal_accept, METH_VARARGS, "\n"
-		"InterferenceFunction2DParaCrystal_accept(InterferenceFunction2DParaCrystal self, INodeVisitor * visitor)\n"
-		"void InterferenceFunction2DParaCrystal::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
 		""},
+	 { "delete_InterferenceFunction2DParaCrystal", _wrap_delete_InterferenceFunction2DParaCrystal, METH_O, "delete_InterferenceFunction2DParaCrystal(InterferenceFunction2DParaCrystal self)"},
+	 { "InterferenceFunction2DParaCrystal_clone", _wrap_InterferenceFunction2DParaCrystal_clone, METH_O, "InterferenceFunction2DParaCrystal_clone(InterferenceFunction2DParaCrystal self) -> InterferenceFunction2DParaCrystal"},
+	 { "InterferenceFunction2DParaCrystal_accept", _wrap_InterferenceFunction2DParaCrystal_accept, METH_VARARGS, "InterferenceFunction2DParaCrystal_accept(InterferenceFunction2DParaCrystal self, INodeVisitor * visitor)"},
 	 { "InterferenceFunction2DParaCrystal_createSquare", _wrap_InterferenceFunction2DParaCrystal_createSquare, METH_VARARGS, "InterferenceFunction2DParaCrystal_createSquare(double lattice_length, double damping_length, double domain_size_1, double domain_size_2) -> InterferenceFunction2DParaCrystal"},
 	 { "InterferenceFunction2DParaCrystal_createHexagonal", _wrap_InterferenceFunction2DParaCrystal_createHexagonal, METH_VARARGS, "InterferenceFunction2DParaCrystal_createHexagonal(double lattice_length, double damping_length, double domain_size_1, double domain_size_2) -> InterferenceFunction2DParaCrystal"},
-	 { "InterferenceFunction2DParaCrystal_setDomainSizes", _wrap_InterferenceFunction2DParaCrystal_setDomainSizes, METH_VARARGS, "\n"
-		"InterferenceFunction2DParaCrystal_setDomainSizes(InterferenceFunction2DParaCrystal self, double size_1, double size_2)\n"
-		"void InterferenceFunction2DParaCrystal::setDomainSizes(double size_1, double size_2)\n"
-		"\n"
-		"Sets the sizes of coherence domains.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"size_1: \n"
-		"coherence domain size along the first basis vector in nanometers\n"
-		"\n"
-		"size_2: \n"
-		"coherence domain size along the second basis vector in nanometers \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_setProbabilityDistributions", _wrap_InterferenceFunction2DParaCrystal_setProbabilityDistributions, METH_VARARGS, "\n"
-		"InterferenceFunction2DParaCrystal_setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)\n"
-		"void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)\n"
-		"\n"
-		"Sets the probability distributions (Fourier transformed) for the two lattice directions.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"pdf_1: \n"
-		"probability distribution in first lattice direction\n"
-		"\n"
-		"pdf_2: \n"
-		"probability distribution in second lattice direction \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_setDampingLength", _wrap_InterferenceFunction2DParaCrystal_setDampingLength, METH_VARARGS, "\n"
-		"InterferenceFunction2DParaCrystal_setDampingLength(InterferenceFunction2DParaCrystal self, double damping_length)\n"
-		"void InterferenceFunction2DParaCrystal::setDampingLength(double damping_length)\n"
-		"\n"
-		"Sets the damping length.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"damping_length: \n"
-		"the damping (coherence) length of the paracrystal in nanometers \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_domainSizes", _wrap_InterferenceFunction2DParaCrystal_domainSizes, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t\n"
-		"std::vector< double > InterferenceFunction2DParaCrystal::domainSizes() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_setIntegrationOverXi", _wrap_InterferenceFunction2DParaCrystal_setIntegrationOverXi, METH_VARARGS, "\n"
-		"InterferenceFunction2DParaCrystal_setIntegrationOverXi(InterferenceFunction2DParaCrystal self, bool integrate_xi)\n"
-		"void InterferenceFunction2DParaCrystal::setIntegrationOverXi(bool integrate_xi)\n"
-		"\n"
-		"Enables/disables averaging over the lattice rotation angle.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"integrate_xi: \n"
-		"integration flag \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_integrationOverXi", _wrap_InterferenceFunction2DParaCrystal_integrationOverXi, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool\n"
-		"bool InterferenceFunction2DParaCrystal::integrationOverXi() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_dampingLength", _wrap_InterferenceFunction2DParaCrystal_dampingLength, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_dampingLength(InterferenceFunction2DParaCrystal self) -> double\n"
-		"double InterferenceFunction2DParaCrystal::dampingLength() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_lattice", _wrap_InterferenceFunction2DParaCrystal_lattice, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D\n"
-		"const Lattice2D & InterferenceFunction2DParaCrystal::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_getParticleDensity", _wrap_InterferenceFunction2DParaCrystal_getParticleDensity, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_getParticleDensity(InterferenceFunction2DParaCrystal self) -> double\n"
-		"double InterferenceFunction2DParaCrystal::getParticleDensity() const override final\n"
-		"\n"
-		"If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_getChildren", _wrap_InterferenceFunction2DParaCrystal_getChildren, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_getChildren(InterferenceFunction2DParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunction2DParaCrystal::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_pdf1", _wrap_InterferenceFunction2DParaCrystal_pdf1, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_pdf1(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D\n"
-		"const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf1() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DParaCrystal_pdf2", _wrap_InterferenceFunction2DParaCrystal_pdf2, METH_O, "\n"
-		"InterferenceFunction2DParaCrystal_pdf2(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D\n"
-		"const IFTDistribution2D* InterferenceFunction2DParaCrystal::pdf2() const\n"
-		"\n"
-		""},
+	 { "InterferenceFunction2DParaCrystal_setDomainSizes", _wrap_InterferenceFunction2DParaCrystal_setDomainSizes, METH_VARARGS, "InterferenceFunction2DParaCrystal_setDomainSizes(InterferenceFunction2DParaCrystal self, double size_1, double size_2)"},
+	 { "InterferenceFunction2DParaCrystal_setProbabilityDistributions", _wrap_InterferenceFunction2DParaCrystal_setProbabilityDistributions, METH_VARARGS, "InterferenceFunction2DParaCrystal_setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)"},
+	 { "InterferenceFunction2DParaCrystal_setDampingLength", _wrap_InterferenceFunction2DParaCrystal_setDampingLength, METH_VARARGS, "InterferenceFunction2DParaCrystal_setDampingLength(InterferenceFunction2DParaCrystal self, double damping_length)"},
+	 { "InterferenceFunction2DParaCrystal_domainSizes", _wrap_InterferenceFunction2DParaCrystal_domainSizes, METH_O, "InterferenceFunction2DParaCrystal_domainSizes(InterferenceFunction2DParaCrystal self) -> vdouble1d_t"},
+	 { "InterferenceFunction2DParaCrystal_setIntegrationOverXi", _wrap_InterferenceFunction2DParaCrystal_setIntegrationOverXi, METH_VARARGS, "InterferenceFunction2DParaCrystal_setIntegrationOverXi(InterferenceFunction2DParaCrystal self, bool integrate_xi)"},
+	 { "InterferenceFunction2DParaCrystal_integrationOverXi", _wrap_InterferenceFunction2DParaCrystal_integrationOverXi, METH_O, "InterferenceFunction2DParaCrystal_integrationOverXi(InterferenceFunction2DParaCrystal self) -> bool"},
+	 { "InterferenceFunction2DParaCrystal_dampingLength", _wrap_InterferenceFunction2DParaCrystal_dampingLength, METH_O, "InterferenceFunction2DParaCrystal_dampingLength(InterferenceFunction2DParaCrystal self) -> double"},
+	 { "InterferenceFunction2DParaCrystal_lattice", _wrap_InterferenceFunction2DParaCrystal_lattice, METH_O, "InterferenceFunction2DParaCrystal_lattice(InterferenceFunction2DParaCrystal self) -> Lattice2D"},
+	 { "InterferenceFunction2DParaCrystal_getParticleDensity", _wrap_InterferenceFunction2DParaCrystal_getParticleDensity, METH_O, "InterferenceFunction2DParaCrystal_getParticleDensity(InterferenceFunction2DParaCrystal self) -> double"},
+	 { "InterferenceFunction2DParaCrystal_getChildren", _wrap_InterferenceFunction2DParaCrystal_getChildren, METH_O, "InterferenceFunction2DParaCrystal_getChildren(InterferenceFunction2DParaCrystal self) -> swig_dummy_type_const_inode_vector"},
+	 { "InterferenceFunction2DParaCrystal_pdf1", _wrap_InterferenceFunction2DParaCrystal_pdf1, METH_O, "InterferenceFunction2DParaCrystal_pdf1(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D"},
+	 { "InterferenceFunction2DParaCrystal_pdf2", _wrap_InterferenceFunction2DParaCrystal_pdf2, METH_O, "InterferenceFunction2DParaCrystal_pdf2(InterferenceFunction2DParaCrystal self) -> IFTDistribution2D"},
 	 { "InterferenceFunction2DParaCrystal_swigregister", InterferenceFunction2DParaCrystal_swigregister, METH_O, NULL},
 	 { "InterferenceFunction2DParaCrystal_swiginit", InterferenceFunction2DParaCrystal_swiginit, METH_VARARGS, NULL},
 	 { "new_InterferenceFunction2DSuperLattice", _wrap_new_InterferenceFunction2DSuperLattice, METH_VARARGS, "\n"
 		"InterferenceFunction2DSuperLattice(Lattice2D lattice, unsigned int size_1, unsigned int size_2)\n"
 		"new_InterferenceFunction2DSuperLattice(double length_1, double length_2, double alpha, double xi, unsigned int size_1, unsigned int size_2) -> InterferenceFunction2DSuperLattice\n"
-		"InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(double length_1, double length_2, double alpha, double xi, unsigned size_1, unsigned size_2)\n"
-		"\n"
-		"Constructor of two-dimensional interference function.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length_1: \n"
-		"length of first lattice vector in nanometers\n"
-		"\n"
-		"length_2: \n"
-		"length of second lattice vector in nanometers\n"
-		"\n"
-		"alpha: \n"
-		"angle between lattice vectors in radians\n"
-		"\n"
-		"xi: \n"
-		"rotation of lattice with respect to x-axis (beam direction) in radians\n"
-		"\n"
-		"size_1: \n"
-		"correlation length in direction 1\n"
-		"\n"
-		"size_2: \n"
-		"correlation length in direction 2 \n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunction2DSuperLattice", _wrap_delete_InterferenceFunction2DSuperLattice, METH_O, "\n"
-		"delete_InterferenceFunction2DSuperLattice(InterferenceFunction2DSuperLattice self)\n"
-		"InterferenceFunction2DSuperLattice::~InterferenceFunction2DSuperLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_clone", _wrap_InterferenceFunction2DSuperLattice_clone, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_clone(InterferenceFunction2DSuperLattice self) -> InterferenceFunction2DSuperLattice\n"
-		"InterferenceFunction2DSuperLattice * InterferenceFunction2DSuperLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_accept", _wrap_InterferenceFunction2DSuperLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunction2DSuperLattice_accept(InterferenceFunction2DSuperLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunction2DSuperLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_setSubstructureIFF", _wrap_InterferenceFunction2DSuperLattice_setSubstructureIFF, METH_VARARGS, "\n"
-		"InterferenceFunction2DSuperLattice_setSubstructureIFF(InterferenceFunction2DSuperLattice self, IInterferenceFunction sub_iff)\n"
-		"void InterferenceFunction2DSuperLattice::setSubstructureIFF(const IInterferenceFunction &sub_iff)\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_substructureIFF", _wrap_InterferenceFunction2DSuperLattice_substructureIFF, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_substructureIFF(InterferenceFunction2DSuperLattice self) -> IInterferenceFunction\n"
-		"const IInterferenceFunction & InterferenceFunction2DSuperLattice::substructureIFF() const\n"
-		"\n"
 		""},
+	 { "delete_InterferenceFunction2DSuperLattice", _wrap_delete_InterferenceFunction2DSuperLattice, METH_O, "delete_InterferenceFunction2DSuperLattice(InterferenceFunction2DSuperLattice self)"},
+	 { "InterferenceFunction2DSuperLattice_clone", _wrap_InterferenceFunction2DSuperLattice_clone, METH_O, "InterferenceFunction2DSuperLattice_clone(InterferenceFunction2DSuperLattice self) -> InterferenceFunction2DSuperLattice"},
+	 { "InterferenceFunction2DSuperLattice_accept", _wrap_InterferenceFunction2DSuperLattice_accept, METH_VARARGS, "InterferenceFunction2DSuperLattice_accept(InterferenceFunction2DSuperLattice self, INodeVisitor * visitor)"},
+	 { "InterferenceFunction2DSuperLattice_setSubstructureIFF", _wrap_InterferenceFunction2DSuperLattice_setSubstructureIFF, METH_VARARGS, "InterferenceFunction2DSuperLattice_setSubstructureIFF(InterferenceFunction2DSuperLattice self, IInterferenceFunction sub_iff)"},
+	 { "InterferenceFunction2DSuperLattice_substructureIFF", _wrap_InterferenceFunction2DSuperLattice_substructureIFF, METH_O, "InterferenceFunction2DSuperLattice_substructureIFF(InterferenceFunction2DSuperLattice self) -> IInterferenceFunction"},
 	 { "InterferenceFunction2DSuperLattice_createSquare", _wrap_InterferenceFunction2DSuperLattice_createSquare, METH_VARARGS, "InterferenceFunction2DSuperLattice_createSquare(double lattice_length, double xi, unsigned int size_1, unsigned int size_2) -> InterferenceFunction2DSuperLattice"},
 	 { "InterferenceFunction2DSuperLattice_createHexagonal", _wrap_InterferenceFunction2DSuperLattice_createHexagonal, METH_VARARGS, "InterferenceFunction2DSuperLattice_createHexagonal(double lattice_length, double xi, unsigned int size_1, unsigned int size_2) -> InterferenceFunction2DSuperLattice"},
-	 { "InterferenceFunction2DSuperLattice_evaluate", _wrap_InterferenceFunction2DSuperLattice_evaluate, METH_VARARGS, "\n"
-		"InterferenceFunction2DSuperLattice_evaluate(InterferenceFunction2DSuperLattice self, kvector_t q, double outer_iff=1.0) -> double\n"
-		"double InterferenceFunction2DSuperLattice::evaluate(const kvector_t q, double outer_iff=1.0) const override final\n"
-		"\n"
-		"Evaluates the interference function for a given wavevector transfer. \n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_domainSize1", _wrap_InterferenceFunction2DSuperLattice_domainSize1, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_domainSize1(InterferenceFunction2DSuperLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunction2DSuperLattice::domainSize1() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_domainSize2", _wrap_InterferenceFunction2DSuperLattice_domainSize2, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_domainSize2(InterferenceFunction2DSuperLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunction2DSuperLattice::domainSize2() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_setIntegrationOverXi", _wrap_InterferenceFunction2DSuperLattice_setIntegrationOverXi, METH_VARARGS, "\n"
-		"InterferenceFunction2DSuperLattice_setIntegrationOverXi(InterferenceFunction2DSuperLattice self, bool integrate_xi)\n"
-		"void InterferenceFunction2DSuperLattice::setIntegrationOverXi(bool integrate_xi)\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_integrationOverXi", _wrap_InterferenceFunction2DSuperLattice_integrationOverXi, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_integrationOverXi(InterferenceFunction2DSuperLattice self) -> bool\n"
-		"bool InterferenceFunction2DSuperLattice::integrationOverXi() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_lattice", _wrap_InterferenceFunction2DSuperLattice_lattice, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_lattice(InterferenceFunction2DSuperLattice self) -> Lattice2D\n"
-		"const Lattice2D & InterferenceFunction2DSuperLattice::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction2DSuperLattice_getChildren", _wrap_InterferenceFunction2DSuperLattice_getChildren, METH_O, "\n"
-		"InterferenceFunction2DSuperLattice_getChildren(InterferenceFunction2DSuperLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunction2DSuperLattice::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "InterferenceFunction2DSuperLattice_evaluate", _wrap_InterferenceFunction2DSuperLattice_evaluate, METH_VARARGS, "InterferenceFunction2DSuperLattice_evaluate(InterferenceFunction2DSuperLattice self, kvector_t q, double outer_iff=1.0) -> double"},
+	 { "InterferenceFunction2DSuperLattice_domainSize1", _wrap_InterferenceFunction2DSuperLattice_domainSize1, METH_O, "InterferenceFunction2DSuperLattice_domainSize1(InterferenceFunction2DSuperLattice self) -> unsigned int"},
+	 { "InterferenceFunction2DSuperLattice_domainSize2", _wrap_InterferenceFunction2DSuperLattice_domainSize2, METH_O, "InterferenceFunction2DSuperLattice_domainSize2(InterferenceFunction2DSuperLattice self) -> unsigned int"},
+	 { "InterferenceFunction2DSuperLattice_setIntegrationOverXi", _wrap_InterferenceFunction2DSuperLattice_setIntegrationOverXi, METH_VARARGS, "InterferenceFunction2DSuperLattice_setIntegrationOverXi(InterferenceFunction2DSuperLattice self, bool integrate_xi)"},
+	 { "InterferenceFunction2DSuperLattice_integrationOverXi", _wrap_InterferenceFunction2DSuperLattice_integrationOverXi, METH_O, "InterferenceFunction2DSuperLattice_integrationOverXi(InterferenceFunction2DSuperLattice self) -> bool"},
+	 { "InterferenceFunction2DSuperLattice_lattice", _wrap_InterferenceFunction2DSuperLattice_lattice, METH_O, "InterferenceFunction2DSuperLattice_lattice(InterferenceFunction2DSuperLattice self) -> Lattice2D"},
+	 { "InterferenceFunction2DSuperLattice_getChildren", _wrap_InterferenceFunction2DSuperLattice_getChildren, METH_O, "InterferenceFunction2DSuperLattice_getChildren(InterferenceFunction2DSuperLattice self) -> swig_dummy_type_const_inode_vector"},
 	 { "InterferenceFunction2DSuperLattice_swigregister", InterferenceFunction2DSuperLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunction2DSuperLattice_swiginit", InterferenceFunction2DSuperLattice_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunction3DLattice", _wrap_new_InterferenceFunction3DLattice, METH_O, "\n"
-		"new_InterferenceFunction3DLattice(Lattice lattice) -> InterferenceFunction3DLattice\n"
-		"InterferenceFunction3DLattice::InterferenceFunction3DLattice(const Lattice &lattice)\n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunction3DLattice", _wrap_delete_InterferenceFunction3DLattice, METH_O, "\n"
-		"delete_InterferenceFunction3DLattice(InterferenceFunction3DLattice self)\n"
-		"InterferenceFunction3DLattice::~InterferenceFunction3DLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_clone", _wrap_InterferenceFunction3DLattice_clone, METH_O, "\n"
-		"InterferenceFunction3DLattice_clone(InterferenceFunction3DLattice self) -> InterferenceFunction3DLattice\n"
-		"InterferenceFunction3DLattice * InterferenceFunction3DLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_accept", _wrap_InterferenceFunction3DLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunction3DLattice_accept(InterferenceFunction3DLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunction3DLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_setPeakShape", _wrap_InterferenceFunction3DLattice_setPeakShape, METH_VARARGS, "\n"
-		"InterferenceFunction3DLattice_setPeakShape(InterferenceFunction3DLattice self, IPeakShape peak_shape)\n"
-		"void InterferenceFunction3DLattice::setPeakShape(const IPeakShape &peak_shape)\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_lattice", _wrap_InterferenceFunction3DLattice_lattice, METH_O, "\n"
-		"InterferenceFunction3DLattice_lattice(InterferenceFunction3DLattice self) -> Lattice\n"
-		"const Lattice & InterferenceFunction3DLattice::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_supportsMultilayer", _wrap_InterferenceFunction3DLattice_supportsMultilayer, METH_O, "\n"
-		"InterferenceFunction3DLattice_supportsMultilayer(InterferenceFunction3DLattice self) -> bool\n"
-		"bool InterferenceFunction3DLattice::supportsMultilayer() const override final\n"
-		"\n"
-		"Indicates if this interference function can be used with a multilayer (DWBA mode) \n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_getChildren", _wrap_InterferenceFunction3DLattice_getChildren, METH_O, "\n"
-		"InterferenceFunction3DLattice_getChildren(InterferenceFunction3DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunction3DLattice::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunction3DLattice_onChange", _wrap_InterferenceFunction3DLattice_onChange, METH_O, "\n"
-		"InterferenceFunction3DLattice_onChange(InterferenceFunction3DLattice self)\n"
-		"void InterferenceFunction3DLattice::onChange() override final\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunction3DLattice", _wrap_new_InterferenceFunction3DLattice, METH_O, "new_InterferenceFunction3DLattice(Lattice lattice) -> InterferenceFunction3DLattice"},
+	 { "delete_InterferenceFunction3DLattice", _wrap_delete_InterferenceFunction3DLattice, METH_O, "delete_InterferenceFunction3DLattice(InterferenceFunction3DLattice self)"},
+	 { "InterferenceFunction3DLattice_clone", _wrap_InterferenceFunction3DLattice_clone, METH_O, "InterferenceFunction3DLattice_clone(InterferenceFunction3DLattice self) -> InterferenceFunction3DLattice"},
+	 { "InterferenceFunction3DLattice_accept", _wrap_InterferenceFunction3DLattice_accept, METH_VARARGS, "InterferenceFunction3DLattice_accept(InterferenceFunction3DLattice self, INodeVisitor * visitor)"},
+	 { "InterferenceFunction3DLattice_setPeakShape", _wrap_InterferenceFunction3DLattice_setPeakShape, METH_VARARGS, "InterferenceFunction3DLattice_setPeakShape(InterferenceFunction3DLattice self, IPeakShape peak_shape)"},
+	 { "InterferenceFunction3DLattice_lattice", _wrap_InterferenceFunction3DLattice_lattice, METH_O, "InterferenceFunction3DLattice_lattice(InterferenceFunction3DLattice self) -> Lattice"},
+	 { "InterferenceFunction3DLattice_supportsMultilayer", _wrap_InterferenceFunction3DLattice_supportsMultilayer, METH_O, "InterferenceFunction3DLattice_supportsMultilayer(InterferenceFunction3DLattice self) -> bool"},
+	 { "InterferenceFunction3DLattice_getChildren", _wrap_InterferenceFunction3DLattice_getChildren, METH_O, "InterferenceFunction3DLattice_getChildren(InterferenceFunction3DLattice self) -> swig_dummy_type_const_inode_vector"},
+	 { "InterferenceFunction3DLattice_onChange", _wrap_InterferenceFunction3DLattice_onChange, METH_O, "InterferenceFunction3DLattice_onChange(InterferenceFunction3DLattice self)"},
 	 { "InterferenceFunction3DLattice_swigregister", InterferenceFunction3DLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunction3DLattice_swiginit", InterferenceFunction3DLattice_swiginit, METH_VARARGS, NULL},
 	 { "new_InterferenceFunctionFinite2DLattice", _wrap_new_InterferenceFunctionFinite2DLattice, METH_VARARGS, "\n"
 		"InterferenceFunctionFinite2DLattice(Lattice2D lattice, unsigned int N_1, unsigned int N_2)\n"
 		"new_InterferenceFunctionFinite2DLattice(double length_1, double length_2, double alpha, double xi, unsigned int N_1, unsigned int N_2) -> InterferenceFunctionFinite2DLattice\n"
-		"InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(double length_1, double length_2, double alpha, double xi, unsigned N_1, unsigned N_2)\n"
-		"\n"
-		"Constructor of two-dimensional finite lattice interference function.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"length_1: \n"
-		"length of first lattice vector in nanometers\n"
-		"\n"
-		"length_2: \n"
-		"length of second lattice vector in nanometers\n"
-		"\n"
-		"alpha: \n"
-		"angle between lattice vectors in radians\n"
-		"\n"
-		"xi: \n"
-		"rotation of lattice with respect to x-axis (beam direction) in radians\n"
-		"\n"
-		"N_1: \n"
-		"number of lattice cells in the first lattice direction\n"
-		"\n"
-		"N_2: \n"
-		"number of lattice cells in the second lattice direction \n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunctionFinite2DLattice", _wrap_delete_InterferenceFunctionFinite2DLattice, METH_O, "\n"
-		"delete_InterferenceFunctionFinite2DLattice(InterferenceFunctionFinite2DLattice self)\n"
-		"InterferenceFunctionFinite2DLattice::~InterferenceFunctionFinite2DLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_clone", _wrap_InterferenceFunctionFinite2DLattice_clone, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_clone(InterferenceFunctionFinite2DLattice self) -> InterferenceFunctionFinite2DLattice\n"
-		"InterferenceFunctionFinite2DLattice * InterferenceFunctionFinite2DLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_accept", _wrap_InterferenceFunctionFinite2DLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionFinite2DLattice_accept(InterferenceFunctionFinite2DLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionFinite2DLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
 		""},
+	 { "delete_InterferenceFunctionFinite2DLattice", _wrap_delete_InterferenceFunctionFinite2DLattice, METH_O, "delete_InterferenceFunctionFinite2DLattice(InterferenceFunctionFinite2DLattice self)"},
+	 { "InterferenceFunctionFinite2DLattice_clone", _wrap_InterferenceFunctionFinite2DLattice_clone, METH_O, "InterferenceFunctionFinite2DLattice_clone(InterferenceFunctionFinite2DLattice self) -> InterferenceFunctionFinite2DLattice"},
+	 { "InterferenceFunctionFinite2DLattice_accept", _wrap_InterferenceFunctionFinite2DLattice_accept, METH_VARARGS, "InterferenceFunctionFinite2DLattice_accept(InterferenceFunctionFinite2DLattice self, INodeVisitor * visitor)"},
 	 { "InterferenceFunctionFinite2DLattice_createSquare", _wrap_InterferenceFunctionFinite2DLattice_createSquare, METH_VARARGS, "InterferenceFunctionFinite2DLattice_createSquare(double lattice_length, double xi, unsigned int N_1, unsigned int N_2) -> InterferenceFunctionFinite2DLattice"},
 	 { "InterferenceFunctionFinite2DLattice_createHexagonal", _wrap_InterferenceFunctionFinite2DLattice_createHexagonal, METH_VARARGS, "InterferenceFunctionFinite2DLattice_createHexagonal(double lattice_length, double xi, unsigned int N_1, unsigned int N_2) -> InterferenceFunctionFinite2DLattice"},
-	 { "InterferenceFunctionFinite2DLattice_numberUnitCells1", _wrap_InterferenceFunctionFinite2DLattice_numberUnitCells1, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_numberUnitCells1(InterferenceFunctionFinite2DLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunctionFinite2DLattice::numberUnitCells1() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_numberUnitCells2", _wrap_InterferenceFunctionFinite2DLattice_numberUnitCells2, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_numberUnitCells2(InterferenceFunctionFinite2DLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunctionFinite2DLattice::numberUnitCells2() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_setIntegrationOverXi", _wrap_InterferenceFunctionFinite2DLattice_setIntegrationOverXi, METH_VARARGS, "\n"
-		"InterferenceFunctionFinite2DLattice_setIntegrationOverXi(InterferenceFunctionFinite2DLattice self, bool integrate_xi)\n"
-		"void InterferenceFunctionFinite2DLattice::setIntegrationOverXi(bool integrate_xi)\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_integrationOverXi", _wrap_InterferenceFunctionFinite2DLattice_integrationOverXi, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_integrationOverXi(InterferenceFunctionFinite2DLattice self) -> bool\n"
-		"bool InterferenceFunctionFinite2DLattice::integrationOverXi() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_lattice", _wrap_InterferenceFunctionFinite2DLattice_lattice, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_lattice(InterferenceFunctionFinite2DLattice self) -> Lattice2D\n"
-		"const Lattice2D & InterferenceFunctionFinite2DLattice::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_getParticleDensity", _wrap_InterferenceFunctionFinite2DLattice_getParticleDensity, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_getParticleDensity(InterferenceFunctionFinite2DLattice self) -> double\n"
-		"double InterferenceFunctionFinite2DLattice::getParticleDensity() const override final\n"
-		"\n"
-		"Returns the particle density associated with this 2d lattice. \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite2DLattice_getChildren", _wrap_InterferenceFunctionFinite2DLattice_getChildren, METH_O, "\n"
-		"InterferenceFunctionFinite2DLattice_getChildren(InterferenceFunctionFinite2DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunctionFinite2DLattice::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "InterferenceFunctionFinite2DLattice_numberUnitCells1", _wrap_InterferenceFunctionFinite2DLattice_numberUnitCells1, METH_O, "InterferenceFunctionFinite2DLattice_numberUnitCells1(InterferenceFunctionFinite2DLattice self) -> unsigned int"},
+	 { "InterferenceFunctionFinite2DLattice_numberUnitCells2", _wrap_InterferenceFunctionFinite2DLattice_numberUnitCells2, METH_O, "InterferenceFunctionFinite2DLattice_numberUnitCells2(InterferenceFunctionFinite2DLattice self) -> unsigned int"},
+	 { "InterferenceFunctionFinite2DLattice_setIntegrationOverXi", _wrap_InterferenceFunctionFinite2DLattice_setIntegrationOverXi, METH_VARARGS, "InterferenceFunctionFinite2DLattice_setIntegrationOverXi(InterferenceFunctionFinite2DLattice self, bool integrate_xi)"},
+	 { "InterferenceFunctionFinite2DLattice_integrationOverXi", _wrap_InterferenceFunctionFinite2DLattice_integrationOverXi, METH_O, "InterferenceFunctionFinite2DLattice_integrationOverXi(InterferenceFunctionFinite2DLattice self) -> bool"},
+	 { "InterferenceFunctionFinite2DLattice_lattice", _wrap_InterferenceFunctionFinite2DLattice_lattice, METH_O, "InterferenceFunctionFinite2DLattice_lattice(InterferenceFunctionFinite2DLattice self) -> Lattice2D"},
+	 { "InterferenceFunctionFinite2DLattice_getParticleDensity", _wrap_InterferenceFunctionFinite2DLattice_getParticleDensity, METH_O, "InterferenceFunctionFinite2DLattice_getParticleDensity(InterferenceFunctionFinite2DLattice self) -> double"},
+	 { "InterferenceFunctionFinite2DLattice_getChildren", _wrap_InterferenceFunctionFinite2DLattice_getChildren, METH_O, "InterferenceFunctionFinite2DLattice_getChildren(InterferenceFunctionFinite2DLattice self) -> swig_dummy_type_const_inode_vector"},
 	 { "InterferenceFunctionFinite2DLattice_swigregister", InterferenceFunctionFinite2DLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionFinite2DLattice_swiginit", InterferenceFunctionFinite2DLattice_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunctionFinite3DLattice", _wrap_new_InterferenceFunctionFinite3DLattice, METH_VARARGS, "\n"
-		"new_InterferenceFunctionFinite3DLattice(Lattice lattice, unsigned int N_1, unsigned int N_2, unsigned int N_3) -> InterferenceFunctionFinite3DLattice\n"
-		"InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice(const Lattice &lattice, unsigned N_1, unsigned N_2, unsigned N_3)\n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunctionFinite3DLattice", _wrap_delete_InterferenceFunctionFinite3DLattice, METH_O, "\n"
-		"delete_InterferenceFunctionFinite3DLattice(InterferenceFunctionFinite3DLattice self)\n"
-		"InterferenceFunctionFinite3DLattice::~InterferenceFunctionFinite3DLattice() final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_clone", _wrap_InterferenceFunctionFinite3DLattice_clone, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_clone(InterferenceFunctionFinite3DLattice self) -> InterferenceFunctionFinite3DLattice\n"
-		"InterferenceFunctionFinite3DLattice * InterferenceFunctionFinite3DLattice::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_accept", _wrap_InterferenceFunctionFinite3DLattice_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionFinite3DLattice_accept(InterferenceFunctionFinite3DLattice self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionFinite3DLattice::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_numberUnitCells1", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells1, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_numberUnitCells1(InterferenceFunctionFinite3DLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunctionFinite3DLattice::numberUnitCells1() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_numberUnitCells2", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells2, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_numberUnitCells2(InterferenceFunctionFinite3DLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunctionFinite3DLattice::numberUnitCells2() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_numberUnitCells3", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells3, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_numberUnitCells3(InterferenceFunctionFinite3DLattice self) -> unsigned int\n"
-		"unsigned InterferenceFunctionFinite3DLattice::numberUnitCells3() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_lattice", _wrap_InterferenceFunctionFinite3DLattice_lattice, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_lattice(InterferenceFunctionFinite3DLattice self) -> Lattice\n"
-		"const Lattice & InterferenceFunctionFinite3DLattice::lattice() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_supportsMultilayer", _wrap_InterferenceFunctionFinite3DLattice_supportsMultilayer, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_supportsMultilayer(InterferenceFunctionFinite3DLattice self) -> bool\n"
-		"bool InterferenceFunctionFinite3DLattice::supportsMultilayer() const override final\n"
-		"\n"
-		"Indicates if this interference function can be used with a multilayer (DWBA mode) \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionFinite3DLattice_getChildren", _wrap_InterferenceFunctionFinite3DLattice_getChildren, METH_O, "\n"
-		"InterferenceFunctionFinite3DLattice_getChildren(InterferenceFunctionFinite3DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunctionFinite3DLattice::getChildren() const override final\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunctionFinite3DLattice", _wrap_new_InterferenceFunctionFinite3DLattice, METH_VARARGS, "new_InterferenceFunctionFinite3DLattice(Lattice lattice, unsigned int N_1, unsigned int N_2, unsigned int N_3) -> InterferenceFunctionFinite3DLattice"},
+	 { "delete_InterferenceFunctionFinite3DLattice", _wrap_delete_InterferenceFunctionFinite3DLattice, METH_O, "delete_InterferenceFunctionFinite3DLattice(InterferenceFunctionFinite3DLattice self)"},
+	 { "InterferenceFunctionFinite3DLattice_clone", _wrap_InterferenceFunctionFinite3DLattice_clone, METH_O, "InterferenceFunctionFinite3DLattice_clone(InterferenceFunctionFinite3DLattice self) -> InterferenceFunctionFinite3DLattice"},
+	 { "InterferenceFunctionFinite3DLattice_accept", _wrap_InterferenceFunctionFinite3DLattice_accept, METH_VARARGS, "InterferenceFunctionFinite3DLattice_accept(InterferenceFunctionFinite3DLattice self, INodeVisitor * visitor)"},
+	 { "InterferenceFunctionFinite3DLattice_numberUnitCells1", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells1, METH_O, "InterferenceFunctionFinite3DLattice_numberUnitCells1(InterferenceFunctionFinite3DLattice self) -> unsigned int"},
+	 { "InterferenceFunctionFinite3DLattice_numberUnitCells2", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells2, METH_O, "InterferenceFunctionFinite3DLattice_numberUnitCells2(InterferenceFunctionFinite3DLattice self) -> unsigned int"},
+	 { "InterferenceFunctionFinite3DLattice_numberUnitCells3", _wrap_InterferenceFunctionFinite3DLattice_numberUnitCells3, METH_O, "InterferenceFunctionFinite3DLattice_numberUnitCells3(InterferenceFunctionFinite3DLattice self) -> unsigned int"},
+	 { "InterferenceFunctionFinite3DLattice_lattice", _wrap_InterferenceFunctionFinite3DLattice_lattice, METH_O, "InterferenceFunctionFinite3DLattice_lattice(InterferenceFunctionFinite3DLattice self) -> Lattice"},
+	 { "InterferenceFunctionFinite3DLattice_supportsMultilayer", _wrap_InterferenceFunctionFinite3DLattice_supportsMultilayer, METH_O, "InterferenceFunctionFinite3DLattice_supportsMultilayer(InterferenceFunctionFinite3DLattice self) -> bool"},
+	 { "InterferenceFunctionFinite3DLattice_getChildren", _wrap_InterferenceFunctionFinite3DLattice_getChildren, METH_O, "InterferenceFunctionFinite3DLattice_getChildren(InterferenceFunctionFinite3DLattice self) -> swig_dummy_type_const_inode_vector"},
 	 { "InterferenceFunctionFinite3DLattice_swigregister", InterferenceFunctionFinite3DLattice_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionFinite3DLattice_swiginit", InterferenceFunctionFinite3DLattice_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunctionHardDisk", _wrap_new_InterferenceFunctionHardDisk, METH_VARARGS, "\n"
-		"InterferenceFunctionHardDisk(double radius, double density, double position_var=0)\n"
-		"InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(double radius, double density, double position_var=0)\n"
-		"\n"
-		""},
-	 { "delete_InterferenceFunctionHardDisk", _wrap_delete_InterferenceFunctionHardDisk, METH_O, "\n"
-		"delete_InterferenceFunctionHardDisk(InterferenceFunctionHardDisk self)\n"
-		"InterferenceFunctionHardDisk::~InterferenceFunctionHardDisk() final=default\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionHardDisk_clone", _wrap_InterferenceFunctionHardDisk_clone, METH_O, "\n"
-		"InterferenceFunctionHardDisk_clone(InterferenceFunctionHardDisk self) -> InterferenceFunctionHardDisk\n"
-		"InterferenceFunctionHardDisk * InterferenceFunctionHardDisk::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionHardDisk_accept", _wrap_InterferenceFunctionHardDisk_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionHardDisk_accept(InterferenceFunctionHardDisk self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionHardDisk::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionHardDisk_getParticleDensity", _wrap_InterferenceFunctionHardDisk_getParticleDensity, METH_O, "\n"
-		"InterferenceFunctionHardDisk_getParticleDensity(InterferenceFunctionHardDisk self) -> double\n"
-		"double InterferenceFunctionHardDisk::getParticleDensity() const override final\n"
-		"\n"
-		"If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionHardDisk_radius", _wrap_InterferenceFunctionHardDisk_radius, METH_O, "\n"
-		"InterferenceFunctionHardDisk_radius(InterferenceFunctionHardDisk self) -> double\n"
-		"double InterferenceFunctionHardDisk::radius() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionHardDisk_density", _wrap_InterferenceFunctionHardDisk_density, METH_O, "\n"
-		"InterferenceFunctionHardDisk_density(InterferenceFunctionHardDisk self) -> double\n"
-		"double InterferenceFunctionHardDisk::density() const\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunctionHardDisk", _wrap_new_InterferenceFunctionHardDisk, METH_VARARGS, "InterferenceFunctionHardDisk(double radius, double density, double position_var=0)"},
+	 { "delete_InterferenceFunctionHardDisk", _wrap_delete_InterferenceFunctionHardDisk, METH_O, "delete_InterferenceFunctionHardDisk(InterferenceFunctionHardDisk self)"},
+	 { "InterferenceFunctionHardDisk_clone", _wrap_InterferenceFunctionHardDisk_clone, METH_O, "InterferenceFunctionHardDisk_clone(InterferenceFunctionHardDisk self) -> InterferenceFunctionHardDisk"},
+	 { "InterferenceFunctionHardDisk_accept", _wrap_InterferenceFunctionHardDisk_accept, METH_VARARGS, "InterferenceFunctionHardDisk_accept(InterferenceFunctionHardDisk self, INodeVisitor * visitor)"},
+	 { "InterferenceFunctionHardDisk_getParticleDensity", _wrap_InterferenceFunctionHardDisk_getParticleDensity, METH_O, "InterferenceFunctionHardDisk_getParticleDensity(InterferenceFunctionHardDisk self) -> double"},
+	 { "InterferenceFunctionHardDisk_radius", _wrap_InterferenceFunctionHardDisk_radius, METH_O, "InterferenceFunctionHardDisk_radius(InterferenceFunctionHardDisk self) -> double"},
+	 { "InterferenceFunctionHardDisk_density", _wrap_InterferenceFunctionHardDisk_density, METH_O, "InterferenceFunctionHardDisk_density(InterferenceFunctionHardDisk self) -> double"},
 	 { "InterferenceFunctionHardDisk_swigregister", InterferenceFunctionHardDisk_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionHardDisk_swiginit", InterferenceFunctionHardDisk_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunctionNone", _wrap_new_InterferenceFunctionNone, METH_NOARGS, "\n"
-		"new_InterferenceFunctionNone() -> InterferenceFunctionNone\n"
-		"InterferenceFunctionNone::InterferenceFunctionNone()\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionNone_clone", _wrap_InterferenceFunctionNone_clone, METH_O, "\n"
-		"InterferenceFunctionNone_clone(InterferenceFunctionNone self) -> InterferenceFunctionNone\n"
-		"InterferenceFunctionNone * InterferenceFunctionNone::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionNone_accept", _wrap_InterferenceFunctionNone_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionNone_accept(InterferenceFunctionNone self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionNone::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunctionNone", _wrap_new_InterferenceFunctionNone, METH_NOARGS, "new_InterferenceFunctionNone() -> InterferenceFunctionNone"},
+	 { "InterferenceFunctionNone_clone", _wrap_InterferenceFunctionNone_clone, METH_O, "InterferenceFunctionNone_clone(InterferenceFunctionNone self) -> InterferenceFunctionNone"},
+	 { "InterferenceFunctionNone_accept", _wrap_InterferenceFunctionNone_accept, METH_VARARGS, "InterferenceFunctionNone_accept(InterferenceFunctionNone self, INodeVisitor * visitor)"},
 	 { "delete_InterferenceFunctionNone", _wrap_delete_InterferenceFunctionNone, METH_O, "delete_InterferenceFunctionNone(InterferenceFunctionNone self)"},
 	 { "InterferenceFunctionNone_swigregister", InterferenceFunctionNone_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionNone_swiginit", InterferenceFunctionNone_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunctionRadialParaCrystal", _wrap_new_InterferenceFunctionRadialParaCrystal, METH_VARARGS, "\n"
-		"new_InterferenceFunctionRadialParaCrystal(double peak_distance, double damping_length) -> InterferenceFunctionRadialParaCrystal\n"
-		"InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(double peak_distance, double damping_length)\n"
-		"\n"
-		"Constructor of interference function of radial paracrystal.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"peak_distance: \n"
-		"average distance to the next neighbor in nanometers\n"
-		"\n"
-		"damping_length: \n"
-		"the damping (coherence) length of the paracrystal in nanometers \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_clone", _wrap_InterferenceFunctionRadialParaCrystal_clone, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_clone(InterferenceFunctionRadialParaCrystal self) -> InterferenceFunctionRadialParaCrystal\n"
-		"InterferenceFunctionRadialParaCrystal * InterferenceFunctionRadialParaCrystal::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_accept", _wrap_InterferenceFunctionRadialParaCrystal_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionRadialParaCrystal_accept(InterferenceFunctionRadialParaCrystal self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionRadialParaCrystal::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_setKappa", _wrap_InterferenceFunctionRadialParaCrystal_setKappa, METH_VARARGS, "\n"
-		"InterferenceFunctionRadialParaCrystal_setKappa(InterferenceFunctionRadialParaCrystal self, double kappa)\n"
-		"void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)\n"
-		"\n"
-		"Sets size spacing coupling parameter of the Size Spacing Correlation Approximation. \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_kappa", _wrap_InterferenceFunctionRadialParaCrystal_kappa, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_kappa(InterferenceFunctionRadialParaCrystal self) -> double\n"
-		"double InterferenceFunctionRadialParaCrystal::kappa() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_setDomainSize", _wrap_InterferenceFunctionRadialParaCrystal_setDomainSize, METH_VARARGS, "\n"
-		"InterferenceFunctionRadialParaCrystal_setDomainSize(InterferenceFunctionRadialParaCrystal self, double size)\n"
-		"void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)\n"
-		"\n"
-		"Sets domain size (finite size corrections).\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"size: \n"
-		"size of coherence domain along the lattice main axis in nanometers \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_domainSize", _wrap_InterferenceFunctionRadialParaCrystal_domainSize, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_domainSize(InterferenceFunctionRadialParaCrystal self) -> double\n"
-		"double InterferenceFunctionRadialParaCrystal::domainSize() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_FTPDF", _wrap_InterferenceFunctionRadialParaCrystal_FTPDF, METH_VARARGS, "\n"
-		"InterferenceFunctionRadialParaCrystal_FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t\n"
-		"complex_t InterferenceFunctionRadialParaCrystal::FTPDF(double qpar) const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_setProbabilityDistribution", _wrap_InterferenceFunctionRadialParaCrystal_setProbabilityDistribution, METH_VARARGS, "\n"
-		"InterferenceFunctionRadialParaCrystal_setProbabilityDistribution(InterferenceFunctionRadialParaCrystal self, IFTDistribution1D pdf)\n"
-		"void InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(const IFTDistribution1D &pdf)\n"
-		"\n"
-		"Sets one-dimensional probability distribution.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"pdf: \n"
-		"probability distribution (Fourier transform of probability density) \n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_peakDistance", _wrap_InterferenceFunctionRadialParaCrystal_peakDistance, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_peakDistance(InterferenceFunctionRadialParaCrystal self) -> double\n"
-		"double InterferenceFunctionRadialParaCrystal::peakDistance() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_dampingLength", _wrap_InterferenceFunctionRadialParaCrystal_dampingLength, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_dampingLength(InterferenceFunctionRadialParaCrystal self) -> double\n"
-		"double InterferenceFunctionRadialParaCrystal::dampingLength() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_getChildren", _wrap_InterferenceFunctionRadialParaCrystal_getChildren, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_getChildren(InterferenceFunctionRadialParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFunctionRadialParaCrystal::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionRadialParaCrystal_randomSample", _wrap_InterferenceFunctionRadialParaCrystal_randomSample, METH_O, "\n"
-		"InterferenceFunctionRadialParaCrystal_randomSample(InterferenceFunctionRadialParaCrystal self) -> double\n"
-		"double InterferenceFunctionRadialParaCrystal::randomSample() const\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunctionRadialParaCrystal", _wrap_new_InterferenceFunctionRadialParaCrystal, METH_VARARGS, "new_InterferenceFunctionRadialParaCrystal(double peak_distance, double damping_length) -> InterferenceFunctionRadialParaCrystal"},
+	 { "InterferenceFunctionRadialParaCrystal_clone", _wrap_InterferenceFunctionRadialParaCrystal_clone, METH_O, "InterferenceFunctionRadialParaCrystal_clone(InterferenceFunctionRadialParaCrystal self) -> InterferenceFunctionRadialParaCrystal"},
+	 { "InterferenceFunctionRadialParaCrystal_accept", _wrap_InterferenceFunctionRadialParaCrystal_accept, METH_VARARGS, "InterferenceFunctionRadialParaCrystal_accept(InterferenceFunctionRadialParaCrystal self, INodeVisitor * visitor)"},
+	 { "InterferenceFunctionRadialParaCrystal_setKappa", _wrap_InterferenceFunctionRadialParaCrystal_setKappa, METH_VARARGS, "InterferenceFunctionRadialParaCrystal_setKappa(InterferenceFunctionRadialParaCrystal self, double kappa)"},
+	 { "InterferenceFunctionRadialParaCrystal_kappa", _wrap_InterferenceFunctionRadialParaCrystal_kappa, METH_O, "InterferenceFunctionRadialParaCrystal_kappa(InterferenceFunctionRadialParaCrystal self) -> double"},
+	 { "InterferenceFunctionRadialParaCrystal_setDomainSize", _wrap_InterferenceFunctionRadialParaCrystal_setDomainSize, METH_VARARGS, "InterferenceFunctionRadialParaCrystal_setDomainSize(InterferenceFunctionRadialParaCrystal self, double size)"},
+	 { "InterferenceFunctionRadialParaCrystal_domainSize", _wrap_InterferenceFunctionRadialParaCrystal_domainSize, METH_O, "InterferenceFunctionRadialParaCrystal_domainSize(InterferenceFunctionRadialParaCrystal self) -> double"},
+	 { "InterferenceFunctionRadialParaCrystal_FTPDF", _wrap_InterferenceFunctionRadialParaCrystal_FTPDF, METH_VARARGS, "InterferenceFunctionRadialParaCrystal_FTPDF(InterferenceFunctionRadialParaCrystal self, double qpar) -> complex_t"},
+	 { "InterferenceFunctionRadialParaCrystal_setProbabilityDistribution", _wrap_InterferenceFunctionRadialParaCrystal_setProbabilityDistribution, METH_VARARGS, "InterferenceFunctionRadialParaCrystal_setProbabilityDistribution(InterferenceFunctionRadialParaCrystal self, IFTDistribution1D pdf)"},
+	 { "InterferenceFunctionRadialParaCrystal_peakDistance", _wrap_InterferenceFunctionRadialParaCrystal_peakDistance, METH_O, "InterferenceFunctionRadialParaCrystal_peakDistance(InterferenceFunctionRadialParaCrystal self) -> double"},
+	 { "InterferenceFunctionRadialParaCrystal_dampingLength", _wrap_InterferenceFunctionRadialParaCrystal_dampingLength, METH_O, "InterferenceFunctionRadialParaCrystal_dampingLength(InterferenceFunctionRadialParaCrystal self) -> double"},
+	 { "InterferenceFunctionRadialParaCrystal_getChildren", _wrap_InterferenceFunctionRadialParaCrystal_getChildren, METH_O, "InterferenceFunctionRadialParaCrystal_getChildren(InterferenceFunctionRadialParaCrystal self) -> swig_dummy_type_const_inode_vector"},
+	 { "InterferenceFunctionRadialParaCrystal_randomSample", _wrap_InterferenceFunctionRadialParaCrystal_randomSample, METH_O, "InterferenceFunctionRadialParaCrystal_randomSample(InterferenceFunctionRadialParaCrystal self) -> double"},
 	 { "delete_InterferenceFunctionRadialParaCrystal", _wrap_delete_InterferenceFunctionRadialParaCrystal, METH_O, "delete_InterferenceFunctionRadialParaCrystal(InterferenceFunctionRadialParaCrystal self)"},
 	 { "InterferenceFunctionRadialParaCrystal_swigregister", InterferenceFunctionRadialParaCrystal_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionRadialParaCrystal_swiginit", InterferenceFunctionRadialParaCrystal_swiginit, METH_VARARGS, NULL},
-	 { "new_InterferenceFunctionTwin", _wrap_new_InterferenceFunctionTwin, METH_VARARGS, "\n"
-		"new_InterferenceFunctionTwin(kvector_t direction, double mean_distance, double std_dev) -> InterferenceFunctionTwin\n"
-		"InterferenceFunctionTwin::InterferenceFunctionTwin(const kvector_t &direction, double mean_distance, double std_dev)\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionTwin_clone", _wrap_InterferenceFunctionTwin_clone, METH_O, "\n"
-		"InterferenceFunctionTwin_clone(InterferenceFunctionTwin self) -> InterferenceFunctionTwin\n"
-		"InterferenceFunctionTwin * InterferenceFunctionTwin::clone() const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionTwin_accept", _wrap_InterferenceFunctionTwin_accept, METH_VARARGS, "\n"
-		"InterferenceFunctionTwin_accept(InterferenceFunctionTwin self, INodeVisitor * visitor)\n"
-		"void InterferenceFunctionTwin::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionTwin_direction", _wrap_InterferenceFunctionTwin_direction, METH_O, "\n"
-		"InterferenceFunctionTwin_direction(InterferenceFunctionTwin self) -> kvector_t\n"
-		"kvector_t InterferenceFunctionTwin::direction() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionTwin_meanDistance", _wrap_InterferenceFunctionTwin_meanDistance, METH_O, "\n"
-		"InterferenceFunctionTwin_meanDistance(InterferenceFunctionTwin self) -> double\n"
-		"double InterferenceFunctionTwin::meanDistance() const\n"
-		"\n"
-		""},
-	 { "InterferenceFunctionTwin_stdDev", _wrap_InterferenceFunctionTwin_stdDev, METH_O, "\n"
-		"InterferenceFunctionTwin_stdDev(InterferenceFunctionTwin self) -> double\n"
-		"double InterferenceFunctionTwin::stdDev() const\n"
-		"\n"
-		""},
+	 { "new_InterferenceFunctionTwin", _wrap_new_InterferenceFunctionTwin, METH_VARARGS, "new_InterferenceFunctionTwin(kvector_t direction, double mean_distance, double std_dev) -> InterferenceFunctionTwin"},
+	 { "InterferenceFunctionTwin_clone", _wrap_InterferenceFunctionTwin_clone, METH_O, "InterferenceFunctionTwin_clone(InterferenceFunctionTwin self) -> InterferenceFunctionTwin"},
+	 { "InterferenceFunctionTwin_accept", _wrap_InterferenceFunctionTwin_accept, METH_VARARGS, "InterferenceFunctionTwin_accept(InterferenceFunctionTwin self, INodeVisitor * visitor)"},
+	 { "InterferenceFunctionTwin_direction", _wrap_InterferenceFunctionTwin_direction, METH_O, "InterferenceFunctionTwin_direction(InterferenceFunctionTwin self) -> kvector_t"},
+	 { "InterferenceFunctionTwin_meanDistance", _wrap_InterferenceFunctionTwin_meanDistance, METH_O, "InterferenceFunctionTwin_meanDistance(InterferenceFunctionTwin self) -> double"},
+	 { "InterferenceFunctionTwin_stdDev", _wrap_InterferenceFunctionTwin_stdDev, METH_O, "InterferenceFunctionTwin_stdDev(InterferenceFunctionTwin self) -> double"},
 	 { "delete_InterferenceFunctionTwin", _wrap_delete_InterferenceFunctionTwin, METH_O, "delete_InterferenceFunctionTwin(InterferenceFunctionTwin self)"},
 	 { "InterferenceFunctionTwin_swigregister", InterferenceFunctionTwin_swigregister, METH_O, NULL},
 	 { "InterferenceFunctionTwin_swiginit", InterferenceFunctionTwin_swiginit, METH_VARARGS, NULL},
 	 { "new_ParticleLayout", _wrap_new_ParticleLayout, METH_VARARGS, "\n"
 		"ParticleLayout()\n"
 		"ParticleLayout(IAbstractParticle particle, double abundance=-1.0)\n"
-		"ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance=-1.0)\n"
-		"\n"
-		""},
-	 { "delete_ParticleLayout", _wrap_delete_ParticleLayout, METH_O, "\n"
-		"delete_ParticleLayout(ParticleLayout self)\n"
-		"ParticleLayout::~ParticleLayout() override\n"
-		"\n"
-		""},
-	 { "ParticleLayout_clone", _wrap_ParticleLayout_clone, METH_O, "\n"
-		"ParticleLayout_clone(ParticleLayout self) -> ParticleLayout\n"
-		"ParticleLayout * ParticleLayout::clone() const final override\n"
-		"\n"
-		""},
-	 { "ParticleLayout_accept", _wrap_ParticleLayout_accept, METH_VARARGS, "\n"
-		"ParticleLayout_accept(ParticleLayout self, INodeVisitor * visitor)\n"
-		"void ParticleLayout::accept(INodeVisitor *visitor) const final override\n"
-		"\n"
-		""},
-	 { "ParticleLayout_addParticle", _wrap_ParticleLayout_addParticle, METH_VARARGS, "\n"
-		"ParticleLayout_addParticle(ParticleLayout self, IAbstractParticle particle, double abundance=-1.0, kvector_t position={}, IRotation rotation=IdentityRotation())\n"
-		"void ParticleLayout::addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())\n"
-		"\n"
-		"Adds particle to the layout with abundance, position and the rotation defined.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"particle: \n"
-		"to be added\n"
-		"\n"
-		"abundance: \n"
-		" Particle abundance\n"
-		"\n"
-		"position: \n"
-		" Particle position\n"
-		"\n"
-		"rotation: \n"
-		" Particle rotation \n"
-		"\n"
-		""},
-	 { "ParticleLayout_particles", _wrap_ParticleLayout_particles, METH_O, "\n"
-		"ParticleLayout_particles(ParticleLayout self) -> SafePointerVector< IParticle >\n"
-		"SafePointerVector< 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"
-		""},
-	 { "ParticleLayout_interferenceFunction", _wrap_ParticleLayout_interferenceFunction, METH_O, "\n"
-		"ParticleLayout_interferenceFunction(ParticleLayout self) -> IInterferenceFunction\n"
-		"const IInterferenceFunction * ParticleLayout::interferenceFunction() const final override\n"
-		"\n"
-		"Returns the interference function. \n"
-		"\n"
-		""},
-	 { "ParticleLayout_getTotalAbundance", _wrap_ParticleLayout_getTotalAbundance, METH_O, "\n"
-		"ParticleLayout_getTotalAbundance(ParticleLayout self) -> double\n"
-		"double ParticleLayout::getTotalAbundance() const final override\n"
-		"\n"
-		"Get total abundance of all particles. \n"
-		"\n"
-		""},
-	 { "ParticleLayout_setInterferenceFunction", _wrap_ParticleLayout_setInterferenceFunction, METH_VARARGS, "\n"
-		"ParticleLayout_setInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)\n"
-		"void ParticleLayout::setInterferenceFunction(const IInterferenceFunction &interference_function)\n"
-		"\n"
-		"Adds interference functions. \n"
-		"\n"
-		""},
-	 { "ParticleLayout_totalParticleSurfaceDensity", _wrap_ParticleLayout_totalParticleSurfaceDensity, METH_O, "\n"
-		"ParticleLayout_totalParticleSurfaceDensity(ParticleLayout self) -> double\n"
-		"double ParticleLayout::totalParticleSurfaceDensity() const final override\n"
-		"\n"
-		"Returns surface density of all particles. \n"
-		"\n"
-		""},
-	 { "ParticleLayout_setTotalParticleSurfaceDensity", _wrap_ParticleLayout_setTotalParticleSurfaceDensity, METH_VARARGS, "\n"
-		"ParticleLayout_setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)\n"
-		"void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density) final override\n"
-		"\n"
-		"Sets total particle surface density.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"particle_density: \n"
-		"number of particles per square nanometer \n"
-		"\n"
-		""},
-	 { "ParticleLayout_getChildren", _wrap_ParticleLayout_getChildren, METH_O, "\n"
-		"ParticleLayout_getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleLayout::getChildren() const final override\n"
-		"\n"
 		""},
+	 { "delete_ParticleLayout", _wrap_delete_ParticleLayout, METH_O, "delete_ParticleLayout(ParticleLayout self)"},
+	 { "ParticleLayout_clone", _wrap_ParticleLayout_clone, METH_O, "ParticleLayout_clone(ParticleLayout self) -> ParticleLayout"},
+	 { "ParticleLayout_accept", _wrap_ParticleLayout_accept, METH_VARARGS, "ParticleLayout_accept(ParticleLayout self, INodeVisitor * visitor)"},
+	 { "ParticleLayout_addParticle", _wrap_ParticleLayout_addParticle, METH_VARARGS, "ParticleLayout_addParticle(ParticleLayout self, IAbstractParticle particle, double abundance=-1.0, kvector_t position={}, IRotation rotation=IdentityRotation())"},
+	 { "ParticleLayout_particles", _wrap_ParticleLayout_particles, METH_O, "ParticleLayout_particles(ParticleLayout self) -> SafePointerVector< IParticle >"},
+	 { "ParticleLayout_interferenceFunction", _wrap_ParticleLayout_interferenceFunction, METH_O, "ParticleLayout_interferenceFunction(ParticleLayout self) -> IInterferenceFunction"},
+	 { "ParticleLayout_getTotalAbundance", _wrap_ParticleLayout_getTotalAbundance, METH_O, "ParticleLayout_getTotalAbundance(ParticleLayout self) -> double"},
+	 { "ParticleLayout_setInterferenceFunction", _wrap_ParticleLayout_setInterferenceFunction, METH_VARARGS, "ParticleLayout_setInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)"},
+	 { "ParticleLayout_totalParticleSurfaceDensity", _wrap_ParticleLayout_totalParticleSurfaceDensity, METH_O, "ParticleLayout_totalParticleSurfaceDensity(ParticleLayout self) -> double"},
+	 { "ParticleLayout_setTotalParticleSurfaceDensity", _wrap_ParticleLayout_setTotalParticleSurfaceDensity, METH_VARARGS, "ParticleLayout_setTotalParticleSurfaceDensity(ParticleLayout self, double particle_density)"},
+	 { "ParticleLayout_getChildren", _wrap_ParticleLayout_getChildren, METH_O, "ParticleLayout_getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector"},
 	 { "ParticleLayout_swigregister", ParticleLayout_swigregister, METH_O, NULL},
 	 { "ParticleLayout_swiginit", ParticleLayout_swiginit, METH_VARARGS, NULL},
 	 { "new_Beam", _wrap_new_Beam, METH_VARARGS, "\n"
@@ -102655,275 +100745,56 @@ static PyMethodDef SwigMethods[] = {
 	 { "disown_ISampleBuilder", _wrap_disown_ISampleBuilder, METH_O, NULL},
 	 { "ISampleBuilder_swigregister", ISampleBuilder_swigregister, METH_O, NULL},
 	 { "ISampleBuilder_swiginit", ISampleBuilder_swiginit, METH_VARARGS, NULL},
-	 { "new_Layer", _wrap_new_Layer, METH_VARARGS, "\n"
-		"Layer(Material material, double thickness=0)\n"
-		"Layer::Layer(Material material, double thickness=0)\n"
-		"\n"
-		"Constructor of a layer with thickness and material\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"material: \n"
-		"material the layer is made of\n"
-		"\n"
-		"thickness: \n"
-		"thickness of a layer in nanometers \n"
-		"\n"
-		""},
-	 { "delete_Layer", _wrap_delete_Layer, METH_O, "\n"
-		"delete_Layer(Layer self)\n"
-		"Layer::~Layer() override\n"
-		"\n"
-		""},
-	 { "Layer_clone", _wrap_Layer_clone, METH_O, "\n"
-		"Layer_clone(Layer self) -> Layer\n"
-		"Layer * Layer::clone() const override final\n"
-		"\n"
-		""},
-	 { "Layer_accept", _wrap_Layer_accept, METH_VARARGS, "\n"
-		"Layer_accept(Layer self, INodeVisitor * visitor)\n"
-		"void Layer::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "Layer_setThickness", _wrap_Layer_setThickness, METH_VARARGS, "\n"
-		"Layer_setThickness(Layer self, double thickness)\n"
-		"void Layer::setThickness(double thickness)\n"
-		"\n"
-		"Sets layer thickness in nanometers. \n"
-		"\n"
-		""},
-	 { "Layer_thickness", _wrap_Layer_thickness, METH_O, "\n"
-		"Layer_thickness(Layer self) -> double\n"
-		"double Layer::thickness() const\n"
-		"\n"
-		""},
-	 { "Layer_material", _wrap_Layer_material, METH_O, "\n"
-		"Layer_material(Layer self) -> Material\n"
-		"const Material* Layer::material() const override final\n"
-		"\n"
-		""},
-	 { "Layer_setMaterial", _wrap_Layer_setMaterial, METH_VARARGS, "\n"
-		"Layer_setMaterial(Layer self, Material material)\n"
-		"void Layer::setMaterial(Material material)\n"
-		"\n"
-		""},
-	 { "Layer_addLayout", _wrap_Layer_addLayout, METH_VARARGS, "\n"
-		"Layer_addLayout(Layer self, ILayout decoration)\n"
-		"void Layer::addLayout(const ILayout &decoration)\n"
-		"\n"
-		""},
-	 { "Layer_numberOfLayouts", _wrap_Layer_numberOfLayouts, METH_O, "\n"
-		"Layer_numberOfLayouts(Layer self) -> size_t\n"
-		"size_t Layer::numberOfLayouts() const\n"
-		"\n"
-		""},
-	 { "Layer_layouts", _wrap_Layer_layouts, METH_O, "\n"
-		"Layer_layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >\n"
-		"std::vector< const ILayout * > Layer::layouts() const\n"
-		"\n"
-		""},
-	 { "Layer_getChildren", _wrap_Layer_getChildren, METH_O, "\n"
-		"Layer_getChildren(Layer self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Layer::getChildren() const override final\n"
-		"\n"
-		""},
-	 { "Layer_registerThickness", _wrap_Layer_registerThickness, METH_VARARGS, "\n"
-		"Layer_registerThickness(Layer self, bool make_registered=True)\n"
-		"void Layer::registerThickness(bool make_registered=true)\n"
-		"\n"
-		""},
-	 { "Layer_setNumberOfSlices", _wrap_Layer_setNumberOfSlices, METH_VARARGS, "\n"
-		"Layer_setNumberOfSlices(Layer self, unsigned int n_slices)\n"
-		"void Layer::setNumberOfSlices(unsigned int n_slices)\n"
-		"\n"
-		""},
-	 { "Layer_numberOfSlices", _wrap_Layer_numberOfSlices, METH_O, "\n"
-		"Layer_numberOfSlices(Layer self) -> unsigned int\n"
-		"unsigned int Layer::numberOfSlices() const\n"
-		"\n"
-		""},
+	 { "new_Layer", _wrap_new_Layer, METH_VARARGS, "Layer(Material material, double thickness=0)"},
+	 { "delete_Layer", _wrap_delete_Layer, METH_O, "delete_Layer(Layer self)"},
+	 { "Layer_clone", _wrap_Layer_clone, METH_O, "Layer_clone(Layer self) -> Layer"},
+	 { "Layer_accept", _wrap_Layer_accept, METH_VARARGS, "Layer_accept(Layer self, INodeVisitor * visitor)"},
+	 { "Layer_setThickness", _wrap_Layer_setThickness, METH_VARARGS, "Layer_setThickness(Layer self, double thickness)"},
+	 { "Layer_thickness", _wrap_Layer_thickness, METH_O, "Layer_thickness(Layer self) -> double"},
+	 { "Layer_material", _wrap_Layer_material, METH_O, "Layer_material(Layer self) -> Material"},
+	 { "Layer_setMaterial", _wrap_Layer_setMaterial, METH_VARARGS, "Layer_setMaterial(Layer self, Material material)"},
+	 { "Layer_addLayout", _wrap_Layer_addLayout, METH_VARARGS, "Layer_addLayout(Layer self, ILayout decoration)"},
+	 { "Layer_numberOfLayouts", _wrap_Layer_numberOfLayouts, METH_O, "Layer_numberOfLayouts(Layer self) -> size_t"},
+	 { "Layer_layouts", _wrap_Layer_layouts, METH_O, "Layer_layouts(Layer self) -> std::vector< ILayout const *,std::allocator< ILayout const * > >"},
+	 { "Layer_getChildren", _wrap_Layer_getChildren, METH_O, "Layer_getChildren(Layer self) -> swig_dummy_type_const_inode_vector"},
+	 { "Layer_registerThickness", _wrap_Layer_registerThickness, METH_VARARGS, "Layer_registerThickness(Layer self, bool make_registered=True)"},
+	 { "Layer_setNumberOfSlices", _wrap_Layer_setNumberOfSlices, METH_VARARGS, "Layer_setNumberOfSlices(Layer self, unsigned int n_slices)"},
+	 { "Layer_numberOfSlices", _wrap_Layer_numberOfSlices, METH_O, "Layer_numberOfSlices(Layer self) -> unsigned int"},
 	 { "Layer_swigregister", Layer_swigregister, METH_O, NULL},
 	 { "Layer_swiginit", Layer_swiginit, METH_VARARGS, NULL},
 	 { "new_LayerRoughness", _wrap_new_LayerRoughness, METH_VARARGS, "\n"
 		"LayerRoughness(double sigma, double hurstParameter, double lateralCorrLength)\n"
 		"new_LayerRoughness() -> LayerRoughness\n"
-		"LayerRoughness::LayerRoughness()\n"
-		"\n"
-		""},
-	 { "LayerRoughness_clone", _wrap_LayerRoughness_clone, METH_O, "\n"
-		"LayerRoughness_clone(LayerRoughness self) -> LayerRoughness\n"
-		"LayerRoughness* LayerRoughness::clone() const\n"
-		"\n"
-		""},
-	 { "LayerRoughness_accept", _wrap_LayerRoughness_accept, METH_VARARGS, "\n"
-		"LayerRoughness_accept(LayerRoughness self, INodeVisitor * visitor)\n"
-		"virtual void LayerRoughness::accept(INodeVisitor *visitor) const\n"
-		"\n"
-		""},
-	 { "LayerRoughness_getSpectralFun", _wrap_LayerRoughness_getSpectralFun, METH_VARARGS, "\n"
-		"LayerRoughness_getSpectralFun(LayerRoughness self, kvector_t kvec) -> double\n"
-		"double LayerRoughness::getSpectralFun(const kvector_t kvec) const\n"
-		"\n"
-		"Returns power spectral density of the surface roughness.\n"
-		"\n"
-		"Power spectral density of the surface roughness is a result of two-dimensional Fourier transform of the correlation function of the roughness profile.\n"
-		"\n"
-		"Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 \"X-ray reflection and transmission by rough surfaces\" \n"
-		"\n"
-		""},
-	 { "LayerRoughness_getCorrFun", _wrap_LayerRoughness_getCorrFun, METH_VARARGS, "\n"
-		"LayerRoughness_getCorrFun(LayerRoughness self, kvector_t k) -> double\n"
-		"double LayerRoughness::getCorrFun(const kvector_t k) const\n"
-		"\n"
-		"Correlation function of the roughness profile. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_setSigma", _wrap_LayerRoughness_setSigma, METH_VARARGS, "\n"
-		"LayerRoughness_setSigma(LayerRoughness self, double sigma)\n"
-		"void LayerRoughness::setSigma(double sigma)\n"
-		"\n"
-		"Sets rms of roughness. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_getSigma", _wrap_LayerRoughness_getSigma, METH_O, "\n"
-		"LayerRoughness_getSigma(LayerRoughness self) -> double\n"
-		"double LayerRoughness::getSigma() const\n"
-		"\n"
-		"Returns rms of roughness. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_setHurstParameter", _wrap_LayerRoughness_setHurstParameter, METH_VARARGS, "\n"
-		"LayerRoughness_setHurstParameter(LayerRoughness self, double hurstParameter)\n"
-		"void LayerRoughness::setHurstParameter(double hurstParameter)\n"
-		"\n"
-		"Sets hurst parameter. It describes how jagged the surface is. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_getHurstParameter", _wrap_LayerRoughness_getHurstParameter, METH_O, "\n"
-		"LayerRoughness_getHurstParameter(LayerRoughness self) -> double\n"
-		"double LayerRoughness::getHurstParameter() const\n"
-		"\n"
-		"Returns hurst parameter. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_setLatteralCorrLength", _wrap_LayerRoughness_setLatteralCorrLength, METH_VARARGS, "\n"
-		"LayerRoughness_setLatteralCorrLength(LayerRoughness self, double lateralCorrLength)\n"
-		"void LayerRoughness::setLatteralCorrLength(double lateralCorrLength)\n"
-		"\n"
-		"Sets lateral correlation length. \n"
-		"\n"
-		""},
-	 { "LayerRoughness_getLatteralCorrLength", _wrap_LayerRoughness_getLatteralCorrLength, METH_O, "\n"
-		"LayerRoughness_getLatteralCorrLength(LayerRoughness self) -> double\n"
-		"double LayerRoughness::getLatteralCorrLength() const\n"
-		"\n"
-		"Returns lateral correlation length. \n"
-		"\n"
 		""},
+	 { "LayerRoughness_clone", _wrap_LayerRoughness_clone, METH_O, "LayerRoughness_clone(LayerRoughness self) -> LayerRoughness"},
+	 { "LayerRoughness_accept", _wrap_LayerRoughness_accept, METH_VARARGS, "LayerRoughness_accept(LayerRoughness self, INodeVisitor * visitor)"},
+	 { "LayerRoughness_getSpectralFun", _wrap_LayerRoughness_getSpectralFun, METH_VARARGS, "LayerRoughness_getSpectralFun(LayerRoughness self, kvector_t kvec) -> double"},
+	 { "LayerRoughness_getCorrFun", _wrap_LayerRoughness_getCorrFun, METH_VARARGS, "LayerRoughness_getCorrFun(LayerRoughness self, kvector_t k) -> double"},
+	 { "LayerRoughness_setSigma", _wrap_LayerRoughness_setSigma, METH_VARARGS, "LayerRoughness_setSigma(LayerRoughness self, double sigma)"},
+	 { "LayerRoughness_getSigma", _wrap_LayerRoughness_getSigma, METH_O, "LayerRoughness_getSigma(LayerRoughness self) -> double"},
+	 { "LayerRoughness_setHurstParameter", _wrap_LayerRoughness_setHurstParameter, METH_VARARGS, "LayerRoughness_setHurstParameter(LayerRoughness self, double hurstParameter)"},
+	 { "LayerRoughness_getHurstParameter", _wrap_LayerRoughness_getHurstParameter, METH_O, "LayerRoughness_getHurstParameter(LayerRoughness self) -> double"},
+	 { "LayerRoughness_setLatteralCorrLength", _wrap_LayerRoughness_setLatteralCorrLength, METH_VARARGS, "LayerRoughness_setLatteralCorrLength(LayerRoughness self, double lateralCorrLength)"},
+	 { "LayerRoughness_getLatteralCorrLength", _wrap_LayerRoughness_getLatteralCorrLength, METH_O, "LayerRoughness_getLatteralCorrLength(LayerRoughness self) -> double"},
 	 { "delete_LayerRoughness", _wrap_delete_LayerRoughness, METH_O, "delete_LayerRoughness(LayerRoughness self)"},
 	 { "LayerRoughness_swigregister", LayerRoughness_swigregister, METH_O, NULL},
 	 { "LayerRoughness_swiginit", LayerRoughness_swiginit, METH_VARARGS, NULL},
-	 { "new_MultiLayer", _wrap_new_MultiLayer, METH_NOARGS, "\n"
-		"new_MultiLayer() -> MultiLayer\n"
-		"MultiLayer::MultiLayer()\n"
-		"\n"
-		""},
-	 { "delete_MultiLayer", _wrap_delete_MultiLayer, METH_O, "\n"
-		"delete_MultiLayer(MultiLayer self)\n"
-		"MultiLayer::~MultiLayer() override\n"
-		"\n"
-		""},
-	 { "MultiLayer_clone", _wrap_MultiLayer_clone, METH_O, "\n"
-		"MultiLayer_clone(MultiLayer self) -> MultiLayer\n"
-		"MultiLayer * MultiLayer::clone() const final override\n"
-		"\n"
-		"Returns a clone of multilayer with clones of all layers and interfaces between layers \n"
-		"\n"
-		""},
-	 { "MultiLayer_accept", _wrap_MultiLayer_accept, METH_VARARGS, "\n"
-		"MultiLayer_accept(MultiLayer self, INodeVisitor * visitor)\n"
-		"void MultiLayer::accept(INodeVisitor *visitor) const final override\n"
-		"\n"
-		""},
-	 { "MultiLayer_numberOfLayers", _wrap_MultiLayer_numberOfLayers, METH_O, "\n"
-		"MultiLayer_numberOfLayers(MultiLayer self) -> size_t\n"
-		"size_t MultiLayer::numberOfLayers() const\n"
-		"\n"
-		""},
-	 { "MultiLayer_addLayer", _wrap_MultiLayer_addLayer, METH_VARARGS, "\n"
-		"MultiLayer_addLayer(MultiLayer self, Layer layer)\n"
-		"void MultiLayer::addLayer(const Layer &layer)\n"
-		"\n"
-		"Adds object to multilayer.\n"
-		"\n"
-		"Adds layer with default (zero) roughness. \n"
-		"\n"
-		""},
-	 { "MultiLayer_addLayerWithTopRoughness", _wrap_MultiLayer_addLayerWithTopRoughness, METH_VARARGS, "\n"
-		"MultiLayer_addLayerWithTopRoughness(MultiLayer self, Layer layer, LayerRoughness roughness)\n"
-		"void MultiLayer::addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)\n"
-		"\n"
-		"Adds layer with top roughness. \n"
-		"\n"
-		""},
-	 { "MultiLayer_layer", _wrap_MultiLayer_layer, METH_VARARGS, "\n"
-		"MultiLayer_layer(MultiLayer self, size_t i_layer) -> Layer\n"
-		"const Layer * MultiLayer::layer(size_t i_layer) const\n"
-		"\n"
-		"Returns layer with given index. \n"
-		"\n"
-		""},
-	 { "MultiLayer_layerInterface", _wrap_MultiLayer_layerInterface, METH_VARARGS, "\n"
-		"MultiLayer_layerInterface(MultiLayer self, size_t i_interface) -> LayerInterface const *\n"
-		"const LayerInterface * MultiLayer::layerInterface(size_t i_interface) const\n"
-		"\n"
-		"Returns interface with given index. \n"
-		"\n"
-		""},
-	 { "MultiLayer_setCrossCorrLength", _wrap_MultiLayer_setCrossCorrLength, METH_VARARGS, "\n"
-		"MultiLayer_setCrossCorrLength(MultiLayer self, double crossCorrLength)\n"
-		"void MultiLayer::setCrossCorrLength(double crossCorrLength)\n"
-		"\n"
-		"Sets cross correlation length of roughnesses between interfaces. \n"
-		"\n"
-		""},
-	 { "MultiLayer_crossCorrLength", _wrap_MultiLayer_crossCorrLength, METH_O, "\n"
-		"MultiLayer_crossCorrLength(MultiLayer self) -> double\n"
-		"double MultiLayer::crossCorrLength() const\n"
-		"\n"
-		"Returns cross correlation length of roughnesses between interfaces. \n"
-		"\n"
-		""},
-	 { "MultiLayer_setExternalField", _wrap_MultiLayer_setExternalField, METH_VARARGS, "\n"
-		"MultiLayer_setExternalField(MultiLayer self, kvector_t ext_field)\n"
-		"void MultiLayer::setExternalField(kvector_t ext_field)\n"
-		"\n"
-		"Sets the external field applied to the multilayer (units: A/m) \n"
-		"\n"
-		""},
-	 { "MultiLayer_externalField", _wrap_MultiLayer_externalField, METH_O, "\n"
-		"MultiLayer_externalField(MultiLayer self) -> kvector_t\n"
-		"kvector_t MultiLayer::externalField() const\n"
-		"\n"
-		"Returns the external field applied to the multilayer (units: A/m) \n"
-		"\n"
-		""},
-	 { "MultiLayer_getChildren", _wrap_MultiLayer_getChildren, METH_O, "\n"
-		"MultiLayer_getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > MultiLayer::getChildren() const final override\n"
-		"\n"
-		""},
-	 { "MultiLayer_setRoughnessModel", _wrap_MultiLayer_setRoughnessModel, METH_VARARGS, "\n"
-		"MultiLayer_setRoughnessModel(MultiLayer self, RoughnessModel roughnessModel)\n"
-		"void MultiLayer::setRoughnessModel(RoughnessModel roughnessModel)\n"
-		"\n"
-		""},
-	 { "MultiLayer_roughnessModel", _wrap_MultiLayer_roughnessModel, METH_O, "\n"
-		"MultiLayer_roughnessModel(MultiLayer self) -> RoughnessModel\n"
-		"RoughnessModel MultiLayer::roughnessModel() const\n"
-		"\n"
-		""},
+	 { "new_MultiLayer", _wrap_new_MultiLayer, METH_NOARGS, "new_MultiLayer() -> MultiLayer"},
+	 { "delete_MultiLayer", _wrap_delete_MultiLayer, METH_O, "delete_MultiLayer(MultiLayer self)"},
+	 { "MultiLayer_clone", _wrap_MultiLayer_clone, METH_O, "MultiLayer_clone(MultiLayer self) -> MultiLayer"},
+	 { "MultiLayer_accept", _wrap_MultiLayer_accept, METH_VARARGS, "MultiLayer_accept(MultiLayer self, INodeVisitor * visitor)"},
+	 { "MultiLayer_numberOfLayers", _wrap_MultiLayer_numberOfLayers, METH_O, "MultiLayer_numberOfLayers(MultiLayer self) -> size_t"},
+	 { "MultiLayer_addLayer", _wrap_MultiLayer_addLayer, METH_VARARGS, "MultiLayer_addLayer(MultiLayer self, Layer layer)"},
+	 { "MultiLayer_addLayerWithTopRoughness", _wrap_MultiLayer_addLayerWithTopRoughness, METH_VARARGS, "MultiLayer_addLayerWithTopRoughness(MultiLayer self, Layer layer, LayerRoughness roughness)"},
+	 { "MultiLayer_layer", _wrap_MultiLayer_layer, METH_VARARGS, "MultiLayer_layer(MultiLayer self, size_t i_layer) -> Layer"},
+	 { "MultiLayer_layerInterface", _wrap_MultiLayer_layerInterface, METH_VARARGS, "MultiLayer_layerInterface(MultiLayer self, size_t i_interface) -> LayerInterface const *"},
+	 { "MultiLayer_setCrossCorrLength", _wrap_MultiLayer_setCrossCorrLength, METH_VARARGS, "MultiLayer_setCrossCorrLength(MultiLayer self, double crossCorrLength)"},
+	 { "MultiLayer_crossCorrLength", _wrap_MultiLayer_crossCorrLength, METH_O, "MultiLayer_crossCorrLength(MultiLayer self) -> double"},
+	 { "MultiLayer_setExternalField", _wrap_MultiLayer_setExternalField, METH_VARARGS, "MultiLayer_setExternalField(MultiLayer self, kvector_t ext_field)"},
+	 { "MultiLayer_externalField", _wrap_MultiLayer_externalField, METH_O, "MultiLayer_externalField(MultiLayer self) -> kvector_t"},
+	 { "MultiLayer_getChildren", _wrap_MultiLayer_getChildren, METH_O, "MultiLayer_getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector"},
+	 { "MultiLayer_setRoughnessModel", _wrap_MultiLayer_setRoughnessModel, METH_VARARGS, "MultiLayer_setRoughnessModel(MultiLayer self, RoughnessModel roughnessModel)"},
+	 { "MultiLayer_roughnessModel", _wrap_MultiLayer_roughnessModel, METH_O, "MultiLayer_roughnessModel(MultiLayer self) -> RoughnessModel"},
 	 { "MultiLayer_swigregister", MultiLayer_swigregister, METH_O, NULL},
 	 { "MultiLayer_swiginit", MultiLayer_swiginit, METH_VARARGS, NULL},
 	 { "delete_RoughnessModel", _wrap_delete_RoughnessModel, METH_O, "delete_RoughnessModel(RoughnessModel self)"},
@@ -103318,92 +101189,34 @@ static PyMethodDef SwigMethods[] = {
 	 { "new_FormFactorGaussSphere", _wrap_new_FormFactorGaussSphere, METH_VARARGS, "\n"
 		"FormFactorGaussSphere(vdouble1d_t P)\n"
 		"new_FormFactorGaussSphere(double mean_radius) -> FormFactorGaussSphere\n"
-		"FormFactorGaussSphere::FormFactorGaussSphere(double mean_radius)\n"
-		"\n"
-		""},
-	 { "FormFactorGaussSphere_clone", _wrap_FormFactorGaussSphere_clone, METH_O, "\n"
-		"FormFactorGaussSphere_clone(FormFactorGaussSphere self) -> FormFactorGaussSphere\n"
-		"FormFactorGaussSphere* FormFactorGaussSphere::clone() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorGaussSphere_accept", _wrap_FormFactorGaussSphere_accept, METH_VARARGS, "\n"
-		"FormFactorGaussSphere_accept(FormFactorGaussSphere self, INodeVisitor * visitor)\n"
-		"void FormFactorGaussSphere::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorGaussSphere_getMeanRadius", _wrap_FormFactorGaussSphere_getMeanRadius, METH_O, "\n"
-		"FormFactorGaussSphere_getMeanRadius(FormFactorGaussSphere self) -> double\n"
-		"double FormFactorGaussSphere::getMeanRadius() const\n"
-		"\n"
-		""},
-	 { "FormFactorGaussSphere_radialExtension", _wrap_FormFactorGaussSphere_radialExtension, METH_O, "\n"
-		"FormFactorGaussSphere_radialExtension(FormFactorGaussSphere self) -> double\n"
-		"double FormFactorGaussSphere::radialExtension() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorGaussSphere_evaluate_for_q", _wrap_FormFactorGaussSphere_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorGaussSphere_evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorGaussSphere::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
 		""},
+	 { "FormFactorGaussSphere_clone", _wrap_FormFactorGaussSphere_clone, METH_O, "FormFactorGaussSphere_clone(FormFactorGaussSphere self) -> FormFactorGaussSphere"},
+	 { "FormFactorGaussSphere_accept", _wrap_FormFactorGaussSphere_accept, METH_VARARGS, "FormFactorGaussSphere_accept(FormFactorGaussSphere self, INodeVisitor * visitor)"},
+	 { "FormFactorGaussSphere_getMeanRadius", _wrap_FormFactorGaussSphere_getMeanRadius, METH_O, "FormFactorGaussSphere_getMeanRadius(FormFactorGaussSphere self) -> double"},
+	 { "FormFactorGaussSphere_radialExtension", _wrap_FormFactorGaussSphere_radialExtension, METH_O, "FormFactorGaussSphere_radialExtension(FormFactorGaussSphere self) -> double"},
+	 { "FormFactorGaussSphere_evaluate_for_q", _wrap_FormFactorGaussSphere_evaluate_for_q, METH_VARARGS, "FormFactorGaussSphere_evaluate_for_q(FormFactorGaussSphere self, cvector_t q) -> complex_t"},
 	 { "delete_FormFactorGaussSphere", _wrap_delete_FormFactorGaussSphere, METH_O, "delete_FormFactorGaussSphere(FormFactorGaussSphere self)"},
 	 { "FormFactorGaussSphere_swigregister", FormFactorGaussSphere_swigregister, METH_O, NULL},
 	 { "FormFactorGaussSphere_swiginit", FormFactorGaussSphere_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorSphereGaussianRadius", _wrap_new_FormFactorSphereGaussianRadius, METH_VARARGS, "\n"
 		"FormFactorSphereGaussianRadius(vdouble1d_t P)\n"
 		"new_FormFactorSphereGaussianRadius(double mean, double sigma) -> FormFactorSphereGaussianRadius\n"
-		"FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)\n"
-		"\n"
-		""},
-	 { "FormFactorSphereGaussianRadius_clone", _wrap_FormFactorSphereGaussianRadius_clone, METH_O, "\n"
-		"FormFactorSphereGaussianRadius_clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius\n"
-		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereGaussianRadius_accept", _wrap_FormFactorSphereGaussianRadius_accept, METH_VARARGS, "\n"
-		"FormFactorSphereGaussianRadius_accept(FormFactorSphereGaussianRadius self, INodeVisitor * visitor)\n"
-		"void FormFactorSphereGaussianRadius::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereGaussianRadius_radialExtension", _wrap_FormFactorSphereGaussianRadius_radialExtension, METH_O, "\n"
-		"FormFactorSphereGaussianRadius_radialExtension(FormFactorSphereGaussianRadius self) -> double\n"
-		"double FormFactorSphereGaussianRadius::radialExtension() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereGaussianRadius_evaluate_for_q", _wrap_FormFactorSphereGaussianRadius_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorSphereGaussianRadius_evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorSphereGaussianRadius::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
 		""},
+	 { "FormFactorSphereGaussianRadius_clone", _wrap_FormFactorSphereGaussianRadius_clone, METH_O, "FormFactorSphereGaussianRadius_clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius"},
+	 { "FormFactorSphereGaussianRadius_accept", _wrap_FormFactorSphereGaussianRadius_accept, METH_VARARGS, "FormFactorSphereGaussianRadius_accept(FormFactorSphereGaussianRadius self, INodeVisitor * visitor)"},
+	 { "FormFactorSphereGaussianRadius_radialExtension", _wrap_FormFactorSphereGaussianRadius_radialExtension, METH_O, "FormFactorSphereGaussianRadius_radialExtension(FormFactorSphereGaussianRadius self) -> double"},
+	 { "FormFactorSphereGaussianRadius_evaluate_for_q", _wrap_FormFactorSphereGaussianRadius_evaluate_for_q, METH_VARARGS, "FormFactorSphereGaussianRadius_evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t"},
 	 { "delete_FormFactorSphereGaussianRadius", _wrap_delete_FormFactorSphereGaussianRadius, METH_O, "delete_FormFactorSphereGaussianRadius(FormFactorSphereGaussianRadius self)"},
 	 { "FormFactorSphereGaussianRadius_swigregister", FormFactorSphereGaussianRadius_swigregister, METH_O, NULL},
 	 { "FormFactorSphereGaussianRadius_swiginit", FormFactorSphereGaussianRadius_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorSphereLogNormalRadius", _wrap_new_FormFactorSphereLogNormalRadius, METH_VARARGS, "\n"
 		"FormFactorSphereLogNormalRadius(vdouble1d_t P, size_t n_samples=0)\n"
 		"new_FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples) -> FormFactorSphereLogNormalRadius\n"
-		"FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples)\n"
-		"\n"
-		""},
-	 { "FormFactorSphereLogNormalRadius_clone", _wrap_FormFactorSphereLogNormalRadius_clone, METH_O, "\n"
-		"FormFactorSphereLogNormalRadius_clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius\n"
-		"FormFactorSphereLogNormalRadius * FormFactorSphereLogNormalRadius::clone() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereLogNormalRadius_accept", _wrap_FormFactorSphereLogNormalRadius_accept, METH_VARARGS, "\n"
-		"FormFactorSphereLogNormalRadius_accept(FormFactorSphereLogNormalRadius self, INodeVisitor * visitor)\n"
-		"void FormFactorSphereLogNormalRadius::accept(INodeVisitor *visitor) const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereLogNormalRadius_radialExtension", _wrap_FormFactorSphereLogNormalRadius_radialExtension, METH_O, "\n"
-		"FormFactorSphereLogNormalRadius_radialExtension(FormFactorSphereLogNormalRadius self) -> double\n"
-		"double FormFactorSphereLogNormalRadius::radialExtension() const override final\n"
-		"\n"
-		""},
-	 { "FormFactorSphereLogNormalRadius_evaluate_for_q", _wrap_FormFactorSphereLogNormalRadius_evaluate_for_q, METH_VARARGS, "\n"
-		"FormFactorSphereLogNormalRadius_evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t\n"
-		"complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(cvector_t q) const override final\n"
-		"\n"
 		""},
+	 { "FormFactorSphereLogNormalRadius_clone", _wrap_FormFactorSphereLogNormalRadius_clone, METH_O, "FormFactorSphereLogNormalRadius_clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius"},
+	 { "FormFactorSphereLogNormalRadius_accept", _wrap_FormFactorSphereLogNormalRadius_accept, METH_VARARGS, "FormFactorSphereLogNormalRadius_accept(FormFactorSphereLogNormalRadius self, INodeVisitor * visitor)"},
+	 { "FormFactorSphereLogNormalRadius_radialExtension", _wrap_FormFactorSphereLogNormalRadius_radialExtension, METH_O, "FormFactorSphereLogNormalRadius_radialExtension(FormFactorSphereLogNormalRadius self) -> double"},
+	 { "FormFactorSphereLogNormalRadius_evaluate_for_q", _wrap_FormFactorSphereLogNormalRadius_evaluate_for_q, METH_VARARGS, "FormFactorSphereLogNormalRadius_evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t"},
 	 { "delete_FormFactorSphereLogNormalRadius", _wrap_delete_FormFactorSphereLogNormalRadius, METH_O, "delete_FormFactorSphereLogNormalRadius(FormFactorSphereLogNormalRadius self)"},
 	 { "FormFactorSphereLogNormalRadius_swigregister", FormFactorSphereLogNormalRadius_swigregister, METH_O, NULL},
 	 { "FormFactorSphereLogNormalRadius_swiginit", FormFactorSphereLogNormalRadius_swiginit, METH_VARARGS, NULL},
@@ -103489,7 +101302,7 @@ static PyMethodDef SwigMethods[] = {
 		"Simulation_setSample(Simulation self, MultiLayer sample)\n"
 		"void Simulation::setSample(const MultiLayer &sample)\n"
 		"\n"
-		"The  MultiLayer object will not be owned by the  Simulation object. \n"
+		"The MultiLayer object will not be owned by the  Simulation object. \n"
 		"\n"
 		""},
 	 { "Simulation_sample", _wrap_Simulation_sample, METH_O, "\n"
@@ -105681,32 +103494,12 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_VarianceSimFunction", _wrap_delete_VarianceSimFunction, METH_O, "delete_VarianceSimFunction(VarianceSimFunction self)"},
 	 { "VarianceSimFunction_swigregister", VarianceSimFunction_swigregister, METH_O, NULL},
 	 { "VarianceSimFunction_swiginit", VarianceSimFunction_swiginit, METH_VARARGS, NULL},
-	 { "delete_ILatticeOrientation", _wrap_delete_ILatticeOrientation, METH_O, "\n"
-		"delete_ILatticeOrientation(ILatticeOrientation self)\n"
-		"ILatticeOrientation::~ILatticeOrientation()\n"
-		"\n"
-		""},
-	 { "ILatticeOrientation_clone", _wrap_ILatticeOrientation_clone, METH_O, "\n"
-		"ILatticeOrientation_clone(ILatticeOrientation self) -> ILatticeOrientation\n"
-		"virtual ILatticeOrientation* ILatticeOrientation::clone() const =0\n"
-		"\n"
-		""},
-	 { "ILatticeOrientation_usePrimitiveLattice", _wrap_ILatticeOrientation_usePrimitiveLattice, METH_VARARGS, "\n"
-		"ILatticeOrientation_usePrimitiveLattice(ILatticeOrientation self, Lattice lattice)\n"
-		"virtual void ILatticeOrientation::usePrimitiveLattice(const Lattice &lattice)=0\n"
-		"\n"
-		""},
-	 { "ILatticeOrientation_transformationMatrix", _wrap_ILatticeOrientation_transformationMatrix, METH_O, "\n"
-		"ILatticeOrientation_transformationMatrix(ILatticeOrientation self) -> Transform3D\n"
-		"virtual Transform3D ILatticeOrientation::transformationMatrix() const =0\n"
-		"\n"
-		""},
+	 { "delete_ILatticeOrientation", _wrap_delete_ILatticeOrientation, METH_O, "delete_ILatticeOrientation(ILatticeOrientation self)"},
+	 { "ILatticeOrientation_clone", _wrap_ILatticeOrientation_clone, METH_O, "ILatticeOrientation_clone(ILatticeOrientation self) -> ILatticeOrientation"},
+	 { "ILatticeOrientation_usePrimitiveLattice", _wrap_ILatticeOrientation_usePrimitiveLattice, METH_VARARGS, "ILatticeOrientation_usePrimitiveLattice(ILatticeOrientation self, Lattice lattice)"},
+	 { "ILatticeOrientation_transformationMatrix", _wrap_ILatticeOrientation_transformationMatrix, METH_O, "ILatticeOrientation_transformationMatrix(ILatticeOrientation self) -> Transform3D"},
 	 { "ILatticeOrientation_swigregister", ILatticeOrientation_swigregister, METH_O, NULL},
-	 { "new_MillerIndex", _wrap_new_MillerIndex, METH_VARARGS, "\n"
-		"new_MillerIndex(double h_, double k_, double l_) -> MillerIndex\n"
-		"MillerIndex::MillerIndex(double h_, double k_, double l_)\n"
-		"\n"
-		""},
+	 { "new_MillerIndex", _wrap_new_MillerIndex, METH_VARARGS, "new_MillerIndex(double h_, double k_, double l_) -> MillerIndex"},
 	 { "MillerIndex_h_set", _wrap_MillerIndex_h_set, METH_VARARGS, "MillerIndex_h_set(MillerIndex self, double h)"},
 	 { "MillerIndex_h_get", _wrap_MillerIndex_h_get, METH_O, "MillerIndex_h_get(MillerIndex self) -> double"},
 	 { "MillerIndex_k_set", _wrap_MillerIndex_k_set, METH_VARARGS, "MillerIndex_k_set(MillerIndex self, double k)"},
@@ -105716,365 +103509,95 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_MillerIndex", _wrap_delete_MillerIndex, METH_O, "delete_MillerIndex(MillerIndex self)"},
 	 { "MillerIndex_swigregister", MillerIndex_swigregister, METH_O, NULL},
 	 { "MillerIndex_swiginit", MillerIndex_swiginit, METH_VARARGS, NULL},
-	 { "new_MillerIndexOrientation", _wrap_new_MillerIndexOrientation, METH_VARARGS, "\n"
-		"new_MillerIndexOrientation(MillerIndexOrientation::QComponent q1, MillerIndex index1, MillerIndexOrientation::QComponent q2, MillerIndex index2) -> MillerIndexOrientation\n"
-		"MillerIndexOrientation::MillerIndexOrientation(QComponent q1, MillerIndex index1, QComponent q2, MillerIndex index2)\n"
-		"\n"
-		"This constructor is best explained by an example. Arguments QX, (1,1,0), QY, (0,2,1) mean: Rotate the lattice such that the axis [110] points into x direction, and the axis [021], projected into the yz plane, points into z direction. \n"
-		"\n"
-		""},
-	 { "delete_MillerIndexOrientation", _wrap_delete_MillerIndexOrientation, METH_O, "\n"
-		"delete_MillerIndexOrientation(MillerIndexOrientation self)\n"
-		"MillerIndexOrientation::~MillerIndexOrientation() override\n"
-		"\n"
-		""},
-	 { "MillerIndexOrientation_clone", _wrap_MillerIndexOrientation_clone, METH_O, "\n"
-		"MillerIndexOrientation_clone(MillerIndexOrientation self) -> MillerIndexOrientation\n"
-		"MillerIndexOrientation * MillerIndexOrientation::clone() const override\n"
-		"\n"
-		""},
-	 { "MillerIndexOrientation_usePrimitiveLattice", _wrap_MillerIndexOrientation_usePrimitiveLattice, METH_VARARGS, "\n"
-		"MillerIndexOrientation_usePrimitiveLattice(MillerIndexOrientation self, Lattice lattice)\n"
-		"void MillerIndexOrientation::usePrimitiveLattice(const Lattice &lattice) override\n"
-		"\n"
-		""},
-	 { "MillerIndexOrientation_transformationMatrix", _wrap_MillerIndexOrientation_transformationMatrix, METH_O, "\n"
-		"MillerIndexOrientation_transformationMatrix(MillerIndexOrientation self) -> Transform3D\n"
-		"Transform3D MillerIndexOrientation::transformationMatrix() const override\n"
-		"\n"
-		""},
+	 { "new_MillerIndexOrientation", _wrap_new_MillerIndexOrientation, METH_VARARGS, "new_MillerIndexOrientation(MillerIndexOrientation::QComponent q1, MillerIndex index1, MillerIndexOrientation::QComponent q2, MillerIndex index2) -> MillerIndexOrientation"},
+	 { "delete_MillerIndexOrientation", _wrap_delete_MillerIndexOrientation, METH_O, "delete_MillerIndexOrientation(MillerIndexOrientation self)"},
+	 { "MillerIndexOrientation_clone", _wrap_MillerIndexOrientation_clone, METH_O, "MillerIndexOrientation_clone(MillerIndexOrientation self) -> MillerIndexOrientation"},
+	 { "MillerIndexOrientation_usePrimitiveLattice", _wrap_MillerIndexOrientation_usePrimitiveLattice, METH_VARARGS, "MillerIndexOrientation_usePrimitiveLattice(MillerIndexOrientation self, Lattice lattice)"},
+	 { "MillerIndexOrientation_transformationMatrix", _wrap_MillerIndexOrientation_transformationMatrix, METH_O, "MillerIndexOrientation_transformationMatrix(MillerIndexOrientation self) -> Transform3D"},
 	 { "MillerIndexOrientation_swigregister", MillerIndexOrientation_swigregister, METH_O, NULL},
 	 { "MillerIndexOrientation_swiginit", MillerIndexOrientation_swiginit, METH_VARARGS, NULL},
-	 { "delete_ISelectionRule", _wrap_delete_ISelectionRule, METH_O, "\n"
-		"delete_ISelectionRule(ISelectionRule self)\n"
-		"virtual ISelectionRule::~ISelectionRule()\n"
-		"\n"
-		""},
-	 { "ISelectionRule_clone", _wrap_ISelectionRule_clone, METH_O, "\n"
-		"ISelectionRule_clone(ISelectionRule self) -> ISelectionRule\n"
-		"virtual ISelectionRule* ISelectionRule::clone() const =0\n"
-		"\n"
-		""},
-	 { "ISelectionRule_coordinateSelected", _wrap_ISelectionRule_coordinateSelected, METH_VARARGS, "\n"
-		"ISelectionRule_coordinateSelected(ISelectionRule self, ivector_t const & coordinate) -> bool\n"
-		"virtual bool ISelectionRule::coordinateSelected(const ivector_t &coordinate) const =0\n"
-		"\n"
-		""},
+	 { "delete_ISelectionRule", _wrap_delete_ISelectionRule, METH_O, "delete_ISelectionRule(ISelectionRule self)"},
+	 { "ISelectionRule_clone", _wrap_ISelectionRule_clone, METH_O, "ISelectionRule_clone(ISelectionRule self) -> ISelectionRule"},
+	 { "ISelectionRule_coordinateSelected", _wrap_ISelectionRule_coordinateSelected, METH_VARARGS, "ISelectionRule_coordinateSelected(ISelectionRule self, ivector_t const & coordinate) -> bool"},
 	 { "ISelectionRule_swigregister", ISelectionRule_swigregister, METH_O, NULL},
-	 { "new_SimpleSelectionRule", _wrap_new_SimpleSelectionRule, METH_VARARGS, "\n"
-		"new_SimpleSelectionRule(int a, int b, int c, int modulus) -> SimpleSelectionRule\n"
-		"SimpleSelectionRule::SimpleSelectionRule(int a, int b, int c, int modulus)\n"
-		"\n"
-		""},
-	 { "delete_SimpleSelectionRule", _wrap_delete_SimpleSelectionRule, METH_O, "\n"
-		"delete_SimpleSelectionRule(SimpleSelectionRule self)\n"
-		"virtual SimpleSelectionRule::~SimpleSelectionRule()\n"
-		"\n"
-		""},
-	 { "SimpleSelectionRule_clone", _wrap_SimpleSelectionRule_clone, METH_O, "\n"
-		"SimpleSelectionRule_clone(SimpleSelectionRule self) -> SimpleSelectionRule\n"
-		"SimpleSelectionRule * SimpleSelectionRule::clone() const\n"
-		"\n"
-		""},
-	 { "SimpleSelectionRule_coordinateSelected", _wrap_SimpleSelectionRule_coordinateSelected, METH_VARARGS, "\n"
-		"SimpleSelectionRule_coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool\n"
-		"bool SimpleSelectionRule::coordinateSelected(const ivector_t &coordinate) const\n"
-		"\n"
-		""},
+	 { "new_SimpleSelectionRule", _wrap_new_SimpleSelectionRule, METH_VARARGS, "new_SimpleSelectionRule(int a, int b, int c, int modulus) -> SimpleSelectionRule"},
+	 { "delete_SimpleSelectionRule", _wrap_delete_SimpleSelectionRule, METH_O, "delete_SimpleSelectionRule(SimpleSelectionRule self)"},
+	 { "SimpleSelectionRule_clone", _wrap_SimpleSelectionRule_clone, METH_O, "SimpleSelectionRule_clone(SimpleSelectionRule self) -> SimpleSelectionRule"},
+	 { "SimpleSelectionRule_coordinateSelected", _wrap_SimpleSelectionRule_coordinateSelected, METH_VARARGS, "SimpleSelectionRule_coordinateSelected(SimpleSelectionRule self, ivector_t const & coordinate) -> bool"},
 	 { "SimpleSelectionRule_swigregister", SimpleSelectionRule_swigregister, METH_O, NULL},
 	 { "SimpleSelectionRule_swiginit", SimpleSelectionRule_swiginit, METH_VARARGS, NULL},
 	 { "new_Lattice", _wrap_new_Lattice, METH_VARARGS, "\n"
 		"Lattice()\n"
 		"Lattice(kvector_t a1, kvector_t a2, kvector_t a3)\n"
 		"new_Lattice(Lattice lattice) -> Lattice\n"
-		"Lattice::Lattice(const Lattice &lattice)\n"
-		"\n"
-		""},
-	 { "delete_Lattice", _wrap_delete_Lattice, METH_O, "\n"
-		"delete_Lattice(Lattice self)\n"
-		"Lattice::~Lattice() override\n"
-		"\n"
-		""},
-	 { "Lattice_accept", _wrap_Lattice_accept, METH_VARARGS, "\n"
-		"Lattice_accept(Lattice self, INodeVisitor * visitor)\n"
-		"void Lattice::accept(INodeVisitor *visitor) const override\n"
-		"\n"
-		""},
-	 { "Lattice_createTransformedLattice", _wrap_Lattice_createTransformedLattice, METH_VARARGS, "\n"
-		"Lattice_createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice\n"
-		"Lattice Lattice::createTransformedLattice(const Transform3D &transform) const\n"
-		"\n"
-		"Creates transformed lattice. \n"
-		"\n"
-		""},
-	 { "Lattice_initialize", _wrap_Lattice_initialize, METH_O, "\n"
-		"Lattice_initialize(Lattice self)\n"
-		"void Lattice::initialize() const\n"
-		"\n"
-		"Initializes cached data. \n"
-		"\n"
-		""},
-	 { "Lattice_getBasisVectorA", _wrap_Lattice_getBasisVectorA, METH_O, "\n"
-		"Lattice_getBasisVectorA(Lattice self) -> kvector_t\n"
-		"kvector_t Lattice::getBasisVectorA() const\n"
-		"\n"
-		"Returns basis vector a. \n"
-		"\n"
-		""},
-	 { "Lattice_getBasisVectorB", _wrap_Lattice_getBasisVectorB, METH_O, "\n"
-		"Lattice_getBasisVectorB(Lattice self) -> kvector_t\n"
-		"kvector_t Lattice::getBasisVectorB() const\n"
-		"\n"
-		"Returns basis vector b. \n"
-		"\n"
-		""},
-	 { "Lattice_getBasisVectorC", _wrap_Lattice_getBasisVectorC, METH_O, "\n"
-		"Lattice_getBasisVectorC(Lattice self) -> kvector_t\n"
-		"kvector_t Lattice::getBasisVectorC() const\n"
-		"\n"
-		"Returns basis vector c. \n"
-		"\n"
-		""},
-	 { "Lattice_resetBasis", _wrap_Lattice_resetBasis, METH_VARARGS, "\n"
-		"Lattice_resetBasis(Lattice self, kvector_t a1, kvector_t a2, kvector_t a3)\n"
-		"void Lattice::resetBasis(const kvector_t a1, const kvector_t a2, const kvector_t a3)\n"
-		"\n"
-		"Resets the basis vectors. \n"
-		"\n"
-		""},
-	 { "Lattice_getMillerDirection", _wrap_Lattice_getMillerDirection, METH_VARARGS, "\n"
-		"Lattice_getMillerDirection(Lattice self, double h, double k, double l) -> kvector_t\n"
-		"kvector_t Lattice::getMillerDirection(double h, double k, double l) const\n"
-		"\n"
-		"Returns normalized direction corresponding to the given Miller indices. \n"
-		"\n"
-		""},
-	 { "Lattice_volume", _wrap_Lattice_volume, METH_O, "\n"
-		"Lattice_volume(Lattice self) -> double\n"
-		"double Lattice::volume() const\n"
-		"\n"
-		"Returns the volume of the unit cell. \n"
-		"\n"
-		""},
-	 { "Lattice_getReciprocalLatticeBasis", _wrap_Lattice_getReciprocalLatticeBasis, METH_VARARGS, "\n"
-		"Lattice_getReciprocalLatticeBasis(Lattice self, kvector_t b1, kvector_t b2, kvector_t b3)\n"
-		"void Lattice::getReciprocalLatticeBasis(kvector_t &b1, kvector_t &b2, kvector_t &b3) const\n"
-		"\n"
-		"Returns the reciprocal basis vectors. \n"
-		"\n"
-		""},
-	 { "Lattice_getNearestLatticeVectorCoordinates", _wrap_Lattice_getNearestLatticeVectorCoordinates, METH_VARARGS, "\n"
-		"Lattice_getNearestLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t\n"
-		"ivector_t Lattice::getNearestLatticeVectorCoordinates(const kvector_t vector_in) const\n"
-		"\n"
-		"Returns the nearest lattice point from a given vector. \n"
-		"\n"
-		""},
-	 { "Lattice_getNearestReciprocalLatticeVectorCoordinates", _wrap_Lattice_getNearestReciprocalLatticeVectorCoordinates, METH_VARARGS, "\n"
-		"Lattice_getNearestReciprocalLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t\n"
-		"ivector_t Lattice::getNearestReciprocalLatticeVectorCoordinates(const kvector_t vector_in) const\n"
-		"\n"
-		"Returns the nearest reciprocal lattice point from a given vector. \n"
-		"\n"
-		""},
-	 { "Lattice_reciprocalLatticeVectorsWithinRadius", _wrap_Lattice_reciprocalLatticeVectorsWithinRadius, METH_VARARGS, "\n"
-		"Lattice_reciprocalLatticeVectorsWithinRadius(Lattice self, kvector_t input_vector, double radius) -> vector_kvector_t\n"
-		"std::vector< kvector_t > Lattice::reciprocalLatticeVectorsWithinRadius(const kvector_t input_vector, double radius) const\n"
-		"\n"
-		"Computes a list of reciprocal lattice vectors within a specified distance of a given vector. \n"
-		"\n"
-		""},
-	 { "Lattice_setSelectionRule", _wrap_Lattice_setSelectionRule, METH_VARARGS, "\n"
-		"Lattice_setSelectionRule(Lattice self, ISelectionRule p_selection_rule)\n"
-		"void Lattice::setSelectionRule(const ISelectionRule &p_selection_rule)\n"
-		"\n"
-		"Sets a selection rule for the reciprocal vectors. \n"
-		"\n"
 		""},
+	 { "delete_Lattice", _wrap_delete_Lattice, METH_O, "delete_Lattice(Lattice self)"},
+	 { "Lattice_accept", _wrap_Lattice_accept, METH_VARARGS, "Lattice_accept(Lattice self, INodeVisitor * visitor)"},
+	 { "Lattice_createTransformedLattice", _wrap_Lattice_createTransformedLattice, METH_VARARGS, "Lattice_createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice"},
+	 { "Lattice_initialize", _wrap_Lattice_initialize, METH_O, "Lattice_initialize(Lattice self)"},
+	 { "Lattice_getBasisVectorA", _wrap_Lattice_getBasisVectorA, METH_O, "Lattice_getBasisVectorA(Lattice self) -> kvector_t"},
+	 { "Lattice_getBasisVectorB", _wrap_Lattice_getBasisVectorB, METH_O, "Lattice_getBasisVectorB(Lattice self) -> kvector_t"},
+	 { "Lattice_getBasisVectorC", _wrap_Lattice_getBasisVectorC, METH_O, "Lattice_getBasisVectorC(Lattice self) -> kvector_t"},
+	 { "Lattice_resetBasis", _wrap_Lattice_resetBasis, METH_VARARGS, "Lattice_resetBasis(Lattice self, kvector_t a1, kvector_t a2, kvector_t a3)"},
+	 { "Lattice_getMillerDirection", _wrap_Lattice_getMillerDirection, METH_VARARGS, "Lattice_getMillerDirection(Lattice self, double h, double k, double l) -> kvector_t"},
+	 { "Lattice_volume", _wrap_Lattice_volume, METH_O, "Lattice_volume(Lattice self) -> double"},
+	 { "Lattice_getReciprocalLatticeBasis", _wrap_Lattice_getReciprocalLatticeBasis, METH_VARARGS, "Lattice_getReciprocalLatticeBasis(Lattice self, kvector_t b1, kvector_t b2, kvector_t b3)"},
+	 { "Lattice_getNearestLatticeVectorCoordinates", _wrap_Lattice_getNearestLatticeVectorCoordinates, METH_VARARGS, "Lattice_getNearestLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t"},
+	 { "Lattice_getNearestReciprocalLatticeVectorCoordinates", _wrap_Lattice_getNearestReciprocalLatticeVectorCoordinates, METH_VARARGS, "Lattice_getNearestReciprocalLatticeVectorCoordinates(Lattice self, kvector_t vector_in) -> ivector_t"},
+	 { "Lattice_reciprocalLatticeVectorsWithinRadius", _wrap_Lattice_reciprocalLatticeVectorsWithinRadius, METH_VARARGS, "Lattice_reciprocalLatticeVectorsWithinRadius(Lattice self, kvector_t input_vector, double radius) -> vector_kvector_t"},
+	 { "Lattice_setSelectionRule", _wrap_Lattice_setSelectionRule, METH_VARARGS, "Lattice_setSelectionRule(Lattice self, ISelectionRule p_selection_rule)"},
 	 { "Lattice_createCubicLattice", _wrap_Lattice_createCubicLattice, METH_O, "Lattice_createCubicLattice(double a) -> Lattice"},
 	 { "Lattice_createFCCLattice", _wrap_Lattice_createFCCLattice, METH_O, "Lattice_createFCCLattice(double a) -> Lattice"},
 	 { "Lattice_createHexagonalLattice", _wrap_Lattice_createHexagonalLattice, METH_VARARGS, "Lattice_createHexagonalLattice(double a, double c) -> Lattice"},
 	 { "Lattice_createHCPLattice", _wrap_Lattice_createHCPLattice, METH_VARARGS, "Lattice_createHCPLattice(double a, double c) -> Lattice"},
 	 { "Lattice_createTetragonalLattice", _wrap_Lattice_createTetragonalLattice, METH_VARARGS, "Lattice_createTetragonalLattice(double a, double c) -> Lattice"},
 	 { "Lattice_createBCTLattice", _wrap_Lattice_createBCTLattice, METH_VARARGS, "Lattice_createBCTLattice(double a, double c) -> Lattice"},
-	 { "Lattice_onChange", _wrap_Lattice_onChange, METH_O, "\n"
-		"Lattice_onChange(Lattice self)\n"
-		"void Lattice::onChange() override\n"
-		"\n"
-		""},
+	 { "Lattice_onChange", _wrap_Lattice_onChange, METH_O, "Lattice_onChange(Lattice self)"},
 	 { "Lattice_swigregister", Lattice_swigregister, METH_O, NULL},
 	 { "Lattice_swiginit", Lattice_swiginit, METH_VARARGS, NULL},
-	 { "Lattice2D_clone", _wrap_Lattice2D_clone, METH_O, "\n"
-		"Lattice2D_clone(Lattice2D self) -> Lattice2D\n"
-		"virtual Lattice2D* Lattice2D::clone() const =0\n"
-		"\n"
-		""},
-	 { "Lattice2D_length1", _wrap_Lattice2D_length1, METH_O, "\n"
-		"Lattice2D_length1(Lattice2D self) -> double\n"
-		"virtual double Lattice2D::length1() const =0\n"
-		"\n"
-		""},
-	 { "Lattice2D_length2", _wrap_Lattice2D_length2, METH_O, "\n"
-		"Lattice2D_length2(Lattice2D self) -> double\n"
-		"virtual double Lattice2D::length2() const =0\n"
-		"\n"
-		""},
-	 { "Lattice2D_latticeAngle", _wrap_Lattice2D_latticeAngle, METH_O, "\n"
-		"Lattice2D_latticeAngle(Lattice2D self) -> double\n"
-		"virtual double Lattice2D::latticeAngle() const =0\n"
-		"\n"
-		""},
-	 { "Lattice2D_unitCellArea", _wrap_Lattice2D_unitCellArea, METH_O, "\n"
-		"Lattice2D_unitCellArea(Lattice2D self) -> double\n"
-		"virtual double Lattice2D::unitCellArea() const =0\n"
-		"\n"
-		""},
-	 { "Lattice2D_rotationAngle", _wrap_Lattice2D_rotationAngle, METH_O, "\n"
-		"Lattice2D_rotationAngle(Lattice2D self) -> double\n"
-		"double Lattice2D::rotationAngle() const\n"
-		"\n"
-		""},
-	 { "Lattice2D_reciprocalBases", _wrap_Lattice2D_reciprocalBases, METH_O, "\n"
-		"Lattice2D_reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases\n"
-		"Lattice2D::ReciprocalBases Lattice2D::reciprocalBases() const\n"
-		"\n"
-		""},
-	 { "Lattice2D_setRotationEnabled", _wrap_Lattice2D_setRotationEnabled, METH_VARARGS, "\n"
-		"Lattice2D_setRotationEnabled(Lattice2D self, bool enabled)\n"
-		"void Lattice2D::setRotationEnabled(bool enabled)\n"
-		"\n"
-		""},
+	 { "Lattice2D_clone", _wrap_Lattice2D_clone, METH_O, "Lattice2D_clone(Lattice2D self) -> Lattice2D"},
+	 { "Lattice2D_length1", _wrap_Lattice2D_length1, METH_O, "Lattice2D_length1(Lattice2D self) -> double"},
+	 { "Lattice2D_length2", _wrap_Lattice2D_length2, METH_O, "Lattice2D_length2(Lattice2D self) -> double"},
+	 { "Lattice2D_latticeAngle", _wrap_Lattice2D_latticeAngle, METH_O, "Lattice2D_latticeAngle(Lattice2D self) -> double"},
+	 { "Lattice2D_unitCellArea", _wrap_Lattice2D_unitCellArea, METH_O, "Lattice2D_unitCellArea(Lattice2D self) -> double"},
+	 { "Lattice2D_rotationAngle", _wrap_Lattice2D_rotationAngle, METH_O, "Lattice2D_rotationAngle(Lattice2D self) -> double"},
+	 { "Lattice2D_reciprocalBases", _wrap_Lattice2D_reciprocalBases, METH_O, "Lattice2D_reciprocalBases(Lattice2D self) -> Lattice2D::ReciprocalBases"},
+	 { "Lattice2D_setRotationEnabled", _wrap_Lattice2D_setRotationEnabled, METH_VARARGS, "Lattice2D_setRotationEnabled(Lattice2D self, bool enabled)"},
 	 { "delete_Lattice2D", _wrap_delete_Lattice2D, METH_O, "delete_Lattice2D(Lattice2D self)"},
 	 { "Lattice2D_swigregister", Lattice2D_swigregister, METH_O, NULL},
-	 { "new_BasicLattice", _wrap_new_BasicLattice, METH_VARARGS, "\n"
-		"new_BasicLattice(double length1, double length2, double angle, double xi) -> BasicLattice\n"
-		"BasicLattice::BasicLattice(double length1, double length2, double angle, double xi)\n"
-		"\n"
-		""},
-	 { "BasicLattice_clone", _wrap_BasicLattice_clone, METH_O, "\n"
-		"BasicLattice_clone(BasicLattice self) -> BasicLattice\n"
-		"BasicLattice * BasicLattice::clone() const\n"
-		"\n"
-		""},
-	 { "BasicLattice_accept", _wrap_BasicLattice_accept, METH_VARARGS, "\n"
-		"BasicLattice_accept(BasicLattice self, INodeVisitor * visitor)\n"
-		"void BasicLattice::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "BasicLattice_length1", _wrap_BasicLattice_length1, METH_O, "\n"
-		"BasicLattice_length1(BasicLattice self) -> double\n"
-		"virtual double BasicLattice::length1() const\n"
-		"\n"
-		""},
-	 { "BasicLattice_length2", _wrap_BasicLattice_length2, METH_O, "\n"
-		"BasicLattice_length2(BasicLattice self) -> double\n"
-		"virtual double BasicLattice::length2() const\n"
-		"\n"
-		""},
-	 { "BasicLattice_latticeAngle", _wrap_BasicLattice_latticeAngle, METH_O, "\n"
-		"BasicLattice_latticeAngle(BasicLattice self) -> double\n"
-		"virtual double BasicLattice::latticeAngle() const\n"
-		"\n"
-		""},
-	 { "BasicLattice_unitCellArea", _wrap_BasicLattice_unitCellArea, METH_O, "\n"
-		"BasicLattice_unitCellArea(BasicLattice self) -> double\n"
-		"double BasicLattice::unitCellArea() const\n"
-		"\n"
-		""},
+	 { "new_BasicLattice", _wrap_new_BasicLattice, METH_VARARGS, "new_BasicLattice(double length1, double length2, double angle, double xi) -> BasicLattice"},
+	 { "BasicLattice_clone", _wrap_BasicLattice_clone, METH_O, "BasicLattice_clone(BasicLattice self) -> BasicLattice"},
+	 { "BasicLattice_accept", _wrap_BasicLattice_accept, METH_VARARGS, "BasicLattice_accept(BasicLattice self, INodeVisitor * visitor)"},
+	 { "BasicLattice_length1", _wrap_BasicLattice_length1, METH_O, "BasicLattice_length1(BasicLattice self) -> double"},
+	 { "BasicLattice_length2", _wrap_BasicLattice_length2, METH_O, "BasicLattice_length2(BasicLattice self) -> double"},
+	 { "BasicLattice_latticeAngle", _wrap_BasicLattice_latticeAngle, METH_O, "BasicLattice_latticeAngle(BasicLattice self) -> double"},
+	 { "BasicLattice_unitCellArea", _wrap_BasicLattice_unitCellArea, METH_O, "BasicLattice_unitCellArea(BasicLattice self) -> double"},
 	 { "delete_BasicLattice", _wrap_delete_BasicLattice, METH_O, "delete_BasicLattice(BasicLattice self)"},
 	 { "BasicLattice_swigregister", BasicLattice_swigregister, METH_O, NULL},
 	 { "BasicLattice_swiginit", BasicLattice_swiginit, METH_VARARGS, NULL},
-	 { "new_SquareLattice", _wrap_new_SquareLattice, METH_VARARGS, "\n"
-		"SquareLattice(double length, double xi=0.0)\n"
-		"SquareLattice::SquareLattice(double length, double xi=0.0)\n"
-		"\n"
-		""},
-	 { "SquareLattice_clone", _wrap_SquareLattice_clone, METH_O, "\n"
-		"SquareLattice_clone(SquareLattice self) -> SquareLattice\n"
-		"SquareLattice * SquareLattice::clone() const\n"
-		"\n"
-		""},
-	 { "SquareLattice_accept", _wrap_SquareLattice_accept, METH_VARARGS, "\n"
-		"SquareLattice_accept(SquareLattice self, INodeVisitor * visitor)\n"
-		"void SquareLattice::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "SquareLattice_length1", _wrap_SquareLattice_length1, METH_O, "\n"
-		"SquareLattice_length1(SquareLattice self) -> double\n"
-		"virtual double SquareLattice::length1() const\n"
-		"\n"
-		""},
-	 { "SquareLattice_length2", _wrap_SquareLattice_length2, METH_O, "\n"
-		"SquareLattice_length2(SquareLattice self) -> double\n"
-		"virtual double SquareLattice::length2() const\n"
-		"\n"
-		""},
-	 { "SquareLattice_latticeAngle", _wrap_SquareLattice_latticeAngle, METH_O, "\n"
-		"SquareLattice_latticeAngle(SquareLattice self) -> double\n"
-		"double SquareLattice::latticeAngle() const\n"
-		"\n"
-		""},
-	 { "SquareLattice_unitCellArea", _wrap_SquareLattice_unitCellArea, METH_O, "\n"
-		"SquareLattice_unitCellArea(SquareLattice self) -> double\n"
-		"double SquareLattice::unitCellArea() const\n"
-		"\n"
-		""},
+	 { "new_SquareLattice", _wrap_new_SquareLattice, METH_VARARGS, "SquareLattice(double length, double xi=0.0)"},
+	 { "SquareLattice_clone", _wrap_SquareLattice_clone, METH_O, "SquareLattice_clone(SquareLattice self) -> SquareLattice"},
+	 { "SquareLattice_accept", _wrap_SquareLattice_accept, METH_VARARGS, "SquareLattice_accept(SquareLattice self, INodeVisitor * visitor)"},
+	 { "SquareLattice_length1", _wrap_SquareLattice_length1, METH_O, "SquareLattice_length1(SquareLattice self) -> double"},
+	 { "SquareLattice_length2", _wrap_SquareLattice_length2, METH_O, "SquareLattice_length2(SquareLattice self) -> double"},
+	 { "SquareLattice_latticeAngle", _wrap_SquareLattice_latticeAngle, METH_O, "SquareLattice_latticeAngle(SquareLattice self) -> double"},
+	 { "SquareLattice_unitCellArea", _wrap_SquareLattice_unitCellArea, METH_O, "SquareLattice_unitCellArea(SquareLattice self) -> double"},
 	 { "delete_SquareLattice", _wrap_delete_SquareLattice, METH_O, "delete_SquareLattice(SquareLattice self)"},
 	 { "SquareLattice_swigregister", SquareLattice_swigregister, METH_O, NULL},
 	 { "SquareLattice_swiginit", SquareLattice_swiginit, METH_VARARGS, NULL},
-	 { "new_HexagonalLattice", _wrap_new_HexagonalLattice, METH_VARARGS, "\n"
-		"new_HexagonalLattice(double length, double xi) -> HexagonalLattice\n"
-		"HexagonalLattice::HexagonalLattice(double length, double xi)\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_clone", _wrap_HexagonalLattice_clone, METH_O, "\n"
-		"HexagonalLattice_clone(HexagonalLattice self) -> HexagonalLattice\n"
-		"HexagonalLattice * HexagonalLattice::clone() const\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_accept", _wrap_HexagonalLattice_accept, METH_VARARGS, "\n"
-		"HexagonalLattice_accept(HexagonalLattice self, INodeVisitor * visitor)\n"
-		"void HexagonalLattice::accept(INodeVisitor *visitor) const final\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_length1", _wrap_HexagonalLattice_length1, METH_O, "\n"
-		"HexagonalLattice_length1(HexagonalLattice self) -> double\n"
-		"virtual double HexagonalLattice::length1() const\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_length2", _wrap_HexagonalLattice_length2, METH_O, "\n"
-		"HexagonalLattice_length2(HexagonalLattice self) -> double\n"
-		"virtual double HexagonalLattice::length2() const\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_latticeAngle", _wrap_HexagonalLattice_latticeAngle, METH_O, "\n"
-		"HexagonalLattice_latticeAngle(HexagonalLattice self) -> double\n"
-		"double HexagonalLattice::latticeAngle() const\n"
-		"\n"
-		""},
-	 { "HexagonalLattice_unitCellArea", _wrap_HexagonalLattice_unitCellArea, METH_O, "\n"
-		"HexagonalLattice_unitCellArea(HexagonalLattice self) -> double\n"
-		"double HexagonalLattice::unitCellArea() const\n"
-		"\n"
-		""},
+	 { "new_HexagonalLattice", _wrap_new_HexagonalLattice, METH_VARARGS, "new_HexagonalLattice(double length, double xi) -> HexagonalLattice"},
+	 { "HexagonalLattice_clone", _wrap_HexagonalLattice_clone, METH_O, "HexagonalLattice_clone(HexagonalLattice self) -> HexagonalLattice"},
+	 { "HexagonalLattice_accept", _wrap_HexagonalLattice_accept, METH_VARARGS, "HexagonalLattice_accept(HexagonalLattice self, INodeVisitor * visitor)"},
+	 { "HexagonalLattice_length1", _wrap_HexagonalLattice_length1, METH_O, "HexagonalLattice_length1(HexagonalLattice self) -> double"},
+	 { "HexagonalLattice_length2", _wrap_HexagonalLattice_length2, METH_O, "HexagonalLattice_length2(HexagonalLattice self) -> double"},
+	 { "HexagonalLattice_latticeAngle", _wrap_HexagonalLattice_latticeAngle, METH_O, "HexagonalLattice_latticeAngle(HexagonalLattice self) -> double"},
+	 { "HexagonalLattice_unitCellArea", _wrap_HexagonalLattice_unitCellArea, METH_O, "HexagonalLattice_unitCellArea(HexagonalLattice self) -> double"},
 	 { "delete_HexagonalLattice", _wrap_delete_HexagonalLattice, METH_O, "delete_HexagonalLattice(HexagonalLattice self)"},
 	 { "HexagonalLattice_swigregister", HexagonalLattice_swigregister, METH_O, NULL},
 	 { "HexagonalLattice_swiginit", HexagonalLattice_swiginit, METH_VARARGS, NULL},
-	 { "createFCCLattice", _wrap_createFCCLattice, METH_VARARGS, "\n"
-		"createFCCLattice(double lattice_constant, ILatticeOrientation orientation) -> Lattice\n"
-		"Lattice LatticeUtils::createFCCLattice(double lattice_constant, const ILatticeOrientation &orientation)\n"
-		"\n"
-		""},
-	 { "createHCPLattice", _wrap_createHCPLattice, METH_VARARGS, "\n"
-		"createHCPLattice(double a, double c, ILatticeOrientation orientation) -> Lattice\n"
-		"Lattice LatticeUtils::createHCPLattice(double a, double c, const ILatticeOrientation &orientation)\n"
-		"\n"
-		""},
-	 { "createBCTLattice", _wrap_createBCTLattice, METH_VARARGS, "\n"
-		"createBCTLattice(double a, double c, ILatticeOrientation orientation) -> Lattice\n"
-		"Lattice LatticeUtils::createBCTLattice(double a, double c, const ILatticeOrientation &orientation)\n"
-		"\n"
-		""},
+	 { "createFCCLattice", _wrap_createFCCLattice, METH_VARARGS, "createFCCLattice(double lattice_constant, ILatticeOrientation orientation) -> Lattice"},
+	 { "createHCPLattice", _wrap_createHCPLattice, METH_VARARGS, "createHCPLattice(double a, double c, ILatticeOrientation orientation) -> Lattice"},
+	 { "createBCTLattice", _wrap_createBCTLattice, METH_VARARGS, "createBCTLattice(double a, double c, ILatticeOrientation orientation) -> Lattice"},
 	 { "new_Material", _wrap_new_Material, METH_O, "new_Material(Material material) -> Material"},
 	 { "Material_inverted", _wrap_Material_inverted, METH_O, "Material_inverted(Material self) -> Material"},
 	 { "Material_refractiveIndex", _wrap_Material_refractiveIndex, METH_VARARGS, "Material_refractiveIndex(Material self, double wavelength) -> complex_t"},
-- 
GitLab