From 8e2a54a3e69671efb1c3e61e4685577983dbdc20 Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Mon, 9 Dec 2013 14:33:35 +0100
Subject: [PATCH] IsGISAXS08 test cleanup

---
 App/.lssrc                                    |   18 -
 App/inc/StandardSamples.h                     |    4 +-
 App/inc/TestIsGISAXS8.h                       |   46 -
 App/src/ApplicationTestFactory.cpp            |   11 -
 App/src/SampleFactory.cpp                     |    4 +-
 App/src/StandardSamples.cpp                   |  274 +----
 App/src/StandardSamples.cpp.autosave          | 1072 -----------------
 App/src/TestIsGISAXS8.cpp                     |   61 -
 .../FunctionalTestRegistry.cpp                |    8 +
 Core/StandardSamples/IsGISAXS08Builder.cpp    |    8 +-
 Core/StandardSamples/IsGISAXS08Builder.h      |    8 +-
 Core/StandardSamples/SampleBuilderFactory.cpp |   12 +-
 Core/StandardSamples/SimulationRegistry.cpp   |    9 +-
 Core/StandardSamples/StandardSimulations.cpp  |    8 +-
 Core/StandardSamples/StandardSimulations.h    |    4 +-
 Tests/FunctionalTests/TestCore/CMakeLists.txt |    4 +-
 .../TestCore/IsGISAXS08/IsGISAXS08.cpp        |  180 ---
 .../TestCore/IsGISAXS08/IsGISAXS08.h          |   38 -
 .../TestCore/IsGISAXS08/IsGISAXS08.pro        |   15 -
 .../IsGISAXS082DDL/IsGISAXS082DDL.cpp         |   70 --
 .../TestCore/IsGISAXS082DDL/IsGISAXS082DDL.h  |   27 -
 .../IsGISAXS082DDL2/IsGISAXS082DDL2.cpp       |   70 --
 .../IsGISAXS082DDL2/IsGISAXS082DDL2.h         |   27 -
 .../TestCore/IsGISAXS08a/IsGISAXS082DDL.cpp   |    8 +
 .../TestCore/IsGISAXS08b/IsGISAXS082DDL2.cpp  |    9 +
 25 files changed, 116 insertions(+), 1879 deletions(-)
 delete mode 100644 App/.lssrc
 delete mode 100644 App/inc/TestIsGISAXS8.h
 delete mode 100644 App/src/StandardSamples.cpp.autosave
 delete mode 100644 App/src/TestIsGISAXS8.cpp
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.h
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.pro
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.h
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp
 delete mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.h
 create mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS08a/IsGISAXS082DDL.cpp
 create mode 100644 Tests/FunctionalTests/TestCore/IsGISAXS08b/IsGISAXS082DDL2.cpp

diff --git a/App/.lssrc b/App/.lssrc
deleted file mode 100644
index 311ff95b612..00000000000
--- a/App/.lssrc
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- mode: python -*-
-
-# Include file for program lssrc.
-# Returns user-written source files.
-
-import glob, re
-
-def source_files(root):
-    fnames = []
-    # get all files with right extension from pwd
-    fnames += sorted( glob.glob( root+"inc/*.h" ) )
-    fnames += sorted( glob.glob( root+"src/*.cpp" ) )
-    # remove files known to be machine generated
-    out = list(fnames)
-    for f in fnames:
-        if re.search( r'\.pypp\.', f ):
-            out.remove( f )
-    return out
diff --git a/App/inc/StandardSamples.h b/App/inc/StandardSamples.h
index 9a55b2a1653..d7464860837 100644
--- a/App/inc/StandardSamples.h
+++ b/App/inc/StandardSamples.h
@@ -33,8 +33,8 @@ ISample *MultilayerOffspecTestcase2b();
 ISample *MultilayerSpecularMagneticTestCase();
 ISample *PolarizedDWBATestCase();
 
-ISample *IsGISAXS8_2DDL_lattice();
-ISample *IsGISAXS8_2DDL_lattice2();
+//ISample *IsGISAXS8_2DDL_lattice();
+//ISample *IsGISAXS8_2DDL_lattice2();
 
 ISample *IsGISAXS10_CylindersParacrystal1D();
 ISample *IsGISAXS11_CoreShellParticles();
diff --git a/App/inc/TestIsGISAXS8.h b/App/inc/TestIsGISAXS8.h
deleted file mode 100644
index d40a8e46f4b..00000000000
--- a/App/inc/TestIsGISAXS8.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// ************************************************************************** //
-//                                                                         
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      App/inc/TestIsGISAXS8.h
-//! @brief     Defines class TestIsGISAXS8.
-//
-//! Homepage:  apps.jcns.fz-juelich.de/BornAgain
-//! License:   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#ifndef TESTISGISAXS8_H_
-#define TESTISGISAXS8_H_
-
-#include "IApplicationTest.h"
-
-//! IsGISAXS ex#8: Cylinder with interference 2DDL_lattice.
-
-class TestIsGISAXS8 : public IApplicationTest
-{
-public:
-    TestIsGISAXS8();
-    virtual ~TestIsGISAXS8(){}
-
-    virtual void execute();
-    virtual void finalise();
-private:
-    // structure to hold info over several compare cases
-    struct CompareStruct
-    {
-        CompareStruct(std::string _isginame, std::string _thisname, std::string _descr) : isginame(_isginame), thisname(_thisname), descr(_descr){}
-        std::string isginame;
-        std::string thisname;
-        std::string descr;
-    };
-
-    std::string m_data_path;
-};
-
-#endif /* TESTISGISAXS8_H_ */
-
-
diff --git a/App/src/ApplicationTestFactory.cpp b/App/src/ApplicationTestFactory.cpp
index 329f9b842ee..169b10eec3d 100644
--- a/App/src/ApplicationTestFactory.cpp
+++ b/App/src/ApplicationTestFactory.cpp
@@ -33,7 +33,6 @@
 #include "TestIsGISAXS14.h"
 #include "TestIsGISAXS15.h"
 #include "TestIsGISAXS5.h"
-#include "TestIsGISAXS8.h"
 #include "TestIsGISAXS9.h"
 #include "TestMesoCrystal1.h"
 #include "TestMesoCrystal2.h"
@@ -165,16 +164,6 @@ void RegisterApplicationTests(ApplicationTestFactory *p_test_factory)
         IFactoryCreateFunction<TestIsGISAXS5, IApplicationTest>,
         "functional test: isgisaxs ex-5 (fit with paracrystal 1d structure "
         "factor)");
-//    p_test_factory->registerItem(
-//        "isgisaxs07",
-//        IFactoryCreateFunction<TestIsGISAXS7, IApplicationTest>,
-//        "functional test: isgisaxs ex-7 (particle mixture from morphology "
-//        "file)");
-    p_test_factory->registerItem(
-        "isgisaxs08",
-        IFactoryCreateFunction<TestIsGISAXS8, IApplicationTest>,
-        "functional test: isgisaxs ex-8 (paracrystal lattice structure "
-        "factors)");
     p_test_factory->registerItem(
         "isgisaxs09",
         IFactoryCreateFunction<TestIsGISAXS9, IApplicationTest>,
diff --git a/App/src/SampleFactory.cpp b/App/src/SampleFactory.cpp
index 943cf615352..95a1e1e95c9 100644
--- a/App/src/SampleFactory.cpp
+++ b/App/src/SampleFactory.cpp
@@ -51,8 +51,8 @@ SampleFactory::SampleFactory()
             StandardSamples::MultilayerSpecularMagneticTestCase);
 
     // IsGISAXS8 example: cylinders on top of substrate with paracrystal lattice structure
-    registerItem("IsGISAXS8_2DDL_lattice", StandardSamples::IsGISAXS8_2DDL_lattice);
-    registerItem("IsGISAXS8_2DDL_lattice2", StandardSamples::IsGISAXS8_2DDL_lattice2);
+//    registerItem("IsGISAXS8_2DDL_lattice", StandardSamples::IsGISAXS8_2DDL_lattice);
+//    registerItem("IsGISAXS8_2DDL_lattice2", StandardSamples::IsGISAXS8_2DDL_lattice2);
 
 
     // IsGISAXS10 example: cylinders with interference
diff --git a/App/src/StandardSamples.cpp b/App/src/StandardSamples.cpp
index 5b98b3f2486..7d5abcb6154 100644
--- a/App/src/StandardSamples.cpp
+++ b/App/src/StandardSamples.cpp
@@ -254,200 +254,83 @@ ISample *StandardSamples::MultilayerOffspecTestcase2b()
     return mySample;
 }
 
-// IsGISAXS ex#7: Particle mixture from morphology file.
 
-//ISample *StandardSamples::IsGISAXS7_morphology()
+
+// IsGISAXS ex#8a: 2D paracrystal lattice.
+
+//ISample *StandardSamples::IsGISAXS8_2DDL_lattice()
 //{
 //    MultiLayer *p_multi_layer = new MultiLayer();
