22 const std::vector<FormFactorCoherentSum>& weighted_formfactors,
24 : m_weighted_formfactors(weighted_formfactors)
25 , m_options(sim_params)
54 double min_array[] = {0.0, 0.0};
55 double max_array[] = {1.0, 1.0};
56 return m_integrator->integrate(min_array, max_array, (
void*)&sim_element,
63 double par0 = fractions[0];
64 double par1 = fractions[1];
Defines the macro ASSERT.
#define ASSERT(condition)
Defines interface IInterferenceFunctionStrategy.
Defines and implements template class IntegratorMCMiser.
Defines class SimulationElement.
Base class of all interference function strategy classes.
std::unique_ptr< IntegratorMCMiser< IInterferenceFunctionStrategy > > m_integrator
double evaluate_for_fixed_angles(double *fractions, size_t dim, void *params) const
IInterferenceFunctionStrategy(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const SimulationOptions &sim_params, bool polarized)
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.
virtual ~IInterferenceFunctionStrategy()
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.
virtual double polarizedCalculation(const SimulationElement &sim_element) const =0
Evaluates the intensity in the polarized case.
std::vector< FormFactorCoherentSum > m_weighted_formfactors
const SimulationOptions m_options
Data stucture containing both input and output of a single detector cell.
double solidAngle() const
SimulationElement pointElement(double x, double y) const
Returns copy of this SimulationElement with k_f given by in-pixel coordinate x,y.
double integrationFactor(double x, double y) const
Collect the different options for simulation.
size_t getMcPoints() const