From 8558374c2a3c10f446e2849851c06ddebd8bfc7e Mon Sep 17 00:00:00 2001
From: Egor Sobolev <egor.sobolev@xfel.eu>
Date: Sat, 12 Oct 2024 13:03:52 +0200
Subject: [PATCH] Add device and perfix parameters to correction addons
 constructor

---
 src/calng/base_correction.py                        | 4 +---
 src/calng/correction_addons/base_addon.py           | 5 +++--
 src/calng/correction_addons/integrated_intensity.py | 3 ++-
 src/calng/correction_addons/litpixel_counter.py     | 3 ++-
 src/calng/correction_addons/peakfinder9.py          | 3 ++-
 src/calng/correction_addons/random_frames.py        | 3 ++-
 src/calng/correction_addons/saturation_monitor.py   | 3 ++-
 7 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py
index 459ef83f..6d56b2d2 100644
--- a/src/calng/base_correction.py
+++ b/src/calng/base_correction.py
@@ -545,9 +545,7 @@ class BaseCorrection(PythonDevice):
             addon_prefix = f"addons.{addon_class.__name__}"
             if not self.get(f"{addon_prefix}.enable"):
                 continue
-            addon = addon_class(self._parameters[addon_prefix])
-            addon._device = self
-            addon._prefix = addon_prefix
+            addon = addon_class(self, addon_prefix, self._parameters[addon_prefix])
             self._enabled_addons.append(addon)
         if (
             (self.get("useShmemHandles") != self._use_shmem_handles)
diff --git a/src/calng/correction_addons/base_addon.py b/src/calng/correction_addons/base_addon.py
index b5578c1e..0a063bde 100644
--- a/src/calng/correction_addons/base_addon.py
+++ b/src/calng/correction_addons/base_addon.py
@@ -15,9 +15,10 @@ class BaseCorrectionAddon:
         and add properties to it."""
         pass
 
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
         """Will be given the node from extend_device_schema, no prefix needed here"""
-        pass
+        self._device = device
+        self._prefix = prefix
 
     def post_correction(
         self, train_id, processed_data, cell_table, pulse_table, output_hash
diff --git a/src/calng/correction_addons/integrated_intensity.py b/src/calng/correction_addons/integrated_intensity.py
index 5cfaad9e..188b6d4f 100644
--- a/src/calng/correction_addons/integrated_intensity.py
+++ b/src/calng/correction_addons/integrated_intensity.py
@@ -11,7 +11,8 @@ def maybe_get(a):
 
 
 class IntegratedIntensity(BaseCorrectionAddon):
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
+        super().__init__(device, prefix, config)
         global cupy
         import cupy
 
diff --git a/src/calng/correction_addons/litpixel_counter.py b/src/calng/correction_addons/litpixel_counter.py
index 7baa14fd..cc1c9a4c 100644
--- a/src/calng/correction_addons/litpixel_counter.py
+++ b/src/calng/correction_addons/litpixel_counter.py
@@ -6,7 +6,8 @@ from .base_addon import BaseCorrectionAddon
 
 
 class LitPixelCounter(BaseCorrectionAddon):
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
+        super().__init__(device, prefix, config)
         global cupy
         import cupy
 
diff --git a/src/calng/correction_addons/peakfinder9.py b/src/calng/correction_addons/peakfinder9.py
index dba74214..1647350c 100644
--- a/src/calng/correction_addons/peakfinder9.py
+++ b/src/calng/correction_addons/peakfinder9.py
@@ -169,7 +169,8 @@ class Peakfinder9(BaseCorrectionAddon):
             except AttributeError:
                 pass
 
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
+        super().__init__(device, prefix, config)
         global cupy
         import cupy
 
diff --git a/src/calng/correction_addons/random_frames.py b/src/calng/correction_addons/random_frames.py
index d3447710..bfbb78cf 100644
--- a/src/calng/correction_addons/random_frames.py
+++ b/src/calng/correction_addons/random_frames.py
@@ -30,7 +30,8 @@ class RandomFrames(BaseCorrectionAddon):
             .commit(),
         )
 
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
+        super().__init__(device, prefix, config)
         # TODO: figure out why no / 100 here...
         self._probability = config["probability"]
 
diff --git a/src/calng/correction_addons/saturation_monitor.py b/src/calng/correction_addons/saturation_monitor.py
index 1c48a219..31bcec59 100644
--- a/src/calng/correction_addons/saturation_monitor.py
+++ b/src/calng/correction_addons/saturation_monitor.py
@@ -87,7 +87,8 @@ def saturation_monitoring_schema(schema=None):
 
 
 class SaturationMonitor(BaseCorrectionAddon):
-    def __init__(self, config):
+    def __init__(self, device, prefix, config):
+        super().__init__(device, prefix, config)
         global cupy
         import cupy
         self._alarmThreshold = config["alarmThreshold"]
-- 
GitLab