From 05c53c24f7256b238928a71331337d5cfccc89a9 Mon Sep 17 00:00:00 2001
From: ahmedk <karim.ahmed@xfel.eu>
Date: Fri, 17 Sep 2021 11:42:30 +0200
Subject: [PATCH] modify validate_selected_pulses

---
 src/cal_tools/agipdlib.py | 35 +++++++++++++++++------------------
 1 file changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/cal_tools/agipdlib.py b/src/cal_tools/agipdlib.py
index 81c68ff00..49a427186 100644
--- a/src/cal_tools/agipdlib.py
+++ b/src/cal_tools/agipdlib.py
@@ -252,7 +252,8 @@ class AgipdCorrections:
         self.gain_mode = gain_mode
         self.comp_threads = comp_threads
 
-        self._validate_selected_pulses(max_pulses, max_cells)
+        self.start, self.last, self.step = self._validate_selected_pulses(
+            max_pulses, max_cells)
 
         # Correction parameters
         self.baseline_corr_noise_threshold = -1000
@@ -872,6 +873,8 @@ class AgipdCorrections:
         :param max_pulses: a list of at most 3 elements defining the
         range of pulses to calibrate.
         :param max_cells: operating memory cells.
+
+        :return adjusted_range: An adjusted range of pulse indices to correct.
         """
 
         # Validate selected pulses range:
@@ -886,29 +889,23 @@ class AgipdCorrections:
                 "maximum pulse."
             )
 
-        value_error = False
+        adjusted_range = None
         if len(pulses_range) == 1:
-            self.start = 0
-            self.last = pulses_range[0]
-            self.step = 1
+            adjusted_range = (0, pulses_range[0], 1)
         elif len(pulses_range) == 2:
-            self.start = pulses_range[0]
-            self.last = pulses_range[1]
-            self.step = 1
-            if pulses_range[0] > pulses_range[1]:
-                value_error = True
+            adjusted_range = (pulses_range[0], pulses_range[1], 1)
         elif len(pulses_range) == 3:
-            self.start = pulses_range[0]
-            self.last = pulses_range[1]
-            self.step = pulses_range[2]
-            if pulses_range[0] > pulses_range[1]:
-                value_error = True
+            adjusted_range = tuple(pulses_range)
         else:
-            value_error = True
+            raise ValueError(
+                "ERROR: Wrong length for the list of pulses indices range. "
+                "Please check the given range for \"max_pulses\":"
+                f"{max_pulses}. \"max_pulses\" needs to be a list of "
+                "3 elements, [start, last, step]")
 
-        if value_error:
+        if adjusted_range[0] > adjusted_range[1]:
             raise ValueError(
-                "ERROR: Wrong given range of pulse indices to correct. "
+                "ERROR: Pulse range start is greater than range end. "
                 "Please check the given range for \"max_pulses\":"
                 f"{max_pulses}. \"max_pulses\" needs to be a list of "
                 "3 elements, [start, last, step]")
@@ -922,6 +919,8 @@ class AgipdCorrections:
             "A range of pulse indices is selected to correct:"
             f" {pulses_range}")
 
+        return adjusted_range
+
     def choose_selected_pulses(self, allpulses: np.array,
                                can_calibrate: np.array) -> np.array:
         """
-- 
GitLab