20 double aplus = total_transmission * (1.0 + efficiency);
21 double amin = total_transmission * (1.0 - efficiency);
22 if (aplus < 0.0 || aplus > 1.0 || amin < 0.0 || amin > 1.0)
23 throw std::runtime_error(
"Invalid efficiency and transmission for polarization analyzer");
24 if (efficiency == 0.0 || total_transmission == 0.0 || direction.mag() == 0.0) {
Defines class DetectionProperties.
Defines class SpinMatrix.
Detector properties (efficiency, transmission).
double m_efficiency
efficiency of polarization analysis
R3 m_direction
direction of polarization analysis
double totalTransmission() const
double m_total_transmission
total transmission of polarization analysis
double analyzerEfficiency() const
will always return positive value
R3 analyzerDirection() const
Retrieve the analyzer characteristics.
SpinMatrix matrix() const
Return the polarization density matrix (in spin basis along z-axis)
static SpinMatrix FromBlochVector(const R3 &v)
Constructs matrix (I+v*s)/2, where s is the Pauli vector.