BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{SpecularComputationTerm.cpp} Namespace Reference

Functions

double matrix_intensity (const SpecularSimulationElement &elem, const std::unique_ptr< const ILayerRTCoefficients > &coeff)
 

Function Documentation

◆ matrix_intensity()

double anonymous_namespace{SpecularComputationTerm.cpp}::matrix_intensity ( const SpecularSimulationElement elem,
const std::unique_ptr< const ILayerRTCoefficients > &  coeff 
)

Definition at line 71 of file SpecularComputationTerm.cpp.

73 {
74  const auto& polarization = elem.polarizationHandler().getPolarization();
75  const auto& analyzer = elem.polarizationHandler().getAnalyzerOperator();
76 
77  const auto R = coeff->getReflectionMatrix();
78 
79  const complex_t result = (polarization * R.adjoint() * analyzer * R).trace();
80 
81  return std::abs(result);
82 }
std::complex< double > complex_t
Definition: Complex.h:20
Eigen::Matrix2cd getAnalyzerOperator() const
Gets the polarization analyzer operator (in spin basis along z-axis)
Eigen::Matrix2cd getPolarization() const
Gets the polarization density matrix (in spin basis along z-axis)
const PolarizationHandler & polarizationHandler() const
Returns assigned PolarizationHandler.

References PolarizationHandler::getAnalyzerOperator(), PolarizationHandler::getPolarization(), and SpecularSimulationElement::polarizationHandler().

Referenced by SpecularMatrixTerm::eval().

Here is the call graph for this function: