25     : m_material(std::move(material)), m_thickness(thickness)
 
   31 Layer::~Layer() = 
default;
 
   35     Layer* p_result = 
new Layer(m_material, m_thickness);
 
   36     p_result->setName(getName());
 
   37     p_result->m_B_field = m_B_field;
 
   38     p_result->m_n_slices = m_n_slices;
 
   39     for (
auto p_layout : layouts())
 
   40         p_result->addLayout(*p_layout);
 
   49     m_thickness = thickness;
 
   52 void Layer::setMaterial(
Material material)
 
   57 void Layer::addLayout(
const ILayout& layout)
 
   60     m_layouts.push_back(
clone);
 
   64 std::vector<const ILayout*> Layer::layouts()
 const 
   66     std::vector<const ILayout*> result;
 
   67     for (
auto p_layout : m_layouts)
 
   68         result.push_back(p_layout);
 
   74     std::vector<const INode*> result;
 
   75     for (
auto layout : m_layouts)
 
   76         result.push_back(layout);
 
   80 void Layer::registerThickness(
bool make_registered)
 
   82     if (make_registered) {
 
   84             registerParameter(
"Thickness", &m_thickness).setUnit(
"nm").setNonnegative();
 
   86         removeParameter(
"Thickness");
 
Defines many exception classes in namespace Exceptionss.
 
Defines and implements interface class ILayout.
 
Defines class ParameterPool.
 
Defines class RealParameter.
 
Pure virtual interface class to equip a sample layer with scattering properties.
 
virtual ILayout * clone() const =0
Returns a clone of this ISample object.
 
RealParameter * parameter(const std::string &name) const
Returns parameter with given 'name'.
 
A layer, with thickness (in nanometer) and material.
 
const Material * material() const override final
Returns nullptr, unless overwritten to return a specific material.
 
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
 
Layer * clone() const override final
Returns a clone of this ISample object.
 
void setThickness(double thickness)
Sets layer thickness in nanometers.
 
Layer(Material material, double thickness=0)
Constructor of a layer with thickness and material.
 
A wrapper for underlying material implementation.