From 51a7d4b79280747bc9807e0cb022cca3fb4b8cc6 Mon Sep 17 00:00:00 2001
From: Egor Sobolev <egor.sobolev@xfel.eu>
Date: Thu, 28 Mar 2024 20:19:32 +0100
Subject: [PATCH] Update ShimadzuHPVX2 conditions, add copy_keys in
 ShimadzuHPVX2 detector

---
 src/cal_tools/calcat_interface2.py | 10 ++++++++++
 src/cal_tools/shimadzu.py          | 22 +++++++++++-----------
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/cal_tools/calcat_interface2.py b/src/cal_tools/calcat_interface2.py
index 9048db129..bc598d572 100644
--- a/src/cal_tools/calcat_interface2.py
+++ b/src/cal_tools/calcat_interface2.py
@@ -837,3 +837,13 @@ class DSSCConditions(ConditionsBase):
         "Offset": _params,
         "Noise": _params,
     }
+
+
+@dataclass
+class ShimadzuHPVX2Conditions(ConditionsBase):
+    burst_frame_count: float
+
+    calibration_types = {
+        'Offset': ['Burst Frame Count'],
+        'DynamicFF': ['Burst Frame Count'],
+    }
diff --git a/src/cal_tools/shimadzu.py b/src/cal_tools/shimadzu.py
index 8366c95b5..0251e5621 100644
--- a/src/cal_tools/shimadzu.py
+++ b/src/cal_tools/shimadzu.py
@@ -1,20 +1,20 @@
 from dataclasses import dataclass
-from cal_tools.calcat_interface2 import ConditionsBase
 
-
-@dataclass
-class ShimadzuHPVX2Conditions(ConditionsBase):
-    frame_size: float
-
-    calibration_types = {
-        "Offset": ["Frame Size"],
-        "DynamicFF": ["Frame Size"],
-    }
+from cal_tools.calcat_interface2 import ShimadzuHPVX2Conditions
 
 
 class ShimadzuHPVX2:
     channel = "daqOutput"
     image_key = "data.image.pixels"
+    copy_keys = [
+        "data.image.binning",
+        "data.image.dimTypes",
+        "data.image.dims",
+        "data.image.flipX",
+        "data.image.flipY",
+        "data.image.roiOffsets",
+        "data.image.rotation",
+    ]
 
     def __init__(self, source_name_pattern: str, channel=None, image_key=None):
         self.source_name_pattern = source_name_pattern
@@ -38,7 +38,7 @@ class ShimadzuHPVX2:
             source_name = self.instrument_source(module)
         keydata = dc[source_name, self.image_key]
         num_frames = keydata.shape[-3]
-        return ShimadzuHPVX2Conditions(frame_size=num_frames / 256)
+        return ShimadzuHPVX2Conditions(burst_frame_count=float(num_frames))
 
     def instrument_source(self, module: int):
         source_name = self.source_name_pattern.format(module)
-- 
GitLab