diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py
index b409234279910a6c0ddfa0cf3a89b47897ef4e71..6ad0441f261789e0bdf032b091b708d5247d7d09 100644
--- a/src/calng/base_correction.py
+++ b/src/calng/base_correction.py
@@ -767,6 +767,8 @@ class BaseCorrection(PythonDevice):
             for addon_class in self._available_addons
             if self.get(f"addons.{addon_class._node_name}.enable")
         ]
+        for addon in self._enabled_addons:
+            addon._device = self
         if self._enabled_addons:
             schema_override = Schema()
             output_schema_override = self._base_output_schema
diff --git a/src/calng/correction_addons/base_addon.py b/src/calng/correction_addons/base_addon.py
index ef7d0deee4960f2a33c6c7d3a36eef0693a4da47..ab134120f11bbe71d6518f6481aa733acfc2e2a7 100644
--- a/src/calng/correction_addons/base_addon.py
+++ b/src/calng/correction_addons/base_addon.py
@@ -20,6 +20,12 @@ class BaseCorrectionAddon:
         """Will be given the node from extend_device_schema, no prefix needed here"""
         pass
 
+    @property
+    def geometry(self):
+        """Helper to get current geometry (host device should be monitoring a geometry
+        device)"""
+        return self._device._geometry
+
     def post_correction(self, processed_data, cell_table, pulse_table, output_hash):
         """Called directly after correction has happened. Processed data will still be
         on GPU if the correction device is generally running in GPU mode."""