From adb7ac60d022ee46e60c1ce18424b84136cad0dd Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Tue, 29 Mar 2022 12:34:05 -0400 Subject: [PATCH 1/3] Port some utilities from FMX `profile_collection` --- mxtools/fmx/__init__.py | 0 mxtools/fmx/utility.py | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 mxtools/fmx/__init__.py create mode 100644 mxtools/fmx/utility.py diff --git a/mxtools/fmx/__init__.py b/mxtools/fmx/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mxtools/fmx/utility.py b/mxtools/fmx/utility.py new file mode 100644 index 0000000..bbcf90e --- /dev/null +++ b/mxtools/fmx/utility.py @@ -0,0 +1,48 @@ +from ophyd import Device, Component as Cpt, EpicsSignal +import socket + + +class BeamlineCalibrations(Device): + LoMagCal = Cpt(EpicsSignal, 'LoMagCal}') + HiMagCal = Cpt(EpicsSignal, 'HiMagCal}') + + +class PuckSafety(Device): + On = Cpt(EpicsSignal, 'On.PROC') + Off = Cpt(EpicsSignal, 'Off.PROC') + + +def blStrGet(): + """ + Return beamline string + + blStr: 'AMX' or 'FMX' + + Beamline is determined by querying hostname + """ + hostStr = socket.gethostname() + if hostStr.startswith('xf17id2'): + blStr = 'FMX' + elif hostStr.startswith('xf17id1'): + blStr = 'AMX' + else: + print('Error - this code must be executed on one of the -ca1 machines') + blStr = -1 + + return blStr + + +def get_energy(vdcm=None, hdcm=None): + """ + Returns the current photon energy in eV derived from the DCM Bragg angle + """ + blStr = blStrGet() + if blStr == -1: + return -1 + + if blStr == 'AMX': + energy = vdcm.e.user_readback.get() + elif blStr == 'FMX': + energy = hdcm.e.user_readback.get() + + return energy From f735ba5476329a4055a6468ac6f930576e5fab8e Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Tue, 29 Mar 2022 13:01:45 -0400 Subject: [PATCH 2/3] STY: fix the style by running `scripts/lint.sh` --- mxtools/fmx/utility.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/mxtools/fmx/utility.py b/mxtools/fmx/utility.py index bbcf90e..397fe99 100644 --- a/mxtools/fmx/utility.py +++ b/mxtools/fmx/utility.py @@ -1,15 +1,17 @@ -from ophyd import Device, Component as Cpt, EpicsSignal import socket +from ophyd import Component as Cpt +from ophyd import Device, EpicsSignal + class BeamlineCalibrations(Device): - LoMagCal = Cpt(EpicsSignal, 'LoMagCal}') - HiMagCal = Cpt(EpicsSignal, 'HiMagCal}') + LoMagCal = Cpt(EpicsSignal, "LoMagCal}") + HiMagCal = Cpt(EpicsSignal, "HiMagCal}") class PuckSafety(Device): - On = Cpt(EpicsSignal, 'On.PROC') - Off = Cpt(EpicsSignal, 'Off.PROC') + On = Cpt(EpicsSignal, "On.PROC") + Off = Cpt(EpicsSignal, "Off.PROC") def blStrGet(): @@ -21,12 +23,12 @@ def blStrGet(): Beamline is determined by querying hostname """ hostStr = socket.gethostname() - if hostStr.startswith('xf17id2'): - blStr = 'FMX' - elif hostStr.startswith('xf17id1'): - blStr = 'AMX' + if hostStr.startswith("xf17id2"): + blStr = "FMX" + elif hostStr.startswith("xf17id1"): + blStr = "AMX" else: - print('Error - this code must be executed on one of the -ca1 machines') + print("Error - this code must be executed on one of the -ca1 machines") blStr = -1 return blStr @@ -40,9 +42,9 @@ def get_energy(vdcm=None, hdcm=None): if blStr == -1: return -1 - if blStr == 'AMX': + if blStr == "AMX": energy = vdcm.e.user_readback.get() - elif blStr == 'FMX': + elif blStr == "FMX": energy = hdcm.e.user_readback.get() return energy From e59d7cfaa4eb36a60033baa9087e4c3186b340e5 Mon Sep 17 00:00:00 2001 From: Martin Fuchs Date: Fri, 1 Apr 2022 12:13:46 -0400 Subject: [PATCH 3/3] Added bpm.py --- mxtools/fmx/bpm.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mxtools/fmx/bpm.py diff --git a/mxtools/fmx/bpm.py b/mxtools/fmx/bpm.py new file mode 100644 index 0000000..3ec97a9 --- /dev/null +++ b/mxtools/fmx/bpm.py @@ -0,0 +1,13 @@ +from ophyd import Device, EpicsSignal, EpicsSignalRO, Component as Cpt + +class Bpm(Device): + x = Cpt(EpicsSignalRO, 'PosX:MeanValue_RBV') + y = Cpt(EpicsSignalRO, 'PosY:MeanValue_RBV') + a = Cpt(EpicsSignalRO, 'Current1:MeanValue_RBV') + b = Cpt(EpicsSignalRO, 'Current2:MeanValue_RBV') + c = Cpt(EpicsSignalRO, 'Current3:MeanValue_RBV') + d = Cpt(EpicsSignalRO, 'Current4:MeanValue_RBV') + sum_x = Cpt(EpicsSignalRO, 'SumX:MeanValue_RBV') + sum_y = Cpt(EpicsSignalRO, 'SumY:MeanValue_RBV') + sum_all = Cpt(EpicsSignalRO, 'SumAll:MeanValue_RBV') + sum_all_precision = Cpt(EpicsSignal, 'SumAll:MeanValue_RBV.PREC')