28 MultiLayer* Basic2DLatticeBuilder::buildSample()
const
30 Layer vacuum_layer(refMat::Vacuum);
31 Layer substrate_layer(refMat::Substrate);
33 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function(
35 30.0 * Units::deg, 10.0 * Units::deg));
38 100.0 * Units::nanometer / 2.0 / M_PI, 0);
39 P_interference_function->setDecayFunction(pdf);
44 Particle particle(refMat::Particle, ff_cyl);
49 vacuum_layer.addLayout(particle_layout);
53 multi_layer->
addLayer(substrate_layer);
60 MultiLayer* SquareLatticeBuilder::buildSample()
const
62 Layer vacuum_layer(refMat::Vacuum);
63 Layer substrate_layer(refMat::Substrate);
65 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function{
68 100.0 * Units::nanometer / 2.0 / M_PI, 0);
69 P_interference_function->setDecayFunction(pdf);
74 Particle particle(refMat::Particle, ff_cyl);
79 vacuum_layer.addLayout(particle_layout);
83 multi_layer->
addLayer(substrate_layer);
90 MultiLayer* CenteredSquareLatticeBuilder::buildSample()
const
92 Layer vacuum_layer(refMat::Vacuum);
93 Layer substrate_layer(refMat::Substrate);
96 10.0 * Units::nanometer, M_PI / 2.0, 0);
98 100.0 * Units::nanometer / 2.0 / M_PI, 0);
99 interference_function.setDecayFunction(pdf);
102 Particle cylinder(refMat::Particle, ff_cyl);
103 std::vector<kvector_t> positions;
105 kvector_t position_2(5.0 * Units::nanometer, -5.0 * Units::nanometer, 0.0);
106 positions.push_back(position_1);
107 positions.push_back(position_2);
109 basis.addParticles(cylinder, positions);
114 vacuum_layer.addLayout(particle_layout);
117 multi_layer->
addLayer(vacuum_layer);
118 multi_layer->
addLayer(substrate_layer);
125 MultiLayer* RotatedSquareLatticeBuilder::buildSample()
const
127 Layer vacuum_layer(refMat::Vacuum);
128 Layer substrate_layer(refMat::Substrate);
130 std::unique_ptr<InterferenceFunction2DLattice> P_interference_function{
133 100.0 * Units::nanometer / 2.0 / M_PI, 30.0 * Units::degree);
134 P_interference_function->setDecayFunction(pdf);
140 Particle p(refMat::Particle, ff_cyl);
141 p.setPosition(position);
145 vacuum_layer.addLayout(particle_layout);
148 multi_layer->
addLayer(vacuum_layer);
149 multi_layer->
addLayer(substrate_layer);
156 MultiLayer* FiniteSquareLatticeBuilder::buildSample()
const
158 Layer vacuum_layer(refMat::Vacuum);
159 Layer substrate_layer(refMat::Substrate);
161 std::unique_ptr<InterferenceFunctionFinite2DLattice> P_interference_function{
168 Particle particle(refMat::Particle, ff_cyl);
173 vacuum_layer.addLayout(particle_layout);
176 multi_layer->
addLayer(vacuum_layer);
177 multi_layer->
addLayer(substrate_layer);
184 MultiLayer* SuperLatticeBuilder::buildSample()
const
186 Layer vacuum_layer(refMat::Vacuum);
187 Layer substrate_layer(refMat::Substrate);
189 std::unique_ptr<InterferenceFunction2DSuperLattice> P_interference_function{
191 std::unique_ptr<InterferenceFunctionFinite2DLattice> P_substructure{
193 P_interference_function->setSubstructureIFF(*P_substructure);
199 Particle particle(refMat::Vacuum, ff_cyl);
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.
Two-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-r) in real space,...
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.
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.
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.
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.