31 MultiLayer* CylindersWithSizeDistributionBuilder::buildSample()
 const 
   33     const double height(5 * Units::nanometer);
 
   34     const double radius(5 * Units::nanometer);
 
   36     Layer vacuum_layer(refMat::Vacuum);
 
   40     double sigma = 0.2 * radius;
 
   42     Particle nano_particle(refMat::Particle, p_ff_cylinder);
 
   46     double n_sigma = 2.0 * 2.0 * std::sqrt(2.0 * std::log(2.0));
 
   49     pattern.add(
"Particle").add(
"Cylinder").add(
"Radius");
 
   55     vacuum_layer.addLayout(particle_layout);
 
   66 TwoTypesCylindersDistributionBuilder::TwoTypesCylindersDistributionBuilder()
 
   67     : m_radius1(5 * 
Units::nanometer), m_radius2(10 * 
Units::nanometer),
 
   68       m_height1(5 * 
Units::nanometer), m_height2(10 * 
Units::nanometer), m_sigma1_ratio(0.2),
 
   73 MultiLayer* TwoTypesCylindersDistributionBuilder::buildSample()
 const 
   75     Layer vacuum_layer(refMat::Vacuum);
 
   81     Particle cylinder1(refMat::Particle, p_ff_cylinder1);
 
   84     Particle cylinder2(refMat::Particle, p_ff_cylinder2);
 
   88     double sigma1 = m_radius1 * m_sigma1_ratio;
 
   89     double sigma2 = m_radius2 * m_sigma2_ratio;
 
   97     pattern1.add(
"Particle").add(
"Cylinder").add(
"Radius");
 
  100     particle_layout.
addParticle(particle_collection1, 0.95);
 
  102     pattern2.add(
"Particle").add(
"Cylinder").add(
"Radius");
 
  106     particle_layout.
addParticle(particle_collection2, 0.05);
 
  108     vacuum_layer.addLayout(particle_layout);
 
  111     multi_layer->
addLayer(vacuum_layer);
 
  117 RotatedPyramidsDistributionBuilder::RotatedPyramidsDistributionBuilder()
 
  118     : m_length(10 * 
Units::nanometer), m_height(5 * 
Units::nanometer),
 
  119       m_alpha(
Units::deg2rad(54.73)), m_zangle(45. * 
Units::degree)
 
  123 MultiLayer* RotatedPyramidsDistributionBuilder::buildSample()
 const 
  127     Particle pyramid(refMat::Particle, ff_pyramid);
 
  128     pyramid.setRotation(
RotationZ(m_zangle));
 
  140     Layer vacuum_layer(refMat::Vacuum);
 
  141     Layer substrate_layer(refMat::Substrate);
 
  143     vacuum_layer.addLayout(particle_layout);
 
  146     multi_layer->
addLayer(vacuum_layer);
 
  147     multi_layer->
addLayer(substrate_layer);
 
  153 MultiLayer* SpheresWithLimitsDistributionBuilder::buildSample()
 const 
  157     Particle sphere(refMat::Particle, ff);
 
  170     Layer vacuum_layer(refMat::Vacuum);
 
  171     Layer substrate_layer(refMat::Substrate);
 
  173     vacuum_layer.addLayout(particle_layout);
 
  176     multi_layer->
addLayer(vacuum_layer);
 
  177     multi_layer->
addLayer(substrate_layer);
 
  184 MultiLayer* ConesWithLimitsDistributionBuilder::buildSample()
 const 
  187     FormFactorCone ff(10.0 * Units::nm, 13.0 * Units::nm, 60.0 * Units::deg);
 
  188     Particle cone(refMat::Particle, ff);
 
  193         "/Particle/Cone/Alpha", gauss, 5, 20.0,
 
  202     Layer vacuum_layer(refMat::Vacuum);
 
  203     Layer substrate_layer(refMat::Substrate);
 
  205     vacuum_layer.addLayout(particle_layout);
 
  208     multi_layer->
addLayer(vacuum_layer);
 
  209     multi_layer->
addLayer(substrate_layer);
 
  213 MultiLayer* LinkedBoxDistributionBuilder::buildSample()
 const 
  216     FormFactorBox ff(40.0 * Units::nm, 30.0 * Units::nm, 10.0 * Units::nm);
 
  223     parameter_distr.linkParameter(
"/Particle/Box/Width").linkParameter(
"/Particle/Box/Height");
 
  232     Layer vacuum_layer(refMat::Vacuum);
 
  233     Layer substrate_layer(refMat::Substrate);
 
  235     vacuum_layer.addLayout(particle_layout);
 
  238     multi_layer->
addLayer(vacuum_layer);
 
  239     multi_layer->
addLayer(substrate_layer);
 
Defines classes representing one-dimensional distributions.
 
Defines class MultiLayer.
 
Defines class ParameterPattern.
 
Defines class ParticleDistribution.
 
Defines classes of with different types of particle distributions.
 
Defines class ParticleLayout.
 
Defines materials in namespace refMat.
 
Defines some unit conversion factors and other constants in namespace Units.
 
Uniform distribution function with half width hwhm.
 
Gaussian distribution with standard deviation std_dev.
 
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 parametric distribution function, for use with any model parameter.
 
Helper class for constructing parameter patterns.
 
A particle type that is a parametric distribution of IParticle's.
 
Decorator class that adds particles to ISample objects.
 
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.
 
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
 
A rotation about the z axis.
 
Constants and functions for physical unit conversions.