BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DistributionGate Class Reference
Inheritance diagram for DistributionGate:
Collaboration diagram for DistributionGate:

Public Member Functions

 DistributionGate (const std::vector< double > P)
 
 DistributionGate (double min, double max)
 
 DistributionGate ()
 
DistributionGateclone () const final
 
double probabilityDensity (double x) const final
 
double getMean () const final
 
double getMin () const
 
double getMax () const
 
virtual std::vector< double > equidistantPoints (size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
 
bool isDelta () const final
 
void accept (INodeVisitor *visitor) const final
 
std::vector< ParameterSampleequidistantSamples (size_t nbr_samples, double sigma_factor=0., const RealLimits &limits=RealLimits()) const
 
std::vector< ParameterSampleequidistantSamplesInRange (size_t nbr_samples, double xmin, double xmax) const
 
virtual std::vector< double > equidistantPointsInRange (size_t nbr_samples, double xmin, double xmax) const
 
virtual void setUnits (const std::string &units)
 
virtual void transferToCPP ()
 
virtual std::string treeToString () const
 
void registerChild (INode *node)
 
virtual std::vector< const INode * > getChildren () const
 
virtual void setParent (const INode *newParent)
 
const INodeparent () const
 
INodeparent ()
 
int copyNumber (const INode *node) const
 
std::string displayName () const
 
ParameterPoolcreateParameterTree () const
 
ParameterPoolparameterPool () const
 
std::string parametersToString () const
 
RealParameterregisterParameter (const std::string &name, double *parpointer)
 
void registerVector (const std::string &base_name, kvector_t *p_vec, const std::string &units="nm")
 
void setParameterValue (const std::string &name, double value)
 
void setVectorValue (const std::string &base_name, kvector_t value)
 
RealParameterparameter (const std::string &name) const
 
virtual void onChange ()
 
void removeParameter (const std::string &name)
 
void removeVector (const std::string &base_name)
 
void setName (const std::string &name)
 
const std::string & getName () const
 

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 Member Functions

void adjustMinMaxForLimits (double &xmin, double &xmax, const RealLimits &limits) const
 
std::vector< ParameterSamplegenerateSamplesFromValues (const std::vector< double > &sample_values) const
 

Protected Attributes

const size_t m_NP
 
std::vector< double > m_P
 

Private Attributes

const double & m_min
 
const double & m_max
 
const INodem_parent {nullptr}
 
std::string m_name
 
std::unique_ptr< ParameterPoolm_pool
 

Detailed Description

Uniform distribution function with half width hwhm.

Definition at line 85 of file Distributions.h.

Constructor & Destructor Documentation

◆ DistributionGate() [1/3]

DistributionGate::DistributionGate ( const std::vector< double >  P)

Definition at line 127 of file Distributions.cpp.

128  : IDistribution1D(
129  {"DistributionGate",
130  "class_tooltip",
131  {{"Min", "", "para_tooltip", -INF, +INF, 0}, {"Max", "", "para_tooltip", -INF, +INF, 0}}},
132  P),
133  m_min(m_P[0]), m_max(m_P[1])
134 {
135  if (m_max < m_min)
136  throw Exceptions::ClassInitializationException("DistributionGate: max<min");
137 }
const double INF
Definition: INode.h:24
const double & m_max
const double & m_min
IDistribution1D(const NodeMeta &meta, const std::vector< double > &PValues)
std::vector< double > m_P
Definition: INode.h:87

References INF.

◆ DistributionGate() [2/3]

DistributionGate::DistributionGate ( double  min,
double  max 
)

Definition at line 139 of file Distributions.cpp.

140  : DistributionGate(std::vector<double>{min, max})
141 {
142 }

◆ DistributionGate() [3/3]

DistributionGate::DistributionGate ( )

Definition at line 144 of file Distributions.cpp.

144 : DistributionGate(0., 1.) {}

Referenced by clone().

Member Function Documentation

◆ clone()

DistributionGate* DistributionGate::clone ( ) const
inlinefinalvirtual

Implements IDistribution1D.

Definition at line 92 of file Distributions.h.

92 { return new DistributionGate(m_min, m_max); }

References DistributionGate(), m_max, and m_min.

Here is the call graph for this function:

◆ probabilityDensity()

double DistributionGate::probabilityDensity ( double  x) const
finalvirtual

Returns the distribution-specific probability density for value x.

Implements IDistribution1D.

Definition at line 146 of file Distributions.cpp.

147 {
148  if (x < m_min || x > m_max)
149  return 0.0;
150  if (DoubleEqual(m_min, m_max))
151  return 1.0;
152  return 1.0 / (m_max - m_min);
153 }
bool DoubleEqual(double a, double b)

References anonymous_namespace{Distributions.cpp}::DoubleEqual(), m_max, and m_min.

Here is the call graph for this function:

◆ getMean()

double DistributionGate::getMean ( ) const
inlinefinalvirtual

Returns the distribution-specific mean.

Implements IDistribution1D.

Definition at line 95 of file Distributions.h.

95 { return (m_min + m_max) / 2.0; }

References m_max, and m_min.

◆ getMin()

double DistributionGate::getMin ( ) const
inline

Definition at line 96 of file Distributions.h.

96 { return m_min; }

References m_min.

◆ getMax()

double DistributionGate::getMax ( ) const
inline

Definition at line 97 of file Distributions.h.

97 { return m_max; }

References m_max.

◆ equidistantPoints()

std::vector< double > DistributionGate::equidistantPoints ( size_t  nbr_samples,
double  sigma_factor,
const RealLimits limits = RealLimits() 
) const
virtual

Returns list of sample values.

Implements IDistribution1D.

Definition at line 155 of file Distributions.cpp.

157 {
158  double xmin = m_min;
159  double xmax = m_max;
160  adjustMinMaxForLimits(xmin, xmax, limits);
161  return equidistantPointsInRange(nbr_samples, xmin, xmax);
162 }
void adjustMinMaxForLimits(double &xmin, double &xmax, const RealLimits &limits) const
modifies xmin and xmax if they are outside of limits
virtual std::vector< double > equidistantPointsInRange(size_t nbr_samples, double xmin, double xmax) const
Returns equidistant interpolation points from xmin to xmax.

References IDistribution1D::adjustMinMaxForLimits(), IDistribution1D::equidistantPointsInRange(), m_max, and m_min.

Here is the call graph for this function:

◆ isDelta()

bool DistributionGate::isDelta ( ) const
finalvirtual

Returns true if the distribution is in the limit case of a Dirac delta distribution.

Implements IDistribution1D.

Definition at line 164 of file Distributions.cpp.

165 {
166  return DoubleEqual(m_min, m_max);
167 }

References anonymous_namespace{Distributions.cpp}::DoubleEqual(), m_max, and m_min.

Here is the call graph for this function:

◆ accept()

void DistributionGate::accept ( INodeVisitor visitor) const
inlinefinalvirtual

Calls the INodeVisitor's visit method.

Implements INode.

Definition at line 105 of file Distributions.h.

105 { visitor->visit(this); }
virtual void visit(const BasicLattice *)
Definition: INodeVisitor.h:154

◆ equidistantSamples()

std::vector< ParameterSample > IDistribution1D::equidistantSamples ( size_t  nbr_samples,
double  sigma_factor = 0.,
const RealLimits limits = RealLimits() 
) const
inherited

Returns equidistant samples, using intrinsic parameters, weighted with probabilityDensity().

Definition at line 42 of file Distributions.cpp.

45 {
46  if (nbr_samples == 0)
48  "IDistribution1D::generateSamples: "
49  "number of generated samples must be bigger than zero");
50  if (isDelta())
51  return {ParameterSample(getMean())};
52  return generateSamplesFromValues(equidistantPoints(nbr_samples, sigma_factor, limits));
53 }
std::vector< ParameterSample > generateSamplesFromValues(const std::vector< double > &sample_values) const
Returns weighted samples from given interpolation points and probabilityDensity().
virtual double getMean() const =0
Returns the distribution-specific mean.
virtual bool isDelta() const =0
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const =0
Returns equidistant interpolation points, with range computed in distribution-specific way from mean ...
A parameter value with a weight, as obtained when sampling from a distribution.

