15 #ifndef BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
16 #define BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
48 void init(
const std::vector<FormFactorCoherentSum>& weighted_formfactors,
56 std::unique_ptr<IInterferenceFunction>
mP_iff;
72 std::unique_ptr<IntegratorMCMiser<IInterferenceFunctionStrategy>>
mP_integrator;
Defines complex_t, and a few elementary functions.
Defines class SimulationOptions.
Base class of all interference function strategy classes.
double evaluate_for_fixed_angles(double *fractions, size_t dim, void *params) const
virtual double scalarCalculation(const SimulationElement &sim_element) const =0
Evaluates the intensity in the scalar case.
double evaluate(const SimulationElement &sim_element) const
Calculates the intensity for scalar particles/interactions.
std::vector< FormFactorCoherentSum > m_formfactor_wrappers
virtual ~IInterferenceFunctionStrategy()
double evaluateSinglePoint(const SimulationElement &sim_element) const
IInterferenceFunctionStrategy(const SimulationOptions &sim_params, bool polarized)
void init(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff)
Initializes the object with form factors and an interference function.
virtual void strategy_specific_post_init()
double MCIntegratedEvaluate(const SimulationElement &sim_element) const
Performs a Monte Carlo integration over the bin for the evaluation of the intensity.
virtual double polarizedCalculation(const SimulationElement &sim_element) const =0
Evaluates the intensity in the polarized case.
std::unique_ptr< IntegratorMCMiser< IInterferenceFunctionStrategy > > mP_integrator
std::unique_ptr< IInterferenceFunction > mP_iff
SimulationOptions m_options
Pure virtual base class of interference functions.
Template class to use Monte Carlo MISER integration of class member functions.
Data stucture containing both input and output of a single detector cell.
Collect the different options for simulation.