24 std::unique_ptr<IInterferenceFunctionStrategy>
30 throw std::runtime_error(
"LayoutStrategyBuilder::checkInterferenceFunction: "
31 "interference function does not support multiple layers");
35 const std::vector<FormFactorCoherentSum>& weighted_formfactors = layout.
formFactorList();
37 if (radial_para && radial_para->kappa() > 0.0) {
38 double kappa = radial_para->kappa();
39 return std::make_unique<SSCApproximationStrategy>(weighted_formfactors, radial_para,
42 return std::make_unique<DecouplingApproximationStrategy>(weighted_formfactors, iff, sim_params,
52 , m_region_map(layout.regionMap())
53 , m_interference_function_strategy(processedInterferenceFunction(layout, options,
polarized))
65 std::map<
size_t, std::vector<HomogeneousRegion>>& region_map)
const
68 size_t i = entry.first;
69 auto& regions = entry.second;
70 region_map[i].insert(region_map[i].begin(), regions.begin(), regions.end());
Defines class DecouplingApproximationStrategy.
Defines class InterferenceFunctionRadialParaCrystal.
Defines class ParticleLayoutComputation.
Defines class ProcessedLayout.
Defines class SSCApproximationStrategy.
Defines class SimulationElement.
Abstract base class of interference functions.
virtual bool supportsMultilayer() const
Indicates if this interference function can be used with a multilayer (DWBA mode)
Interference function of radial paracrystal.
ParticleLayoutComputation(const ProcessedLayout &layout, const SimulationOptions &options, bool polarized)
const ProcessedLayout & m_layout
const std::map< size_t, std::vector< HomogeneousRegion > > m_region_map
~ParticleLayoutComputation()
std::unique_ptr< const IInterferenceFunctionStrategy > m_interference_function_strategy
void compute(SimulationElement &elem) const
void mergeRegionMap(std::map< size_t, std::vector< HomogeneousRegion >> ®ion_map) const
Merges its region map into the given one (notice non-const reference parameter)
Data structure that contains preprocessed data for a single layout.
size_t numberOfSlices() const
const std::vector< FormFactorCoherentSum > & formFactorList() const
const IInterferenceFunction * interferenceFunction() const
double surfaceDensity() const
Data stucture containing both input and output of a single detector cell.
void addIntensity(double intensity)
Collect the different options for simulation.