References IDistribution1D::equidistantPoints(), IDistribution1D::generateSamplesFromValues(), IDistribution1D::getMean(), and IDistribution1D::isDelta().

Here is the call graph for this function:

◆ equidistantSamplesInRange()

std::vector< ParameterSample > IDistribution1D::equidistantSamplesInRange ( size_t  nbr_samples,
double  xmin,
double  xmax 
) const
inherited

Returns equidistant samples from xmin to xmax, weighted with probabilityDensity().

Definition at line 58 of file Distributions.cpp.

59 {
60  if (nbr_samples == 0)
62  "IDistribution1D::generateSamples: "
63  "number of generated samples must be bigger than zero");
64  if (isDelta())
65  return {ParameterSample(getMean())};
66  return generateSamplesFromValues(equidistantPointsInRange(nbr_samples, xmin, xmax));
67 }

References IDistribution1D::equidistantPointsInRange(), IDistribution1D::generateSamplesFromValues(), IDistribution1D::getMean(), and IDistribution1D::isDelta().

Here is the call graph for this function:

◆ equidistantPointsInRange()

std::vector< double > IDistribution1D::equidistantPointsInRange ( size_t  nbr_samples,
double  xmin,
double  xmax 
) const
virtualinherited

Returns equidistant interpolation points from xmin to xmax.

