22 static_assert(std::is_copy_constructible<SpecularComputation>::value ==
false,
23 "SpecularComputation should not be copy constructible");
24 static_assert(std::is_copy_assignable<SpecularComputation>::value ==
false,
25 "SpecularComputation should not be copy assignable");
31 :
IComputation(multilayer, options, progress), m_begin_it(begin_it), m_end_it(end_it)
Defines class ProcessedSample.
Defines class ProgressHandler.
Defines classes SpecularComputationTerm, SpecularScalarTerm, SpecularMatrixTerm.
Defines class SpecularComputation.
Declares the class SpecularSimulationElement.
Defines class SpecularStrategyBuilder.
Interface for a single-threaded computation with given range of SimulationElements and ProgressHandle...
std::unique_ptr< ProcessedSample > mP_processed_sample
ProgressHandler * mp_progress
Our sample model: a stack of layers one below the other.
Maintains information about progress of a computation.
Collect the different options for simulation.
SpecularElementIter m_end_it
std::unique_ptr< SpecularComputationTerm > m_computation_term
std::vector< SpecularSimulationElement >::iterator SpecularElementIter
SpecularElementIter m_begin_it
these iterators define the span of detector bins this simulation will work on
void runProtected() override
SpecularComputation(const MultiLayer &multilayer, const SimulationOptions &options, ProgressHandler &progress, SpecularElementIter begin_it, SpecularElementIter end_it)
~SpecularComputation() override
Computes the specular scattering for a magnetic sample Used by SpecularComputation.
Computes the specular scattering for a scalar sample Used by SpecularComputation.
static std::unique_ptr< ISpecularStrategy > build(const MultiLayer &sample, const bool magnetic)