29 return std::hash<double>{}(kvec.x()) ^ std::hash<double>{}(kvec.y())
30 ^ std::hash<double>{}(kvec.z());
33 std::unique_ptr<const ILayerRTCoefficients>
44 for (
auto slice :
slices) {
50 std::unique_ptr<const ILayerRTCoefficients>
56 std::unique_ptr<const ILayerRTCoefficients>
58 const std::vector<Slice>& slices,
63 return std::unique_ptr<const ILayerRTCoefficients>(coeffs[layer_index]->clone());
66 return std::unique_ptr<const ILayerRTCoefficients>(coef_vector[layer_index]->clone());
73 auto it = hash_table.find(kvec);
74 if (it == hash_table.end())
Defines class MatrixFresnelMap.
Defines class SimulationElement.
Defines class SpecularMagneticOldStrategy.
Holds the necessary information to calculate the radiation wavefunction in every layer for different ...
std::vector< Slice > m_slices
virtual void setSlices(const std::vector< Slice > &slices)
std::unique_ptr< ISpecularStrategy > m_Strategy
const std::vector< Slice > & slices() const
std::vector< std::unique_ptr< const ILayerRTCoefficients > > coeffs_t
size_t operator()(const kvector_t &kvec) const noexcept
Returns hash value of a 3-vector, computed by exclusive-or of the component hash values.
std::vector< Slice > m_inverted_slices
CoefficientHash m_hash_table_in
std::unordered_map< kvector_t, ISpecularStrategy::coeffs_t, HashKVector > CoefficientHash
std::unique_ptr< const ILayerRTCoefficients > getCoefficients(const kvector_t &kvec, size_t layer_index) const override
void setSlices(const std::vector< Slice > &slices) final override
const ISpecularStrategy::coeffs_t & getCoefficientsFromCache(kvector_t kvec, const std::vector< Slice > &slices, CoefficientHash &hash_table) const
std::unique_ptr< const ILayerRTCoefficients > getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector.
MatrixFresnelMap(std::unique_ptr< ISpecularStrategy > strategy)
CoefficientHash m_hash_table_out
~MatrixFresnelMap() override
Data stucture containing both input and output of a single detector cell.
kvector_t getMeanKf() const