22 std::unique_ptr<IPixel> pixel,
const SpinMatrix& beam_polMatrices,
24 const Fluxes*
const fluxes_in,
const Fluxes*
const fluxes_out)
25 :
IElement({beam_polMatrices, analyzer})
26 , m_wavelength(wavelength)
30 , m_mean_kf(pixel->getK(0.5, 0.5, m_wavelength))
31 , m_pixel(std::move(pixel))
32 , m_is_specular(isSpecular_)
33 , m_fluxes_in(fluxes_in)
34 , m_fluxes_out(fluxes_out)
41 , m_wavelength(other.m_wavelength)
42 , m_alpha_i(other.m_alpha_i)
43 , m_phi_i(other.m_phi_i)
45 , m_mean_kf(other.m_mean_kf)
46 , m_pixel(std::move(other.m_pixel))
47 , m_is_specular(other.m_is_specular)
48 , m_fluxes_in(other.m_fluxes_in)
49 , m_fluxes_out(other.m_fluxes_out)
50 , m_intensity(other.m_intensity)
77 std::unique_ptr<IPixel>(
m_pixel->createZeroSizePixel(x, y)),
121 return R3Util::phi(
getKf(x, y));
131 return m_pixel->integrationFactor(x, y);
Defines class DiffuseElement.
std::vector< std::unique_ptr< const IFlux > > Fluxes
R3 vecOfLambdaAlphaPhi(double _lambda, double _alpha, double _phi)
Defines and implements class IFlux.
Defines and implements interface IPixel.
Data stucture containing both input and output of a single detector cell.
double solidAngle() const
const Fluxes * m_fluxes_in
const R3 m_k_i
cached value of k_i
const IFlux * fluxIn(size_t i_layer) const
double getPhi(double x, double y) const
const double m_alpha_i
incident grazing angle
double integrationFactor(double x, double y) const
const Fluxes * m_fluxes_out
const IFlux * fluxOut(size_t i_layer) const
DiffuseElement pointElement(double x, double y) const
Returns copy of this DiffuseElement with k_f given by in-pixel coordinate x,y.
double wavelength() const
DiffuseElement(double wavelength, double alpha_i, double phi_i, std::unique_ptr< IPixel > pixel, const SpinMatrix &beam_polMatrices, const SpinMatrix &analyzer, bool isSpecular_, const Fluxes *fluxes_in=nullptr, const Fluxes *fluxes_out=nullptr)
const double m_wavelength
wavelength of beam
std::unique_ptr< IPixel > m_pixel
double alpha(double x, double y) const
WavevectorInfo wavevectorInfo() const
R3 getQ(double x, double y) const
Returns scattering vector Q, with Kf determined from in-pixel coordinates x,y. In-pixel coordinates t...
const R3 m_mean_kf
cached value of mean_kf
void setFluxes(const Fluxes *fluxes_in, const Fluxes *fluxes_out)
R3 getKf(double x, double y) const
Returns outgoing wavevector Kf for in-pixel coordinates x,y. In-pixel coordinates take values from 0 ...
const double m_phi_i
incident angle in xy plane
const PolMatrices m_polMatrices
Interface to access reflection/transmission coefficients. Realized by ScalarFlux and MatrixFlux.
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)
Holds all wavevector information relevant for calculating form factors.