Definition at line 71 of file Distributions.cpp.

73 {
74  if (nbr_samples < 2 || DoubleEqual(xmin, xmax))
75  return {getMean()};
76  std::vector<double> result(nbr_samples);
77  for (size_t i = 0; i < nbr_samples; ++i)
78  result[i] = xmin + i * (xmax - xmin) / (nbr_samples - 1.0);
79  return result;
80 }

References anonymous_namespace{Distributions.cpp}::DoubleEqual(), and IDistribution1D::getMean().

Referenced by equidistantPoints(), DistributionLorentz::equidistantPoints(), DistributionGaussian::equidistantPoints(), DistributionLogNormal::equidistantPoints(), DistributionCosine::equidistantPoints(), DistributionTrapezoid::equidistantPoints(), and IDistribution1D::equidistantSamplesInRange().

Here is the call graph for this function:

◆ setUnits()

void IDistribution1D::setUnits ( const std::string &  units)
virtualinherited

Sets distribution units.

Reimplemented in DistributionLogNormal.

Definition at line 82 of file Distributions.cpp.

83 {
84  for (auto* par : parameterPool()->parameters())
85  par->setUnit(units);
86 }
ParameterPool * parameterPool() const
Returns pointer to the parameter pool.

References IParameterized::parameterPool().

Here is the call graph for this function:

◆ adjustMinMaxForLimits()

void IDistribution1D::adjustMinMaxForLimits ( double &  xmin,
double &  xmax,
const RealLimits limits 
) const
protectedinherited

modifies xmin and xmax if they are outside of limits

Definition at line 88 of file Distributions.cpp.

90 {
91  if (limits.hasLowerLimit() && xmin < limits.lowerLimit())
92  xmin = limits.lowerLimit();
93  if (limits.hasUpperLimit() && xmax > limits.upperLimit())
94  xmax = limits.upperLimit();
95  if (xmin > xmax) {
96  std::ostringstream ostr;
97  ostr << "IDistribution1D::adjustMinMaxForLimits() -> Error. Can't' adjust ";
98  ostr << "xmin:" << xmin << " xmax:" << xmax << " for given limits " << limits << std::endl;
99  throw Exceptions::DomainErrorException(ostr.str());
100  }
101 }
bool hasUpperLimit() const
if has upper limit
Definition: RealLimits.cpp:55
double upperLimit() const
Returns upper limit.
Definition: RealLimits.cpp:60
double lowerLimit() const
Returns lower limit.
Definition: RealLimits.cpp:38
bool hasLowerLimit() const
if has lower limit
Definition: RealLimits.cpp:33

References RealLimits::hasLowerLimit(), RealLimits::hasUpperLimit(), RealLimits::lowerLimit(), and RealLimits::upperLimit().

Referenced by equidistantPoints(), DistributionLorentz::equidistantPoints(), DistributionGaussian::equidistantPoints(), DistributionLogNormal::equidistantPoints(), DistributionCosine::equidistantPoints(), and DistributionTrapezoid::equidistantPoints().

Here is the call graph for this function:

◆ generateSamplesFromValues()

std::vector< ParameterSample > IDistribution1D::generateSamplesFromValues ( const std::vector< double > &  sample_values) const
protectedinherited

