Skip to content
Snippets Groups Projects
Commit 07a6487e authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Added first sample creation (not implemented yet)

parent 76aea6d3
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,7 @@ SOURCES += \ ...@@ -34,6 +34,7 @@ SOURCES += \
src/TestIsGISAXS2.cpp \ src/TestIsGISAXS2.cpp \
src/TestIsGISAXS3.cpp \ src/TestIsGISAXS3.cpp \
src/TestIsGISAXS4.cpp \ src/TestIsGISAXS4.cpp \
src/TestIsGISAXS8.cpp \
src/TestIsGISAXS9.cpp \ src/TestIsGISAXS9.cpp \
src/TestIsGISAXS10.cpp \ src/TestIsGISAXS10.cpp \
src/TestIsGISAXS11.cpp \ src/TestIsGISAXS11.cpp \
...@@ -69,6 +70,7 @@ HEADERS += \ ...@@ -69,6 +70,7 @@ HEADERS += \
inc/TestIsGISAXS2.h \ inc/TestIsGISAXS2.h \
inc/TestIsGISAXS3.h \ inc/TestIsGISAXS3.h \
inc/TestIsGISAXS4.h \ inc/TestIsGISAXS4.h \
inc/TestIsGISAXS8.h \
inc/TestIsGISAXS9.h \ inc/TestIsGISAXS9.h \
inc/TestIsGISAXS10.h \ inc/TestIsGISAXS10.h \
inc/TestIsGISAXS11.h \ inc/TestIsGISAXS11.h \
......
...@@ -21,6 +21,7 @@ ISample *IsGISAXS3_CylinderBA(); ...@@ -21,6 +21,7 @@ ISample *IsGISAXS3_CylinderBA();
ISample *IsGISAXS3_CylinderBASize(); ISample *IsGISAXS3_CylinderBASize();
ISample *IsGISAXS4_1DDL(); ISample *IsGISAXS4_1DDL();
ISample *IsGISAXS4_2DDL(); ISample *IsGISAXS4_2DDL();
ISample *IsGISAXS8_2DDL_lattice();
ISample *IsGISAXS9_Pyramid(); ISample *IsGISAXS9_Pyramid();
ISample *IsGISAXS9_RotatedPyramid(); ISample *IsGISAXS9_RotatedPyramid();
ISample *IsGISAXS10_CylindersParacrystal1D(); ISample *IsGISAXS10_CylindersParacrystal1D();
......
...@@ -41,6 +41,9 @@ SampleFactory::SampleFactory() ...@@ -41,6 +41,9 @@ SampleFactory::SampleFactory()
registerItem("IsGISAXS4_1DDL", StandardSamples::IsGISAXS4_1DDL); registerItem("IsGISAXS4_1DDL", StandardSamples::IsGISAXS4_1DDL);
registerItem("IsGISAXS4_2DDL", StandardSamples::IsGISAXS4_2DDL); registerItem("IsGISAXS4_2DDL", StandardSamples::IsGISAXS4_2DDL);
// IsGISAXS8 example: cylinders on top of substrate with paracrystal lattice structure
registerItem("IsGISAXS8_2DDL_lattice", StandardSamples::IsGISAXS8_2DDL_lattice);
// IsGISAXS9 example: pyramid and rotated pyramid // IsGISAXS9 example: pyramid and rotated pyramid
registerItem("IsGISAXS9_Pyramid", StandardSamples::IsGISAXS9_Pyramid); registerItem("IsGISAXS9_Pyramid", StandardSamples::IsGISAXS9_Pyramid);
registerItem("IsGISAXS9_RotatedPyramid", StandardSamples::IsGISAXS9_RotatedPyramid); registerItem("IsGISAXS9_RotatedPyramid", StandardSamples::IsGISAXS9_RotatedPyramid);
......
...@@ -439,6 +439,55 @@ ISample *StandardSamples::IsGISAXS4_2DDL() ...@@ -439,6 +439,55 @@ ISample *StandardSamples::IsGISAXS4_2DDL()
return p_multi_layer; return p_multi_layer;
} }
/* ************************************************************************* */
// IsGISAXS8 functional test: 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::instance().addHomogeneousMaterial("Air", n_air);
const IMaterial *p_substrate_material = MaterialManager::instance().addHomogeneousMaterial("Substrate", 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(20.0*Units::nanometer,7*Units::nanometer, 1e3*Units::nanometer);
ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
particle_decoration.addInterferenceFunction(p_interference_function);
LayerDecorator air_layer_decorator(air_layer, particle_decoration);
p_multi_layer->addLayer(air_layer_decorator);
p_multi_layer->addLayer(substrate_layer);
return p_multi_layer;
}
// IsGISAXS8 functional test:
//ISample *StandardSamples::IsGISAXS4_2DDL()
//{
// 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::instance().addHomogeneousMaterial("Air", n_air);
// const IMaterial *p_substrate_material = MaterialManager::instance().addHomogeneousMaterial("Substrate", n_substrate);
// Layer air_layer;
// air_layer.setMaterial(p_air_material);
// Layer substrate_layer;
// substrate_layer.setMaterial(p_substrate_material);
// IInterferenceFunction *p_interference_function = InterferenceFunction2DParaCrystal::createHexagonal(20.0*Units::nanometer,1.0*Units::nanometer, 0.0,
// 20.0*Units::micrometer, 20.0*Units::micrometer);
// ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
// particle_decoration.addInterferenceFunction(p_interference_function);
// LayerDecorator air_layer_decorator(air_layer, particle_decoration);
//
// p_multi_layer->addLayer(air_layer_decorator);
// p_multi_layer->addLayer(substrate_layer);
// return p_multi_layer;
//}
/* ************************************************************************* */ /* ************************************************************************* */
// IsGISAXS9 functional test: pyramid // IsGISAXS9 functional test: pyramid
/* ************************************************************************* */ /* ************************************************************************* */
......
...@@ -25,27 +25,27 @@ void TestIsGISAXS8::execute() ...@@ -25,27 +25,27 @@ void TestIsGISAXS8::execute()
MultiLayer *p_sample(0); MultiLayer *p_sample(0);
// 1DDL // 2DDL_lattice
p_sample = dynamic_cast<MultiLayer *>(SampleFactory::instance().createItem("IsGISAXS8_1DDL")); p_sample = dynamic_cast<MultiLayer *>(SampleFactory::instance().createItem("IsGISAXS8_2DDL_lattice"));
experiment.setSample(*p_sample); experiment.setSample(*p_sample);
experiment.runSimulation(); experiment.runSimulation();
IsGISAXSTools::writeOutputDataToFile(*experiment.getOutputData(), m_data_path+"this_1DDL.ima"); IsGISAXSTools::writeOutputDataToFile(*experiment.getOutputData(), m_data_path+"this_2DDL_lattice.ima");
delete p_sample; delete p_sample;
// 2DDL // 2DDL
p_sample = dynamic_cast<MultiLayer *>(SampleFactory::instance().createItem("IsGISAXS4_2DDL")); // p_sample = dynamic_cast<MultiLayer *>(SampleFactory::instance().createItem("IsGISAXS4_2DDL"));
experiment.setSample(*p_sample); // experiment.setSample(*p_sample);
experiment.runSimulation(); // experiment.runSimulation();
IsGISAXSTools::writeOutputDataToFile(*experiment.getOutputData(), m_data_path+"this_2DDLh.ima"); // IsGISAXSTools::writeOutputDataToFile(*experiment.getOutputData(), m_data_path+"this_2DDLh.ima");
delete p_sample; // delete p_sample;
} }
void TestIsGISAXS8::finalise() void TestIsGISAXS8::finalise()
{ {
std::vector< CompareStruct > tocompare; std::vector< CompareStruct > tocompare;
tocompare.push_back( CompareStruct("isgi_1DDL.ima", "this_1DDL.ima", "Cylinder 1DDL") ); tocompare.push_back( CompareStruct("isgi_2DDL_lattice.ima", "this_2DDL_lattice.ima", "Cylinder 2DDL lattice") );
tocompare.push_back( CompareStruct("isgi_2DDLh.ima", "this_2DDLh.ima", "Cylinder 2DDL") ); // tocompare.push_back( CompareStruct("isgi_2DDLh.ima", "this_2DDLh.ima", "Cylinder 2DDL") );
for(size_t i=0; i<tocompare.size(); ++i) { for(size_t i=0; i<tocompare.size(); ++i) {
OutputData<double> *isgi_data = IsGISAXSTools::readOutputDataFromFile( m_data_path+tocompare[i].isginame ); OutputData<double> *isgi_data = IsGISAXSTools::readOutputDataFromFile( m_data_path+tocompare[i].isginame );
...@@ -60,11 +60,11 @@ void TestIsGISAXS8::finalise() ...@@ -60,11 +60,11 @@ void TestIsGISAXS8::finalise()
IsGISAXSTools::setMinimum(1.); IsGISAXSTools::setMinimum(1.);
// our calculations // our calculations
c1->cd(1); gPad->SetLogz(); c1->cd(1); gPad->SetLogz();
IsGISAXSTools::drawOutputDataInPad(*our_data, "CONT4 Z", "Our cylinder FF"); IsGISAXSTools::drawOutputDataInPad(*our_data, "CONT4 Z", "Our paracrystal lattice");
// isgisaxs data // isgisaxs data
c1->cd(2); gPad->SetLogz(); c1->cd(2); gPad->SetLogz();
IsGISAXSTools::drawOutputDataInPad(*isgi_data, "CONT4 Z", "IsGisaxs mean FF"); IsGISAXSTools::drawOutputDataInPad(*isgi_data, "CONT4 Z", "IsGisaxs paracrystal lattice");
// difference // difference
c1->cd(3); c1->cd(3);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment