33 LayersWithAbsorptionBuilder::LayersWithAbsorptionBuilder()
38 LayersWithAbsorptionBuilder::~LayersWithAbsorptionBuilder() =
default;
40 MultiLayer* LayersWithAbsorptionBuilder::buildSample()
const
42 const double middle_layer_thickness(60.0 * Units::nanometer);
44 Particle particle(refMat::Ag, *m_ff);
45 particle.setRotation(
RotationZ(10.0 * Units::degree));
46 particle.rotate(
RotationY(10.0 * Units::degree));
47 particle.rotate(
RotationX(10.0 * Units::degree));
48 particle.setPosition(
kvector_t(0.0, 0.0, -middle_layer_thickness / 2.0));
53 Layer vacuum_layer(refMat::Vacuum);
54 Layer middle_layer(refMat::Teflon, middle_layer_thickness);
55 Layer substrate(refMat::Substrate2);
57 middle_layer.addLayout(layout);
66 MultiLayer* LayersWithAbsorptionBuilder::createSampleByIndex(
size_t index)
68 const std::string name = ff_components.keys().at(index);
69 m_ff.reset(ff_components.getItem(name)->clone());
74 size_t LayersWithAbsorptionBuilder::size()
76 return ff_components.size();
Defines class LayerInterface.
Defines class LayersWithAbsorptionBuilder.
Defines class MultiLayer.
Defines class ParticleLayout.
Defines materials in namespace refMat.
Defines sample components for complex sample builders.
Defines some unit conversion factors and other constants in namespace Units.
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.
Decorator class that adds particles to ISample objects.
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.
A rotation about the x axis.
A rotation about the y axis.
A rotation about the z axis.
Constants and functions for physical unit conversions.