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...
 
ProgressHandler * m_progress
 
std::unique_ptr< ProcessedSample > m_processed_sample
 
Our sample model: a stack of layers one below the other.
 
Maintains information about progress of a computation.
 
Collect the different options for simulation.
 
std::unique_ptr< SpecularComputationTerm > m_computation_term
 
std::vector< SpecularSimulationElement >::iterator SpecularElementIter
 
void runProtected() override
 
const SpecularElementIter m_begin_it
these iterators define the span of detector bins this simulation will work on
 
const SpecularElementIter m_end_it
 
SpecularComputation(const MultiLayer &multilayer, const SimulationOptions &options, ProgressHandler &progress, SpecularElementIter begin_it, SpecularElementIter end_it, bool forcePolarized=false)
 
~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)