From fab7d95a2298d949fdccec29867313cf35d97965 Mon Sep 17 00:00:00 2001 From: martinappleby Date: Fri, 7 Nov 2025 14:07:58 +0100 Subject: [PATCH] DAQ: fix to handle automated raster parameters --- daq/src/aaredaq/daq.py | 45 ++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/daq/src/aaredaq/daq.py b/daq/src/aaredaq/daq.py index cd8b1d2a..51304b11 100644 --- a/daq/src/aaredaq/daq.py +++ b/daq/src/aaredaq/daq.py @@ -1212,30 +1212,45 @@ class AareDAQ: params = SimpleScanParameters() - if (exp := getattr(aaredb_params, 'exposure', 0.04)) is not None: + # Exposure + exp = getattr(aaredb_params, 'exposure', None) + if exp is not None: params.exp_time_s = exp + else: + params.exp_time_s = 0.04 # Default - if (trans := getattr(aaredb_params, 'transmission', 100)) is not None: + # Transmission + trans = getattr(aaredb_params, 'transmission', None) + if trans is not None: logger.debug(f"transmission: {trans}") params.transmission = trans / 100.0 if trans > 1.0 else trans - - if (res := getattr(aaredb_params, 'targetresolution', 1.42)) is not None: - logger.debug(f"resolution: {res}") - logger.debug(f"dtz: {self.diffraction_geometry.calc_dtz_mm(res)}") - params.dtz = self.diffraction_geometry.calc_dtz_mm(res) - - if res <= 1.5: - params.exp_time_s = 0.02 - elif 1.5 < res <= 3.0: - params.exp_time_s = 0.04 else: - params.exp_time_s = 0.08 + params.transmission = 1.0 # Default - logger.debug(f"res expected {res} using {params.exp_time_s} exp time") + # Resolution and DTZ + res = getattr(aaredb_params, 'targetresolution', None) + if res is not None: + logger.debug(f"resolution: {res}") + try: + params.dtz = self.diffraction_geometry.calc_dtz_mm(res) + logger.debug(f"dtz: {params.dtz}") + except Exception as e: + logger.error(f"Failed to calculate dtz for resolution {res}: {e}") + params.dtz = 150 # Fallback default + + # Adjust exposure time based on resolution + if res <= 1.5: + params.exp_time_s = 0.02 + elif 1.5 < res <= 3.0: + params.exp_time_s = 0.04 + else: + params.exp_time_s = 0.08 + else: + params.dtz = 150 + params.exp_time_s = 0.04 return params - def get_collection_params(self, prefer_smart: bool = False) -> tuple[SimpleScanParameters, str]: spreadsheet_params = self.spreadsheet_params() logger.debug(f"spreadsheet_params: {spreadsheet_params}")