BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Layer Class Reference

A layer in a MultiLayer sample. More...

Inheritance diagram for Layer:
[legend]
Collaboration diagram for Layer:
[legend]

Public Member Functions

 Layer (Material material, double thickness=0)
 Constructor of a layer with thickness and material. More...
 
 ~Layer () override
 
void accept (INodeVisitor *visitor) const final
 Calls the INodeVisitor's visit method. More...
 
void addLayout (const ParticleLayout &decoration)
 
Layerclone () const final
 Returns a clone of this ISampleNode object. More...
 
std::vector< const Material * > containedMaterials () const
 Returns set of unique materials contained in this ISampleNode. More...
 
int copyNumber (const INode *node) const
 Returns copyNumber of child, which takes into account existence of children with same name. More...
 
ParameterPoolcreateParameterTree () const
 Creates new parameter pool, with all local parameters and those of its children. More...
 
std::string displayName () const
 Returns display name, composed from the name of node and it's copy number. More...
 
std::vector< const INode * > getChildren () const final
 Returns a vector of children. More...
 
const std::string & getName () const
 
bool isMagnetic () const
 Returns true if there is any magnetic material in this ISampleNode. More...
 
std::vector< const ParticleLayout * > layouts () const
 
const Materialmaterial () const final
 Returns nullptr, unless overwritten to return a specific material. More...
 
size_t numberOfLayouts () const
 
unsigned int numberOfSlices () const
 
virtual void onChange ()
 Action to be taken in inherited class when a parameter has changed. More...
 
RealParameterparameter (const std::string &name) const
 Returns parameter with given 'name'. More...
 
ParameterPoolparameterPool () const
 Returns pointer to the parameter pool. More...
 
std::string parametersToString () const
 Returns multiline string representing available parameters. More...
 
INodeparent ()
 
const INodeparent () const
 
std::vector< const INode * > progeny () const
 Returns a vector of all descendants. More...
 
void registerChild (INode *node)
 
RealParameterregisterParameter (const std::string &name, double *parpointer)
 
void registerThickness (bool make_registered=true)
 
void registerVector (const std::string &base_name, kvector_t *p_vec, const std::string &units="nm")
 
void removeParameter (const std::string &name)
 
void removeVector (const std::string &base_name)
 
void setMaterial (Material material)
 
void setName (const std::string &name)
 
void setNumberOfSlices (unsigned int n_slices)
 
void setParameterValue (const std::string &name, double value)
 
virtual void setParent (const INode *newParent)
 
void setThickness (double thickness)
 Sets layer thickness in nanometers. More...
 
void setVectorValue (const std::string &base_name, kvector_t value)
 
double thickness () const
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 
virtual std::string treeToString () const
 Returns multiline string representing tree structure below the node. More...
 

Static Public Member Functions

static std::string XComponentName (const std::string &base_name)
 
static std::string YComponentName (const std::string &base_name)
 
static std::string ZComponentName (const std::string &base_name)
 

Protected Attributes

const size_t m_NP
 
std::vector< double > m_P
 

Private Attributes

kvector_t m_B_field
 cached value of magnetic induction More...
 
SafePointerVector< ParticleLayoutm_layouts
 independent layouts in this layer More...
 
Material m_material
 material More...
 
unsigned int m_n_slices = 1
 number of slices to create for graded layer approach More...
 
std::string m_name
 
const INodem_parent {nullptr}
 
std::unique_ptr< ParameterPoolm_pool
 parameter pool (kind of pointer-to-implementation) More...
 
double m_thickness
 layer thickness in nanometers More...
 

Detailed Description

A layer in a MultiLayer sample.

Definition at line 27 of file Layer.h.

Constructor & Destructor Documentation

◆ Layer()

Layer::Layer ( Material  material,
double  thickness = 0 
)

Constructor of a layer with thickness and material.

Parameters
materialmaterial the layer is made of
thicknessthickness of a layer in nanometers

Definition at line 23 of file Layer.cpp.

25 {
26  if (thickness < 0.)
27  throw std::runtime_error("Layer thickness cannot be negative");
28  setName("Layer");
30 }
void setName(const std::string &name)
double thickness() const
Definition: Layer.h:38
const Material * material() const final
Returns nullptr, unless overwritten to return a specific material.
Definition: Layer.h:40
double m_thickness
layer thickness in nanometers
Definition: Layer.h:57
Material m_material
material
Definition: Layer.h:55
void registerThickness(bool make_registered=true)
Definition: Layer.cpp:81

