BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Public Member Functions | |
Beam (double wavelength, double alpha, double phi, double intensity) | |
Beam (const Beam &other) | |
Beam & | operator= (const Beam &other) |
virtual | ~Beam () |
kvector_t | getCentralK () const |
void | setCentralK (double wavelength, double alpha_i, double phi_i) |
double | getIntensity () const |
void | setIntensity (double intensity) |
const IFootprintFactor * | footprintFactor () const |
void | setFootprintFactor (const IFootprintFactor &shape_factor) |
void | setWidthRatio (double width_ratio) |
void | setPolarization (const kvector_t bloch_vector) |
kvector_t | getBlochVector () const |
Eigen::Matrix2cd | getPolarization () const |
double | getWavelength () const |
double | getAlpha () const |
double | getPhi () const |
void | accept (INodeVisitor *visitor) const override |
std::vector< const INode * > | getChildren () const override |
virtual std::string | treeToString () const |
void | registerChild (INode *node) |
virtual void | setParent (const INode *newParent) |
const INode * | parent () const |
INode * | parent () |
int | copyNumber (const INode *node) const |
std::string | displayName () const |
ParameterPool * | createParameterTree () const |
ParameterPool * | parameterPool () 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 Beam | horizontalBeam () |
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 | |
double | m_wavelength |
double | m_alpha |
double | m_phi |
double | m_intensity |
std::unique_ptr< IFootprintFactor > | m_shape_factor |
kvector_t | m_bloch_vector |
const INode * | m_parent {nullptr} |
std::string | m_name |
std::unique_ptr< ParameterPool > | m_pool |
Beam::Beam | ( | double | wavelength, |
double | alpha, | ||
double | phi, | ||
double | intensity | ||
) |
Definition at line 26 of file Beam.cpp.
References INCLINATION_LIMIT, m_alpha, m_bloch_vector, m_intensity, m_phi, M_PI_2, m_wavelength, IParameterized::registerParameter(), IParameterized::registerVector(), RealParameter::setLimited(), IParameterized::setName(), RealParameter::setNonnegative(), and RealParameter::setUnit().
Referenced by horizontalBeam().
Beam::Beam | ( | const Beam & | other | ) |
Definition at line 42 of file Beam.cpp.
References IParameterized::getName(), m_bloch_vector, m_shape_factor, INode::registerChild(), and IParameterized::setName().
|
virtualdefault |
Definition at line 53 of file Beam.cpp.
References IParameterized::getName(), m_alpha, m_bloch_vector, m_intensity, m_phi, m_shape_factor, m_wavelength, INode::registerChild(), and IParameterized::setName().
|
static |
kvector_t Beam::getCentralK | ( | ) | const |
Returns the wavevector.
Definition at line 71 of file Beam.cpp.
References m_alpha, m_phi, m_wavelength, and vecOfLambdaAlphaPhi().
Referenced by RectangularDetector::init().
void Beam::setCentralK | ( | double | wavelength, |
double | alpha_i, | ||
double | phi_i | ||
) |
Sets the wavevector in terms of wavelength and incoming angles.
Definition at line 76 of file Beam.cpp.
References m_alpha, m_phi, m_wavelength, and anonymous_namespace{SlicedCylindersBuilder.cpp}::wavelength().
Referenced by OffSpecSimulation::initSimulationElementVector(), and Instrument::setBeamParameters().
|
inline |
Returns the beam intensity in neutrons/sec.
Definition at line 45 of file Beam.h.
References m_intensity.
Referenced by SimulationToPython::defineBeamIntensity(), and Instrument::getBeamIntensity().
|
inline |
Sets the beam intensity in neutrons/sec.
Definition at line 48 of file Beam.h.
References m_intensity.
Referenced by Instrument::setBeamIntensity().
const IFootprintFactor * Beam::footprintFactor | ( | ) | const |
Returns footprint factor.
Definition at line 89 of file Beam.cpp.
References m_shape_factor.
Referenced by DepthProbeSimulation::normalize().
void Beam::setFootprintFactor | ( | const IFootprintFactor & | shape_factor | ) |
Sets footprint factor to the beam.
Definition at line 94 of file Beam.cpp.
References IFootprintFactor::clone(), m_shape_factor, and INode::registerChild().
Referenced by DepthProbeSimulation::setBeamParameters().
void Beam::setWidthRatio | ( | double | width_ratio | ) |
Sets beam to sample width ratio in footprint factor.
Definition at line 100 of file Beam.cpp.
References m_shape_factor.
void Beam::setPolarization | ( | const kvector_t | bloch_vector | ) |
Sets the polarization density matrix according to the given Bloch vector.
Definition at line 108 of file Beam.cpp.
References m_bloch_vector, and BasicVector3D< T >::mag().
Referenced by Instrument::setBeamPolarization().
kvector_t Beam::getBlochVector | ( | ) | const |
Definition at line 118 of file Beam.cpp.
References m_bloch_vector.
Referenced by SimulationToPython::defineBeamPolarization().
Eigen::Matrix2cd Beam::getPolarization | ( | ) | const |
Returns the polarization density matrix (in spin basis along z-axis)
Definition at line 123 of file Beam.cpp.
References m_bloch_vector, BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().
Referenced by Simulation2D::generateSimulationElements(), and anonymous_namespace{SpecularSimulation.cpp}::generateSimulationElements().
|
inline |
Definition at line 69 of file Beam.h.
References m_wavelength.
Referenced by SimulationToPython::defineGISASBeam(), SimulationToPython::defineOffSpecBeam(), DepthProbeSimulation::generateSimulationElements(), Simulation2D::generateSimulationElements(), RectangularDetector::indexOfSpecular(), OffSpecSimulation::initSimulationElementVector(), and anonymous_namespace{SpecularSimulation.cpp}::mangledScan().
|
inline |
Definition at line 70 of file Beam.h.
References m_alpha.
Referenced by SimulationToPython::defineGISASBeam(), DepthProbeSimulation::generateSimulationElements(), Simulation2D::generateSimulationElements(), RectangularDetector::indexOfSpecular(), SphericalDetector::indexOfSpecular(), RectangularDetector::init(), and anonymous_namespace{SpecularSimulation.cpp}::mangledScan().
|
inline |
Definition at line 71 of file Beam.h.
References m_phi.
Referenced by SimulationToPython::defineGISASBeam(), SimulationToPython::defineOffSpecBeam(), Simulation2D::generateSimulationElements(), RectangularDetector::indexOfSpecular(), SphericalDetector::indexOfSpecular(), and OffSpecSimulation::initSimulationElementVector().
|
inlineoverridevirtual |
Calls the INodeVisitor's visit method.
Implements INode.
Definition at line 73 of file Beam.h.
References INodeVisitor::visit().
|
overridevirtual |
Returns a vector of children (const).
Reimplemented from INode.
Definition at line 136 of file Beam.cpp.
References m_shape_factor.
|
virtualinherited |
Returns multiline string representing tree structure below the node.
Definition at line 53 of file INode.cpp.
References NodeUtils::nodeToString().
|
inherited |
Definition at line 58 of file INode.cpp.
References ASSERT, and INode::setParent().
Referenced by ParticleLayout::addAndRegisterAbstractParticle(), ParticleCoreShell::addAndRegisterCore(), MultiLayer::addAndRegisterInterface(), MultiLayer::addAndRegisterLayer(), ParticleCoreShell::addAndRegisterShell(), Layer::addLayout(), ParticleComposition::addParticlePointer(), Beam(), Crystal::Crystal(), IDetector::IDetector(), Simulation::initialize(), MesoCrystal::initialize(), Instrument::Instrument(), operator=(), Instrument::operator=(), Particle::Particle(), ParticleDistribution::ParticleDistribution(), IParticle::rotate(), ParticleLayout::setAndRegisterInterferenceFunction(), Simulation::setBackground(), InterferenceFunction1DLattice::setDecayFunction(), InterferenceFunction2DLattice::setDecayFunction(), Instrument::setDetector(), IDetector::setDetectorResolution(), 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().
|
virtualinherited |
Reimplemented in SampleProvider.
Definition at line 69 of file INode.cpp.
References INode::m_parent.
Referenced by INode::registerChild(), SampleProvider::setBuilder(), and SampleProvider::setParent().
|
inherited |
Definition at line 74 of file INode.cpp.
References INode::m_parent.
Referenced by INode::copyNumber(), INode::createParameterTree(), NodeUtils::nodePath(), Lattice2D::onChange(), SampleProvider::setBuilder(), SampleProvider::setParent(), and SampleProvider::setSample().
|
inherited |
|
inherited |
Returns copyNumber of child, which takes into account existence of children with same name.
Definition at line 84 of file INode.cpp.
References INode::getChildren(), IParameterized::getName(), and INode::parent().
Referenced by INode::displayName().
|
inherited |
Returns display name, composed from the name of node and it's copy number.
Definition at line 105 of file INode.cpp.
References INode::copyNumber(), IParameterized::getName(), and INode::m_parent.
Referenced by NodeUtils::nodePath(), and anonymous_namespace{NodeUtils.cpp}::nodeString().
|
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.
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().
|
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().
|
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(), 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(), 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(), 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(), 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(), Layer::clone(), IFormFactorBorn::computeSlicingEffects(), ConvolutionDetectorResolution::ConvolutionDetectorResolution(), INode::copyNumber(), IParameterized::createParameterTree(), IFormFactor::createSlicedFormFactor(), SampleToPython::defineFormFactors(), SampleToPython::defineInterferenceFunctions(), INode::displayName(), IDetector::IDetector(), Instrument::Instrument(), IParameterized::IParameterized(), operator=(), SampleBuilderNode::operator=(), anonymous_namespace{ParticleLayout.cpp}::particleDensityIsProvidedByInterference(), IParameterized::registerParameter(), SampleBuilderNode::SampleBuilderNode(), and IFormFactor::sliceFormFactor().
|
private |
Definition at line 77 of file Beam.h.
Referenced by Beam(), getCentralK(), getWavelength(), operator=(), and setCentralK().
|
private |
Definition at line 78 of file Beam.h.
Referenced by Beam(), getAlpha(), getCentralK(), operator=(), and setCentralK().
|
private |
Definition at line 79 of file Beam.h.
Referenced by Beam(), getCentralK(), getPhi(), operator=(), and setCentralK().
|
private |
beam intensity (neutrons/sec)
Definition at line 80 of file Beam.h.
Referenced by Beam(), getIntensity(), operator=(), and setIntensity().
|
private |
footprint correction handler
Definition at line 81 of file Beam.h.
Referenced by Beam(), footprintFactor(), getChildren(), operator=(), setFootprintFactor(), and setWidthRatio().
|
private |
Bloch vector encoding the beam's polarization.
Definition at line 82 of file Beam.h.
Referenced by Beam(), getBlochVector(), getPolarization(), operator=(), and setPolarization().
|
privateinherited |
Definition at line 81 of file INode.h.
Referenced by INode::displayName(), INode::parent(), and INode::setParent().
|
protectedinherited |
Definition at line 86 of file INode.h.
Referenced by INode::INode().
|
protectedinherited |
Definition at line 87 of file INode.h.
Referenced by INode::INode(), and IFootprintFactor::setWidthRatio().
|
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().