diff --git a/superxas_bec/device_configs/sample_manipulator.yaml b/superxas_bec/device_configs/sample_manipulator.yaml deleted file mode 100644 index d26ebdd..0000000 --- a/superxas_bec/device_configs/sample_manipulator.yaml +++ /dev/null @@ -1,27 +0,0 @@ -manip_new_trx: - description: Sample Manipulator X-Translation - deviceClass: ophyd.EpicsMotor - deviceConfig: - prefix: X10DA-ES1-MAN:TRX - enabled: true - onFailure: retry - readoutPriority: baseline - softwareTrigger: false -manip_new_try: - description: Sample Manipulator Y-Translation - deviceClass: ophyd.EpicsMotor - deviceConfig: - prefix: X10DA-ES1-MAN:TRY - enabled: true - onFailure: retry - readoutPriority: baseline - softwareTrigger: false -manip_new_trz: - description: Sample Manipulator Z - Along beam - deviceClass: ophyd.EpicsMotor - deviceConfig: - prefix: X10DA-ES1-MAN:TRZ - enabled: true - onFailure: retry - readoutPriority: baseline - softwareTrigger: false \ No newline at end of file diff --git a/superxas_bec/device_configs/x10da_experimental_hutch.yaml b/superxas_bec/device_configs/x10da_experimental_hutch.yaml new file mode 100644 index 0000000..6954ca5 --- /dev/null +++ b/superxas_bec/device_configs/x10da_experimental_hutch.yaml @@ -0,0 +1,115 @@ +################################### +## Optical Table ES1 ## +################################### + +es1ot_trx: + readoutPriority: baseline + description: ES1 Table X Translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-ET1:TRX + onFailure: retry + enabled: true + softwareTrigger: false + +es1ot_try: + readoutPriority: baseline + description: ES1 Table Y Translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-ET1:TRY + onFailure: retry + enabled: true + softwareTrigger: false + +################################### +## Exit Window ## +################################### + +eswi_try: + readoutPriority: baseline + description: End Station 0 Exit Window Y-translation + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-PP1:MOT8 + onFailure: retry + enabled: true + softwareTrigger: false + +################################### +## Ionization Chambers ## +################################### + +es1ic0_try: + readoutPriority: baseline + description: Ionization Chamber IC0 Y-translation + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-IC1:TRY + onFailure: retry + enabled: true + softwareTrigger: false + +es1ic1_try: + readoutPriority: baseline + description: Ionization Chamber IC1 Y-translation + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-IC2:TRY + onFailure: retry + enabled: true + softwareTrigger: false + +es1ic2_try: + readoutPriority: baseline + description: Ionization Chamber IC2 Y-translation + deviceClass: ophyd_devices.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-IC3:TRY + onFailure: retry + enabled: true + softwareTrigger: false + +################################### +## Sample Manipulator ## +################################### + +es1man_trx: + readoutPriority: baseline + description: Sample Manipulator X-Translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-MAN:TRX + enabled: true + onFailure: retry + softwareTrigger: false + +es1man_try: + readoutPriority: baseline + description: Sample Manipulator Y-Translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-MAN:TRY + enabled: true + onFailure: retry + softwareTrigger: false + +es1man_trz: + readoutPriority: baseline + description: Sample Manipulator Z-Translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-MAN:TRZ + enabled: true + onFailure: retry + softwareTrigger: false + +es1man_roty: + readoutPriority: baseline + description: Sample Manipulator Y-Rotation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-ES1-MAN:ROTY + enabled: true + onFailure: retry + softwareTrigger: false \ No newline at end of file diff --git a/superxas_bec/device_configs/x10da_optics.yaml b/superxas_bec/device_configs/x10da_optics.yaml index 9947ba4..8fb2d06 100644 --- a/superxas_bec/device_configs/x10da_optics.yaml +++ b/superxas_bec/device_configs/x10da_optics.yaml @@ -27,177 +27,91 @@ mo1_trx: ## Optics Slits + Beam Monitor 1 ## ################################### -# sl1_trxr: -# readoutPriority: baseline -# description: Optics slits 1 X-translation Ring-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:TRXR -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits +bm1_try: + readoutPriority: baseline + description: Beam Monitor 1 Y-translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-OP-BM2:TR2 + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits -# sl1_trxw: -# readoutPriority: baseline -# description: Optics slits 1 X-translation Wall-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:TRXW -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits +sl1_centerx: + readoutPriority: baseline + description: Optics slits X-center + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor + deviceConfig: + prefix: X10DA-OP-SH + readback_suffix: t2.D + setpoint_suffix: center + atol: 0.02 + egu: mm + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits -# sl1_tryb: -# readoutPriority: baseline -# description: Optics slits 1 Y-translation Bottom-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:TRYB -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits +sl1_gapx: + readoutPriority: baseline + description: Optics slits X-gap + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor + deviceConfig: + prefix: X10DA-OP-SH + readback_suffix: t2.C + setpoint_suffix: size + atol: 0.02 + egu: mm + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits -# sl1_tryt: -# readoutPriority: baseline -# description: Optics slits 1 X-translation Top-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:TRYT -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits +sl1_centery: + readoutPriority: baseline + description: Optics slits Y-center + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor + deviceConfig: + prefix: X10DA-OP-SV + readback_suffix: t2.D + setpoint_suffix: center + atol: 0.02 + egu: mm + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits -# bm1_try: -# readoutPriority: baseline -# description: Beam Monitor 1 Y-translation -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-BM1:TRY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl1_centerx: -# readoutPriority: baseline -# description: Optics slits 1 X-center -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:CENTERX -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl1_gapx: -# readoutPriority: baseline -# description: Optics slits 1 X-gap -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:GAPX -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl1_centery: -# readoutPriority: baseline -# description: Optics slits 1 Y-center -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:CENTERY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl1_gapy: -# readoutPriority: baseline -# description: Optics slits 1 Y-gap -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL1:GAPY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits +sl1_gapy: + readoutPriority: baseline + description: Optics slits Y-gap + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor + deviceConfig: + prefix: X10DA-OP-SV + readback_suffix: t2.C + setpoint_suffix: size + atol: 0.02 + egu: mm + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits ################################### ## Focusing Mirror ## ################################### -# fm_trxu: -# readoutPriority: baseline -# description: Focusing Mirror X-translation upstream -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-FM:TRXU -# onFailure: retry -# enabled: true -# softwareTrigger: false - -# fm_trxd: -# readoutPriority: baseline -# description: Focusing Mirror X-translation downstream -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-FM:TRXD -# onFailure: retry -# enabled: true -# softwareTrigger: false - -# fm_tryd: -# readoutPriority: baseline -# description: Focusing Mirror Y-translation downstream -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-FM:TRYD -# onFailure: retry -# enabled: true -# softwareTrigger: false - -# fm_tryur: -# readoutPriority: baseline -# description: Focusing Mirror Y-translation upstream ring -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-FM:TRYUR -# onFailure: retry -# enabled: true -# softwareTrigger: false - -# fm_tryuw: -# readoutPriority: baseline -# description: Focusing Mirror Y-translation upstream wall -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-FM:TRYUW -# onFailure: retry -# enabled: true -# softwareTrigger: false - fm_bnd: readoutPriority: baseline description: Focusing Mirror bender @@ -222,10 +136,13 @@ fm_bnd: fm_rotx: readoutPriority: baseline description: Focusing Morror Pitch - deviceClass: ophyd.EpicsSignalRO + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor deviceConfig: - auto_monitor: true - read_pv: X10DA-OP-MI1:pitch + prefix: 'X10DA-OP-MI1:' + readback_suffix: m2.F + setpoint_suffix: pitch + atol: 0.01 + egu: mrad onFailure: retry enabled: true softwareTrigger: false @@ -233,10 +150,13 @@ fm_rotx: fm_roty: readoutPriority: baseline description: Focusing Morror Yaw - deviceClass: ophyd.EpicsSignalRO + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor deviceConfig: - auto_monitor: true - read_pv: X10DA-OP-MI1:yaw + prefix: 'X10DA-OP-MI1:' + readback_suffix: t2.C + setpoint_suffix: yaw + atol: 0.01 + egu: mrad onFailure: retry enabled: true softwareTrigger: false @@ -244,21 +164,26 @@ fm_roty: fm_rotz: readoutPriority: baseline description: Focusing Morror Roll - deviceClass: ophyd.EpicsSignalRO + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor deviceConfig: - auto_monitor: true - read_pv: X10DA-OP-MI1:roll - onFailure: retry + prefix: 'X10DA-OP-MI1:' + readback_suffix: m2.E + setpoint_suffix: roll + atol: 0.01 + egu: mrad enabled: true softwareTrigger: false fm_trx: readoutPriority: baseline description: Focusing Morror Center Point X - deviceClass: ophyd.EpicsSignalRO + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor deviceConfig: - auto_monitor: true - read_pv: X10DA-OP-MI1:trans + prefix: 'X10DA-OP-MI1:' + readback_suffix: t2.D + setpoint_suffix: trans + atol: 0.01 + egu: mm onFailure: retry enabled: true softwareTrigger: false @@ -266,131 +191,30 @@ fm_trx: fm_try: readoutPriority: baseline description: Focusing Morror Center Point Y - deviceClass: ophyd.EpicsSignalRO + deviceClass: superxas_bec.devices.epics_pv_motor.EpicsPVMotor deviceConfig: - auto_monitor: true - read_pv: X10DA-OP-MI1:y + prefix: 'X10DA-OP-MI1:' + readback_suffix: m2.D + setpoint_suffix: y + atol: 0.01 + egu: mm onFailure: retry enabled: true softwareTrigger: false ################################### -## Optics Slits + Beam Monitor 2 ## +## Beam Monitor 2 ## ################################### -# sl2_trxr: -# readoutPriority: baseline -# description: Optics slits 2 X-translation Ring-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:TRXR -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_trxw: -# readoutPriority: baseline -# description: Optics slits 2 X-translation Wall-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:TRXW -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_tryb: -# readoutPriority: baseline -# description: Optics slits 2 Y-translation Bottom-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:TRYB -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_tryt: -# readoutPriority: baseline -# description: Optics slits 2 X-translation Top-edge -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:TRYT -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# bm2_try: -# readoutPriority: baseline -# description: Beam Monitor 2 Y-translation -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-BM2:TRY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_centerx: -# readoutPriority: baseline -# description: Optics slits 2 X-center -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:CENTERX -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_gapx: -# readoutPriority: baseline -# description: Optics slits 2 X-gap -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:GAPX -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_centery: -# readoutPriority: baseline -# description: Optics slits 2 Y-center -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:CENTERY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits - -# sl2_gapy: -# readoutPriority: baseline -# description: Optics slits 2 Y-gap -# deviceClass: ophyd.EpicsMotor -# deviceConfig: -# prefix: X10DA-OP-SL2:GAPY -# onFailure: retry -# enabled: true -# softwareTrigger: false -# deviceTags: -# - optics -# - slits \ No newline at end of file +bm2_try: + readoutPriority: baseline + description: Beam Monitor 2 Y-translation + deviceClass: ophyd.EpicsMotor + deviceConfig: + prefix: X10DA-OP-BM3:TR2 + onFailure: retry + enabled: true + softwareTrigger: false + deviceTags: + - optics + - slits diff --git a/superxas_bec/device_configs/x10da_standard_config.yaml b/superxas_bec/device_configs/x10da_standard_config.yaml index 97cd135..04808aa 100644 --- a/superxas_bec/device_configs/x10da_standard_config.yaml +++ b/superxas_bec/device_configs/x10da_standard_config.yaml @@ -7,10 +7,6 @@ machine_config: - !include ./x10da_machine.yaml -## Beam Monitors OP + EH -# beam_monitors_config: -# - !include ./x10da_beam_monitors.yaml - ################################### ## Frontend ## ################################### @@ -51,15 +47,6 @@ mo1_bragg: onFailure: retry enabled: true softwareTrigger: false -# mo1_bragg_angle: -# readoutPriority: baseline -# description: Positioner for the Monochromator -# deviceClass: superxas_bec.devices.mo1_bragg.mo1_bragg_angle.Mo1BraggAngle -# deviceConfig: -# prefix: "X10DA-OP-MO1:BRAGG:" -# onFailure: retry -# enabled: true -# softwareTrigger: false # Remaining optics hutch optics_config: @@ -80,19 +67,6 @@ nidaq: enabled: true softwareTrigger: false -## XAS (ICx, SDD, ref foils) -# xas_config: -# - !include ./x10da_xas.yaml - -## XRD (Pilatus, pinhole, beamstop) -#xrd_config: -# - !include ./x10da_xrd.yaml - -# Commented out because too slow -## Hutch cameras -# hutch_cams: -# - !include ./x10da_hutch_cameras.yaml - ## Remaining experimental hutch -# es_config: -# - !include ./x10da_experimental_hutch.yaml \ No newline at end of file +es_config: + - !include ./x10da_experimental_hutch.yaml \ No newline at end of file diff --git a/superxas_bec/devices/epics_pv_motor.py b/superxas_bec/devices/epics_pv_motor.py new file mode 100644 index 0000000..c635f30 --- /dev/null +++ b/superxas_bec/devices/epics_pv_motor.py @@ -0,0 +1,38 @@ +"""Module for the Epics PV Positioners of SuperXAS""" + +from bec_lib.logger import bec_logger +from ophyd import EpicsSignal, EpicsSignalRO +from ophyd import FormattedComponent as FCpt +from ophyd.pv_positioner import PVPositionerIsClose + +logger = bec_logger.logger + + +class EpicsPVMotor(PVPositionerIsClose): + """Positioner without a motorRecord, just two PVs for + readback and setpoint. + """ + + readback = FCpt( + EpicsSignalRO, "{self.prefix}{self.readback_suffix}", kind="hinted", auto_monitor=True + ) + setpoint = FCpt( + EpicsSignal, "{self.prefix}{self.setpoint_suffix}", kind="normal", auto_monitor=True + ) + + def __init__( + self, + *, + name, + prefix: str, + readback_suffix: str = "", + setpoint_suffix: str = "", + atol: float, + rtol: float = 0, + egu: str = "", + **kwargs, + ): + self.readback_suffix = readback_suffix + self.setpoint_suffix = setpoint_suffix + super().__init__(prefix, name=name, egu=egu, atol=atol, rtol=rtol, **kwargs) + self.readback.name = self.name