References registerThickness(), IParametricComponent::setName(), and thickness().

Referenced by clone().

Here is the call graph for this function:

◆ ~Layer()

Layer::~Layer ( )
overridedefault

Member Function Documentation

◆ accept()

void Layer::accept ( INodeVisitor visitor) const
inlinefinalvirtual

Calls the INodeVisitor's visit method.

Implements INode.

Definition at line 35 of file Layer.h.

35 { visitor->visit(this); }
virtual void visit(const BasicLattice2D *)
Definition: INodeVisitor.h:151

◆ addLayout()

void Layer::addLayout ( const ParticleLayout decoration)

Definition at line 58 of file Layer.cpp.

59 {
60  ParticleLayout* clone = layout.clone();
63 }
void registerChild(INode *node)
Definition: INode.cpp:57
SafePointerVector< ParticleLayout > m_layouts
independent layouts in this layer
Definition: Layer.h:58
Layer * clone() const final
Returns a clone of this ISampleNode object.
Definition: Layer.cpp:34
Decorator class that adds particles to ISampleNode objects.
void push_back(T *pointer)

References clone(), ParticleLayout::clone(), m_layouts, SafePointerVector< T >::push_back(), and INode::registerChild().

Referenced by BoxesSquareLattice2DBuilder::buildSample(), CoreShellParticleBuilder::buildSample(), CoreShellBoxRotateZandYBuilder::buildSample(), CustomMorphologyBuilder::buildSample(), CylindersAndPrismsBuilder::buildSample(), CylindersInDWBABuilder::buildSample(), CylindersInBABuilder::buildSample(), LargeCylindersInDWBABuilder::buildSample(), RotatedCylindersBuilder::buildSample(), Lattice1DBuilder::buildSample(), LayersWithAbsorptionBuilder::buildSample(), LayersWithAbsorptionBySLDBuilder::buildSample(), MagneticSubstrateZeroFieldBuilder::buildSample(), MagneticLayerBuilder::buildSample(), MagneticRotationBuilder::buildSample(), MagneticParticleZeroFieldBuilder::buildSample(), MagneticCylindersBuilder::buildSample(), MagneticSpheresBuilder::buildSample(), MesoCrystalBuilder::buildSample(), MultipleLayoutBuilder::buildSample(), RadialParaCrystalBuilder::buildSample(), Basic2DParaCrystalBuilder::buildSample(), HexParaCrystalBuilder::buildSample(), RectParaCrystalBuilder::buildSample(), ParticleCompositionBuilder::buildSample(), CylindersWithSizeDistributionBuilder::buildSample(), TwoTypesCylindersDistributionBuilder::buildSample(), RotatedPyramidsDistributionBuilder::buildSample(), SpheresWithLimitsDistributionBuilder::buildSample(), ConesWithLimitsDistributionBuilder::buildSample(), LinkedBoxDistributionBuilder::buildSample(), ParticleInVacuumBuilder::buildSample(), HardDiskBuilder::buildSample(), CosineRippleBuilder::buildSample(), TriangularRippleBuilder::buildSample(), RotatedPyramidsBuilder::buildSample(), SizeDistributionDAModelBuilder::buildSample(), SizeDistributionLMAModelBuilder::buildSample(), SizeDistributionSSCAModelBuilder::buildSample(), CylindersInSSCABuilder::buildSample(), SlicedCompositionBuilder::buildSample(), SlicedCylindersBuilder::buildSample(), SLDSlicedCylindersBuilder::buildSample(), TransformBoxBuilder::buildSample(), Basic2DLatticeBuilder::buildSample(), SquareLattice2DBuilder::buildSample(), CenteredSquareLattice2DBuilder::buildSample(), RotatedSquareLattice2DBuilder::buildSample(), FiniteSquareLattice2DBuilder::buildSample(), SuperLatticeBuilder::buildSample(), and clone().

Here is the call graph for this function:

◆ clone()

Layer * Layer::clone ( ) const
finalvirtual

Returns a clone of this ISampleNode object.

Implements ISampleNode.

