Skip to content
Snippets Groups Projects
Commit f31baa8e authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

rename transmission w/o 'total'

parent 40736eff
No related branches found
No related tags found
1 merge request!1733Align polarization with PhysRef; simplify and unify API and GUI
......@@ -16,21 +16,21 @@
#include "Base/Spin/SpinMatrix.h"
#include "Base/Util/Assert.h"
PolFilter::PolFilter(R3 direction, double efficiency, double total_transmission)
PolFilter::PolFilter(R3 direction, double efficiency, double transmission)
{
ASSERT(total_transmission == 0.5);
double aplus = total_transmission * (1.0 + efficiency);
double amin = total_transmission * (1.0 - efficiency);
ASSERT(transmission == 0.5);
double aplus = transmission * (1.0 + efficiency);
double amin = transmission * (1.0 - efficiency);
if (aplus < 0.0 || aplus > 1.0 || amin < 0.0 || amin > 1.0)
throw std::runtime_error("Invalid efficiency and transmission for polarization analyzer");
if (efficiency == 0.0 || total_transmission == 0.0 || direction.mag() == 0.0) {
if (efficiency == 0.0 || transmission == 0.0 || direction.mag() == 0.0) {
m_direction = {};
m_efficiency = 0;
m_total_transmission = total_transmission;
m_transmission = transmission;
} else {
m_direction = direction.unit_or_throw();
m_efficiency = efficiency;
m_total_transmission = total_transmission;
m_transmission = transmission;
}
}
......@@ -42,9 +42,9 @@ PolFilter::PolFilter()
SpinMatrix PolFilter::matrix() const
{
if (m_direction.mag() == 0.0 || m_efficiency == 0.0)
return m_total_transmission * SpinMatrix::One();
return m_transmission * SpinMatrix::One();
R3 v = m_direction.unit_or_throw() * m_efficiency;
return 2 * m_total_transmission * SpinMatrix::FromBlochVector(v);
return 2 * m_transmission * SpinMatrix::FromBlochVector(v);
}
R3 PolFilter::analyzerDirection() const
......@@ -57,7 +57,7 @@ double PolFilter::analyzerEfficiency() const
return m_efficiency;
}
double PolFilter::totalTransmission() const
double PolFilter::transmission() const
{
return m_total_transmission;
return m_transmission;
}
......@@ -24,7 +24,7 @@ class SpinMatrix;
class PolFilter : public INode {
public:
PolFilter(R3 direction, double efficiency, double total_transmission);
PolFilter(R3 direction, double efficiency, double transmission);
PolFilter();
~PolFilter() override = default;
......@@ -40,12 +40,12 @@ public:
//! Retrieve the analyzer characteristics
R3 analyzerDirection() const;
double analyzerEfficiency() const; //!< will always return positive value
double totalTransmission() const;
double transmission() const;
private:
R3 m_direction; //!< direction of polarization analysis
double m_efficiency; //!< efficiency of polarization analysis
double m_total_transmission; //!< total transmission of polarization analysis
R3 m_direction; //!< direction of polarization analysis
double m_efficiency; //!< efficiency of polarization analysis
double m_transmission; //!< transmission of unpolarized beam
};
#endif // BORNAGAIN_DEVICE_POL_POLFILTER_H
......@@ -318,15 +318,15 @@ void setDetectorResolution(DetectorItem* detector_item, const IDetector& detecto
void setPolarizer2(InstrumentItem* instrument_item, const PolFilter& analyzer)
{
double total_transmission = analyzer.totalTransmission();
if (total_transmission <= 0.0)
double transmission = analyzer.transmission();
if (transmission <= 0.0)
return;
R3 analyzer_dir = analyzer.analyzerDirection();
double efficiency = analyzer.analyzerEfficiency();
instrument_item->setAnalyzerDirection(analyzer_dir);
instrument_item->setAnalyzerEfficiency(efficiency);
instrument_item->setAnalyzerTotalTransmission(total_transmission);
instrument_item->setAnalyzerTotalTransmission(transmission);
}
void updateDetector(GISASInstrumentItem* instrument_item, const IDetector& detector)
......
......@@ -123,7 +123,7 @@ std::string definePolarizationAnalyzer(const PolFilter& analyzer, const std::str
std::ostringstream result;
R3 analyzer_direction = analyzer.analyzerDirection();
double analyzer_efficiency = analyzer.analyzerEfficiency();
double analyzer_total_transmission = analyzer.totalTransmission();
double analyzer_transmission = analyzer.transmission();
if (analyzer_direction.mag() > 0.0) {
std::string direction_name = "analyzer_direction";
......@@ -133,7 +133,7 @@ std::string definePolarizationAnalyzer(const PolFilter& analyzer, const std::str
<< Py::Fmt::printDouble(analyzer_direction.z()) << ")\n";
result << indent() << parent << ".setAnalyzer(" << direction_name << ", "
<< Py::Fmt::printDouble(analyzer_efficiency) << ", "
<< Py::Fmt::printDouble(analyzer_total_transmission) << ")\n";
<< Py::Fmt::printDouble(analyzer_transmission) << ")\n";
}
return result.str();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment