28 , m_begin_it(begin_it)
43 std::vector<complex_t> kz_stack = ele.
produceKz(slices);
50 const complex_t trace = (polMatrix *
R.adjoint() * anaMatrix *
R).trace();
Defines namespace Compute::SpecularMagnetic.
Defines namespace Compute::SpecularScalar.
Defines and implements class IFlux.
Defines class ProgressHandler.
Defines class SpecularComputation.
Declares the class SpecularElement.
Interface for a single-threaded computation with given range of DiffuseElements and ProgressHandler.
const reSample & m_re_sample
void stepProgress() const
const PolMatrices & polMatrices() const
Returns polarizer and analyzer matrices.
const SpinMatrix & polarizerMatrix() const
Gets the polarization density matrix (in spin basis along z-axis)
const SpinMatrix & analyzerMatrix() const
Gets the polarization analyzer operator (in spin basis along z-axis)
Maintains information about progress of a computation.
Collect the different options for simulation.SimulationOptions.
SpecularComputation(const reSample &re_sample, const SimulationOptions &options, ProgressHandler &progress, SpecularElementIter begin_it, SpecularElementIter end_it)
std::vector< SpecularElement >::iterator SpecularElementIter
void runProtected() override
Runs computation. May throw. To be called from run(), which catches exceptions.
const SpecularElementIter m_begin_it
these iterators define the span of detector bins this simulation will work on
const SpecularElementIter m_end_it
~SpecularComputation() override
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)
void setIntensity(double intensity)
std::vector< complex_t > produceKz(const SliceStack &slices)
Returns kz values for Abeles computation of reflection/transition coefficients.
Data structure that contains all the necessary data for scattering calculations.
bool polarizing() const
Contains magnetic material, or nonzero magnetic field.
const SliceStack & averageSlices() const
SpinMatrix topLayerR(const SliceStack &slices, const std::vector< complex_t > &kzs, bool forward)
Computes the Fresnel R coefficient for the top layer only Introduced in order to speed up pure reflec...
complex_t topLayerR(const SliceStack &slices, const std::vector< complex_t > &kz)
Computes the Fresnel R coefficient for the top layer only. Introduced in order to speed up pure refle...