Definition at line 34 of file Layer.cpp.

35 {
36  Layer* result = new Layer(m_material, m_thickness);
37  result->setName(getName());
38  result->m_B_field = m_B_field;
39  result->m_n_slices = m_n_slices;
40  for (const auto* layout : layouts())
41  result->addLayout(*layout);
42  return result;
43 }
const std::string & getName() const
A layer in a MultiLayer sample.
Definition: Layer.h:27
std::vector< const ParticleLayout * > layouts() const
Definition: Layer.cpp:65
kvector_t m_B_field
cached value of magnetic induction
Definition: Layer.h:56
unsigned int m_n_slices
number of slices to create for graded layer approach
Definition: Layer.h:59
Layer(Material material, double thickness=0)
Constructor of a layer with thickness and material.
Definition: Layer.cpp:23
void addLayout(const ParticleLayout &decoration)
Definition: Layer.cpp:58

References Layer(), addLayout(), IParametricComponent::getName(), layouts(), m_B_field, m_material, m_n_slices, m_thickness, and IParametricComponent::setName().

Referenced by MultiLayer::addLayerWithTopRoughness(), and addLayout().

Here is the call graph for this function:

◆ containedMaterials()

std::vector< const Material * > ISampleNode::containedMaterials ( ) const
inherited

Returns set of unique materials contained in this ISampleNode.

Definition at line 26 of file ISampleNode.cpp.

27 {
28  std::vector<const Material*> result;
29  if (const Material* p_material = material())
30  result.push_back(p_material);
31  for (const auto* child : getChildren()) {
32  if (const ISampleNode* sample = dynamic_cast<const ISampleNode*>(child)) {
33  for (const Material* p_material : sample->containedMaterials())
34  result.push_back(p_material);
35  }
36  }
37  return result;
38 }
virtual std::vector< const INode * > getChildren() const
Returns a vector of children.
Definition: INode.cpp:63
Abstract base class for sample components and properties related to scattering.
Definition: ISampleNode.h:28
virtual const Material * material() const
Returns nullptr, unless overwritten to return a specific material.
Definition: ISampleNode.h:37
A wrapper for underlying material implementation.
Definition: Material.h:29

References INode::getChildren(), and ISampleNode::material().

Referenced by MultiLayerUtils::ContainsCompatibleMaterials(), SampleToPython::initLabels(), and ISampleNode::isMagnetic().

Here is the call graph for this function:

◆ copyNumber()

int INode::copyNumber ( const INode node) const
inherited

Returns copyNumber of child, which takes into account existence of children with same name.

Definition at line 94 of file INode.cpp.

95 {
96  if (node->parent() != this)
97  return -1;
98 
99  int result(-1), count(0);
100  for (auto child : getChildren()) {
101 
102  if (child == nullptr)
103  throw std::runtime_error("INode::copyNumber() -> Error. Nullptr as child.");
104 
105  if (child == node)
106  result = count;
107 
108  if (child->getName() == node->getName())
109  ++count;
110  }
111 
112  return count > 1 ? result : -1;
113 }
const INode * parent() const
Definition: INode.cpp:84

References INode::getChildren(), IParametricComponent::getName(), and INode::parent().

Referenced by INode::displayName().

Here is the call graph for this function:

◆ createParameterTree()

ParameterPool * INode::createParameterTree ( ) const
virtualinherited

Creates new parameter pool, with all local parameters and those of its children.

Reimplemented from IParametricComponent.

Definition at line 126 of file INode.cpp.

127 {
128  std::unique_ptr<ParameterPool> result(new ParameterPool);
129 
130  for (const INode* child : progeny()) {
131  const std::string path = NodeUtils::nodePath(child, parent()) + "/";
132  child->parameterPool()->copyToExternalPool(path, result.get());
133  }
134 
135  return result.release();
136 }
Base class for tree-like structures containing parameterized objects.
Definition: INode.h:49
std::vector< const INode * > progeny() const
Returns a vector of all descendants.
Definition: INode.cpp:68
Container with parameters for IParametricComponent object.
Definition: ParameterPool.h:29
std::string nodePath(const INode *node, const INode *root=nullptr)
Returns path composed of node's displayName, with respect to root node.
Definition: NodeUtils.cpp:89

References NodeUtils::nodePath(), INode::parent(), and INode::progeny().

