BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ThickAbsorptiveSampleBuilder.cpp
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Sample/StandardSamples/ThickAbsorptiveSampleBuilder.cpp
6 //! @brief Implements class to build thick highly-absorptive sample with roughness
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************** //
14 
16 #include "Base/Const/Units.h"
21 
23 {
24  Material vacuum_material = MaterialBySLD("Vacuum", 0.0, 0.0);
25  Material au_material = MaterialBySLD("Au", 3.48388057043e-05, 1.79057609656e-05);
26  Material si_material = MaterialBySLD("Si", 3.84197565094e-07, 6.28211531498e-07);
27 
28  Layer vacuum_layer(vacuum_material);
29  Layer au_layer(au_material, 200.0);
30  Layer vacuum_layer_2(vacuum_material, 10.0);
31  Layer substrate_layer(si_material);
32 
33  LayerRoughness rough(5.0, 0.5, 10.0);
34 
35  MultiLayer* multi_layer = new MultiLayer();
36  multi_layer->addLayer(vacuum_layer);
37  multi_layer->addLayer(au_layer);
38  multi_layer->addLayer(vacuum_layer_2);
39  multi_layer->addLayerWithTopRoughness(substrate_layer, rough);
40  return multi_layer;
41 }
Defines class LayerRoughness.
Defines class Layer.
Factory functions used to create material instances.
Defines class MultiLayer.
Defines class to build thick highly-absorptive sample with roughness.
Defines some unit conversion factors and other constants in namespace Units.
A roughness of interface between two layers.
A layer, with thickness (in nanometer) and material.
Definition: Layer.h:28
A wrapper for underlying material implementation.
Definition: Material.h:29
Our sample model: a stack of layers one below the other.
Definition: MultiLayer.h:42
void addLayer(const Layer &layer)
Adds object to multilayer.
Definition: MultiLayer.cpp:54
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
Definition: MultiLayer.cpp:61
MultiLayer * buildSample() const override