Source code for dodal.devices.xspress3.xspress3_channel
from ophyd_async.core import Device, StrictEnum
from ophyd_async.epics.core import epics_signal_r, epics_signal_rw
[docs]
class AcquireState(StrictEnum):
DONE = "Done"
ACQUIRE = "Acquire"
[docs]
class Xspress3Channel(Device):
"""
Xspress3 Channel contains the truncated detector data and its collection conditions
including the definition of ROI(region of interest).
"""
def __init__(self, prefix: str, name: str = "") -> None:
self.update_arrays = epics_signal_rw(AcquireState, prefix + "SCAS:TS:TSAcquire")
self.roi_high_limit = epics_signal_rw(int, prefix + "SCA5_HLM")
self.roi_low_limit = epics_signal_rw(int, prefix + "SCA5_LLM")
self.time = epics_signal_r(int, prefix + "SCA0:Value_RBV")
self.reset_ticks = epics_signal_r(int, prefix + "SCA1:Value_RBV")
self.reset_count = epics_signal_r(int, prefix + "SCA2:Value_RBV")
self.all_event = epics_signal_r(int, prefix + "SCA3:Value_RBV")
self.all_good = epics_signal_r(int, prefix + "SCA4:Value_RBV")
self.pileup = epics_signal_r(int, prefix + "SCA7:Value_RBV")
self.total_time = epics_signal_r(int, prefix + "SCA8:Value_RBV")
self.mca_roi1_LLM = epics_signal_r(int, prefix + "SCA8:Value_RBV")
super().__init__(name=name)
[docs]
class Xspress3ROIChannel(Device):
"""
This is the Xspress3 multi-channel analyzer range
"""
def __init__(self, prefix: str, name: str = "") -> None:
self.roi_start_x = epics_signal_rw(int, prefix + "MinX")
self.roi_size_x = epics_signal_rw(int, prefix + "SizeX")
super().__init__(name=name)