Returns weighted samples from given interpolation points and probabilityDensity().

Definition at line 106 of file Distributions.cpp.

107 {
108  std::vector<ParameterSample> result;
109  double norm_factor = 0.0;
110  for (double value : sample_values) {
111  double pdf = probabilityDensity(value);
112  result.push_back(ParameterSample(value, pdf));
113  norm_factor += pdf;
114  }
115  if (norm_factor <= 0.0)
116  throw Exceptions::RuntimeErrorException("IDistribution1D::generateSamples: "
117  "total probability must be bigger than zero");
118  for (ParameterSample& sample : result)
119  sample.weight /= norm_factor;
120  return result;
121 }
virtual double probabilityDensity(double x) const =0
Returns the distribution-specific probability density for value x.

References IDistribution1D::probabilityDensity().

Referenced by IDistribution1D::equidistantSamples(), and IDistribution1D::equidistantSamplesInRange().

Here is the call graph for this function:

◆ 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 53 of file INode.cpp.

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

References NodeUtils::nodeToString().

Here is the call graph for this function:

◆ registerChild()

void INode::registerChild ( INode node)
inherited

Definition at line 58 of file INode.cpp.

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

References ASSERT, and INode::setParent().

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

Here is the call graph for this function:

◆ getChildren()

◆ setParent()

void INode::setParent ( const INode newParent)
virtualinherited

Reimplemented in SampleProvider.

Definition at line 69 of file INode.cpp.

70 {
71  m_parent = newParent;
72 }
const INode * m_parent
Definition: INode.h:81

References INode::m_parent.

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

◆ parent() [1/2]

const INode * INode::parent ( ) const
inherited

◆ parent() [2/2]

INode * INode::parent ( )
inherited

Definition at line 79 of file INode.cpp.

80 {
81  return const_cast<INode*>(m_parent);
82 }
Base class for tree-like structures containing parameterized objects.
Definition: INode.h:49

References INode::m_parent.

◆ 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 84 of file INode.cpp.

85 {
86  if (node->parent() != this)
87  return -1;
88 
89  int result(-1), count(0);
90  for (auto child : getChildren()) {
91 
92  if (child == nullptr)
93  throw std::runtime_error("INode::copyNumber() -> Error. Nullptr as child.");
94 
95  if (child == node)
96  result = count;
97 
98  if (child->getName() == node->getName())
99  ++count;
100  }
101 
102  return count > 1 ? result : -1;
103 }
const INode * parent() const
Definition: INode.cpp:74
virtual std::vector< const INode * > getChildren() const
Returns a vector of children (const).
Definition: INode.cpp:64
const std::string & getName() const

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

Referenced by INode::displayName().

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 105 of file INode.cpp.

106 {
107  std::string result = getName();
108  if (m_parent) {
109  int index = m_parent->copyNumber(this);
110  if (index >= 0)
111  result = result + std::to_string(index);
112  }
113  return result;
114 }
int copyNumber(const INode *node) const
Returns copyNumber of child, which takes into account existence of children with same name.
Definition: INode.cpp:84

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

Referenced by NodeUtils::nodePath(), and anonymous_namespace{NodeUtils.cpp}::nodeString().

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 IParameterized.

Definition at line 116 of file INode.cpp.

117 {
118  std::unique_ptr<ParameterPool> result(new ParameterPool);
119 
121  it.first();
122  while (!it.isDone()) {
123  const INode* child = it.getCurrent();
124  const std::string path = NodeUtils::nodePath(*child, this->parent()) + "/";
125  child->parameterPool()->copyToExternalPool(path, result.get());
126  it.next();
127  }
128 
129  return result.release();
130 }
Iterator through INode tree of objects.
Definition: NodeIterator.h:90
Container with parameters for IParameterized object.
Definition: ParameterPool.h:30
void copyToExternalPool(const std::string &prefix, ParameterPool *other_pool) const
Copies parameters of given pool to other pool, prepeding prefix to the parameter names.
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:82

References ParameterPool::copyToExternalPool(), NodeIterator< Strategy >::first(), NodeIterator< Strategy >::getCurrent(), NodeIterator< Strategy >::isDone(), NodeIterator< Strategy >::next(), NodeUtils::nodePath(), IParameterized::parameterPool(), and INode::parent().