Referenced by ISimulation::runSimulation(), DepthProbeSimulation::validateParametrization(), OffSpecularSimulation::validateParametrization(), and SpecularSimulation::validateParametrization().

Here is the call graph for this function:

◆ displayName()

std::string INode::displayName ( ) const
inherited

Returns display name, composed from the name of node and it's copy number.

Definition at line 115 of file INode.cpp.

116 {
117  std::string result = getName();
118  if (m_parent) {
119  int index = m_parent->copyNumber(this);
120  if (index >= 0)
121  result = result + std::to_string(index);
122  }
123  return result;
124 }
const INode * m_parent
Definition: INode.h:83
int copyNumber(const INode *node) const
Returns copyNumber of child, which takes into account existence of children with same name.
Definition: INode.cpp:94

References INode::copyNumber(), IParametricComponent::getName(), and INode::m_parent.

Referenced by NodeUtils::nodePath().

Here is the call graph for this function:

◆ getChildren()

std::vector< const INode * > Layer::getChildren ( ) const
finalvirtual

Returns a vector of children.

Reimplemented from INode.

Definition at line 73 of file Layer.cpp.

74 {
75  std::vector<const INode*> result;
76  for (auto layout : m_layouts)
77  result.push_back(layout);
78  return result;
79 }

References m_layouts.

◆ getName()

◆ isMagnetic()

bool ISampleNode::isMagnetic ( ) const
inherited

Returns true if there is any magnetic material in this ISampleNode.

Definition at line 40 of file ISampleNode.cpp.

41 {
42  const auto materials = containedMaterials();
43  return std::any_of(materials.cbegin(), materials.cend(),
44  [](const Material* mat) { return mat->isMagneticMaterial(); });
45 }
std::vector< const Material * > containedMaterials() const
Returns set of unique materials contained in this ISampleNode.
Definition: ISampleNode.cpp:26

References ISampleNode::containedMaterials().

Referenced by ProcessedSample::initLayouts().

Here is the call graph for this function:

◆ layouts()

std::vector< const ParticleLayout * > Layer::layouts ( ) const

Definition at line 65 of file Layer.cpp.

66 {
67  std::vector<const ParticleLayout*> result;
68  for (const auto* layout : m_layouts)
69  result.push_back(layout);
70  return result;
71 }

References m_layouts.

Referenced by clone().

◆ material()

const Material* Layer::material ( ) const
inlinefinalvirtual

Returns nullptr, unless overwritten to return a specific material.

Reimplemented from ISampleNode.

Definition at line 40 of file Layer.h.

40 { return &m_material; }

References m_material.

Referenced by setMaterial(), and GUIDomainSampleVisitor::visit().

◆ numberOfLayouts()

size_t Layer::numberOfLayouts ( ) const
inline

Definition at line 44 of file Layer.h.

44 { return m_layouts.size(); }
size_t size() const

References m_layouts, and SafePointerVector< T >::size().

Here is the call graph for this function:

◆ numberOfSlices()

unsigned int Layer::numberOfSlices ( ) const
inline

Definition at line 52 of file Layer.h.

52 { return m_n_slices; }

References m_n_slices.

Referenced by ProcessedSample::initSlices(), and TransformFromDomain::setLayerItem().

◆ onChange()

◆ parameter()

RealParameter * IParametricComponent::parameter ( const std::string &  name) const
inherited

Returns parameter with given 'name'.

Definition at line 86 of file IParametricComponent.cpp.

87 {
88  return m_pool->parameter(name);
89 }
std::unique_ptr< ParameterPool > m_pool
parameter pool (kind of pointer-to-implementation)
QString const & name(EShape k)
Definition: particles.cpp:21

References IParametricComponent::m_pool, and RealSpace::Particles::name().

Referenced by DepthProbeSimulation::initialize(), SpecularSimulation::initialize(), Lattice3D::initialize(), IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), IParticle::registerPosition(), registerThickness(), Lattice2D::setRotationEnabled(), and DistributionLogNormal::setUnits().

Here is the call graph for this function:

◆ parameterPool()

ParameterPool* IParametricComponent::parameterPool ( ) const
inlineinherited

Returns pointer to the parameter pool.

Definition at line 39 of file IParametricComponent.h.

