diff --git a/Base/Types/OwningVector.h b/Base/Types/OwningVector.h
index 4d92e4fcee79179dbd385b56d786e919705325f7..173f1dcfb3f9d621c350e7ec8941387bff8a7362 100644
--- a/Base/Types/OwningVector.h
+++ b/Base/Types/OwningVector.h
@@ -61,6 +61,7 @@ public:
     }
     OwningVector& operator=(OwningVector&& other) = default;
 
+    void reserve(size_t n) { m_v.reserve(n); }
     void emplace_back(T* e) { m_v.emplace_back(e); }
     void clear()
     {
diff --git a/Device/Detector/DetectorContext.h b/Device/Detector/DetectorContext.h
index d7f7f97f5f8dbec77a10e88346df395dab494bcb..6b634cd749ae43835be1d2b5a9167f8e43ef858f 100644
--- a/Device/Detector/DetectorContext.h
+++ b/Device/Detector/DetectorContext.h
@@ -18,6 +18,7 @@
 
 #include "Base/Pixel/IPixel.h"
 #include "Base/Spin/SpinMatrix.h"
+#include "Base/Types/OwningVector.h"
 #include <memory>
 #include <vector>
 
@@ -43,7 +44,7 @@ private:
     void setup_context(const IDetector* detector);
 
     SpinMatrix m_analyzer_operator;
-    std::vector<std::unique_ptr<IPixel>> m_pixels; //! All unmasked pixels inside ROI.
+    OwningVector<IPixel> m_pixels; //! All unmasked pixels inside ROI.
     std::vector<size_t> m_active_indices; //! The sequence of bin indices (unmasked, in ROI)
 };
 
diff --git a/auto/Wrap/doxygenBase.i b/auto/Wrap/doxygenBase.i
index 612cb84e31509ac5c2ffbe773c4bff9a432c2256..27c75850c3ab198ffbca0c4f4846c5a975f92b29 100644
--- a/auto/Wrap/doxygenBase.i
+++ b/auto/Wrap/doxygenBase.i
@@ -699,6 +699,9 @@ OwningVector::OwningVector";
 %feature("docstring")  OwningVector::~OwningVector "OwningVector< T >::~OwningVector()
 OwningVector::~OwningVector";
 
+%feature("docstring")  OwningVector::reserve "void OwningVector< T >::reserve(size_t n)
+OwningVector::reserve";
+
 %feature("docstring")  OwningVector::emplace_back "void OwningVector< T >::emplace_back(T *e)
 OwningVector::emplace_back";