Referenced by ParticleDistribution::generateParticles(), Simulation::runSimulation(), DepthProbeSimulation::validateParametrization(), OffSpecSimulation::validateParametrization(), and SpecularSimulation::validateParametrization().

Here is the call graph for this function:

◆ parameterPool()

ParameterPool* IParameterized::parameterPool ( ) const
inlineinherited

Returns pointer to the parameter pool.

Definition at line 38 of file IParameterized.h.

38 { return m_pool.get(); } // has non-const usages!
std::unique_ptr< ParameterPool > m_pool
parameter pool (kind of pointer-to-implementation)

References IParameterized::m_pool.

Referenced by pyfmt2::argumentList(), SampleBuilderNode::borrow_builder_parameters(), INode::createParameterTree(), INode::INode(), IParameterized::IParameterized(), anonymous_namespace{NodeUtils.cpp}::poolToString(), SampleBuilderNode::reset(), and IDistribution1D::setUnits().

◆ parametersToString()

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

Returns multiline string representing available parameters.

Definition at line 40 of file IParameterized.cpp.

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

References IParameterized::createParameterTree().

Here is the call graph for this function:

◆ registerParameter()

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

Definition at line 48 of file IParameterized.cpp.

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

References IParameterized::getName(), IParameterized::m_pool, and IParameterized::onChange().

Referenced by BasicLattice::BasicLattice(), Beam::Beam(), CylindersInBABuilder::CylindersInBABuilder(), DetectionProperties::DetectionProperties(), HexagonalLattice::HexagonalLattice(), IInterferenceFunction::IInterferenceFunction(), INode::INode(), InterferenceFunction1DLattice::InterferenceFunction1DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(), InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(), InterferenceFunctionTwin::InterferenceFunctionTwin(), Lattice2D::Lattice2D(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), ParticleDistribution::ParticleDistribution(), PlainMultiLayerBySLDBuilder::PlainMultiLayerBySLDBuilder(), IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), Layer::registerThickness(), IParameterized::registerVector(), ParticleLayout::registerWeight(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), ResonatorBuilder::ResonatorBuilder(), Lattice2D::setRotationEnabled(), SquareLattice::SquareLattice(), and TriangularRippleBuilder::TriangularRippleBuilder().

Here is the call graph for this function:

◆ registerVector()

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

Definition at line 54 of file IParameterized.cpp.

56 {
57  registerParameter(XComponentName(base_name), &((*p_vec)[0])).setUnit(units);
58  registerParameter(YComponentName(base_name), &((*p_vec)[1])).setUnit(units);
59  registerParameter(ZComponentName(base_name), &((*p_vec)[2])).setUnit(units);
60 }
RealParameter & registerParameter(const std::string &name, double *parpointer)
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)
RealParameter & setUnit(const std::string &name)

References IParameterized::registerParameter(), RealParameter::setUnit(), IParameterized::XComponentName(), IParameterized::YComponentName(), and IParameterized::ZComponentName().

Referenced by Beam::Beam(), DetectionProperties::DetectionProperties(), InterferenceFunctionTwin::InterferenceFunctionTwin(), MultiLayer::MultiLayer(), Lattice::registerBasisVectors(), and IParticle::registerPosition().

Here is the call graph for this function:

◆ setParameterValue()

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

Definition at line 62 of file IParameterized.cpp.

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

References IParameterized::createParameterTree(), IParameterized::m_pool, and ParameterPool::setMatchedParametersValue().

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

Here is the call graph for this function:

◆ setVectorValue()

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

Definition at line 75 of file IParameterized.cpp.

76 {
77  setParameterValue(XComponentName(base_name), value.x());
78  setParameterValue(YComponentName(base_name), value.y());
79  setParameterValue(ZComponentName(base_name), value.z());
80 }
T z() const
Returns z-component in cartesian coordinate system.
Definition: BasicVector3D.h:68
T y() const
Returns y-component in cartesian coordinate system.
Definition: BasicVector3D.h:66
T x() const
Returns x-component in cartesian coordinate system.
Definition: BasicVector3D.h:64
void setParameterValue(const std::string &name, double value)

References IParameterized::setParameterValue(), BasicVector3D< T >::x(), IParameterized::XComponentName(), BasicVector3D< T >::y(), IParameterized::YComponentName(), BasicVector3D< T >::z(), and IParameterized::ZComponentName().

