24 SpecularComputationTerm::SpecularComputationTerm(std::unique_ptr<ISpecularStrategy> strategy)
 
   25     : m_Strategy(std::move(strategy)){};
 
   27 SpecularScalarTerm::SpecularScalarTerm(std::unique_ptr<ISpecularStrategy> strategy)
 
   32 SpecularComputationTerm::~SpecularComputationTerm() = 
default;
 
   34 void SpecularComputationTerm::setProgressHandler(
ProgressHandler* p_progress)
 
   36     mP_progress_counter = std::make_unique<DelayedProgressCounter>(p_progress, 100);
 
   40                                                const std::vector<Slice>& slices)
 const 
   47     if (mP_progress_counter)
 
   48         mP_progress_counter->stepProgress();
 
   55 SpecularScalarTerm::~SpecularScalarTerm() = 
default;
 
   58                               const std::vector<Slice>& slices)
 const 
   60     const auto coeff = m_Strategy->Execute(slices, elem.
produceKz(slices));
 
   61     elem.setIntensity(std::norm(coeff.front()->getScalarR()));
 
   72                         const std::unique_ptr<const ILayerRTCoefficients>& coeff)
 
   77     const auto R = coeff->getReflectionMatrix();
 
   79     const complex_t result = (polarization * R.adjoint() * analyzer * R).trace();
 
   81     return std::abs(result);
 
   86 SpecularMatrixTerm::SpecularMatrixTerm(std::unique_ptr<ISpecularStrategy> strategy)
 
   91 SpecularMatrixTerm::~SpecularMatrixTerm() = 
default;
 
   94                               const std::vector<Slice>& slices)
 const 
   96     const auto coeff = m_Strategy->Execute(slices, elem.
produceKz(slices));
 
   97     elem.setIntensity(matrix_intensity(elem, coeff.front()));
 
Defines class DelayedProgressCounter.
 
Defines and implements class ILayerRTCoefficients.
 
Defines classes SpecularComputationTerm, SpecularScalarTerm, SpecularMatrixTerm.
 
Declares the class SpecularSimulationElement.
 
Eigen::Matrix2cd getAnalyzerOperator() const
Gets the polarization analyzer operator (in spin basis along z-axis)
 
Eigen::Matrix2cd getPolarization() const
Gets the polarization density matrix (in spin basis along z-axis)
 
Maintains information about progress of a computation.
 
Computes the specular scattering.
 
Data stucture containing both input and output of a single image pixel for specular simulation.
 
bool isCalculated() const
Returns calculation flag (if it's false, zero intensity is assigned to the element)
 
std::vector< complex_t > produceKz(const std::vector< Slice > &slices)
Returns kz values for Abeles computation of reflection/transition coefficients.
 
const PolarizationHandler & polarizationHandler() const
Returns assigned PolarizationHandler.