-//    const IMaterial *particle_material =
-//            MaterialManager::getHomogeneousMaterial("Particle", 6e-4, 2e-8);
+//    complex_t n_air(1.0, 0.0);
+//    complex_t n_substrate(1.0-6e-6, 2e-8);
+//    complex_t n_particle(1.0-6e-4, 2e-8);
 //    const IMaterial *p_air_material =
-//        MaterialManager::getHomogeneousMaterial("Air", 0., 0.);
+//        MaterialManager::getHomogeneousMaterial("Air", n_air);
+//    const IMaterial *p_substrate_material =
+//        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
+//    const IMaterial *particle_material =
+//            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
 //    Layer air_layer;
 //    air_layer.setMaterial(p_air_material);
-//    ParticleDecoration particle_decoration;
-
-//    // add particle number 1:
-//    FormFactorBox ff1(1.0*Units::nanometer,
-//                      1.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos1(0.0*Units::nanometer, 0.0*Units::nanometer, 0.0);
-//    PositionParticleInfo particle_info1
-//        (new Particle(particle_material, ff1), pos1, 0.5);
-//    particle_decoration.addParticleInfo(particle_info1);
-//    // add particle number 2:
-//    FormFactorBox ff2(1.0*Units::nanometer,
-//                      2.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos2(5.0*Units::nanometer,
-//                   5.0*Units::nanometer,
-//                   0.0);
-//    Geometry::RotateZ_3D m2(10*Units::degree);
-//    PositionParticleInfo particle_info2
-//        (new Particle(particle_material, ff2, m2), pos2, 0.5);
-//    particle_decoration.addParticleInfo(particle_info2);
-//    // add particle number 3:
-//    FormFactorBox ff3(1.0*Units::nanometer,
-//                      3.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos3(-5.0*Units::nanometer,
-//                   -5.0*Units::nanometer,
-//                   0.0);
-//    Geometry::RotateZ_3D m3(20*Units::degree);
-//    PositionParticleInfo particle_info3
-//        (new Particle(particle_material, ff3, m3), pos3, 0.5);
-//    particle_decoration.addParticleInfo(particle_info3);
-//    // add particle number 4:
-//    FormFactorBox ff4(1.0*Units::nanometer,
-//                      4.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos4(5.0*Units::nanometer,
-//                   -5.0*Units::nanometer,
-//                   0.0);
-//    Geometry::RotateZ_3D m4(30*Units::degree);
-//    PositionParticleInfo particle_info4
-//        (new Particle(particle_material, ff4, m4), pos4, 0.5);
-//    particle_decoration.addParticleInfo(particle_info4);
-//    // add particle number 5:
-//    FormFactorBox ff5(1.0*Units::nanometer,
-//                      5.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos5(-5.0*Units::nanometer,
-//                   5.0*Units::nanometer,
-//                   0.0);
-//    Geometry::RotateZ_3D m5(40*Units::degree);
-//    PositionParticleInfo particle_info5
-//        (new Particle(particle_material, ff5, m5), pos5, 0.5);
-//    particle_decoration.addParticleInfo(particle_info5);
-//    // add particle number 6:
-//    FormFactorBox ff6(1.0*Units::nanometer,
-//                      1.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos6(0.0*Units::nanometer,
-//                   0.0*Units::nanometer,
-//                   0.0);
-//    Geometry::RotateZ_3D m6(50*Units::degree);
-//    PositionParticleInfo particle_info6
-//        (new Particle(particle_material, ff6, m6), pos6, 0.5);
-//    particle_decoration.addParticleInfo(particle_info6);
-//    // add particle number 7:
-//    FormFactorBox ff7(1.0*Units::nanometer,
-//                      2.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos7(5.0*Units::nanometer, 5.0*Units::nanometer, 0.0);
-//    Geometry::RotateZ_3D m7(60*Units::degree);
-//    PositionParticleInfo particle_info7
-//        (new Particle(particle_material, ff7, m7), pos7, 0.5);
-//    particle_decoration.addParticleInfo(particle_info7);
-//    // add particle number 8:
-//    FormFactorBox ff8(1.0*Units::nanometer,
-//                      3.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos8(-5.0*Units::nanometer, -5.0*Units::nanometer, 0.0);
-//    Geometry::RotateZ_3D m8(70*Units::degree);
-//    PositionParticleInfo particle_info8
-//        (new Particle(particle_material, ff8, m8), pos8, 0.5);
-//    particle_decoration.addParticleInfo(particle_info8);
-//    // add particle number 9:
-//    FormFactorBox ff9(1.0*Units::nanometer,
-//                      4.0*Units::nanometer,
-//                      1.0*Units::nanometer);
-//    kvector_t pos9(5.0*Units::nanometer, -5.0*Units::nanometer, 0.0);
-//    Geometry::RotateZ_3D m9(80*Units::degree);
-//    PositionParticleInfo particle_info9
-//        (new Particle(particle_material, ff9, m9), pos9, 0.5);
-//    particle_decoration.addParticleInfo(particle_info9);
-//    // add particle number 10:
-//    FormFactorBox ff10(1.0*Units::nanometer,
-//                       5.0*Units::nanometer,
-//                       1.0*Units::nanometer);
-//    kvector_t pos10(-5.0*Units::nanometer, 5.0*Units::nanometer, 0.0);
-//    Geometry::RotateZ_3D m10(90*Units::degree);
-//    PositionParticleInfo particle_info10
-//        (new Particle(particle_material, ff10, m10), pos10, 0.5);
-//    particle_decoration.addParticleInfo(particle_info10);
+//    Layer substrate_layer;
+//    substrate_layer.setMaterial(p_substrate_material);
+//    InterferenceFunction2DParaCrystal *p_interference_function =
+//        new InterferenceFunction2DParaCrystal
+//        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
+//    p_interference_function->setDomainSizes
+//        (20.0*Units::micrometer, 20.0*Units::micrometer);
+//    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 2.0*Units::nanometer);
+//    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 2.0*Units::nanometer);
+//    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
+//    ParticleDecoration particle_decoration
+//        (new Particle(particle_material, new FormFactorCylinder
+//                      (5*Units::nanometer, 5*Units::nanometer)));
+//    particle_decoration.addInterferenceFunction(p_interference_function);
 
 //    air_layer.setDecoration(particle_decoration);
 
 //    p_multi_layer->addLayer(air_layer);
+//    p_multi_layer->addLayer(substrate_layer);
 //    return p_multi_layer;
 //}
 
-// IsGISAXS ex#8a: 2D paracrystal lattice.
+////! IsGISAXS ex#8b: 2D paracrystal lattice with isotropic pdfs.
 
