diff --git a/superxas_bec/devices/falcon.py b/superxas_bec/devices/falcon.py index c0726df..1c12169 100644 --- a/superxas_bec/devices/falcon.py +++ b/superxas_bec/devices/falcon.py @@ -6,9 +6,7 @@ import numpy as np from bec_lib.devicemanager import ScanInfo from bec_lib.logger import bec_logger from ophyd import Component as Cpt -from ophyd import DeviceStatus, EpicsSignalRO, Kind, Signal, StatusBase -from ophyd.device import DynamicDeviceComponent as DCpt -from ophyd.mca import add_rois +from ophyd import DeviceStatus, Kind, Signal, StatusBase from ophyd.status import SubscriptionStatus from ophyd_devices.devices.dxp import EpicsDXPFalcon, EpicsMCARecord, Falcon from ophyd_devices.interfaces.base_classes.psi_device_base import PSIDeviceBase @@ -27,6 +25,13 @@ class DeadTimeCorrectedCounts(Signal): """Signal to calculate dead time corrected counts""" def __init__(self, name: str, channel: int, **kwargs): + """ + Initialize DeadTimeCorrectedCounts signal. + + Args: + name (str): Name of the signal + channel (int): Channel number + """ super().__init__(name=name, **kwargs) self._channel = channel self._dead_time = 1.182e-7 @@ -34,8 +39,8 @@ class DeadTimeCorrectedCounts(Signal): # pylint: disable=arguments-differ def get(self) -> float: """Get dead time corrected counts base on signals from dxp and mca of Falcon""" - dxp: EpicsDXPFalconSuperXAS = getattr(self.parent, f"dxp{self._channel}") - mca: EpicsMCARecordSuperXAS = getattr(self.parent, f"mca{self._channel}") + dxp: EpicsDXPFalcon = getattr(self.parent, f"dxp{self._channel}") + mca: EpicsMCARecord = getattr(self.parent, f"mca{self._channel}") icr = dxp.input_count_rate.get() ocr = dxp.output_count_rate.get() @@ -67,59 +72,39 @@ class DeadTimeCorrectedCounts(Signal): return cor_roi_cnts -class EpicsDXPFalconSuperXAS(EpicsDXPFalcon): - """DXPFalcon class wrapper for SuperXAS.""" - - _default_read_attrs = [ - "input_count_rate", - "output_count_rate", - ] # add exposable signals/subdevices here - - input_count_rate = Cpt(EpicsSignalRO, "InputCountRate", kind=Kind.normal, auto_monitor=True) - output_count_rate = Cpt(EpicsSignalRO, "OutputCountRate", kind=Kind.normal, auto_monitor=True) - - -class EpicsMCARecordSuperXAS(EpicsMCARecord): - """MCARecord class wrapper for SuperXAS.""" - - _default_read_attrs = ["rois"] # add exposable signals/subdevices here - - elapsed_real_time = Cpt(EpicsSignalRO, ".ERTM", kind=Kind.normal, auto_monitor=True) - rois = DCpt(add_rois(range(0, 3), kind=Kind.normal), kind=Kind.normal) - # Consider rewriting add_rois from ophyd.mca what is normal and what is config - - class FalconControl(Falcon): """Falcon Control class at SuperXAS. prefix: 'X10DA-SITORO:'""" - _default_read_attrs = [ - "mca1", + _default_read_attrs = Falcon._default_read_attrs + ( "dxp1", + # # "dxp2", + "mca1", + # # "mca2", "dead_time_cor_cnts1", - ] # add exposable signals/subdevices here + # # "dead_time_cor_cnts2", + ) + _default_configuration_attrs = Falcon._default_configuration_attrs + ( + "dxp1", + # "dxp2", + "mca1", + # "mca2", + "dead_time_cor_cnts1", + # "dead_time_cor_cnts2", + ) # DXP parameters - dxp1 = Cpt(EpicsDXPFalconSuperXAS, "dxp1:") - # dxp2 = Cpt(EpicsDXPFalconSuperXAS, "dxp2:") - # dxp3 = Cpt(EpicsDXPFalconSuperXAS, "dxp3:") - # dxp4 = Cpt(EpicsDXPFalconSuperXAS, "dxp4:") - # dxp5 = Cpt(EpicsDXPFalconSuperXAS, "dxp5:") + dxp1 = Cpt(EpicsDXPFalcon, "dxp1:") + # dxp2 = Cpt(EpicsDXPFalcon, "dxp2:") # MCA record with spectrum data - mca1 = Cpt(EpicsMCARecordSuperXAS, "mca1") + mca1 = Cpt(EpicsMCARecord, "mca1") # mca2 = Cpt(EpicsMCARecord, "mca2") - # mca3 = Cpt(EpicsMCARecord, "mca3") - # mca4 = Cpt(EpicsMCARecord, "mca4") - # mca5 = Cpt(EpicsMCARecord, "mca5") # Norm Signal dead_time_cor_cnts1 = Cpt( DeadTimeCorrectedCounts, name="dead_time_cor_cnts", channel=1, kind=Kind.hinted ) # dead_time_cor_cnts2 = Cpt(DeadTimeCorrectedCounts, name='dead_time_cor_cnts', channel=2, kind=Kind.normal) - # dead_time_cor_cnts3 = Cpt(DeadTimeCorrectedCounts, name='dead_time_cor_cnts', channel=3, kind=Kind.normal) - # dead_time_cor_cnts4 = Cpt(DeadTimeCorrectedCounts, name='dead_time_cor_cnts', channel=4, kind=Kind.normal) - # dead_time_cor_cnts5 = Cpt(DeadTimeCorrectedCounts, name='dead_time_cor_cnts', channel=5, kind=Kind.normal) class FalconSuperXAS(PSIDeviceBase, FalconControl):