diff --git a/Device/Detector/IDetector.h b/Device/Detector/IDetector.h
index 6e673a63246504544daf53b22c78192dd4b20ff6..10b5af3ebf2101098d220767a222443ecd70a506 100644
--- a/Device/Detector/IDetector.h
+++ b/Device/Detector/IDetector.h
@@ -55,8 +55,6 @@ public:
     void setAnalyzer(R3 Bloch_vector = {}, double mean_transmission = 0.5);
     void setAnalyzer(R3 direction, double efficiency, double transmission); // OBSOLETE since v21
 
-    //! Sets the detector resolution
-    void setDetectorResolution(const IDetectorResolution& detector_resolution);
     void setResolutionFunction(const IResolutionFunction2D& resFunc);
 
     std::vector<const INode*> nodeChildren() const override;
@@ -96,6 +94,9 @@ public:
         return m_resolution.get();
     }
 
+    //! Sets the detector resolution
+    void setDetectorResolution(const IDetectorResolution& detector_resolution);
+
     //! Creates an Pixel for the given Datafield object and index
     virtual const Pixel* createPixel(size_t i) const = 0;
 
diff --git a/Wrap/Swig/ignoreSample.i b/Wrap/Swig/ignoreSample.i
index 95a8327ab36e464904f9b07846074ad4d94dd6f1..60ff512c5a20531a0df1c3fcbb98536c44e517b2 100644
--- a/Wrap/Swig/ignoreSample.i
+++ b/Wrap/Swig/ignoreSample.i
@@ -3,8 +3,6 @@
 %ignore ParticleLayout::setInterference(const IInterference*);
 %ignore Mesocrystal::Mesocrystal(IClusteredParticles*, IReParticle*);
 %ignore Mesocrystal::Mesocrystal(const IClusteredParticles*, const IReParticle*);
-%ignore Instrument::setDetectorResolutionFunction(IResolutionFunction2D*);
-%ignore Instrument::setDetectorResolutionFunction(const IResolutionFunction2D*);
 
 // extra ignores for types and methods that shouldn't be visible in Python
 %ignore Lattice2D::ReciprocalBases;
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index b252292adb820e9faf42f6279a8092fab098214e..e2a577d678854ad82a192cb2745216b1386fb4b4 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -2668,10 +2668,6 @@ class IDetector(libBornAgainBase.ICloneable, libBornAgainParam.INode):
         """
         return _libBornAgainDevice.IDetector_setAnalyzer(self, *args)
 
-    def setDetectorResolution(self, detector_resolution):
-        r"""setDetectorResolution(IDetector self, IDetectorResolution detector_resolution)"""
-        return _libBornAgainDevice.IDetector_setDetectorResolution(self, detector_resolution)
-
     def setResolutionFunction(self, resFunc):
         r"""setResolutionFunction(IDetector self, IResolutionFunction2D resFunc)"""
         return _libBornAgainDevice.IDetector_setResolutionFunction(self, resFunc)
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index 78eba8a08acad113bbd39eb6c2c8b27e6ab0367f..a80054b35971f6da1696e60615b60f70db73cc3c 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -36520,49 +36520,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IDetector_setDetectorResolution(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  IDetector *arg1 = (IDetector *) 0 ;
-  IDetectorResolution *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "IDetector_setDetectorResolution", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IDetector, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetector_setDetectorResolution" "', argument " "1"" of type '" "IDetector *""'"); 
-  }
-  arg1 = reinterpret_cast< IDetector * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_IDetectorResolution,  0  | 0);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetector_setDetectorResolution" "', argument " "2"" of type '" "IDetectorResolution const &""'"); 
-  }
-  if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IDetector_setDetectorResolution" "', argument " "2"" of type '" "IDetectorResolution const &""'"); 
-  }
-  arg2 = reinterpret_cast< IDetectorResolution * >(argp2);
-  {
-    try {
-      (arg1)->setDetectorResolution((IDetectorResolution const &)*arg2);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_IDetector_setResolutionFunction(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   IDetector *arg1 = (IDetector *) 0 ;
@@ -44036,7 +43993,6 @@ static PyMethodDef SwigMethods[] = {
 		"IDetector_setAnalyzer(IDetector self, R3 Bloch_vector={}, double mean_transmission=0.5)\n"
 		"IDetector_setAnalyzer(IDetector self, R3 direction, double efficiency, double transmission)\n"
 		""},
-	 { "IDetector_setDetectorResolution", _wrap_IDetector_setDetectorResolution, METH_VARARGS, "IDetector_setDetectorResolution(IDetector self, IDetectorResolution detector_resolution)"},
 	 { "IDetector_setResolutionFunction", _wrap_IDetector_setResolutionFunction, METH_VARARGS, "IDetector_setResolutionFunction(IDetector self, IResolutionFunction2D resFunc)"},
 	 { "IDetector_nodeChildren", _wrap_IDetector_nodeChildren, METH_O, "IDetector_nodeChildren(IDetector self) -> std::vector< INode const *,std::allocator< INode const * > >"},
 	 { "IDetector_frame", _wrap_IDetector_frame, METH_O, "IDetector_frame(IDetector self) -> Frame"},