-ISample *StandardSamples::IsGISAXS8_2DDL_lattice()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    InterferenceFunction2DParaCrystal *p_interference_function =
-        new InterferenceFunction2DParaCrystal
-        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes
-        (20.0*Units::micrometer, 20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 2.0*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 2.0*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorCylinder
-                      (5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! IsGISAXS ex#8b: 2D paracrystal lattice with isotropic pdfs.
-
-ISample *StandardSamples::IsGISAXS8_2DDL_lattice2()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    InterferenceFunction2DParaCrystal *p_interference_function =
-        new InterferenceFunction2DParaCrystal
-        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes
-        (20.0*Units::micrometer, 20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 0.5*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 0.5*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorCylinder
-                      (5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
+//ISample *StandardSamples::IsGISAXS8_2DDL_lattice2()
+//{
+//    MultiLayer *p_multi_layer = new MultiLayer();
+//    complex_t n_air(1.0, 0.0);
+//    complex_t n_substrate(1.0-6e-6, 2e-8);
+//    complex_t n_particle(1.0-6e-4, 2e-8);
+//    const IMaterial *p_air_material =
+//        MaterialManager::getHomogeneousMaterial("Air", n_air);
+//    const IMaterial *p_substrate_material =
+//        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
+//    const IMaterial *particle_material =
+//            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
+//    Layer air_layer;
+//    air_layer.setMaterial(p_air_material);
+//    Layer substrate_layer;
+//    substrate_layer.setMaterial(p_substrate_material);
+//    InterferenceFunction2DParaCrystal *p_interference_function =
+//        new InterferenceFunction2DParaCrystal
+//        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
+//    p_interference_function->setDomainSizes
+//        (20.0*Units::micrometer, 20.0*Units::micrometer);
+//    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 0.5*Units::nanometer);
+//    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 0.5*Units::nanometer);
+//    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
+//    ParticleDecoration particle_decoration
+//        (new Particle(particle_material, new FormFactorCylinder
+//                      (5*Units::nanometer, 5*Units::nanometer)));
+//    particle_decoration.addInterferenceFunction(p_interference_function);
 
-    air_layer.setDecoration(particle_decoration);
+//    air_layer.setDecoration(particle_decoration);
 
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
+//    p_multi_layer->addLayer(air_layer);
+//    p_multi_layer->addLayer(substrate_layer);
+//    return p_multi_layer;
+//}
 
 ISample *StandardSamples::IsGISAXS10_CylindersParacrystal1D()
 {
@@ -1187,38 +1070,3 @@ ISample *StandardSamples::PolarizedDWBATestCase()
     return mySample;
 }
 
-//ISample *StandardSamples::PolarizedDWBAZeroMagTestCase()
-//{
- //   MultiLayer *multi_layer = new MultiLayer();
-//
-//    kvector_t magnetic_field(0.0, 0.0, 0.0);
- //   const IMaterial *p_air_material =
-//            MaterialManager::getHomogeneousMaterial("Air", 0.0, 0.0);
- //   const IMaterial *p_substrate_material =
-//            MaterialManager::getHomogeneousMaterial("Substrate", 6e-6, 2e-8);
-//    Layer air_layer;
-//    air_layer.setMaterial(p_air_material);
-//    Layer substrate_layer;
-//    substrate_layer.setMaterial(p_substrate_material);
-//    const IMaterial *particle_material =
-//            MaterialManager::getHomogeneousMagneticMaterial(
-//                    "Particle", 6e-4, 2e-8, magnetic_field);
-//
-//    ParticleDecoration particle_decoration(
-//            new Particle(particle_material,
- //                   new FormFactorCylinder(5*Units::nanometer,
- //                                          5*Units::nanometer)));
-//
-//    particle_decoration.addInterferenceFunction(new InterferenceFunctionNone());
-//
-//    air_layer.setDecoration(particle_decoration);
-//
-//    multi_layer->addLayer(air_layer);
-//    multi_layer->addLayer(substrate_layer);
-//
-//    return multi_layer;
-//}
-
-
-
-
diff --git a/App/src/StandardSamples.cpp.autosave b/App/src/StandardSamples.cpp.autosave
deleted file mode 100644
index 3cc8bc21f24..00000000000
--- a/App/src/StandardSamples.cpp.autosave
+++ /dev/null
@@ -1,1072 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      App/src/StandardSamples.cpp
-//! @brief     Implements class StandardSamples.
-//
-//! Homepage:  apps.jcns.fz-juelich.de/BornAgain
-//! License:   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#include "StandardSamples.h"
-#include "MultiLayer.h"
-#include "MaterialManager.h"
-#include "Units.h"
-#include "Particle.h"
-#include "FormFactors.h"
-#include "ParticleDecoration.h"
-#include "InterferenceFunctionNone.h"
-#include "Lattice.h"
-#include "LatticeBasis.h"
-#include "Crystal.h"
-#include "MesoCrystal.h"
-#include "InterferenceFunctions.h"
-#include "StochasticGaussian.h"
-#include "Rotate3D.h"
-
-#include "Numeric.h"
-#include "MathFunctions.h"
-#include "ParticleBuilder.h"
-#include "StochasticSampledParameter.h"
-#include "ParticleCoreShell.h"
-
-#include "Particle.h"
-#include "PositionParticleInfo.h"
-
-//! 10 nm of ambience on top of substrate.
-
-ISample *StandardSamples::AirOnSubstrate()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience",complex_t(1.0, 0.0) );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", complex_t(1.0-15e-6, 0) );
-
-    MultiLayer *mySample = new MultiLayer;
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-    mySample->addLayer(lAmbience);
-
-    Layer lAir;
-    lAir.setMaterial(mAmbience, 10*Units::nanometer);
-    mySample->addLayer(lAir);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate,0);
-    mySample->addLayer(lSubstrate);
-
-    return mySample;
-}
-
-//! 10 nm of substrate on top of substrate.
-
-ISample *StandardSamples::SubstrateOnSubstrate()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience",complex_t(1.0, 0.0) );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", complex_t(1.0-15e-6, 0) );
-
-    MultiLayer *mySample = new MultiLayer;
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-    mySample->addLayer(lAmbience);
-
-    Layer likeSubstrate;
-    likeSubstrate.setMaterial(mSubstrate, 10*Units::nanometer);
-    mySample->addLayer(likeSubstrate);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate,0);
-    mySample->addLayer(lSubstrate);
-
-    return mySample;
-}
-
-//! Simple multilayer.
-
-ISample *StandardSamples::SimpleMultilayer()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial("ambience",
-                                                complex_t(1.0, 0.0) );
-    const IMaterial *mAg1 =
-        MaterialManager::getHomogeneousMaterial("ag1",
-                                                complex_t(1.0-5e-6, 0.0) );
-    const IMaterial *mCr1 =
-        MaterialManager::getHomogeneousMaterial("cr1",
-                                                complex_t(1.0-10e-6, 0.0) );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial("substrate2",
-                                                complex_t(1.0-15e-6, 0.0) );
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-
-    Layer lAg1;
-    lAg1.setMaterial(mAg1, 150.0*Units::nanometer);
-
-    Layer lCr1;
-    lCr1.setMaterial(mCr1, 120.0*Units::nanometer);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate, 0);
-
-    MultiLayer *mySample = new MultiLayer;
-
-    // adding layers
-    mySample->addLayer(lAmbience);
-
-    LayerRoughness roughness;
-    roughness.setSigma(0.0*Units::nanometer);
-    roughness.setHurstParameter(0.3);
-    roughness.setLatteralCorrLength(5000*Units::nanometer);
-
-    const unsigned nrepetitions = 2;
-    for(unsigned i=0; i<nrepetitions; ++i) {
-        mySample->addLayerWithTopRoughness(lAg1, roughness);
-        mySample->addLayerWithTopRoughness(lCr1, roughness);
-    }
-    mySample->addLayerWithTopRoughness(lSubstrate, roughness);
-    return mySample;
-}
-
-//! Multilayer offspecular testcase
-
-ISample *StandardSamples::MultilayerOffspecTestcase1a()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience", complex_t(1.0, 0.0) );
-    const IMaterial *mPartA =
-        MaterialManager::getHomogeneousMaterial
-        ("PartA", complex_t(1.0-5e-6, 0.0) );
-    const IMaterial *mPartB =
-        MaterialManager::getHomogeneousMaterial
-        ("PartB", complex_t(1.0-10e-6, 0.0) );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", complex_t(1.0-15e-6, 0.0) );
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-
-    Layer lPartA;
-    lPartA.setMaterial(mPartA, 5.0*Units::nanometer);
-
-    Layer lPartB;
-    lPartB.setMaterial(mPartB, 10.0*Units::nanometer);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate, 0);
-
-    LayerRoughness roughness;
-    roughness.setSigma(1.0*Units::nanometer);
-    roughness.setHurstParameter(0.3);
-    roughness.setLatteralCorrLength(500*Units::nanometer);
-
-    MultiLayer *mySample = new MultiLayer;
-
-    // adding layers
-    mySample->addLayer(lAmbience);
-
-    const unsigned nrepetitions = 10;
-    for(unsigned i=0; i<nrepetitions; ++i) {
-        mySample->addLayerWithTopRoughness(lPartA, roughness);
-        mySample->addLayerWithTopRoughness(lPartB, roughness);
-    }
-
-    mySample->addLayerWithTopRoughness(lSubstrate, roughness);
-
-    //mySample->setCrossCorrLength(1e-10);
-
-    return mySample;
-}
-
-//! Multilayer offspecular tescase.
-
-ISample *StandardSamples::MultilayerOffspecTestcase1b()
-{
-    MultiLayer *myOrigSample =
-        dynamic_cast<MultiLayer *>
-        (StandardSamples::MultilayerOffspecTestcase1a());
-    MultiLayer *mySample = myOrigSample->clone();
-    delete myOrigSample;
-    mySample->setCrossCorrLength(1e10);
-    return mySample;
-}
-
-//! Multilayer offspecular testcase.
-
-ISample *StandardSamples::MultilayerOffspecTestcase2a()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience",complex_t(1.0, 0.0) );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", complex_t(1.0-15e-6, 0) );
-
-    MultiLayer *mySample = new MultiLayer;
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-    mySample->addLayer(lAmbience);
-
-    LayerRoughness roughness;
-    roughness.setSigma(0.5*Units::nanometer);
-    roughness.setHurstParameter(0.3);
-    roughness.setLatteralCorrLength(500.*Units::nanometer);
-
-    Layer lAir;
-    lAir.setMaterial(mAmbience, 10*Units::nanometer);
-    mySample->addLayerWithTopRoughness(lAir, roughness);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate,0);
-    mySample->addLayerWithTopRoughness(lSubstrate, roughness);
-
-    return mySample;
-}
-
-//! Multilayer offspecular testcase.
-
-ISample *StandardSamples::MultilayerOffspecTestcase2b()
-{
-    MultiLayer *myOrigSample =
-        dynamic_cast<MultiLayer *>
-        (StandardSamples::MultilayerOffspecTestcase2a());
-    MultiLayer *mySample = myOrigSample->clone();
-    delete myOrigSample;
-    // changing thickness of middle layer
-    mySample->setLayerThickness(1, 0.01*Units::nanometer);
-    return mySample;
-}
-
-
-
-// IsGISAXS ex#8a: 2D paracrystal lattice.
-
-ISample *StandardSamples::IsGISAXS8_2DDL_lattice()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    InterferenceFunction2DParaCrystal *p_interference_function =
-        new InterferenceFunction2DParaCrystal
-        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes
-        (20.0*Units::micrometer, 20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 2.0*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 2.0*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorCylinder
-                      (5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! IsGISAXS ex#8b: 2D paracrystal lattice with isotropic pdfs.
-
-ISample *StandardSamples::IsGISAXS8_2DDL_lattice2()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    InterferenceFunction2DParaCrystal *p_interference_function =
-        new InterferenceFunction2DParaCrystal
-        (10.0*Units::nanometer, 10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes
-        (20.0*Units::micrometer, 20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 0.5*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 0.5*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorCylinder
-                      (5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-ISample *StandardSamples::IsGISAXS10_CylindersParacrystal1D()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-5e-6, 2e-8);
-    complex_t n_particle(1.0-5e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air10", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate10", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    IInterferenceFunction *p_interference_function =
-        new InterferenceFunction1DParaCrystal
-        (20.0*Units::nanometer,7*Units::nanometer, 1e7*Units::nanometer);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorCylinder
-                      (5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-    //    particle_decoration.setTotalParticleSurfaceDensity(1.0/(20.0*Units::nanometer*20.0*Units::nanometer));
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-// IsGISAXS ex#11: Core-shell parallelepiped islands.
-
-ISample *StandardSamples::IsGISAXS11_CoreShellParticles()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_particle_shell(1.0-1e-4, 2e-8);
-    complex_t n_particle_core(1.0-6e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air11", n_air);
-    const IMaterial *core_material =
-            MaterialManager::getHomogeneousMaterial("Core", n_particle_core);
-    const IMaterial *shell_material =
-            MaterialManager::getHomogeneousMaterial("Shell", n_particle_core);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Particle shell_particle(shell_material, new FormFactorParallelepiped
-                            (8*Units::nanometer, 8*Units::nanometer));
-    Particle core_particle(core_material, new FormFactorParallelepiped
-                           (7*Units::nanometer, 6*Units::nanometer));
-    kvector_t core_position(0.0, 0.0, 0.0);
-    ParticleCoreShell particle(shell_particle, core_particle, core_position);
-    ParticleDecoration particle_decoration(particle.clone());
-    particle_decoration.addInterferenceFunction(new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    return p_multi_layer;
-}
-
-//! IsGISAXS ex#14: Layered sphere on graded interface.
-
-ISample *StandardSamples::IsGISAXS14_LayeredSpheresOnGradedInterface()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air10", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate10", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    IInterferenceFunction *p_interference_function =
-        new InterferenceFunction1DParaCrystal
-        (15.0*Units::nanometer,5*Units::nanometer, 1e7*Units::nanometer);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material, new FormFactorSphere
-                      (5*Units::nanometer, 5.*2.0*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-
-    return p_multi_layer;
-}
-
-//! IsGISAXS ex#15: Size-spacing correlation approximation.
-
-ISample *StandardSamples::IsGISAXS15_SSCA()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    InterferenceFunction1DParaCrystal *p_interference_function =
-        new InterferenceFunction1DParaCrystal
-        (15.0*Units::nanometer,5*Units::nanometer, 1e3*Units::nanometer);
-    p_interference_function->setKappa(4.02698);
-    ParticleDecoration particle_decoration;
-    Particle particle_prototype(particle_material, new FormFactorCylinder
-                                (5.0*Units::nanometer, 5.0*Units::nanometer));
-    StochasticDoubleGaussian sg(5.0*Units::nanometer, 1.25*Units::nanometer);
-    StochasticSampledParameter stochastic_radius(sg,30, 2);
-    ParticleBuilder particle_builder;
-    particle_builder.setPrototype
-        (particle_prototype, "/Particle/FormFactorCylinder/radius",
-         stochastic_radius);
-    particle_builder.plantParticles(particle_decoration);
-
-    // Set height of each particle to its radius (H/R fixed)
-    ParameterPool *p_parameters = particle_decoration.createParameterTree();
-    int nbr_replacements =
-        p_parameters->fixRatioBetweenParameters("height", "radius", 1.0);
-    std::cout << "Number of replacements: " << nbr_replacements << std::endl;
-
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    return p_multi_layer;
-}
-
-//! First mesocrystal test.
-
-ISample *StandardSamples::MesoCrystal1()
-{
-    // create mesocrystal
-    double nanoparticle_radius = 6.1*Units::nanometer;
-    Lattice lat = Lattice::createTrigonalLattice(
-        nanoparticle_radius*2.0, nanoparticle_radius*2.0*2.3);
-    kvector_t bas_a = lat.getBasisVectorA();
-    kvector_t bas_b = lat.getBasisVectorB();
-    kvector_t bas_c = lat.getBasisVectorC();
-    complex_t n_particle(1.0-1.5e-5, 1.3e-6);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Particle particle(particle_material,
-                      new FormFactorFullSphere(nanoparticle_radius));
-    kvector_t position_0 = kvector_t(0.0, 0.0, 0.0);
-    kvector_t position_1 = 1.0/3.0*(2.0*bas_a + bas_b + bas_c);
-    kvector_t position_2 = 1.0/3.0*(bas_a + 2.0*bas_b + 2.0*bas_c);
-    std::vector<kvector_t> pos_vector;
-    pos_vector.push_back(position_0);
-    pos_vector.push_back(position_1);
-    pos_vector.push_back(position_2);
-    LatticeBasis basis(particle, pos_vector);
-    Crystal npc(basis, lat);
-
-    MesoCrystal meso(npc.clone(), new FormFactorCylinder
-                     (0.2*Units::micrometer, 300*Units::nanometer));
-    MesoCrystal meso2(npc.clone(), new FormFactorPyramid
-                      (0.2*Units::micrometer,
-                       300*Units::nanometer,
-                       84*Units::degree));
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-3.5e-6, 7.8e-8);
-
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air2", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate2", n_substrate);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    IInterferenceFunction *p_interference_function =
-        new InterferenceFunction1DParaCrystal
-        (800.0*Units::nanometer, 50*Units::nanometer, 1e7*Units::nanometer);
-    ParticleDecoration particle_decoration;
-    particle_decoration.addParticle(meso.clone(), 0.0, 0.5);
-    particle_decoration.addParticle(meso2.clone(), 0.0, 0.5);
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-
-}
-
-//! Second mesocrystal test: Mesocrystal from TestMesocrystal to play with.
-
-ISample *StandardSamples::MesoCrystal2()
-{
-    double meso_radius = 300*Units::nanometer;
-    double surface_filling_ratio = 0.25;
-    double surface_density = surface_filling_ratio/M_PI/meso_radius/meso_radius;
-    complex_t n_particle(1.0-1.55e-5, 1.37e-6);
-    complex_t avg_n_squared_meso = 0.7886*n_particle*n_particle + 0.2114;
-    complex_t n_avg = std::sqrt(surface_filling_ratio*avg_n_squared_meso +
-                                1.0 - surface_filling_ratio);
-    complex_t n_particle_adapted =
-        std::sqrt(n_avg*n_avg + n_particle*n_particle - 1.0);
-
-    const IMaterial *particle_adapted_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle_adapted);
-
-
-    FormFactorCylinder ff_meso(0.2*Units::micrometer, meso_radius);
-
-    // Create multilayer
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-7.57e-6, 1.73e-7);
-
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_average_layer_material =
-        MaterialManager::getHomogeneousMaterial("Averagelayer", n_avg);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer avg_layer;
-    avg_layer.setMaterial(p_average_layer_material);
-    avg_layer.setThickness(0.2*Units::micrometer);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    IInterferenceFunction *p_interference_function =
-        new InterferenceFunctionNone();
-    ParticleDecoration particle_decoration;
-    double nanoparticle_radius = 5.4*Units::nanometer;
-    const IFormFactor* p_meso_form_factor =& ff_meso;
-    Lattice lat = Lattice::createTrigonalLattice
-        (nanoparticle_radius*2.0, nanoparticle_radius*2.0*2.3);
-    kvector_t bas_a = lat.getBasisVectorA();
-    kvector_t bas_b = lat.getBasisVectorB();
-    kvector_t bas_c = lat.getBasisVectorC();
-    Particle particle(particle_adapted_material,
-                      new FormFactorFullSphere(nanoparticle_radius));
-    kvector_t position_0 = kvector_t(0.0, 0.0, 0.0);
-    kvector_t position_1 = 1.0/3.0*(2.0*bas_a + bas_b + bas_c);
-    kvector_t position_2 = 1.0/3.0*(bas_a + 2.0*bas_b + 2.0*bas_c);
-    std::vector<kvector_t> pos_vector;
-    pos_vector.push_back(position_0);
-    pos_vector.push_back(position_1);
-    pos_vector.push_back(position_2);
-    LatticeBasis basis(particle, pos_vector);
-    Crystal npc(basis, lat);
-    MesoCrystal *meso_crystal =
-        new MesoCrystal(npc.clone(), p_meso_form_factor->clone());
-    particle_decoration.addParticle(meso_crystal, 0.2*Units::micrometer);
-    particle_decoration.setTotalParticleSurfaceDensity(surface_density);
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    avg_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(avg_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-
-}
-
-//! Functional test: Formfactor of a box.
-
-ISample *StandardSamples::FormFactor_Box()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorBox(5*Units::nanometer,
-                                        5*Units::nanometer,
-                                        5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a cone.
-
-ISample *StandardSamples::FormFactor_Cone()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorCone(5*Units::nanometer,
-                                         5*Units::nanometer,
-                                         Units::deg2rad(54.73 ))));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a sphere.
-
-ISample *StandardSamples::FormFactor_Sphere()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorSphere(5*Units::nanometer,
-                                           5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction
-(new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-// Functional test: Formfactor of an ellipsoid.
-
-ISample *StandardSamples::FormFactor_Ellipsoid()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorEllipsoid(5*Units::nanometer,
-                                              5*Units::nanometer,
-                                              5*Units::nanometer,
-                                              Units::deg2rad(54.73 ))));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a full spheroid.
-
-ISample *StandardSamples::FormFactor_FullSpheroid()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-5, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorFullSpheroid(5*Units::nanometer,
-                                                 7*Units::nanometer )));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a hemi spheroid.
-
-ISample *StandardSamples::FormFactor_HemiSpheroid()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-7, 2e-8);
-    complex_t n_particle(1.0-6e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorHemiSpheroid(5*Units::nanometer,
-                                                 4*Units::nanometer,
-                                                 2*Units::nanometer)));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a parallelepiped.
-
-ISample *StandardSamples::FormFactor_Parallelpiped()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_particle_shell(1.0-1e-4, 2e-8);
-    complex_t n_particle_core(1.0-6e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air11", n_air);
-
-    const IMaterial *shell_material =
-            MaterialManager::getHomogeneousMaterial("Shell", n_particle_shell);
-    const IMaterial *core_material =
-            MaterialManager::getHomogeneousMaterial("Core", n_particle_core);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Particle shell_particle(shell_material,
-                            new FormFactorParallelepiped(8*Units::nanometer,
-                                                         8*Units::nanometer));
-    Particle core_particle(core_material,
-                           new FormFactorParallelepiped(7*Units::nanometer,
-                                                        6*Units::nanometer));
-    kvector_t core_position(0.0, 0.0, 0.0);
-    ParticleCoreShell particle(shell_particle, core_particle, core_position);
-    ParticleDecoration particle_decoration(particle.clone());
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a cylinder.
-
-ISample *StandardSamples::FormFactor_Cylinder()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_particle_shell(1.0-1e-4, 2e-8);
-    complex_t n_particle_core(1.0-6e-5, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air11", n_air);
-    const IMaterial *shell_material =
-            MaterialManager::getHomogeneousMaterial("Shell", n_particle_shell);
-    const IMaterial *core_material =
-            MaterialManager::getHomogeneousMaterial("Core", n_particle_core);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Particle shell_particle(shell_material,
-                            new FormFactorCylinder(8*Units::nanometer,
-                                                   8*Units::nanometer));
-    Particle core_particle(core_material,
-                           new FormFactorCylinder(7*Units::nanometer,
-                                                  6*Units::nanometer));
-    kvector_t core_position(0.0, 0.0, 0.0);
-    ParticleCoreShell particle(shell_particle, core_particle, core_position);
-    ParticleDecoration particle_decoration(particle.clone());
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-
-    p_multi_layer->addLayer(air_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a pyramid.
-
-ISample *StandardSamples::FormFactor_Pyramid()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-6e-6, 2e-8);
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorPyramid(5*Units::nanometer,
-                                            5*Units::nanometer,
-                                            Units::deg2rad(54.73 ) ) ) );
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of Prism3.
-
-ISample *StandardSamples::FormFactor_Prism3()
-{
-    MultiLayer *p_multi_layer = new MultiLayer();
-    complex_t n_air(1.0, 0.0);
-    complex_t n_substrate(1.0-7e-6, 2e-8);
-    complex_t n_particle(1.0-8e-4, 2e-8);
-    const IMaterial *p_air_material =
-        MaterialManager::getHomogeneousMaterial("Air", n_air);
-    const IMaterial *p_substrate_material =
-        MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-    ParticleDecoration particle_decoration
-        (new Particle(particle_material,
-                      new FormFactorPrism3(5*Units::nanometer,
-                                           5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction
-        (new InterferenceFunctionNone());
-
-    air_layer.setDecoration(particle_decoration);
-
-    p_multi_layer->addLayer(air_layer);
-    p_multi_layer->addLayer(substrate_layer);
-    return p_multi_layer;
-}
-
-//! Functional test: Formfactor of a full sphere.
-
-ISample *StandardSamples::FormFactor_FullSphere()
-{
-     MultiLayer *p_multi_layer = new MultiLayer();
-     complex_t n_air(1.0, 0.0);
-     complex_t n_substrate(1.0-6e-6, 2e-8);
-     complex_t n_particle(1.0-6e-4, 2e-8);
-     const IMaterial *p_air_material =
-         MaterialManager::getHomogeneousMaterial("Air", n_air);
-     const IMaterial *p_substrate_material =
-         MaterialManager::getHomogeneousMaterial("Substrate", n_substrate);
-     const IMaterial *particle_material =
-             MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-     Layer air_layer;
-     air_layer.setMaterial(p_air_material);
-     Layer substrate_layer;
-     substrate_layer.setMaterial(p_substrate_material);
-     ParticleDecoration particle_decoration
-         (new Particle(particle_material,
-                       new FormFactorFullSphere(5*Units::nanometer ) ) );
-     particle_decoration.addInterferenceFunction
-         (new InterferenceFunctionNone());
-
-     air_layer.setDecoration(particle_decoration);
-
-     p_multi_layer->addLayer(air_layer);
-     p_multi_layer->addLayer(substrate_layer);
-     return p_multi_layer;
-}
-
-//! Multilayer specular magnetic testcase
-
-ISample *StandardSamples::MultilayerSpecularMagneticTestCase()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience", 0.0, 0.0 );
-    kvector_t magnetic_field(0.0, 1.0, 0.0);
-    const IMaterial *mPartA =
-        MaterialManager::getHomogeneousMagneticMaterial
-        ("PartA", 5e-6, 0.0, magnetic_field);
-    const IMaterial *mPartB =
-        MaterialManager::getHomogeneousMagneticMaterial
-        ("PartB", 8e-6, 0.0, -magnetic_field );
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", 15e-6, 0.0 );
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-
-    Layer lPartA;
-    lPartA.setMaterial(mPartA, 5.0*Units::nanometer);
-
-    Layer lPartB;
-    lPartB.setMaterial(mPartB, 5.0*Units::nanometer);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate, 0);
-
-    MultiLayer *mySample = new MultiLayer;
-
-    // adding layers
-    mySample->addLayer(lAmbience);
-
-    const unsigned nrepetitions = 10;
-    for(unsigned i=0; i<nrepetitions; ++i) {
-        mySample->addLayer(lPartA);
-        mySample->addLayer(lPartB);
-    }
-
-    mySample->addLayer(lSubstrate);
-
-    return mySample;
-}
-
-//! Polarized DWBA test case
-
-ISample *StandardSamples::PolarizedDWBATestCase()
-{
-    const IMaterial *mAmbience =
-        MaterialManager::getHomogeneousMaterial
-        ("ambience", 0.0, 0.0 );
-    kvector_t magnetic_field(0.0, 1.0, 0.0);
-    const IMaterial *mPart =
-        MaterialManager::getHomogeneousMagneticMaterial
-        ("particle", 5e-6, 0.0, magnetic_field);
-//    const IMaterial *mPart =
-//        MaterialManager::getHomogeneousMaterial
-//        ("particle", 5e-6, 0.0);
-    const IMaterial *mSubstrate =
-        MaterialManager::getHomogeneousMaterial
-        ("substrate", 15e-6, 0.0 );
-
-    Layer lAmbience;
-    lAmbience.setMaterial(mAmbience, 0);
-
-    Layer lSubstrate;
-    lSubstrate.setMaterial(mSubstrate, 0);
-
-    ParticleDecoration particle_decoration;
-
-    particle_decoration.addParticle(
-                new Particle(mPart,
-                             new FormFactorCylinder(
-                                     5.0*Units::nanometer,
-                                     5.0*Units::nanometer)
-                             ));
-    particle_decoration.addInterferenceFunction(new InterferenceFunctionNone());
-
-    //LayerDecorator air_layer_decorator(air_layer, particle_decoration);
-    lAmbience.setDecoration(particle_decoration);
-
-    MultiLayer *mySample = new MultiLayer;
-
-    // adding layers
-    mySample->addLayer(lAmbience);
-
-    mySample->addLayer(lSubstrate);
-
-    return mySample;
-}
-
diff --git a/App/src/TestIsGISAXS8.cpp b/App/src/TestIsGISAXS8.cpp
deleted file mode 100644
index 2ad842f9329..00000000000
--- a/App/src/TestIsGISAXS8.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// ************************************************************************** //
-//                                                                         
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      App/src/TestIsGISAXS8.cpp
-//! @brief     Implements class TestIsGISAXS8.
-//
-//! Homepage:  apps.jcns.fz-juelich.de/BornAgain
-//! License:   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#include "TestIsGISAXS8.h"
-#include "IsGISAXS08.h"
-#include "IsGISAXSTools.h"
-#include "OutputDataIOFactory.h"
-#include "Utils.h"
-
-#include <fstream>
-
-
-TestIsGISAXS8::TestIsGISAXS8() : IApplicationTest("TestIsGISAXS8")
-{
-    setOutputPath(Utils::FileSystem::GetPathToData("../Tests/ReferenceData/IsGISAXS/ex-8/" ));
-}
-
-
-void TestIsGISAXS8::execute()
-{
-    FunctionalTests::IsGISAXS08 test;
-
-    test.run2DDL();
-    OutputDataIOFactory::writeIntensityData(*test.getOutputData(FunctionalTests::IsGISAXS08::kTest_2DDL), "this_2DDL_lattice.ima");
-
-    test.run2DDL2();
-    OutputDataIOFactory::writeIntensityData(*test.getOutputData(FunctionalTests::IsGISAXS08::kTest_2DDL2), "this_2DDL_lattice2.ima");
-}
-
-
-void TestIsGISAXS8::finalise()
-{
-    std::vector< CompareStruct > tocompare;
-    tocompare.push_back( CompareStruct(getOutputPath()+"isgi_2DDL_lattice.ima.gz", "this_2DDL_lattice.ima", "Cylinder 2DDL lattice") );
-    tocompare.push_back( CompareStruct(getOutputPath()+"isgi_2DDL_lattice2.ima.gz", "this_2DDL_lattice2.ima", "Cylinder 2DDL lattice with isotropic pdfs") );
-
-    for(size_t i=0; i<tocompare.size(); ++i) {
-        OutputData<double> *isgi_data = OutputDataIOFactory::readIntensityData(tocompare[i].isginame);
-        OutputData<double> *our_data = OutputDataIOFactory::readIntensityData(tocompare[i].thisname);
-
-        IsGISAXSTools::drawOutputDataComparisonResults(*our_data, *isgi_data, tocompare[i].descr, tocompare[i].descr);
-
-        delete isgi_data;
-        delete our_data;
-    }
-}
-
-
-
diff --git a/Core/StandardSamples/FunctionalTestRegistry.cpp b/Core/StandardSamples/FunctionalTestRegistry.cpp
index 6b324dd8db2..fca3d15e978 100644
--- a/Core/StandardSamples/FunctionalTestRegistry.cpp
+++ b/Core/StandardSamples/FunctionalTestRegistry.cpp
@@ -51,6 +51,14 @@ FunctionalTestRegistry::Catalogue::Catalogue()
         "Mixture of different particles a la IsGISAXS morphology file",
         "isgisaxs07_reference.ima.gz", 2e-10);
 