Here is the call graph for this function:

◆ parameter()

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

◆ onChange()

◆ removeParameter()

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

◆ removeVector()

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

Definition at line 93 of file IParameterized.cpp.

94 {
95  removeParameter(XComponentName(base_name));
96  removeParameter(YComponentName(base_name));
97  removeParameter(ZComponentName(base_name));
98 }
void removeParameter(const std::string &name)

References IParameterized::removeParameter(), IParameterized::XComponentName(), IParameterized::YComponentName(), and IParameterized::ZComponentName().

Referenced by IParticle::registerPosition().

Here is the call graph for this function:

◆ XComponentName()

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

◆ YComponentName()

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

Definition at line 105 of file IParameterized.cpp.

106 {
107  return base_name + "Y";
108 }

Referenced by IParameterized::registerVector(), IParameterized::removeVector(), and IParameterized::setVectorValue().

◆ ZComponentName()

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

Definition at line 110 of file IParameterized.cpp.

111 {
112  return base_name + "Z";
113 }

Referenced by IParameterized::registerVector(), IParameterized::removeVector(), and IParameterized::setVectorValue().

◆ setName()

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

Definition at line 68 of file IParameterized.h.

68 { m_name = name; }
std::string m_name

References IParameterized::m_name.

Referenced by BasicLattice::BasicLattice(), Beam::Beam(), Layer::clone(), ConvolutionDetectorResolution::ConvolutionDetectorResolution(), LayersWithAbsorptionBuilder::createSampleByIndex(), Basic2DParaCrystalBuilder::createSampleByIndex(), ParticleInVacuumBuilder::createSampleByIndex(), SimpleMagneticRotationBuilder::createSampleByIndex(), Crystal::Crystal(), DetectionProperties::DetectionProperties(), DistributionHandler::DistributionHandler(), FormFactorBAPol::FormFactorBAPol(), FormFactorCoreShell::FormFactorCoreShell(), FormFactorCrystal::FormFactorCrystal(), FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(), FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(), FormFactorDecoratorRotation::FormFactorDecoratorRotation(), FormFactorDWBA::FormFactorDWBA(), FormFactorDWBAPol::FormFactorDWBAPol(), FormFactorWeighted::FormFactorWeighted(), HexagonalLattice::HexagonalLattice(), IDetector::IDetector(), DepthProbeSimulation::initialize(), GISASSimulation::initialize(), OffSpecSimulation::initialize(), SpecularSimulation::initialize(), SpecularDetector1D::initialize(), MesoCrystal::initialize(), Particle::initialize(), ParticleComposition::initialize(), 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(), Lattice::Lattice(), Layer::Layer(), LayerInterface::LayerInterface(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), Beam::operator=(), SampleBuilderNode::operator=(), ParticleCoreShell::ParticleCoreShell(), ParticleDistribution::ParticleDistribution(), ParticleLayout::ParticleLayout(), RectangularDetector::RectangularDetector(), SampleBuilderNode::reset(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), SampleBuilderNode::SampleBuilderNode(), SampleBuilderNode::setSBN(), SphericalDetector::SphericalDetector(), and SquareLattice::SquareLattice().

◆ getName()

Member Data Documentation

◆ m_min

const double& DistributionGate::m_min
private

Definition at line 108 of file Distributions.h.

Referenced by clone(), equidistantPoints(), getMean(), getMin(), isDelta(), and probabilityDensity().

◆ m_max

const double& DistributionGate::m_max
private

Definition at line 109 of file Distributions.h.

Referenced by clone(), equidistantPoints(), getMax(), getMean(), isDelta(), and probabilityDensity().

◆ m_parent

const INode* INode::m_parent {nullptr}
privateinherited

Definition at line 81 of file INode.h.

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

◆ m_NP

const size_t INode::m_NP
protectedinherited

Definition at line 86 of file INode.h.

Referenced by INode::INode().

◆ m_P

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

Definition at line 87 of file INode.h.

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

◆ m_name

std::string IParameterized::m_name
privateinherited

Definition at line 72 of file IParameterized.h.

Referenced by IParameterized::getName(), and IParameterized::setName().

◆ m_pool

std::unique_ptr<ParameterPool> IParameterized::m_pool
privateinherited

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