diff --git a/Core/Multilayer/SpecularMagneticOldStrategy.cpp b/Core/Multilayer/SpecularMagneticOldStrategy.cpp index 1665d15544b4d7794d15a869e0529a6fcc7de6ac..c557ecafb58c153510af0d7c53ca045090da7bce 100644 --- a/Core/Multilayer/SpecularMagneticOldStrategy.cpp +++ b/Core/Multilayer/SpecularMagneticOldStrategy.cpp @@ -31,7 +31,7 @@ complex_t GetImExponential(complex_t exponent); const complex_t I(0, 1); } -std::vector<std::unique_ptr<MatrixRTCoefficients>> +SpecularMagneticOldStrategy::coeffs_t SpecularMagneticOldStrategy::Execute(const std::vector<Slice>& slices, const kvector_t& k) const { @@ -39,14 +39,14 @@ SpecularMagneticOldStrategy::Execute(const std::vector<Slice>& slices, CalculateEigenvalues(slices, k, result); CalculateTransferAndBoundary(slices, result); - std::vector<std::unique_ptr<MatrixRTCoefficients>> resultConvert; + coeffs_t resultConvert; for(auto& coeff : result) resultConvert.push_back( std::make_unique<MatrixRTCoefficients>(coeff)); return resultConvert; } -std::vector<std::unique_ptr<MatrixRTCoefficients>> +SpecularMagneticOldStrategy::coeffs_t SpecularMagneticOldStrategy::Execute(const std::vector<Slice>& slices, const std::vector<complex_t>& k) const { throw std::runtime_error("Not implemented"); diff --git a/Core/Multilayer/SpecularMagneticOldStrategy.h b/Core/Multilayer/SpecularMagneticOldStrategy.h index 4e53c509b6e3259518d9445e99f422efda8085ba..bd10b0b5d1778d5f51ff8d3e60ca5417b791829d 100644 --- a/Core/Multilayer/SpecularMagneticOldStrategy.h +++ b/Core/Multilayer/SpecularMagneticOldStrategy.h @@ -29,12 +29,15 @@ class Slice; class SpecularMagneticOldStrategy { public: + typedef std::unique_ptr<const MatrixRTCoefficients> single_coeff_t; + typedef std::vector<single_coeff_t> coeffs_t; + //! Computes refraction angle reflection/transmission coefficients //! for given sliced multilayer and wavevector k - BA_CORE_API_ std::vector<std::unique_ptr<MatrixRTCoefficients>> + BA_CORE_API_ coeffs_t Execute(const std::vector<Slice>& slices, const kvector_t& k) const; - BA_CORE_API_ std::vector<std::unique_ptr<MatrixRTCoefficients>> + BA_CORE_API_ coeffs_t Execute(const std::vector<Slice>& slices, const std::vector<complex_t>& kz) const; }; // class SpecularMagneticOldStrategy diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp index c16850106dcd87850e1b7952fcd8f289a92dd0f3..99f0b70760c44dfa177dc889da9b9b6d33beb2f7 100644 --- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp +++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp @@ -67,7 +67,7 @@ TEST_F(SpecularMagneticTest, zerofield) Eigen::Vector2cd RMS = RTScalar.R1min() + RTScalar.R2min(); auto coeffs_zerofield = std::make_unique<SpecularMagneticOldStrategy>()->Execute(sample_zerofield.slices(), k1); - MatrixRTCoefficients RTMatrix = *dynamic_cast<MatrixRTCoefficients*>(coeffs_zerofield[1].get()); + MatrixRTCoefficients RTMatrix = *dynamic_cast<const MatrixRTCoefficients*>(coeffs_zerofield[1].get()); Eigen::Vector2cd TPM = RTMatrix.T1plus() + RTMatrix.T2plus(); Eigen::Vector2cd RPM = RTMatrix.R1plus() + RTMatrix.R2plus(); Eigen::Vector2cd TMM = RTMatrix.T1min() + RTMatrix.T2min(); @@ -91,7 +91,7 @@ TEST_F(SpecularMagneticTest, zerofield) RMS = RTScalar.R1min() + RTScalar.R2min(); coeffs_zerofield = std::make_unique<SpecularMagneticOldStrategy>()->Execute(sample_zerofield.slices(), k2); - RTMatrix = *dynamic_cast<MatrixRTCoefficients*>(coeffs_zerofield[1].get()); + RTMatrix = *dynamic_cast<const MatrixRTCoefficients*>(coeffs_zerofield[1].get()); TPM = RTMatrix.T1plus() + RTMatrix.T2plus(); RPM = RTMatrix.R1plus() + RTMatrix.R2plus(); TMM = RTMatrix.T1min() + RTMatrix.T2min(); @@ -115,7 +115,7 @@ TEST_F(SpecularMagneticTest, zerofield) RMS = RTScalar.R1min() + RTScalar.R2min(); coeffs_zerofield = std::make_unique<SpecularMagneticOldStrategy>()->Execute(sample_zerofield.slices(), k3); - RTMatrix = *dynamic_cast<MatrixRTCoefficients*>(coeffs_zerofield[1].get()); + RTMatrix = *dynamic_cast<const MatrixRTCoefficients*>(coeffs_zerofield[1].get()); TPM = RTMatrix.T1plus() + RTMatrix.T2plus(); RPM = RTMatrix.R1plus() + RTMatrix.R2plus(); TMM = RTMatrix.T1min() + RTMatrix.T2min();