+    add("isgisaxs08a",
+        "2DDL paracrystal lattice",
+        "isgisaxs08_reference_2DDL_lattice.ima.gz", 2e-10);
+    add("isgisaxs08b",
+        "2D paracrystal lattice with isotropic pdfs",
+        "isgisaxs08_reference_2DDL_lattice2.ima.gz", 2e-10);
+
+
 
 }
 
diff --git a/Core/StandardSamples/IsGISAXS08Builder.cpp b/Core/StandardSamples/IsGISAXS08Builder.cpp
index 75e462ea8ec..b7f564398aa 100644
--- a/Core/StandardSamples/IsGISAXS08Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS08Builder.cpp
@@ -7,11 +7,11 @@
 #include "Units.h"
 #include "ParticleBuilder.h"
 
-IsGISAXS08Para1DBuilder::IsGISAXS08Para1DBuilder()
+IsGISAXS08ABuilder::IsGISAXS08ABuilder()
 {
 }
 
-ISample *IsGISAXS08Para1DBuilder::buildSample() const
+ISample *IsGISAXS08ABuilder::buildSample() const
 {
     MultiLayer *multi_layer = new MultiLayer();
 
@@ -52,12 +52,12 @@ ISample *IsGISAXS08Para1DBuilder::buildSample() const
 // -----------------------------------------------------------------------------
 //
 
-IsGISAXS08Para2DBuilder::IsGISAXS08Para2DBuilder()
+IsGISAXS08BBuilder::IsGISAXS08BBuilder()
 {
 }
 
 // IsGISAXS8 functional test: 2D paracrystal lattice with isotropic pdfs
-ISample *IsGISAXS08Para2DBuilder::buildSample() const
+ISample *IsGISAXS08BBuilder::buildSample() const
 {
     MultiLayer *multi_layer = new MultiLayer();
 
diff --git a/Core/StandardSamples/IsGISAXS08Builder.h b/Core/StandardSamples/IsGISAXS08Builder.h
index cf45c17cb2c..1917f22441c 100644
--- a/Core/StandardSamples/IsGISAXS08Builder.h
+++ b/Core/StandardSamples/IsGISAXS08Builder.h
@@ -5,20 +5,20 @@
 
 //! The IsGISAXS08Builder class to build sample: 2D paracrystal lattice
 //! (IsGISAXS example #8)
-class IsGISAXS08Para1DBuilder : public ISampleBuilder
+class IsGISAXS08ABuilder : public ISampleBuilder
 {
 public:
-    IsGISAXS08Para1DBuilder();
+    IsGISAXS08ABuilder();
     ISample *buildSample() const;
 };
 
 
 //! The IsGISAXS08Builder class to build sample: 2D paracrystal lattice
 //! with isotropic pdfs (IsGISAXS example #8)
-class IsGISAXS08Para2DBuilder : public ISampleBuilder
+class IsGISAXS08BBuilder : public ISampleBuilder
 {
 public:
-    IsGISAXS08Para2DBuilder();
+    IsGISAXS08BBuilder();
     ISample *buildSample() const;
 };
 
diff --git a/Core/StandardSamples/SampleBuilderFactory.cpp b/Core/StandardSamples/SampleBuilderFactory.cpp
index e7004c5d3db..6e820a75e5e 100644
--- a/Core/StandardSamples/SampleBuilderFactory.cpp
+++ b/Core/StandardSamples/SampleBuilderFactory.cpp
@@ -71,14 +71,14 @@ SampleBuilderFactory::SampleBuilderFactory()
         "Mixture of different particles a la IsGISAXS morphology file");
 
     registerItem(
-        "isgisaxs08_2DDL",
-        IFactoryCreateFunction<IsGISAXS08Para1DBuilder, ISampleBuilder>,
-        "IsGISAXS08 example, 2DDL lattice");
+        "isgisaxs08a",
+        IFactoryCreateFunction<IsGISAXS08ABuilder, ISampleBuilder>,
+        "2DDL paracrystal lattice");
 
     registerItem(
-        "isgisaxs08_2DDL2",
-        IFactoryCreateFunction<IsGISAXS08Para2DBuilder, ISampleBuilder>,
-        "IsGISAXS08 example, 2D paracrystal lattice with isotropic pdfs");
+        "isgisaxs08b",
+        IFactoryCreateFunction<IsGISAXS08BBuilder, ISampleBuilder>,
+        "2D paracrystal lattice with isotropic pdfs");
 
     registerItem(
         "isgisaxs09",
diff --git a/Core/StandardSamples/SimulationRegistry.cpp b/Core/StandardSamples/SimulationRegistry.cpp
index 8b7f7b693e1..090f81cea6d 100644
--- a/Core/StandardSamples/SimulationRegistry.cpp
+++ b/Core/StandardSamples/SimulationRegistry.cpp
@@ -50,12 +50,11 @@ SimulationRegistry::SimulationRegistry()
 
 
     registerItem(
-        "isgisaxs08_2DDL", StandardSimulations::IsGISAXS082DDL,
-        "IsGISAXS08 example, 2DDL lattice");
-
+        "isgisaxs08a", StandardSimulations::IsGISAXS08a,
+        "2DDL paracrystal lattice");
     registerItem(
-        "isgisaxs08_2DDL2", StandardSimulations::IsGISAXS082DDL2,
-        "IsGISAXS08 example, 2DDL lattice with isotropic pdfs");
+        "isgisaxs08b", StandardSimulations::IsGISAXS08b,
+        "2DDL paracrystal lattice with isotropic pdfs");
 
     registerItem(
         "isgisaxs09", StandardSimulations::IsGISAXS09,
diff --git a/Core/StandardSamples/StandardSimulations.cpp b/Core/StandardSamples/StandardSimulations.cpp
index 8df3771c130..404995d0b31 100644
--- a/Core/StandardSamples/StandardSimulations.cpp
+++ b/Core/StandardSamples/StandardSimulations.cpp
@@ -241,10 +241,10 @@ Simulation *StandardSimulations::IsGISAXS07()
     return result;
 }
 
