diff --git a/src/aare/daq/workflows.py b/src/aare/daq/workflows.py index 07fa4214..1dca2dac 100644 --- a/src/aare/daq/workflows.py +++ b/src/aare/daq/workflows.py @@ -1,4 +1,4 @@ -from aare.common.models import StagePositionEnum +from aare.common.models import StagePositionEnum, SampleCameraSettings from aare.daq.devices import BeamlineDevices from aare.daq.config import BeamlineConfig, ABR_POS_MOUNT @@ -8,6 +8,8 @@ from aare.devices.bec_worker import BeamlineState logger = setup_logger("aareDAQ") +SAFE_POSITION = 900 + def move_bsz(devs: BeamlineDevices, target: float): if abs(target - devs.bsz.position) > 0.1: beamstop_stage_measure = devs.beamstop_stage_up @@ -53,6 +55,11 @@ def common_2rse(devs: BeamlineDevices, cfg: BeamlineConfig): print('try to move aerotech') devs.aerotech_pos = ABR_POS_MOUNT +def rse2se(devs: BeamlineDevices, cfg: BeamlineConfig): + devs.samcam_auto(AutoEnum.AUTO) + common_2rse(devs, cfg) + devs.samcam_auto(AutoEnum.ONCE) + def m2se(devs: BeamlineDevices, cfg: BeamlineConfig): devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.MANUAL_SAMPLE_EXCHANGE) @@ -81,27 +88,19 @@ def sa2se(devs: BeamlineDevices, cfg: BeamlineConfig): 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): logger.info("SA to Xtal Snapshot") - devs.samcam_settings.exposure = 0.001 - devs.samcam_settings.gain = 0.0 + devs.samcam_settings = SampleCameraSettings(gain=0.0, exposure=0.0005) logger.debug(f"new sam cam settings: {devs.samcam_settings}") - 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): logger.debug("DC to Xtal Snapshot") - devs.samcam_settings.exposure = 0.001 - devs.samcam_settings.gain = 0.0 + devs.samcam_settings = SampleCameraSettings(gain=0.0, exposure=0.0005) logger.debug(f"new sam cam settings: {devs.samcam_settings}") - 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) @@ -130,9 +129,7 @@ def xtal_snapshot2dh(devs: BeamlineDevices, cfg: BeamlineConfig): sa2dh(devs,cfg) 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) @@ -146,12 +143,18 @@ def rse2sa(devs: BeamlineDevices, cfg: BeamlineConfig): def sa2dc(devs: BeamlineDevices, cfg: BeamlineConfig): devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.move_to(BeamlineState.DATA_COLLECTION) + status.wait(timeout=60) devs.samcam_auto(AutoEnum.ONCE) def dc2sa(devs: BeamlineDevices, cfg: BeamlineConfig): + status = None + if cfg.dtz and cfg.dtz < SAFE_POSITION: + status = devs.bec_worker.det_z(value=SAFE_POSITION) devs.samcam_auto(AutoEnum.AUTO) devs.bec_worker.planner.move_to(BeamlineState.SAMPLE_ALIGNMENT) devs.aerotech_pos = cfg.abr_meas_pos + if hasattr(status, "wait"): + status.wait(timeout=60) devs.samcam_auto(AutoEnum.ONCE) def sa2xrf(devs: BeamlineDevices, cfg: BeamlineConfig): @@ -195,6 +198,9 @@ def ba2bl(devs: BeamlineDevices, cfg: BeamlineConfig): devs.scintillator = 20.0 def sa2dh(devs: BeamlineDevices, cfg: BeamlineConfig): + common2dh(devs, cfg) + +def common2dh(devs: BeamlineDevices, cfg: BeamlineConfig): devs.samcam_auto(AutoEnum.AUTO) common_2rse(devs, cfg) devs.samcam_auto(AutoEnum.ONCE) @@ -212,9 +218,9 @@ def dh2sa(devs: BeamlineDevices, cfg: BeamlineConfig): if __name__ == "__main__": from aare.common.beamline import mx_beamline import time - bl = mx_beamline() - cfg = BeamlineConfig(bl) - devs = BeamlineDevices(bl) - common_2rse(devs, cfg) + beamline = mx_beamline() + config = BeamlineConfig(beamline) + devices = BeamlineDevices(beamline) + common_2rse(devices, config) time.sleep(10.0) - rse2sa(devs, cfg) \ No newline at end of file + rse2sa(devices, config) \ No newline at end of file