refactor(falcon): moved logic to base class in ophyd_devices
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user