33 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function(
39 P_interference_function->setDecayFunction(pdf);
53 multi_layer->
addLayer(substrate_layer);
65 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function{
69 P_interference_function->setDecayFunction(pdf);
83 multi_layer->
addLayer(substrate_layer);
103 std::vector<kvector_t> positions;
106 positions.push_back(position_1);
107 positions.push_back(position_2);
117 multi_layer->
addLayer(vacuum_layer);
118 multi_layer->
addLayer(substrate_layer);
130 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function{
134 P_interference_function->setDecayFunction(pdf);
141 p.setPosition(position);
148 multi_layer->
addLayer(vacuum_layer);
149 multi_layer->
addLayer(substrate_layer);
161 std::unique_ptr<InterferenceFunctionFinite2DLattice> P_interference_function{
176 multi_layer->
addLayer(vacuum_layer);
177 multi_layer->
addLayer(substrate_layer);
189 std::unique_ptr<InterferenceFunction2DSuperLattice> P_interference_function{
191 std::unique_ptr<InterferenceFunctionFinite2DLattice> P_substructure{
193 P_interference_function->setSubstructureIFF(*P_substructure);
205 substrate_layer.
addLayout(particle_layout);
208 multi_layer->
addLayer(vacuum_layer);
209 multi_layer->
addLayer(substrate_layer);
Defines class InterferenceFunction2DLattice.
Defines class InterferenceFunction2DSuperLattice.
Defines class InterferenceFunctionFinite2DLattice.
Defines class MultiLayer.
Defines class ParticleComposition.
Defines class ParticleLayout.
Defines materials in namespace refMat.
Defines class IsGISAXS06Builder.
Defines some unit conversion factors and other constants in namespace Units.
BasicVector3D< double > kvector_t
MultiLayer * buildSample() const
MultiLayer * buildSample() const
Two-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-r) in real space,...
MultiLayer * buildSample() const
void setPositionVariance(double var)
Sets the variance of the position for the calculation of the DW factor It is defined as the variance ...
Interference function of a 2D lattice.
static InterferenceFunction2DLattice * createSquare(double lattice_length, double xi)
Creates square lattice.
void setDecayFunction(const IFTDecayFunction2D &decay)
Sets two-dimensional decay function.
static InterferenceFunction2DSuperLattice * createSquare(double lattice_length, double xi, unsigned size_1, unsigned size_2)
Creates square lattice.
static InterferenceFunctionFinite2DLattice * createSquare(double lattice_length, double xi, unsigned N_1, unsigned N_2)
Creates square lattice.
A layer, with thickness (in nanometer) and material.
void addLayout(const ILayout &decoration)
Our sample model: a stack of layers one below the other.
void addLayer(const Layer &layer)
Adds object to multilayer.
A composition of particles at fixed positions.
void addParticles(const IParticle &particle, std::vector< kvector_t > positions)
Decorator class that adds particles to ISample objects.
void setInterferenceFunction(const IInterferenceFunction &interference_function)
Adds interference functions.
void setTotalParticleSurfaceDensity(double particle_density) final override
Sets total particle surface density.
void addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())
Adds particle to the layout with abundance, position and the rotation defined.
A particle with a form factor and refractive index.
MultiLayer * buildSample() const
MultiLayer * buildSample() const
MultiLayer * buildSample() const
static constexpr double deg
static constexpr double degree
static constexpr double nanometer
static const Material Vacuum
static const Material Particle
static const Material Substrate