39 { return m_pool.get(); } // has non-const usages!

References IParametricComponent::m_pool.

Referenced by INode::INode(), IParametricComponent::IParametricComponent(), pyfmt2::argumentList(), SampleBuilderNode::borrow_builder_parameters(), SampleBuilderNode::reset(), and IDistribution1D::setUnits().

◆ parametersToString()

std::string IParametricComponent::parametersToString ( ) const
inherited

Returns multiline string representing available parameters.

Definition at line 43 of file IParametricComponent.cpp.

44 {
45  std::ostringstream result;
46  std::unique_ptr<ParameterPool> P_pool(createParameterTree());
47  result << *P_pool << "\n";
48  return result.str();
49 }
virtual ParameterPool * createParameterTree() const
Creates new parameter pool, with all local parameters and those of its children.

References IParametricComponent::createParameterTree().

Here is the call graph for this function:

◆ parent() [1/2]

INode * INode::parent ( )
inherited

Definition at line 89 of file INode.cpp.

90 {
91  return const_cast<INode*>(m_parent);
92 }

References INode::m_parent.

◆ parent() [2/2]

◆ progeny()

std::vector< const INode * > INode::progeny ( ) const
inherited

Returns a vector of all descendants.

Definition at line 68 of file INode.cpp.

69 {
70  std::vector<const INode*> result;
71  result.push_back(this);
72  for (const auto* child : getChildren()) {
73  for (const auto* p : child->progeny())
74  result.push_back(p);
75  }
76  return result;
77 }

References INode::getChildren().

Referenced by INode::createParameterTree(), and ParticleDistribution::generateParticles().

Here is the call graph for this function:

◆ registerChild()

void INode::registerChild ( INode node)
inherited

Definition at line 57 of file INode.cpp.

58 {
59  ASSERT(node);
60  node->setParent(this);
61 }
#define ASSERT(condition)
Definition: Assert.h:31
virtual void setParent(const INode *newParent)
Definition: INode.cpp:79

References ASSERT, and INode::setParent().

Referenced by Beam::Beam(), Crystal::Crystal(), IDetector::IDetector(), Instrument::Instrument(), InterferenceFunction2DLattice::InterferenceFunction2DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(), InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(), Particle::Particle(), ParticleDistribution::ParticleDistribution(), ParticleLayout::addAndRegisterAbstractParticle(), ParticleCoreShell::addAndRegisterCore(), MultiLayer::addAndRegisterInterface(), MultiLayer::addAndRegisterLayer(), ParticleCoreShell::addAndRegisterShell(), addLayout(), ParticleComposition::addParticlePointer(), ISimulation::initialize(), MesoCrystal::initialize(), Beam::operator=(), Instrument::operator=(), IParticle::rotate(), ParticleLayout::setAndRegisterInterferenceFunction(), ISimulation::setBackground(), InterferenceFunction1DLattice::setDecayFunction(), InterferenceFunction2DLattice::setDecayFunction(), Instrument::setDetector(), IDetector::setDetectorResolution(), Beam::setFootprintFactor(), Particle::setFormFactor(), InterferenceFunctionFinite3DLattice::setLattice(), InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(), InterferenceFunction2DParaCrystal::setProbabilityDistributions(), ConvolutionDetectorResolution::setResolutionFunction(), IParticle::setRotation(), LayerInterface::setRoughness(), and InterferenceFunction2DSuperLattice::setSubstructureIFF().

Here is the call graph for this function:

◆ registerParameter()

RealParameter & IParametricComponent::registerParameter ( const std::string &  name,
double *  parpointer 
)
inherited

Definition at line 51 of file IParametricComponent.cpp.

52 {
53  return m_pool->addParameter(
54  new RealParameter(name, data, getName(), [&]() -> void { onChange(); }));
55 }
virtual void onChange()
Action to be taken in inherited class when a parameter has changed.
Wraps a parameter of type double.
Definition: RealParameter.h:31

References IParametricComponent::getName(), IParametricComponent::m_pool, RealSpace::Particles::name(), and IParametricComponent::onChange().

