diff --git a/news/93.rst b/news/93.rst new file mode 100644 index 0000000..d938b30 --- /dev/null +++ b/news/93.rst @@ -0,0 +1,29 @@ +**Added:** + +* Exposed ``Radiation.GetLinearPolarRate()``, ``Radiation.SetLinearPolarRate()``, + ``Radiation.GetClockWavelength()``, and ``Radiation.GetClockRadiation()`` via + Python bindings. Closes `#38 `_. + ``Radiation.GetClockLinearPolarRate()`` is also bound and will be available once + `diffpy/libobjcryst` picks up `vincefn/objcryst PR #79 + `_, which adds the dedicated + polarisation clock and fixes the polarisation-correction recalculation trigger. + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* diff --git a/src/extensions/radiation_ext.cpp b/src/extensions/radiation_ext.cpp index 9c3ce59..952429f 100644 --- a/src/extensions/radiation_ext.cpp +++ b/src/extensions/radiation_ext.cpp @@ -22,6 +22,7 @@ #include #include +#include namespace bp = boost::python; using namespace boost::python; @@ -51,5 +52,15 @@ void wrap_radiation() (bp::arg("XRayTubeElementName"), bp::arg("alpha2Alpha2ratio")=0.5)) .def("GetXRayTubeDeltaLambda", & Radiation::GetXRayTubeDeltaLambda) .def("GetXRayTubeAlpha2Alpha1Ratio", & Radiation::GetXRayTubeAlpha2Alpha1Ratio) + .def("GetLinearPolarRate", &Radiation::GetLinearPolarRate) + .def("SetLinearPolarRate", &Radiation::SetLinearPolarRate) + .def("GetClockWavelength", &Radiation::GetClockWavelength, + return_value_policy()) + .def("GetClockRadiation", &Radiation::GetClockRadiation, + return_value_policy()) +#if LIBOBJCRYST_VERSION >= 2026002000000LL + .def("GetClockLinearPolarRate", &Radiation::GetClockLinearPolarRate, + return_value_policy()) +#endif ; } diff --git a/tests/test_radiation.py b/tests/test_radiation.py index 1740de9..645c313 100644 --- a/tests/test_radiation.py +++ b/tests/test_radiation.py @@ -44,6 +44,17 @@ def testType(self): ) return + def testLinearPolarRate(self): + """Test getting and setting linear polarisation rate.""" + r = Radiation() + # Default for X-ray should be 0 + self.assertAlmostEqual(r.GetLinearPolarRate(), 0.0) + r.SetLinearPolarRate(0.95) + self.assertAlmostEqual(r.GetLinearPolarRate(), 0.95) + r.SetLinearPolarRate(0.0) + self.assertAlmostEqual(r.GetLinearPolarRate(), 0.0) + return + if __name__ == "__main__": unittest.main()