diff --git a/Core/StandardSamples/ParticleCompositionBuilder.cpp b/Core/StandardSamples/ParticleCompositionBuilder.cpp index 8c26c2417580d1ea4f19e0fe63f747d4825e349a..049ca8eb3a792551664cc09b85afa1849496d09b 100644 --- a/Core/StandardSamples/ParticleCompositionBuilder.cpp +++ b/Core/StandardSamples/ParticleCompositionBuilder.cpp @@ -14,11 +14,13 @@ // ************************************************************************** // #include "ParticleCompositionBuilder.h" -#include "FormFactorPyramid.h" -#include "InterferenceFunctionNone.h" +#include "FormFactorFullSphere.h" +#include "InterferenceFunction2DLattice.h" +#include "ParticleComposition.h" #include "Materials.h" #include "MultiLayer.h" #include "ParticleLayout.h" +#include "FTDistributions.h" #include "Units.h" @@ -41,15 +43,29 @@ ISample *ParticleCompositionBuilder::buildSample() const Layer air_layer(air_material); Layer substrate_layer(substrate_material); - FormFactorPyramid ff_pyramid(1.0, 1.0, 0.12); + double radius(10.0*Units::nanometer); + FormFactorFullSphere sphere_ff(radius); + Particle sphere(particle_material, sphere_ff); + ParticleLayout particle_layout; - Particle particle(particle_material, ff_pyramid); - ParticleLayout particle_layout(particle); + kvector_t pos0(0.0, 0.0, 0.0); + kvector_t pos1(radius, radius, std::sqrt(3.0)*radius); + std::vector<kvector_t> positions; + positions.push_back(pos0); + positions.push_back(pos1); - particle_layout.addInterferenceFunction(new InterferenceFunctionNone()); + ParticleComposition basis; - air_layer.addLayout(particle_layout); + basis.addParticles(sphere, positions); + particle_layout.addParticle(basis); + + InterferenceFunction2DLattice *interference = InterferenceFunction2DLattice::createHexagonal(radius*2.0); + FTDistribution2DCauchy pdf(10*Units::nanometer, 10*Units::nanometer); + interference->setProbabilityDistribution(pdf); + particle_layout.addInterferenceFunction(interference); + + air_layer.addLayout(particle_layout); multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); diff --git a/Tests/FunctionalTests/TestGUI/CMakeLists.txt b/Tests/FunctionalTests/TestGUI/CMakeLists.txt index 1c9a18567544ef9e34895756c9eb455186e81206..e5e5950d2cd45101d3a824b4c5f3987652b8a77a 100644 --- a/Tests/FunctionalTests/TestGUI/CMakeLists.txt +++ b/Tests/FunctionalTests/TestGUI/CMakeLists.txt @@ -21,6 +21,7 @@ set(list_of_tests "TestGUIBeamDivergence" "TestGUIDetectorResolution" "TestGUIParticleDistribution" + "TestGUIParticleComposition" ) # for some reason these flags doesn't propagated here by SetUpWindows.cmake diff --git a/Tests/FunctionalTests/TestGUI/TestGUIParticleComposition/TestGUIParticleComposition.cpp b/Tests/FunctionalTests/TestGUI/TestGUIParticleComposition/TestGUIParticleComposition.cpp new file mode 100644 index 0000000000000000000000000000000000000000..520cf177bd4bd08d77c543b0714bfb517e8856b7 --- /dev/null +++ b/Tests/FunctionalTests/TestGUI/TestGUIParticleComposition/TestGUIParticleComposition.cpp @@ -0,0 +1,6 @@ +#include "GUIFunctionalTest.h" + +int main() +{ + return GUI_FUNCTIONAL_TEST("gui_ParticleComposition"); +} diff --git a/Tests/FunctionalTests/TestPyCore/CMakeLists.txt b/Tests/FunctionalTests/TestPyCore/CMakeLists.txt index 04ca0223549f08af0994a74c2c46efec88aa2e82..e78d2427f6c82c2199174abdc15177d6bb22ee4f 100644 --- a/Tests/FunctionalTests/TestPyCore/CMakeLists.txt +++ b/Tests/FunctionalTests/TestPyCore/CMakeLists.txt @@ -42,6 +42,7 @@ set(list_of_cpp_python_tests "PyScript_isgisaxs11" "PyScript_multiplelayoutbuilder" "PyScript_ParticleDistribution" + "PyScript_ParticleComposition" ) foreach(_test ${list_of_tests}) diff --git a/Tests/FunctionalTests/TestPyCore/PyScript_ParticleComposition/PyScript_ParticleComposition.cpp b/Tests/FunctionalTests/TestPyCore/PyScript_ParticleComposition/PyScript_ParticleComposition.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f312f33d06ad1258bdc572caeb07ffcb2fae1211 --- /dev/null +++ b/Tests/FunctionalTests/TestPyCore/PyScript_ParticleComposition/PyScript_ParticleComposition.cpp @@ -0,0 +1,14 @@ +#include "PyGenTools.h" +#include "SimulationRegistry.h" + +int main() +{ + SimulationRegistry simulationRegistry; + Simulation *simulation = + simulationRegistry.createSimulation("gui_ParticleComposition"); + bool test = PyGenTools::testPyScript(simulation); + std::cout << "Python Script Generation Test for ParticleDistribution" + << (test? "[OK]" : "[FAILED]") << std::endl; + return (test ? 0 : 1); +} +