Referenced by BasicLattice2D::BasicLattice2D(), Beam::Beam(), CylindersInBABuilder::CylindersInBABuilder(), DetectionProperties::DetectionProperties(), HexagonalLattice2D::HexagonalLattice2D(), IInterferenceFunction::IInterferenceFunction(), INode::INode(), InterferenceFunction1DLattice::InterferenceFunction1DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(), InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(), InterferenceFunctionTwin::InterferenceFunctionTwin(), Lattice2D::Lattice2D(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), ParticleDistribution::ParticleDistribution(), PlainMultiLayerBySLDBuilder::PlainMultiLayerBySLDBuilder(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), ResonatorBuilder::ResonatorBuilder(), SquareLattice2D::SquareLattice2D(), TriangularRippleBuilder::TriangularRippleBuilder(), IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), registerThickness(), IParametricComponent::registerVector(), ParticleLayout::registerWeight(), and Lattice2D::setRotationEnabled().

Here is the call graph for this function:

◆ registerThickness()

void Layer::registerThickness ( bool  make_registered = true)

Definition at line 81 of file Layer.cpp.

82 {
83  if (make_registered) {
84  if (!parameter("Thickness"))
85  registerParameter("Thickness", &m_thickness).setUnit("nm").setNonnegative();
86  } else {
87  removeParameter("Thickness");
88  }
89 }
void removeParameter(const std::string &name)
RealParameter * parameter(const std::string &name) const
Returns parameter with given 'name'.
RealParameter & registerParameter(const std::string &name, double *parpointer)
RealParameter & setNonnegative()
RealParameter & setUnit(const std::string &name)

References m_thickness, IParametricComponent::parameter(), IParametricComponent::registerParameter(), IParametricComponent::removeParameter(), RealParameter::setNonnegative(), and RealParameter::setUnit().

Referenced by Layer().

Here is the call graph for this function:

◆ registerVector()

void IParametricComponent::registerVector ( const std::string &  base_name,
kvector_t p_vec,
const std::string &  units = "nm" 
)
inherited

Definition at line 57 of file IParametricComponent.cpp.

59 {
60  registerParameter(XComponentName(base_name), &((*p_vec)[0])).setUnit(units);
61  registerParameter(YComponentName(base_name), &((*p_vec)[1])).setUnit(units);
62  registerParameter(ZComponentName(base_name), &((*p_vec)[2])).setUnit(units);
63 }
static std::string XComponentName(const std::string &base_name)
static std::string ZComponentName(const std::string &base_name)
static std::string YComponentName(const std::string &base_name)
MVVM_MODEL_EXPORT std::string base_name(const std::string &path)
Provide the filename of a file path.
Definition: fileutils.cpp:78

References ModelView::Utils::base_name(), IParametricComponent::registerParameter(), RealParameter::setUnit(), IParametricComponent::XComponentName(), IParametricComponent::YComponentName(), and IParametricComponent::ZComponentName().

Referenced by Beam::Beam(), DetectionProperties::DetectionProperties(), InterferenceFunctionTwin::InterferenceFunctionTwin(), MultiLayer::MultiLayer(), Lattice3D::initialize(), and IParticle::registerPosition().

Here is the call graph for this function:

◆ removeParameter()

void IParametricComponent::removeParameter ( const std::string &  name)
inherited

Definition at line 91 of file IParametricComponent.cpp.

92 {
93  m_pool->removeParameter(name);
94 }

References IParametricComponent::m_pool, and RealSpace::Particles::name().

Referenced by IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), registerThickness(), IParametricComponent::removeVector(), and Lattice2D::setRotationEnabled().

Here is the call graph for this function:

◆ removeVector()

void IParametricComponent::removeVector ( const std::string &  base_name)
inherited

Definition at line 96 of file IParametricComponent.cpp.

References ModelView::Utils::base_name(), IParametricComponent::removeParameter(), IParametricComponent::XComponentName(), IParametricComponent::YComponentName(), and IParametricComponent::ZComponentName().

Referenced by IParticle::registerPosition().

Here is the call graph for this function:

◆ setMaterial()

void Layer::setMaterial ( Material  material)

Definition at line 53 of file Layer.cpp.

54 {
55  m_material = std::move(material);
56 }

References m_material, and material().

Here is the call graph for this function:

◆ setName()

void IParametricComponent::setName ( const std::string &  name)
inlineinherited

Definition at line 69 of file IParametricComponent.h.

69 { m_name = name; }