-Simulation *StandardSimulations::IsGISAXS082DDL()
+Simulation *StandardSimulations::IsGISAXS08a()
 {
     SampleBuilderFactory factory;
-    ISampleBuilder *builder = factory.createBuilder("isgisaxs08_2DDL");
+    ISampleBuilder *builder = factory.createBuilder("isgisaxs08a");
 
     Simulation *result = new Simulation();
 
@@ -258,10 +258,10 @@ Simulation *StandardSimulations::IsGISAXS082DDL()
     return result;
 }
 
-Simulation *StandardSimulations::IsGISAXS082DDL2()
+Simulation *StandardSimulations::IsGISAXS08b()
 {
     SampleBuilderFactory factory;
-    ISampleBuilder *builder = factory.createBuilder("isgisaxs08_2DDL2");
+    ISampleBuilder *builder = factory.createBuilder("isgisaxs08b");
 
     Simulation *result = new Simulation();
 
diff --git a/Core/StandardSamples/StandardSimulations.h b/Core/StandardSamples/StandardSimulations.h
index 74dcbc02ca7..07f24506289 100644
--- a/Core/StandardSamples/StandardSimulations.h
+++ b/Core/StandardSamples/StandardSimulations.h
@@ -20,8 +20,8 @@ Simulation *IsGISAXS06L2();
 Simulation *IsGISAXS06L3();
 Simulation *IsGISAXS06L4();
 Simulation *IsGISAXS07();
-Simulation *IsGISAXS082DDL();
-Simulation *IsGISAXS082DDL2();
+Simulation *IsGISAXS08a();
+Simulation *IsGISAXS08b();
 Simulation *IsGISAXS09();
 Simulation *IsGISAXS09R();
 Simulation *IsGISAXS10();
diff --git a/Tests/FunctionalTests/TestCore/CMakeLists.txt b/Tests/FunctionalTests/TestCore/CMakeLists.txt
index dcedbe9f7b3..8318f95b69f 100644
--- a/Tests/FunctionalTests/TestCore/CMakeLists.txt
+++ b/Tests/FunctionalTests/TestCore/CMakeLists.txt
@@ -17,8 +17,8 @@ set(list_of_tests
     "IsGISAXS06L3"
     "IsGISAXS06L4"
     "IsGISAXS07"
-    "IsGISAXS082DDL"
-    "IsGISAXS082DDL2"
+    "IsGISAXS08a"
+    "IsGISAXS08b"
     "IsGISAXS09P"
     "IsGISAXS09R"
     "IsGISAXS10"
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp
deleted file mode 100644
index fac2f70a457..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "IsGISAXS08.h"
-#include "MultiLayer.h"
-#include "ParticleDecoration.h"
-#include "ParticleBuilder.h"
-#include "InterferenceFunction2DParaCrystal.h"
-#include "FormFactorCylinder.h"
-#include "Simulation.h"
-#include "Units.h"
-#include "MaterialManager.h"
-#include "OutputDataIOFactory.h"
-#include "Utils.h"
-#include "MathFunctions.h"
-
-#include <iostream>
-#include <cmath>
-
-FunctionalTests::IsGISAXS08::IsGISAXS08()
-    : m_name("IsGISAXS08")
-    , m_description("2DDL paracrystal")
-{
-    m_results.resize(kNumberOfTests, 0);
-}
-
-
-FunctionalTests::IsGISAXS08::~IsGISAXS08()
-{
-    for(results_t::iterator it = m_results.begin(); it!=m_results.end(); ++it) delete (*it);
-}
-
-
-// IsGISAXS8 functional test: 2DDL lattice
-void FunctionalTests::IsGISAXS08::run2DDL()
-{
-    // building sample
-    MultiLayer multi_layer;
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-            MaterialManager::getHomogeneousMaterial("Air", 0.0, 0.0);
-    const IMaterial *p_substrate_material =
-            MaterialManager::getHomogeneousMaterial("Substrate", 6e-6, 2e-8);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-
-    InterferenceFunction2DParaCrystal *p_interference_function =
-            new InterferenceFunction2DParaCrystal(10.0*Units::nanometer,
-                    10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes(20.0*Units::micrometer,
-            20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 2.0*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 2.0*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration( new Particle(particle_material,
-            new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    multi_layer.addLayer(air_layer);
-    multi_layer.addLayer(substrate_layer);
-
-    // building simulation
-    Simulation simulation;
-    simulation.setDetectorParameters(100, 0.0*Units::degree, 2.0*Units::degree,
-            100, 0.0*Units::degree, 2.0*Units::degree, true);
-    simulation.setBeamParameters(1.0*Units::angstrom, 0.2*Units::degree,
-            0.0*Units::degree);
-    simulation.setSample(multi_layer);
-
-    // running simulation and copying data
-    simulation.runSimulation();
-    m_results[kTest_2DDL] = simulation.getIntensityData();
-}
-
-
-// IsGISAXS8 functional test: 2D paracrystal lattice with isotropic pdfs
-void FunctionalTests::IsGISAXS08::run2DDL2()
-{
-    // building sample
-    MultiLayer multi_layer;
-    complex_t n_particle(1.0-6e-4, 2e-8);
-    const IMaterial *p_air_material =
-            MaterialManager::getHomogeneousMaterial("Air", 0.0, 0.0);
-    const IMaterial *p_substrate_material =
-            MaterialManager::getHomogeneousMaterial("Substrate", 6e-6, 2e-8);
-    const IMaterial *particle_material =
-            MaterialManager::getHomogeneousMaterial("Particle", n_particle);
-
-    Layer air_layer;
-    air_layer.setMaterial(p_air_material);
-    Layer substrate_layer;
-    substrate_layer.setMaterial(p_substrate_material);
-
-    InterferenceFunction2DParaCrystal *p_interference_function =
-            new InterferenceFunction2DParaCrystal(10.0*Units::nanometer,
-                    10.0*Units::nanometer, M_PI/2.0, 0.0, 0.0);
-    p_interference_function->setDomainSizes(20.0*Units::micrometer,
-            20.0*Units::micrometer);
-    FTDistribution2DCauchy pdf1(0.5*Units::nanometer, 0.5*Units::nanometer);
-    FTDistribution2DCauchy pdf2(0.5*Units::nanometer, 0.5*Units::nanometer);
-    p_interference_function->setProbabilityDistributions(pdf1, pdf2);
-    ParticleDecoration particle_decoration( new Particle(particle_material,
-            new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
-    particle_decoration.addInterferenceFunction(p_interference_function);
-
-    air_layer.setDecoration(particle_decoration);
-
-    multi_layer.addLayer(air_layer);
-    multi_layer.addLayer(substrate_layer);
-
-    // building simulation
-    Simulation simulation;
-    simulation.setDetectorParameters(100, 0.0*Units::degree, 2.0*Units::degree,
-            100, 0.0*Units::degree, 2.0*Units::degree, true);
-    simulation.setBeamParameters(1.0*Units::angstrom, 0.2*Units::degree,
-            0.0*Units::degree);
-
-    // running simulation and copying data
-    simulation.setSample(multi_layer);
-    simulation.runSimulation();
-    m_results[kTest_2DDL2] = simulation.getIntensityData();
-}
-
-
-int FunctionalTests::IsGISAXS08::analyseResults(const std::string &path_to_data)
-{
-    const double threshold(2e-10);
-    const char *reference_files[kNumberOfTests] = {
-            "isgisaxs08_reference_2DDL_lattice.ima.gz",
-            "isgisaxs08_reference_2DDL_lattice2.ima.gz"};
-    bool status_ok(true);
-
-    // retrieving reference data and generated examples
-    for(size_t i_test=0; i_test<kNumberOfTests; ++i_test) {
-        OutputData<double> *reference = OutputDataIOFactory::readIntensityData(
-                path_to_data + reference_files[i_test]);
-        OutputData<double> *result = m_results[i_test];
-
-        // calculating average relative difference
-        *result -= *reference;
-        *result /= *reference;
-        delete reference;
-
-        double diff(0);
-        for(OutputData<double>::const_iterator it=result->begin();
-                it!=result->end(); ++it) {
-            diff+= std::fabs(*it);
-        }
-        diff /= result->getAllocatedSize();
-        if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false;
-    }
-
-    std::cout << m_name << " " << m_description << " " <<
-            (status_ok ? "[OK]" : "[FAILED]") << std::endl;
-    return (status_ok ? 0 : 1);
-}
-
-
-#ifdef STANDALONE
-std::string GetPathToData(int argc, char **argv)
-{
-    if(argc == 2) return argv[1];
-    return Utils::FileSystem::GetPathToData("../../../ReferenceData/BornAgain/", argv[0]);
-}
-
-int main(int argc, char **argv)
-{
-    FunctionalTests::IsGISAXS08 test;
-    test.run2DDL();
-    test.run2DDL2();
-    return test.analyseResults(GetPathToData(argc, argv));
-}
-#endif
-
-
-
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.h b/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.h
deleted file mode 100644
index 0a85dc3b52c..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef FUNCTIONALTESTS_ISGISAXS08_H
-#define FUNCTIONALTESTS_ISGISAXS08_H
-
-
-#include <string>
-#include "OutputData.h"
-
-class MultiLayer;
-class Simulation;
-
-namespace FunctionalTests {
-
-class IsGISAXS08
-{
- public:
-    typedef std::vector<OutputData<double> *> results_t;
-    enum keys_results { kTest_2DDL, kTest_2DDL2, kNumberOfTests };
-
-    IsGISAXS08();
-    ~IsGISAXS08();
-
-    void run2DDL(), run2DDL2();
-    int analyseResults(const std::string &path_to_data = std::string());
-
-    const OutputData<double> *getOutputData(size_t ntest=0) { return m_results.at(ntest); }
-
- private:
-    std::string m_name;
-    std::string m_description;
-    results_t m_results;
-};
-
-
-}
-
-
-
-#endif
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.pro b/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.pro
deleted file mode 100644
index f74c0e41ca8..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-TEMPLATE = app
-CONFIG  += console
-CONFIG  -= qt app_bundle
-QT      -= core gui
-
-include($$PWD/../../../../shared.pri)
-DEFINES += STANDALONE
-
-INCLUDEPATH *= $$EIGEN_INCLUDE_DIR
-INCLUDEPATH *= $$BOOST_INCLUDE_DIR
-INCLUDEPATH += $$BornAgainCore_INCLUDE_DIR
-LIBS += $$BOOST_LIBRARY $$BornAgainCore_LIBRARY
-
-SOURCES += IsGISAXS08.cpp
-HEADERS += IsGISAXS08.h
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp
deleted file mode 100644
index 83ae4af2831..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "IsGISAXS082DDL.h"
-#include "OutputDataIOFactory.h"
-#include "SampleBuilderFactory.h"
-#include "Simulation.h"
-#include "Units.h"
-#include "Utils.h"
-#include "MathFunctions.h"
-#include "SimulationRegistry.h"
-#include "OutputDataFunctions.h"
-#include <iostream>
-#include <cmath>
-
-FunctionalTests::IsGISAXS082DDL::IsGISAXS082DDL()
-    : m_name("IsGISAXS082DDL")
-    , m_description("2D Paracrystal lattice")
-    , m_result(0)
-	, m_reference(0)
-{ }
-
-
-void FunctionalTests::IsGISAXS082DDL::run(const std::string &path_to_data)
-{
-
-    SimulationRegistry sim_registry;
-    Simulation *simulation = sim_registry.createSimulation("isgisaxs08_2DDL");
-
-    // loading reference data
-    std::string filename = path_to_data + "isgisaxs08_reference_2DDL_lattice.ima.gz";
-    m_reference = OutputDataIOFactory::readIntensityData(filename);
-
-    simulation->runSimulation();
-
-    m_result = simulation->getIntensityData();
-    delete simulation;
-}
-
-
-int FunctionalTests::IsGISAXS082DDL::analyseResults()
-{
-    const double threshold(2e-10);
-
-    // Calculating average relative difference.
-    double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference);
-
-    // Assess result.
-	bool status_ok(true);
-    if( diff > threshold ) status_ok=false;
-
-    std::cout << " diff " << diff << std::endl;
-    std::cout << m_name << " " << m_description << " " <<
-            (status_ok ? "[OK]" : "[FAILED]") << std::endl;
-    return (status_ok ? 0 : 1);
-}
-
-
-#ifdef STANDALONE
-std::string GetPathToData(int argc, char **argv)
-{
-    if(argc == 2) return argv[1];
-    return Utils::FileSystem::GetPathToData("../../../ReferenceData/BornAgain/", argv[0]);
-}
-
-int main(int argc, char **argv)
-{
-    FunctionalTests::IsGISAXS082DDL test;
-    test.run(GetPathToData(argc, argv));
-    return test.analyseResults();
-}
-#endif
-
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.h b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.h
deleted file mode 100644
index 08bf175357f..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef FUNCTIONALTESTS_ISGISAXS082DDL_H
-#define FUNCTIONALTESTS_ISGISAXS082DDL_H
-
-#include "ISampleBuilder.h"
-#include <string>
-#include "OutputData.h"
-
-namespace FunctionalTests {
-
-class IsGISAXS082DDL
-{
- public:
-    IsGISAXS082DDL();
-    ~IsGISAXS082DDL() { delete m_result; delete m_reference; }
-    void run(const std::string &path_to_data = std::string());
-    int analyseResults();
-//    const OutputData<double> *getOutputData() { return m_result;}
- private:
-    std::string m_name;
-    std::string m_description;
-    OutputData<double> *m_result;
-    OutputData<double> *m_reference;
-};
-
-}
-
-#endif
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp
deleted file mode 100644
index f9128facbb7..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "IsGISAXS082DDL2.h"
-#include "OutputDataIOFactory.h"
-#include "SampleBuilderFactory.h"
-#include "Simulation.h"
-#include "Units.h"
-#include "Utils.h"
-#include "MathFunctions.h"
-#include "SimulationRegistry.h"
-#include "OutputDataFunctions.h"
-#include <iostream>
-#include <cmath>
-
-FunctionalTests::IsGISAXS082DDL2::IsGISAXS082DDL2()
-    : m_name("IsGISAXS042DDL")
-    , m_description("2D Paracrystal lattice with isotropic pdfs")
-    , m_result(0)
-	, m_reference(0)
-{ }
-
-
-void FunctionalTests::IsGISAXS082DDL2::run(const std::string &path_to_data)
-{
-
-    SimulationRegistry sim_registry;
-    Simulation *simulation = sim_registry.createSimulation("isgisaxs08_2DDL2");
-
-    // loading reference data
-    std::string filename = path_to_data + "isgisaxs08_reference_2DDL_lattice2.ima.gz";
-    m_reference = OutputDataIOFactory::readIntensityData(filename);
-
-    simulation->runSimulation();
-
-    m_result = simulation->getIntensityData();
-    delete simulation;
-}
-
-
-int FunctionalTests::IsGISAXS082DDL2::analyseResults()
-{
-    const double threshold(2e-10);
-
-    // Calculating average relative difference.
-    double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference);
-
-    // Assess result.
-	bool status_ok(true);
-    if( diff > threshold ) status_ok=false;
-
-    std::cout << " diff " << diff << std::endl;
-    std::cout << m_name << " " << m_description << " " <<
-            (status_ok ? "[OK]" : "[FAILED]") << std::endl;
-    return (status_ok ? 0 : 1);
-}
-
-
-#ifdef STANDALONE
-std::string GetPathToData(int argc, char **argv)
-{
-    if(argc == 2) return argv[1];
-    return Utils::FileSystem::GetPathToData("../../../ReferenceData/BornAgain/", argv[0]);
-}
-
-int main(int argc, char **argv)
-{
-    FunctionalTests::IsGISAXS082DDL2 test;
-    test.run(GetPathToData(argc, argv));
-    return test.analyseResults();
-}
-#endif
-
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.h b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.h
deleted file mode 100644
index 60f5aa73607..00000000000
--- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef FUNCTIONALTESTS_ISGISAXS082DDL2_H
-#define FUNCTIONALTESTS_ISGISAXS082DDL2_H
-
-#include "ISampleBuilder.h"
-#include <string>
-#include "OutputData.h"
-
-namespace FunctionalTests {
-
-class IsGISAXS082DDL2
-{
- public:
-    IsGISAXS082DDL2();
-    ~IsGISAXS082DDL2() { delete m_result; delete m_reference; }
-    void run(const std::string &path_to_data = std::string());
-    int analyseResults();
-//    const OutputData<double> *getOutputData() { return m_result;}
- private:
-    std::string m_name;
-    std::string m_description;
-    OutputData<double> *m_result;
-    OutputData<double> *m_reference;
-};
-
-}
-
-#endif
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08a/IsGISAXS082DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS08a/IsGISAXS082DDL.cpp
new file mode 100644
index 00000000000..ddfad81922c
--- /dev/null
+++ b/Tests/FunctionalTests/TestCore/IsGISAXS08a/IsGISAXS082DDL.cpp
@@ -0,0 +1,8 @@
+#include "FunctionalTestRegistry.h"
+#include "FileSystem.h"
+
+int main(int argc, char **argv)
+{
+    if(argc == 2) Utils::FileSystem::SetReferenceDataDir(argv[1]);
+    return FUNCTIONAL_TEST("isgisaxs08a");
+}
diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08b/IsGISAXS082DDL2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS08b/IsGISAXS082DDL2.cpp
new file mode 100644
index 00000000000..0ebbaec0d9e
--- /dev/null
+++ b/Tests/FunctionalTests/TestCore/IsGISAXS08b/IsGISAXS082DDL2.cpp
@@ -0,0 +1,9 @@
+#include "FunctionalTestRegistry.h"
+#include "FileSystem.h"
+
+int main(int argc, char **argv)
+{
+    if(argc == 2) Utils::FileSystem::SetReferenceDataDir(argv[1]);
+    return FUNCTIONAL_TEST("isgisaxs08b");
+}
+
-- 
GitLab