BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Public Types | |
typedef std::vector< ParameterDistribution > | Distributions_t |
Public Member Functions | |
DistributionHandler () | |
virtual | ~DistributionHandler () |
void | addParameterDistribution (const std::string ¶m_name, const IDistribution1D &distribution, size_t nbr_samples, double sigma_factor=0.0, const RealLimits &limits=RealLimits()) |
void | addParameterDistribution (const ParameterDistribution &par_distr) |
size_t | getTotalNumberOfSamples () const |
double | setParameterValues (ParameterPool *p_parameter_pool, size_t index) |
void | setParameterToMeans (ParameterPool *p_parameter_pool) const |
const Distributions_t & | getDistributions () const |
ParameterPool * | parameterPool () const |
virtual ParameterPool * | createParameterTree () const |
std::string | parametersToString () const |
RealParameter & | registerParameter (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) |
RealParameter * | parameter (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) |
Private Attributes | |
size_t | m_nbr_combinations |
Distributions_t | m_distributions |
std::vector< std::vector< ParameterSample > > | m_cached_samples |
std::string | m_name |
std::unique_ptr< ParameterPool > | m_pool |
Provides the functionality to average over parameter distributions with weights.
Definition at line 24 of file DistributionHandler.h.
typedef std::vector<ParameterDistribution> DistributionHandler::Distributions_t |
Definition at line 27 of file DistributionHandler.h.
DistributionHandler::DistributionHandler | ( | ) |
Definition at line 20 of file DistributionHandler.cpp.
References IParameterized::setName().
|
virtualdefault |
void DistributionHandler::addParameterDistribution | ( | const std::string & | param_name, |
const IDistribution1D & | distribution, | ||
size_t | nbr_samples, | ||
double | sigma_factor = 0.0 , |
||
const RealLimits & | limits = RealLimits() |
||
) |
add a sampled parameter distribution
Referenced by Simulation::addParameterDistribution().
void DistributionHandler::addParameterDistribution | ( | const ParameterDistribution & | par_distr | ) |
Definition at line 27 of file DistributionHandler.cpp.
References ParameterDistribution::generateSamples(), ParameterDistribution::getNbrSamples(), m_cached_samples, m_distributions, and m_nbr_combinations.
size_t DistributionHandler::getTotalNumberOfSamples | ( | ) | const |
get the total number of parameter value combinations (product of the individual sizes of each parameter distribution
Definition at line 36 of file DistributionHandler.cpp.
References m_nbr_combinations.
Referenced by Simulation::runSimulation().
double DistributionHandler::setParameterValues | ( | ParameterPool * | p_parameter_pool, |
size_t | index | ||
) |
set the parameter values of the simulation object to a specific combination of values, determined by the index (which must be smaller than the total number of combinations) and returns the weight associated with this combination of parameter values
Definition at line 41 of file DistributionHandler.cpp.
References m_cached_samples, m_distributions, m_nbr_combinations, and ParameterPool::setMatchedParametersValue().
Referenced by Simulation::runSimulation().
void DistributionHandler::setParameterToMeans | ( | ParameterPool * | p_parameter_pool | ) | const |
Sets mean distribution values to the parameter pool.
Definition at line 69 of file DistributionHandler.cpp.
References m_distributions, and ParameterPool::setMatchedParametersValue().
Referenced by Simulation::runSimulation().
const DistributionHandler::Distributions_t & DistributionHandler::getDistributions | ( | ) | const |
Definition at line 81 of file DistributionHandler.cpp.
References m_distributions.
Referenced by SimulationToPython::defineParameterDistributions().
|
inlineinherited |
Returns pointer to the parameter pool.
Definition at line 38 of file IParameterized.h.
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().
|
virtualinherited |
Creates new parameter pool, with all local parameters and those of its children.
Reimplemented in INode.
Definition at line 33 of file IParameterized.cpp.
References IParameterized::getName(), and IParameterized::m_pool.
Referenced by IParameterized::parametersToString(), ParameterUtils::poolParameterUnits(), and IParameterized::setParameterValue().
|
inherited |
Returns multiline string representing available parameters.
Definition at line 40 of file IParameterized.cpp.
References IParameterized::createParameterTree().
|
inherited |
Definition at line 48 of file IParameterized.cpp.
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().
|
inherited |
Definition at line 54 of file IParameterized.cpp.
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().
|
inherited |
Definition at line 62 of file IParameterized.cpp.
References IParameterized::createParameterTree(), IParameterized::m_pool, and ParameterPool::setMatchedParametersValue().
Referenced by AsymRippleBuilder::buildSample(), and IParameterized::setVectorValue().
|
inherited |
Definition at line 75 of file IParameterized.cpp.
References IParameterized::setParameterValue(), BasicVector3D< T >::x(), IParameterized::XComponentName(), BasicVector3D< T >::y(), IParameterized::YComponentName(), BasicVector3D< T >::z(), and IParameterized::ZComponentName().
|
inherited |
Returns parameter with given 'name'.
Definition at line 83 of file IParameterized.cpp.
References IParameterized::m_pool.
Referenced by DepthProbeSimulation::initialize(), SpecularSimulation::initialize(), IParticle::registerAbundance(), Lattice::registerBasisVectors(), ParticleLayout::registerParticleDensity(), IParticle::registerPosition(), Layer::registerThickness(), Lattice2D::setRotationEnabled(), and DistributionLogNormal::setUnits().
|
inlinevirtualinherited |
Action to be taken in inherited class when a parameter has changed.
Reimplemented in IProfileRipple, FormFactorSphereLogNormalRadius, FormFactorSphereGaussianRadius, FormFactorGaussSphere, ISawtoothRipple, ICosineRipple, IProfileRectangularRipple, FormFactorTruncatedSpheroid, FormFactorTruncatedSphere, FormFactorTruncatedCube, FormFactorTetrahedron, FormFactorPyramid, FormFactorPrism6, FormFactorPrism3, FormFactorLongBoxLorentz, FormFactorLongBoxGauss, FormFactorIcosahedron, FormFactorHollowSphere, FormFactorHemiEllipsoid, FormFactorFullSpheroid, FormFactorFullSphere, FormFactorEllipsoidalCylinder, FormFactorDodecahedron, FormFactorCylinder, FormFactorCuboctahedron, FormFactorCone6, FormFactorCone, FormFactorCantellatedCube, FormFactorBox, FormFactorAnisoPyramid, InterferenceFunction3DLattice, InterferenceFunction2DLattice, Lattice, and Lattice2D.
Definition at line 58 of file IParameterized.h.
Referenced by Lattice2D::onChange(), and IParameterized::registerParameter().
|
inherited |
Definition at line 88 of file IParameterized.cpp.
References IParameterized::m_pool.
Referenced by IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), Layer::registerThickness(), IParameterized::removeVector(), and Lattice2D::setRotationEnabled().
|
inherited |
Definition at line 93 of file IParameterized.cpp.
References IParameterized::removeParameter(), IParameterized::XComponentName(), IParameterized::YComponentName(), and IParameterized::ZComponentName().
Referenced by IParticle::registerPosition().
|
staticinherited |
Definition at line 100 of file IParameterized.cpp.
Referenced by Lattice::registerBasisVectors(), IParticle::registerPosition(), IParameterized::registerVector(), IParameterized::removeVector(), and IParameterized::setVectorValue().
|
staticinherited |
Definition at line 105 of file IParameterized.cpp.
Referenced by IParameterized::registerVector(), IParameterized::removeVector(), and IParameterized::setVectorValue().
|
staticinherited |
Definition at line 110 of file IParameterized.cpp.
Referenced by IParameterized::registerVector(), IParameterized::removeVector(), and IParameterized::setVectorValue().
|
inlineinherited |
Definition at line 68 of file IParameterized.h.
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(), 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().
|
inlineinherited |
Definition at line 69 of file IParameterized.h.
References IParameterized::m_name.
Referenced by Beam::Beam(), Layer::clone(), IFormFactorBorn::computeSlicingEffects(), ConvolutionDetectorResolution::ConvolutionDetectorResolution(), INode::copyNumber(), IParameterized::createParameterTree(), IFormFactor::createSlicedFormFactor(), SampleToPython::defineFormFactors(), SampleToPython::defineInterferenceFunctions(), INode::displayName(), IDetector::IDetector(), Instrument::Instrument(), IParameterized::IParameterized(), Beam::operator=(), SampleBuilderNode::operator=(), anonymous_namespace{ParticleLayout.cpp}::particleDensityIsProvidedByInterference(), IParameterized::registerParameter(), SampleBuilderNode::SampleBuilderNode(), and IFormFactor::sliceFormFactor().
|
private |
Definition at line 55 of file DistributionHandler.h.
Referenced by addParameterDistribution(), getTotalNumberOfSamples(), and setParameterValues().
|
private |
Definition at line 56 of file DistributionHandler.h.
Referenced by addParameterDistribution(), getDistributions(), setParameterToMeans(), and setParameterValues().
|
private |
Definition at line 57 of file DistributionHandler.h.
Referenced by addParameterDistribution(), and setParameterValues().
|
privateinherited |
Definition at line 72 of file IParameterized.h.
Referenced by IParameterized::getName(), and IParameterized::setName().
|
privateinherited |
parameter pool (kind of pointer-to-implementation)
Definition at line 73 of file IParameterized.h.
Referenced by IParameterized::createParameterTree(), IParameterized::parameter(), IParameterized::parameterPool(), IParameterized::registerParameter(), IParameterized::removeParameter(), and IParameterized::setParameterValue().