References IParametricComponent::m_name, and RealSpace::Particles::name().

Referenced by BasicLattice2D::BasicLattice2D(), Beam::Beam(), ConvolutionDetectorResolution::ConvolutionDetectorResolution(), Crystal::Crystal(), DetectionProperties::DetectionProperties(), DistributionHandler::DistributionHandler(), FormFactorCoreShell::FormFactorCoreShell(), FormFactorCrystal::FormFactorCrystal(), FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(), FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(), FormFactorDecoratorRotation::FormFactorDecoratorRotation(), FormFactorWeighted::FormFactorWeighted(), HexagonalLattice2D::HexagonalLattice2D(), IDetector::IDetector(), INode::INode(), Instrument::Instrument(), InterferenceFunction1DLattice::InterferenceFunction1DLattice(), InterferenceFunction2DLattice::InterferenceFunction2DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(), InterferenceFunction3DLattice::InterferenceFunction3DLattice(), InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(), InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice(), InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(), InterferenceFunctionNone::InterferenceFunctionNone(), InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(), InterferenceFunctionTwin::InterferenceFunctionTwin(), ISampleBuilder::ISampleBuilder(), IsGISAXSDetector::IsGISAXSDetector(), Lattice3D::Lattice3D(), Layer(), LayerInterface::LayerInterface(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), ParticleCoreShell::ParticleCoreShell(), ParticleDistribution::ParticleDistribution(), ParticleLayout::ParticleLayout(), RectangularDetector::RectangularDetector(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), SampleBuilderNode::SampleBuilderNode(), SphericalDetector::SphericalDetector(), SquareLattice2D::SquareLattice2D(), clone(), LayersWithAbsorptionBuilder::createSampleByIndex(), Basic2DParaCrystalBuilder::createSampleByIndex(), ParticleInVacuumBuilder::createSampleByIndex(), SimpleMagneticRotationBuilder::createSampleByIndex(), DepthProbeSimulation::initialize(), GISASSimulation::initialize(), OffSpecularSimulation::initialize(), SpecularSimulation::initialize(), SpecularDetector1D::initialize(), MesoCrystal::initialize(), Particle::initialize(), ParticleComposition::initialize(), Beam::operator=(), SampleBuilderNode::operator=(), SampleBuilderNode::reset(), and SampleBuilderNode::setSBN().

Here is the call graph for this function:

◆ setNumberOfSlices()

void Layer::setNumberOfSlices ( unsigned int  n_slices)
inline

Definition at line 51 of file Layer.h.

51 { m_n_slices = n_slices; }

References m_n_slices.

Referenced by SlicedCylindersBuilder::buildSample(), and SLDSlicedCylindersBuilder::buildSample().

◆ setParameterValue()

void IParametricComponent::setParameterValue ( const std::string &  name,
double  value 
)
inherited

Definition at line 65 of file IParametricComponent.cpp.

66 {
67  if (name.find('*') == std::string::npos && name.find('/') == std::string::npos) {
68  m_pool->setParameterValue(name, value);
69  } else {
70  std::unique_ptr<ParameterPool> P_pool{createParameterTree()};
71  if (name.find('*') != std::string::npos)
72  P_pool->setMatchedParametersValue(name, value);
73  else
74  P_pool->setParameterValue(name, value);
75  }
76 }
int setMatchedParametersValue(const std::string &wildcards, double value)
Sets value of the nonzero parameters that match pattern ('*' allowed), or throws.

References IParametricComponent::createParameterTree(), IParametricComponent::m_pool, RealSpace::Particles::name(), and ParameterPool::setMatchedParametersValue().

Referenced by AsymRippleBuilder::buildSample(), and IParametricComponent::setVectorValue().

Here is the call graph for this function:

◆ setParent()

void INode::setParent ( const INode newParent)
virtualinherited

Reimplemented in SampleProvider.

Definition at line 79 of file INode.cpp.

80 {
81  m_parent = newParent;
82 }

References INode::m_parent.

Referenced by INode::registerChild(), SampleProvider::setBuilder(), and SampleProvider::setParent().

◆ setThickness()

void Layer::setThickness ( double  thickness)

Sets layer thickness in nanometers.

Definition at line 46 of file Layer.cpp.

47 {
48  if (thickness < 0.)
49  throw std::runtime_error("Layer thickness cannot be negative");
51 }

