BornAgain
1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Base class of all interference function strategy classes. More...
Public Member Functions | |
IInterferenceFunctionStrategy (const std::vector< FormFactorCoherentSum > &weighted_formfactors, const SimulationOptions &sim_params, bool polarized) | |
virtual | ~IInterferenceFunctionStrategy () |
double | evaluate (const SimulationElement &sim_element) const |
Calculates the intensity for scalar particles/interactions. More... | |
Protected Attributes | |
const SimulationOptions | m_options |
std::vector< FormFactorCoherentSum > | m_weighted_formfactors |
Private Member Functions | |
double | evaluate_for_fixed_angles (double *fractions, size_t dim, void *params) const |
double | evaluateSinglePoint (const SimulationElement &sim_element) const |
double | MCIntegratedEvaluate (const SimulationElement &sim_element) const |
Performs a Monte Carlo integration over the bin for the evaluation of the intensity. More... | |
virtual double | polarizedCalculation (const SimulationElement &sim_element) const =0 |
Evaluates the intensity in the polarized case. More... | |
virtual double | scalarCalculation (const SimulationElement &sim_element) const =0 |
Evaluates the intensity in the scalar case. More... | |
Private Attributes | |
std::unique_ptr< IntegratorMCMiser< IInterferenceFunctionStrategy > > | m_integrator |
bool | m_polarized |
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 46 of file IInterferenceFunctionStrategy.h.
IInterferenceFunctionStrategy::IInterferenceFunctionStrategy | ( | const std::vector< FormFactorCoherentSum > & | weighted_formfactors, |
const SimulationOptions & | sim_params, | ||
bool | polarized | ||
) |
Definition at line 21 of file IInterferenceFunctionStrategy.cpp.
References ASSERT, and m_weighted_formfactors.
|
virtualdefault |
double IInterferenceFunctionStrategy::evaluate | ( | const SimulationElement & | sim_element | ) | const |
Calculates the intensity for scalar particles/interactions.
Definition at line 35 of file IInterferenceFunctionStrategy.cpp.
References evaluateSinglePoint(), SimulationOptions::isIntegrate(), m_options, MCIntegratedEvaluate(), and SimulationElement::solidAngle().
|
private |
Definition at line 60 of file IInterferenceFunctionStrategy.cpp.
References evaluateSinglePoint(), SimulationElement::integrationFactor(), and SimulationElement::pointElement().
|
private |
Definition at line 43 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 52 of file IInterferenceFunctionStrategy.cpp.
References SimulationOptions::getMcPoints(), m_integrator, and m_options.
Referenced by evaluate().
|
privatepure virtual |
Evaluates the intensity in the polarized case.
Implemented in SSCApproximationStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
privatepure virtual |
Evaluates the intensity in the scalar case.
Implemented in SSCApproximationStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
private |
Definition at line 71 of file IInterferenceFunctionStrategy.h.
Referenced by MCIntegratedEvaluate().
|
protected |
Definition at line 57 of file IInterferenceFunctionStrategy.h.
Referenced by evaluate(), and MCIntegratedEvaluate().
|
private |
Definition at line 68 of file IInterferenceFunctionStrategy.h.
Referenced by evaluateSinglePoint().
|
protected |
Definition at line 56 of file IInterferenceFunctionStrategy.h.
Referenced by IInterferenceFunctionStrategy(), SSCApproximationStrategy::SSCApproximationStrategy(), DecouplingApproximationStrategy::polarizedCalculation(), SSCApproximationStrategy::polarizedCalculation(), DecouplingApproximationStrategy::scalarCalculation(), and SSCApproximationStrategy::scalarCalculation().