29 std::vector<std::unique_ptr<const ParticleLayoutContribution>>
30 makeLayoutComputation(
const std::vector<reLayout>& layouts,
const SimulationOptions& options,
33 std::vector<std::unique_ptr<const ParticleLayoutContribution>> result;
35 for (
const reLayout& layout : layouts)
46 std::vector<std::unique_ptr<DiffuseElement>>::iterator begin_it,
47 std::vector<std::unique_ptr<DiffuseElement>>::iterator end_it)
49 , m_begin_it(begin_it)
54 , m_layout_contribs(makeLayoutComputation(m_re_sample.layouts(), options,
55 m_re_sample.containsMagneticMaterial()))
71 std::unique_ptr<DiffuseElement>& ele = *it;
75 ele->setFluxes(&fluxes_in, &fluxes_out);
78 contrib->compute(*ele);
Defines class DWBAComputation.
Defines class DelayedProgressCounter.
Defines class DiffuseElement.
std::vector< std::unique_ptr< const IFlux > > Fluxes
Defines class GISASSpecularContribution.
Defines and implements class IFlux.
Defines class ParticleLayoutContribution.
Defines class ProgressHandler.
Defines class RoughMultiLayerContribution.
Defines class SimulationOptions.
void runProtected() override
Performs a single-threaded DWBA computation for a DiffuseElements in range m_begin_it ....
const std::unique_ptr< const RoughMultiLayerContribution > m_roughness_contrib
const std::vector< std::unique_ptr< const ParticleLayoutContribution > > m_layout_contribs
const std::unique_ptr< const GISASSpecularContribution > m_specular_contrib
~DWBAComputation() override
std::vector< std::unique_ptr< DiffuseElement > >::iterator m_end_it
std::vector< std::unique_ptr< DiffuseElement > >::iterator m_begin_it
DWBAComputation(const reSample &re_sample, const SimulationOptions &options, ProgressHandler &progress, std::vector< std::unique_ptr< DiffuseElement >>::iterator begin_it, std::vector< std::unique_ptr< DiffuseElement >>::iterator end_it)
Computes the specular signal in the bin where q_parallel = 0. Used by DWBAComputation.
Interface for a single-threaded computation with given range of DiffuseElements and ProgressHandler.
ProgressHandler * m_progress
const reSample & m_re_sample
void stepProgress() const
Computes the scattering contribution from one particle layout. Instances are created and used by DWBA...
Maintains information about progress of a computation.
Computes the diffuse reflection from the rough interfaces of a sample. Used by DWBAComputation.
Collect the different options for simulation.SimulationOptions.
Data structure that contains preprocessed data for a single layout.
Data structure that contains all the necessary data for scattering calculations.
Fluxes fluxesIn(const R3 &k) const
Fluxes fluxesOut(const R3 &k) const
bool hasRoughness(const MultiLayer &sample)