Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added mxtools/fmx/__init__.py
Empty file.
13 changes: 13 additions & 0 deletions mxtools/fmx/bpm.py
Original file line number Diff line number Diff line change
@@ -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')
50 changes: 50 additions & 0 deletions mxtools/fmx/utility.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import socket

from ophyd import Component as Cpt
from ophyd import Device, EpicsSignal


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