53 multi_layer->
addLayer(substrate_layer);
92 multi_layer->
addLayer(substrate_layer);
115 const double m_corr_length(0.0);
124 std::unique_ptr<InterferenceFunction2DParaCrystal> P_interference_function{
126 m_domain_size_1, m_domain_size_2)};
128 P_interference_function->setProbabilityDistributions(pdf, pdf);
139 multi_layer->
addLayer(vacuum_layer);
140 multi_layer->
addLayer(substrate_layer);
153 std::unique_ptr<InterferenceFunction2DParaCrystal> P_interference_function{
160 P_interference_function->setProbabilityDistributions(pdf1, pdf2);
171 multi_layer->
addLayer(vacuum_layer);
172 multi_layer->
addLayer(substrate_layer);
Defines the macro ASSERT.
#define ASSERT(condition)
Defines class InterferenceFunction2DParaCrystal.
Defines class InterferenceFunctionRadialParaCrystal.
Defines class MultiLayer.
Defines classes of ParaCrystalBuilder family.
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.
std::unique_ptr< IFTDistribution2D > m_pdf2
Basic2DParaCrystalBuilder()
MultiLayer * createSampleByIndex(size_t index)
MultiLayer * buildSample() const
std::unique_ptr< IFTDistribution2D > m_pdf1
~Basic2DParaCrystalBuilder()
Gaussian IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1...
Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real spa...
Predefined Fourier transformed distributions for functional tests.
MultiLayer * buildSample() const
void setName(const std::string &name)
std::vector< std::string > keys() const
Interference function of a 2D paracrystal.
void setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)
Sets the probability distributions (Fourier transformed) for the two lattice directions.
static InterferenceFunction2DParaCrystal * createHexagonal(double lattice_length, double damping_length, double domain_size_1, double domain_size_2)
Creates hexagonal lattice.
static InterferenceFunction2DParaCrystal * createSquare(double lattice_length, double damping_length, double domain_size_1, double domain_size_2)
Creates square lattice.
void setDomainSizes(double size_1, double size_2)
Sets the sizes of coherence domains.
Interference function of radial paracrystal.
void setProbabilityDistribution(const IFTDistribution1D &pdf)
Sets one-dimensional probability distribution.
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.
Decorator class that adds particles to ISample objects.
void setInterferenceFunction(const IInterferenceFunction &interference_function)
Adds interference functions.
A particle with a form factor and refractive index.
MultiLayer * buildSample() const
MultiLayer * buildSample() const
Constants and functions for physical unit conversions.
static constexpr double micrometer
static constexpr double degree
static constexpr double nanometer
static const Material Vacuum
static const Material Particle
static const Material Substrate