BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Public Member Functions | |
IInterferenceFunctionStrategy (const SimulationOptions &sim_params, bool polarized) | |
virtual | ~IInterferenceFunctionStrategy () |
void | init (const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff) |
double | evaluate (const SimulationElement &sim_element) const |
Protected Attributes | |
std::vector< FormFactorCoherentSum > | m_formfactor_wrappers |
std::unique_ptr< IInterferenceFunction > | mP_iff |
SimulationOptions | m_options |
Private Member Functions | |
double | evaluateSinglePoint (const SimulationElement &sim_element) const |
double | MCIntegratedEvaluate (const SimulationElement &sim_element) const |
double | evaluate_for_fixed_angles (double *fractions, size_t dim, void *params) const |
virtual void | strategy_specific_post_init () |
virtual double | scalarCalculation (const SimulationElement &sim_element) const =0 |
virtual double | polarizedCalculation (const SimulationElement &sim_element) const =0 |
Private Attributes | |
bool | m_polarized |
std::unique_ptr< IntegratorMCMiser< IInterferenceFunctionStrategy > > | mP_integrator |
Base class of all interference function strategy classes.
Provides an 'evaluate' function that computes the total scattering intensity from a decorated layer, taking into account a specific inter-particle interference function. This function uses the low-level functions scalarCalculation and polarizedCalculation that are to be overriden in the derived classes. Inheritance is used to support different approximation schemes (DecouplingApproximationStrategy, SSCApproximationStrategy).
Instantiation of child classes takes place in LayoutStrategyBuilder::createStrategy, which is called from ParticleLayoutComputation::eval.
Definition at line 41 of file IInterferenceFunctionStrategy.h.
IInterferenceFunctionStrategy::IInterferenceFunctionStrategy | ( | const SimulationOptions & | sim_params, |
bool | polarized | ||
) |
Definition at line 22 of file IInterferenceFunctionStrategy.cpp.
|
virtualdefault |
void IInterferenceFunctionStrategy::init | ( | const std::vector< FormFactorCoherentSum > & | weighted_formfactors, |
const IInterferenceFunction * | p_iff | ||
) |
Initializes the object with form factors and an interference function.
Definition at line 32 of file IInterferenceFunctionStrategy.cpp.
References IInterferenceFunction::clone(), m_formfactor_wrappers, mP_iff, and strategy_specific_post_init().
double IInterferenceFunctionStrategy::evaluate | ( | const SimulationElement & | sim_element | ) | const |
Calculates the intensity for scalar particles/interactions.
Definition at line 48 of file IInterferenceFunctionStrategy.cpp.
References evaluateSinglePoint(), SimulationElement::getSolidAngle(), SimulationOptions::isIntegrate(), m_options, and MCIntegratedEvaluate().
|
private |
Definition at line 56 of file IInterferenceFunctionStrategy.cpp.
References m_polarized, polarizedCalculation(), and scalarCalculation().
Referenced by evaluate(), and evaluate_for_fixed_angles().
|
private |
Performs a Monte Carlo integration over the bin for the evaluation of the intensity.
Definition at line 66 of file IInterferenceFunctionStrategy.cpp.
References SimulationOptions::getMcPoints(), m_options, and mP_integrator.
Referenced by evaluate().
|
private |
Definition at line 74 of file IInterferenceFunctionStrategy.cpp.
References evaluateSinglePoint(), and SimulationElement::getIntegrationFactor().
|
privatevirtual |
Reimplemented in SSCApproximationStrategy.
Definition at line 86 of file IInterferenceFunctionStrategy.cpp.
Referenced by init().
|
privatepure virtual |
Evaluates the intensity in the scalar case.
Implemented in SSCApproximationStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
privatepure virtual |
Evaluates the intensity in the polarized case.
Implemented in SSCApproximationStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
protected |
Definition at line 55 of file IInterferenceFunctionStrategy.h.
Referenced by init(), DecouplingApproximationStrategy::polarizedCalculation(), SSCApproximationStrategy::polarizedCalculation(), DecouplingApproximationStrategy::scalarCalculation(), SSCApproximationStrategy::scalarCalculation(), and SSCApproximationStrategy::strategy_specific_post_init().
|
protected |
|
protected |
Definition at line 57 of file IInterferenceFunctionStrategy.h.
Referenced by evaluate(), and MCIntegratedEvaluate().
|
private |
Definition at line 69 of file IInterferenceFunctionStrategy.h.
Referenced by evaluateSinglePoint().
|
private |
Definition at line 72 of file IInterferenceFunctionStrategy.h.
Referenced by MCIntegratedEvaluate().