From b6101cced24b8b37a3363efa5554a627fdc875b1 Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 1 Sep 2023 09:33:35 +0200 Subject: [PATCH] fix: online changes --- .../epics/devices/DelayGeneratorDG645.py | 1 + .../epics/devices/bec_scaninfo_mixin.py | 2 ++ ophyd_devices/epics/devices/eiger9m_csaxs.py | 1 + ophyd_devices/epics/devices/mcs_csaxs.py | 34 +++++++++---------- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/ophyd_devices/epics/devices/DelayGeneratorDG645.py b/ophyd_devices/epics/devices/DelayGeneratorDG645.py index f5f9a28..5c96d34 100644 --- a/ophyd_devices/epics/devices/DelayGeneratorDG645.py +++ b/ophyd_devices/epics/devices/DelayGeneratorDG645.py @@ -190,6 +190,7 @@ class DelayGeneratorDG645(Device): EpicsSignal, "BurstPeriodAI", write_pv="BurstPeriodAO", name="burstperiod", kind=Kind.config ) + # bec_utils device ConfigSignal delay_burst = Component( bec_utils.ConfigSignal, name="delay_burst", kind="config", config_storage_name="ddg_configs" ) diff --git a/ophyd_devices/epics/devices/bec_scaninfo_mixin.py b/ophyd_devices/epics/devices/bec_scaninfo_mixin.py index 955bb0b..ca0026e 100644 --- a/ophyd_devices/epics/devices/bec_scaninfo_mixin.py +++ b/ophyd_devices/epics/devices/bec_scaninfo_mixin.py @@ -8,6 +8,7 @@ class BecScaninfoMixin: self.device_manager = device_manager self.sim_mode = sim_mode self.scan_msg = None + self.scanID = None self.bec_info_msg = { "RID": "mockrid", "queueID": "mockqueuid", @@ -27,6 +28,7 @@ class BecScaninfoMixin: def _get_current_scan_msg(self) -> BECMessage.ScanStatusMessage: if not self.sim_mode: + # TODO what if no scan info is there yet! msg = self.device_manager.producer.get(MessageEndpoints.scan_status()) return BECMessage.ScanStatusMessage.loads(msg) diff --git a/ophyd_devices/epics/devices/eiger9m_csaxs.py b/ophyd_devices/epics/devices/eiger9m_csaxs.py index b59e27d..83c60ac 100644 --- a/ophyd_devices/epics/devices/eiger9m_csaxs.py +++ b/ophyd_devices/epics/devices/eiger9m_csaxs.py @@ -138,6 +138,7 @@ class Eiger9mCsaxs(DetectorBase): self.device_manager = bec_utils.MockDeviceManager() self.scaninfo = BecScaninfoMixin(device_manager, sim_mode) # TODO + self.filepath = "" self.scaninfo.username = "e21206" self.service_cfg = {"base_path": f"/sls/X12SA/data/{self.scaninfo.username}/Data10/"} self.filewriter = FileWriterMixin(self.service_cfg) diff --git a/ophyd_devices/epics/devices/mcs_csaxs.py b/ophyd_devices/epics/devices/mcs_csaxs.py index 2d0886a..12944f4 100644 --- a/ophyd_devices/epics/devices/mcs_csaxs.py +++ b/ophyd_devices/epics/devices/mcs_csaxs.py @@ -162,7 +162,9 @@ class McsCsaxs(SIS38XX): ) if device_manager is None and not sim_mode: - raise MCSError("Add DeviceManager to initialization or init with sim_mode=True") + raise MCSError( + "Add DeviceManager to initialization or init with sim_mode=True" + ) self.name = name self._stream_ttl = 1800 @@ -179,7 +181,9 @@ class McsCsaxs(SIS38XX): self.scaninfo = BecScaninfoMixin(device_manager, sim_mode) # TODO self.scaninfo.username = "e21206" - self.service_cfg = {"base_path": f"/sls/X12SA/data/{self.scaninfo.username}/Data10/"} + self.service_cfg = { + "base_path": f"/sls/X12SA/data/{self.scaninfo.username}/Data10/" + } self.filewriter = FileWriterMixin(self.service_cfg) self._stopped = False self._acquisition_done = False @@ -201,7 +205,9 @@ class McsCsaxs(SIS38XX): self._set_trigger(TriggerSource.MODE3) self.input_polarity.set(0) self.count_on_start.set(0) - self.mca_names = [signal for signal in self.component_names if signal.startswith("mca")] + self.mca_names = [ + signal for signal in self.component_names if signal.startswith("mca") + ] self.mca_data = defaultdict(lambda: []) for mca in self.mca_names: signal = getattr(self, mca) @@ -220,12 +226,14 @@ class McsCsaxs(SIS38XX): return self._updated = True - self.erase_start.set(1) - self._send_data_to_bec() - self.mca_data = defaultdict(lambda: []) self.counter += 1 if self.counter == self.num_lines.get(): self._acquisition_done = True + self._send_data_to_bec() + self.stop_all.put(1, use_complete=False) + self.erase_start.set(1) + self._send_data_to_bec() + self.mca_data = defaultdict(lambda: []) def _send_data_to_bec(self) -> None: if self.scaninfo.scan_msg is None: @@ -255,7 +263,9 @@ class McsCsaxs(SIS38XX): def _set_acquisition_params(self) -> None: n_points = self.scaninfo.num_frames / int(self.num_lines.get()) if n_points > 10000: - raise MCSError(f"Requested number of points {n_points} exceeds hardware limit of 10000") + raise MCSError( + f"Requested number of points {n_points} exceeds hardware limit of 10000" + ) self.num_use_all.set(n_points) self.preset_real.set(0) @@ -329,16 +339,6 @@ class McsCsaxs(SIS38XX): if self._stopped: break time.sleep(0.005) - - # Message to BEC - # state = True - - # msg = BECMessage.FileMessage(file_path=self.filepath, done=True, successful=state) - # self._producer.set_and_publish( - # MessageEndpoints.public_file(self.metadata["scanID"], self.name), - # msg.dumps(), - # ) - self._acquisition_done = False self._stopped = False logger.info("mcs done")