From 2802a72e43776593c8e96c2f72ff96366400acab Mon Sep 17 00:00:00 2001 From: appleb_m Date: Wed, 22 Apr 2026 16:05:21 +0200 Subject: [PATCH] Workflows: added some state changes, trialing auto_exposure, todo how to safely, or more safely import bec macros --- src/aare/daq/workflows.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/aare/daq/workflows.py b/src/aare/daq/workflows.py index dc7e2531..aa10485b 100644 --- a/src/aare/daq/workflows.py +++ b/src/aare/daq/workflows.py @@ -1,9 +1,12 @@ -from aare.common.coordinate import Coordinate from aare.common.models import StagePositionEnum from aare.daq.devices import BeamlineDevices from aare.daq.config import BeamlineConfig, ABR_POS_MOUNT from pxii_bec.macros.planner import BeamlineState +from aare.devices.area_detector import AutoEnum +from aare.common.logger_config import setup_logger + +logger = setup_logger("aareDAQ") def move_bsz(devs: BeamlineDevices, target: float): if abs(target - devs.bsz.position) > 0.1: @@ -68,49 +71,72 @@ def sa2se(devs: BeamlineDevices, cfg: BeamlineConfig): # #print('move cryo to park') # #devs.__cryojet_pos = StagePositionEnum.PARK try: + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.MANUAL_SAMPLE_EXCHANGE) + logger.info(f"moved to sample exchange, now moving to {cfg.abr_meas_pos}") devs.aerotech_pos = cfg.abr_meas_pos + devs.smargon_move_home() + devs.samcam_auto(AutoEnum.ONCE) except Exception as e: devs.aerotech_pos = cfg.abr_meas_pos + devs.smargon_move_home() raise def sa2rse(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) common_2rse(devs, cfg) + devs.samcam_auto(AutoEnum.ONCE) def sa2xtal_snapshot(devs:BeamlineDevices, cfg:BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.XTAL_SNAPSHOT) + devs.samcam_auto(AutoEnum.ONCE) def dc2xtal_snapshot(devs:BeamlineDevices, cfg:BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.XTAL_SNAPSHOT) + devs.samcam_auto(AutoEnum.ONCE) def xtal_snapshot2dc(devs:BeamlineDevices, cfg:BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.DATA_COLLECTION) + devs.samcam_auto(AutoEnum.ONCE) def xtal_snapshot2sa(devs:BeamlineDevices, cfg:BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.SAMPLE_ALIGNMENT) + devs.samcam_auto(AutoEnum.ONCE) def dc2rse(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) common_2rse(devs, cfg) + devs.samcam_auto(AutoEnum.ONCE) def se2sa(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.SAMPLE_ALIGNMENT) devs.aerotech_pos = cfg.abr_meas_pos - devs.smargon_move_home() + devs.samcam_auto(AutoEnum.ONCE) def rse2sa(devs: BeamlineDevices, cfg: BeamlineConfig): se2sa(devs, cfg) def sa2dc(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.move_to(BeamlineState.DATA_COLLECTION) + devs.samcam_auto(AutoEnum.ONCE) def dc2sa(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.SAMPLE_ALIGNMENT) devs.aerotech_pos = cfg.abr_meas_pos - devs.smargon_move_home() + devs.samcam_auto(AutoEnum.ONCE) def sa2xrf(devs: BeamlineDevices, cfg: BeamlineConfig): """sample alignment to XrfCollection""" + devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.FLUX_MEASUREMENT) + devs.samcam_auto(AutoEnum.ONCE) def xrf2sa(devs: BeamlineDevices, cfg: BeamlineConfig): """XrfCollection to sample alignment""" @@ -146,7 +172,9 @@ def ba2bl(devs: BeamlineDevices, cfg: BeamlineConfig): devs.scintillator = 20.0 def sa2dh(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) common_2rse(devs, cfg) + devs.samcam_auto(AutoEnum.ONCE) if devs.tell.get_mounted_sample() is not None: try: # Best effort try to unmount