24 Eigen::Vector2cd result;
28 if (
lambda(0) == 0.0 && result == Eigen::Vector2cd::Zero())
33 Eigen::Vector2cd MatrixRTCoefficients::R1plus()
const
35 Eigen::Vector2cd result;
40 if (
lambda(0) == 0.0 && mT(2) == 0.0 && mT(3) == 0.0)
45 Eigen::Vector2cd MatrixRTCoefficients::T2plus()
const
47 Eigen::Vector2cd result;
51 if (
lambda(1) == 0.0 && result == Eigen::Vector2cd::Zero())
56 Eigen::Vector2cd MatrixRTCoefficients::R2plus()
const
58 Eigen::Vector2cd result;
63 if (
lambda(1) == 0.0 && mT(2) == 0.0 && mT(3) == 0.0)
68 Eigen::Vector2cd MatrixRTCoefficients::T1min()
const
70 Eigen::Vector2cd result;
74 if (
lambda(0) == 0.0 && result == Eigen::Vector2cd::Zero())
79 Eigen::Vector2cd MatrixRTCoefficients::R1min()
const
81 Eigen::Vector2cd result;
86 if (
lambda(0) == 0.0 && mT(2) == 0.0 && mT(3) == 0.0)
91 Eigen::Vector2cd MatrixRTCoefficients::T2min()
const
93 Eigen::Vector2cd result;
97 if (
lambda(1) == 0.0 && result == Eigen::Vector2cd::Zero())
102 Eigen::Vector2cd MatrixRTCoefficients::R2min()
const
104 Eigen::Vector2cd result;
109 if (
lambda(1) == 0.0 && mT(2) == 0.0 && mT(3) == 0.0)
114 void MatrixRTCoefficients::calculateTRMatrices()
117 calculateTRWithoutMagnetization();
252 void MatrixRTCoefficients::calculateTRWithoutMagnetization()
274 T1m(1, 3) = -std::sqrt(
m_a) / 2.0;
275 T1m(3, 1) = -1.0 / (2.0 * std::sqrt(
m_a));
280 R1m(1, 3) = std::sqrt(
m_a) / 2.0;
281 R1m(3, 1) = 1.0 / (2.0 * std::sqrt(
m_a));
286 T2m(0, 2) = -std::sqrt(
m_a) / 2.0;
287 T2m(2, 0) = -1.0 / (2.0 * std::sqrt(
m_a));
292 R2m(0, 2) = std::sqrt(
m_a) / 2.0;
293 R2m(2, 0) = 1.0 / (2.0 * std::sqrt(
m_a));
297 void MatrixRTCoefficients::initializeBottomLayerPhiPsi()
complex_t mul_I(complex_t z)
Returns product I*z, where I is the imaginary unit.
Defines class MatrixRTCoefficients.
Specular reflection and transmission coefficients in a layer in case of 2x2 matrix interactions betwe...
complex_t m_bz
z-part of magnetic interaction term
Eigen::Matrix4cd T2m
matrix selecting the transmitted part of the second eigenmode
Eigen::Matrix2cd m_scatt_matrix
scattering matrix
Eigen::Vector2cd lambda
positive eigenvalues of transfer matrix
complex_t m_a
polarization independent part of scattering matrix
Eigen::Matrix4cd R2m
matrix selecting the reflected part of the second eigenmode
Eigen::Vector4cd phi_psi_min
boundary values for down-polarization
virtual Eigen::Vector2cd T1plus() const
The following functions return the transmitted and reflected amplitudes for different incoming beam p...
Eigen::Vector4cd phi_psi_plus
boundary values for up-polarization
double m_kt
wavevector length times thickness of layer for use when lambda=0
complex_t m_b_mag
magnitude of magnetic interaction term
Eigen::Matrix4cd T1m
matrix selecting the transmitted part of the first eigenmode
Eigen::Matrix4cd R1m
matrix selecting the reflected part of the first eigenmode