BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
Abstract base class of DecouplingApproximationStrategy, SSCAStrategy. Provides function 'evaluate' that computes the total scattering intensity from a decorated layer.
Instantiation of child classes takes place in LayoutStrategyBuilder::createStrategy, which is called from ParticleLayoutContribution::eval.
Definition at line 41 of file IInterparticleStrategy.h.
Public Member Functions | |
IInterparticleStrategy (const std::vector< std::unique_ptr< const CoherentFFSum >> &weighted_formfactors, const SimulationOptions &sim_params, bool polarized) | |
virtual | ~IInterparticleStrategy () |
double | evaluate (const DiffuseElement &ele) const |
Calculates the intensity for scalar particles/interactions. More... | |
Protected Attributes | |
const SimulationOptions | m_options |
const std::vector< std::unique_ptr< const CoherentFFSum > > & | m_weighted_formfactors |
Private Member Functions | |
double | evaluate_for_fixed_angles (const double *fractions, size_t dim, const void *params) const |
double | evaluateSinglePoint (const DiffuseElement &ele) const |
double | MCIntegratedEvaluate (const DiffuseElement &ele) const |
Performs a Monte Carlo integration over the bin for the evaluation of the intensity. More... | |
virtual double | polarizedCalculation (const DiffuseElement &ele) const =0 |
Evaluates the intensity in the polarized case. More... | |
virtual double | scalarCalculation (const DiffuseElement &ele) const =0 |
Evaluates the intensity in the scalar case. More... | |
Private Attributes | |
const std::unique_ptr< IntegratorMCMiser< IInterparticleStrategy > > | m_integrator |
const bool | m_polarized |
IInterparticleStrategy::IInterparticleStrategy | ( | const std::vector< std::unique_ptr< const CoherentFFSum >> & | weighted_formfactors, |
const SimulationOptions & | sim_params, | ||
bool | polarized | ||
) |
Definition at line 21 of file IInterparticleStrategy.cpp.
References ASSERT, and m_weighted_formfactors.
|
virtualdefault |
double IInterparticleStrategy::evaluate | ( | const DiffuseElement & | ele | ) | const |
Calculates the intensity for scalar particles/interactions.
Definition at line 35 of file IInterparticleStrategy.cpp.
References evaluateSinglePoint(), SimulationOptions::isIntegrate(), m_options, MCIntegratedEvaluate(), and DiffuseElement::solidAngle().
|
private |
Definition at line 57 of file IInterparticleStrategy.cpp.
References evaluateSinglePoint(), DiffuseElement::integrationFactor(), and DiffuseElement::pointElement().
|
private |
Definition at line 42 of file IInterparticleStrategy.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 50 of file IInterparticleStrategy.cpp.
References SimulationOptions::getMcPoints(), m_integrator, and m_options.
Referenced by evaluate().
|
privatepure virtual |
Evaluates the intensity in the polarized case.
Implemented in SSCAStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
privatepure virtual |
Evaluates the intensity in the scalar case.
Implemented in SSCAStrategy, and DecouplingApproximationStrategy.
Referenced by evaluateSinglePoint().
|
private |
Definition at line 66 of file IInterparticleStrategy.h.
Referenced by MCIntegratedEvaluate().
|
protected |
Definition at line 53 of file IInterparticleStrategy.h.
Referenced by evaluate(), and MCIntegratedEvaluate().
|
private |
Definition at line 64 of file IInterparticleStrategy.h.
Referenced by evaluateSinglePoint().
|
protected |
Definition at line 52 of file IInterparticleStrategy.h.
Referenced by IInterparticleStrategy(), DecouplingApproximationStrategy::polarizedCalculation(), SSCAStrategy::polarizedCalculation(), DecouplingApproximationStrategy::scalarCalculation(), and SSCAStrategy::scalarCalculation().