diff --git a/Device/Detector/IDetector.cpp b/Device/Detector/IDetector.cpp
index 583125fbbdcc286d8f758e64f38b2a23d0c529a4..49f97abf8056f6669fa13db46f966e90c7361506 100644
--- a/Device/Detector/IDetector.cpp
+++ b/Device/Detector/IDetector.cpp
@@ -141,7 +141,7 @@ size_t IDetector::detectorIndexToRegionOfInterestIndex(const size_t detectorInde
 void IDetector::setAnalyzer(const R3 direction, double efficiency, double total_transmission)
 {
     if (direction.mag() > 0)
-        m_polAnalyzer.setDirEffTra(direction, efficiency, total_transmission);
+        m_polAnalyzer = PolFilter(direction, efficiency, total_transmission);
 }
 
 void IDetector::setDetectorResolution(const IDetectorResolution& p_detector_resolution)
diff --git a/Device/Pol/PolFilter.cpp b/Device/Pol/PolFilter.cpp
index ee7b8db1e804afa43bfaa547792373ed5250125f..9fb15a24a7aaa012f490fc5abe8deffc8c85cd81 100644
--- a/Device/Pol/PolFilter.cpp
+++ b/Device/Pol/PolFilter.cpp
@@ -14,35 +14,27 @@
 
 #include "Device/Pol/PolFilter.h"
 #include "Base/Spin/SpinMatrix.h"
-#include "Fit/Param/RealLimits.h"
-#include <heinz/Complex.h>
 
 PolFilter::PolFilter(R3 direction, double efficiency, double total_transmission)
-    : m_direction(direction)
-    , m_efficiency(efficiency)
-    , m_total_transmission(total_transmission)
 {
-    RealLimits::nonnegative().check("Transmission", m_total_transmission);
-}
-
-PolFilter::PolFilter()
-    : PolFilter({}, {}, 1.0)
-{
-}
-
-void PolFilter::setDirEffTra(const R3 direction, double efficiency, double total_transmission)
-{
-    if (!check(direction, efficiency, total_transmission))
-        throw std::runtime_error("IDetector2D::setAnalyzer: the "
-                                 "given properties are not physical");
+    double aplus = total_transmission * (1.0 + efficiency);
+    double amin = total_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) {
-        m_direction = R3{};
-        m_efficiency = 0.0;
+        m_direction = {};
+        m_efficiency = 0;
+        m_total_transmission = total_transmission;
     } else {
         m_direction = direction.unit();
         m_efficiency = efficiency;
+        m_total_transmission = total_transmission;
     }
-    m_total_transmission = total_transmission;
+}
+
+PolFilter::PolFilter()
+    : PolFilter({}, {}, 1.0)
+{
 }
 
 SpinMatrix PolFilter::matrix() const
@@ -67,16 +59,3 @@ double PolFilter::totalTransmission() const
 {
     return m_total_transmission;
 }
-
-bool PolFilter::check(const R3 direction, double efficiency, double total_transmission) const
-{
-    if (direction.mag() == 0.0)
-        return false;
-    double aplus = total_transmission * (1.0 + efficiency);
-    double amin = total_transmission * (1.0 - efficiency);
-    if (aplus < 0.0 || aplus > 1.0)
-        return false;
-    if (amin < 0.0 || amin > 1.0)
-        return false;
-    return true;
-}
diff --git a/Device/Pol/PolFilter.h b/Device/Pol/PolFilter.h
index 585a7534e66b5cbadc76a9957317b188a3b1de22..6d0d52238c5ae7b84d1b98aa100895eb98164894 100644
--- a/Device/Pol/PolFilter.h
+++ b/Device/Pol/PolFilter.h
@@ -37,9 +37,6 @@ public:
                 {"Transmission", "", "total transmission", 0, 1, 1}};
     }
 
-    //! Sets the polarization analyzer characteristics of the detector
-    void setDirEffTra(R3 direction, double efficiency, double total_transmission);
-
     //! Return the polarization density matrix (in spin basis along z-axis)
     SpinMatrix matrix() const;
 
@@ -49,8 +46,6 @@ public:
     double totalTransmission() const;
 
 private:
-    //! Verify if the given analyzer properties are physical
-    bool check(R3 direction, double efficiency, double total_transmission) const;
 
     R3 m_direction;              //!< direction of polarization analysis
     double m_efficiency;         //!< efficiency of polarization analysis
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index 4ca09c63eca849a38253eae49e94d4c916bd6f7e..6b5be0ea7763ff284fa735edaaa95d92371648fe 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -1685,11 +1685,6 @@ C++ includes: PolFilter.h
 %feature("docstring")  PolFilter::parDefs "std::vector<ParaMeta> PolFilter::parDefs() const final
 ";
 
-%feature("docstring")  PolFilter::setDirEffTra "void PolFilter::setDirEffTra(R3 direction, double efficiency, double total_transmission)
-
-Sets the polarization analyzer characteristics of the detector. 
-";
-
 %feature("docstring")  PolFilter::matrix "SpinMatrix PolFilter::matrix() const
 
 Return the polarization density matrix (in spin basis along z-axis) 
@@ -2554,6 +2549,9 @@ Returns default units to convert to.
 // File: namespace_0d62.xml
 
 
+// File: namespace_0d78.xml
+
+
 // File: namespaceDataUtils.xml