References m_thickness, and thickness().

Here is the call graph for this function:

◆ setVectorValue()

void IParametricComponent::setVectorValue ( const std::string &  base_name,
kvector_t  value 
)
inherited

Definition at line 78 of file IParametricComponent.cpp.

79 {
83 }
T z() const
Returns z-component in cartesian coordinate system.
Definition: BasicVector3D.h:67
T y() const
Returns y-component in cartesian coordinate system.
Definition: BasicVector3D.h:65
T x() const
Returns x-component in cartesian coordinate system.
Definition: BasicVector3D.h:63
void setParameterValue(const std::string &name, double value)

References ModelView::Utils::base_name(), IParametricComponent::setParameterValue(), BasicVector3D< T >::x(), IParametricComponent::XComponentName(), BasicVector3D< T >::y(), IParametricComponent::YComponentName(), BasicVector3D< T >::z(), and IParametricComponent::ZComponentName().

Here is the call graph for this function:

◆ thickness()

double Layer::thickness ( ) const
inline

◆ transferToCPP()

virtual void ICloneable::transferToCPP ( )
inlinevirtualinherited

Used for Python overriding of clone (see swig/tweaks.py)

Definition at line 34 of file ICloneable.h.

◆ treeToString()

std::string INode::treeToString ( ) const
virtualinherited

Returns multiline string representing tree structure below the node.

Definition at line 52 of file INode.cpp.

53 {
54  return NodeUtils::nodeToString(this);
55 }
std::string nodeToString(const INode *node)
Returns multiline string representing tree structure starting from given node.
Definition: NodeUtils.cpp:81

References NodeUtils::nodeToString().

Here is the call graph for this function:

◆ XComponentName()

std::string IParametricComponent::XComponentName ( const std::string &  base_name)
staticinherited

Definition at line 103 of file IParametricComponent.cpp.

104 {
105  return base_name + "X";
106 }

References ModelView::Utils::base_name().

Referenced by Lattice3D::initialize(), IParticle::registerPosition(), IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

◆ YComponentName()

std::string IParametricComponent::YComponentName ( const std::string &  base_name)
staticinherited

Definition at line 108 of file IParametricComponent.cpp.

109 {
110  return base_name + "Y";
111 }

References ModelView::Utils::base_name().

Referenced by IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

◆ ZComponentName()

std::string IParametricComponent::ZComponentName ( const std::string &  base_name)
staticinherited

Definition at line 113 of file IParametricComponent.cpp.

114 {
115  return base_name + "Z";
116 }

References ModelView::Utils::base_name().

Referenced by IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

Member Data Documentation

◆ m_B_field

kvector_t Layer::m_B_field
private

cached value of magnetic induction

Definition at line 56 of file Layer.h.

Referenced by clone().

◆ m_layouts

SafePointerVector<ParticleLayout> Layer::m_layouts
private

independent layouts in this layer

Definition at line 58 of file Layer.h.

Referenced by addLayout(), getChildren(), layouts(), and numberOfLayouts().

◆ m_material

Material Layer::m_material
private

material

Definition at line 55 of file Layer.h.

Referenced by clone(), material(), and setMaterial().

◆ m_n_slices

unsigned int Layer::m_n_slices = 1
private

number of slices to create for graded layer approach

Definition at line 59 of file Layer.h.

Referenced by clone(), numberOfSlices(), and setNumberOfSlices().

◆ m_name

std::string IParametricComponent::m_name
privateinherited

◆ m_NP

const size_t INode::m_NP
protectedinherited

Definition at line 88 of file INode.h.

Referenced by INode::INode().

◆ m_P

std::vector<double> INode::m_P
protectedinherited

Definition at line 89 of file INode.h.

Referenced by INode::INode(), and IFootprintFactor::setWidthRatio().

◆ m_parent

const INode* INode::m_parent {nullptr}
privateinherited

Definition at line 83 of file INode.h.

Referenced by INode::displayName(), INode::parent(), and INode::setParent().

◆ m_pool

◆ m_thickness

double Layer::m_thickness
private

layer thickness in nanometers

Definition at line 57 of file Layer.h.

Referenced by clone(), registerThickness(), setThickness(), and thickness().


The documentation for this class was generated from the following files: