16 #error no need to expose this header to Swig
20 #ifndef BORNAGAIN_RESAMPLE_ELEMENT_DIFFUSEELEMENT_H
21 #define BORNAGAIN_RESAMPLE_ELEMENT_DIFFUSEELEMENT_H
24 #include <heinz/Vectors3D.h>
32 using Fluxes = std::vector<std::unique_ptr<const IFlux>>;
41 const Fluxes* fluxes_in =
nullptr,
const Fluxes* fluxes_out =
nullptr);
64 R3
getQ(
double x,
double y)
const;
70 double alpha(
double x,
double y)
const;
71 double getPhi(
double x,
double y)
const;
79 R3
getKf(
double x,
double y)
const;
std::vector< std::unique_ptr< const IFlux > > Fluxes
Defines class DiffuseElement.
Data stucture containing both input and output of a single detector cell.
double getPhiMean() const
double m_intensity
simulated intensity for 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
bool isSpecular() const
Tells if simulation element corresponds to a specular peak.
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
void addIntensity(double intensity)
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
DiffuseElement(const DiffuseElement &)=delete
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)
void setIntensity(double intensity)
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
Interface to access reflection/transmission coefficients. Realized by ScalarFlux and MatrixFlux.
Interface for a function that maps [0,1]x[0,1] to the kvectors in a pixel. Abstract base class for Sp...
Holds all wavevector information relevant for calculating form factors.