22 FormFactorCoherentPart::FormFactorCoherentPart(
IFormFactor* p_ff) : mP_ff(p_ff) {}
25 : mP_ff(other.mP_ff->clone()), mp_fresnel_map(other.mp_fresnel_map),
26 m_layer_index(other.m_layer_index)
32 mP_ff.reset(other.mP_ff->clone());
33 mp_fresnel_map = other.mp_fresnel_map;
34 m_layer_index = other.m_layer_index;
42 FormFactorCoherentPart::~FormFactorCoherentPart() =
default;
44 complex_t FormFactorCoherentPart::evaluate(
const SimulationElement& sim_element)
const
46 WavevectorInfo wavevectors(sim_element.getKi(), sim_element.getMeanKf(),
47 sim_element.getWavelength());
51 mP_ff->setSpecularInfo(std::move(P_in_coeffs), std::move(P_out_coeffs));
52 return mP_ff->evaluate(wavevectors);
55 Eigen::Matrix2cd FormFactorCoherentPart::evaluatePol(
const SimulationElement& sim_element)
const
57 WavevectorInfo wavevectors(sim_element.getKi(), sim_element.getMeanKf(),
58 sim_element.getWavelength());
62 mP_ff->setSpecularInfo(std::move(P_in_coeffs), std::move(P_out_coeffs));
63 return mP_ff->evaluatePol(wavevectors);
66 void FormFactorCoherentPart::setSpecularInfo(
const IFresnelMap* p_fresnel_map,
size_t layer_index)
68 mp_fresnel_map = p_fresnel_map;
69 m_layer_index = layer_index;
72 double FormFactorCoherentPart::radialExtension()
const
74 return mP_ff->radialExtension();
Defines class IFresnelMap.
Defines and implements class ILayerRTCoefficients.
Defines class SimulationElement.
Holds the necessary information to calculate the radiation wavefunction in every layer for different ...
virtual std::unique_ptr< const ILayerRTCoefficients > getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const =0
Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector.
std::unique_ptr< const ILayerRTCoefficients > getInCoefficients(const T &sim_element, size_t layer_index) const
Retrieves the amplitude coefficients for an incoming wavevector.
Data stucture containing both input and output of a single detector cell.
Holds all wavevector information relevant for calculating form factors.