wip beamline refactoring

This commit is contained in:
gac-x10da
2025-09-11 17:11:47 +02:00
committed by appel_c
parent 7ef1ac405c
commit 48986be97e
2 changed files with 26 additions and 62 deletions
@@ -5,7 +5,7 @@ falcon:
prefix: 'X10DA-SITORO:'
enabled: true
onFailure: raise
readoutPriority: async
readoutPriority: monitored
softwareTrigger: false
manip_new_trx:
description: Old Sample Manipulator X-Translation
+25 -61
View File
@@ -38,15 +38,15 @@ class DXPControl(Device):
input_count_rate = Cpt(EpicsSignalRO, "InputCountRate", kind=Kind.omitted, auto_monitor=True)
output_count_rate = Cpt(EpicsSignalRO, "OutputCountRate", kind=Kind.omitted, auto_monitor=True)
elapsed_real_time = Cpt(EpicsSignalRO, "ElapsedRealTime", kind=Kind.omitted, auto_monitor=True)
elapsed_real_time = Cpt(EpicsSignalRO, "ElapsedRealTime", kind=Kind.omitted)
class MCAControl(Device):
"""MCA Control Device for Falcon detector"""
spectrum = Cpt(EpicsSignalRO, ".VAL", kind=Kind.omitted, auto_monitor=True)
spectrum = Cpt(EpicsSignalRO, ".VAL", kind=Kind.omitted)
roi_count = Cpt(EpicsSignalRO, ".R0", kind=Kind.omitted, auto_monitor=True)
roi_label = Cpt(EpicsSignal, ".R0NM", kind=Kind.omitted, auto_monitor=True)
roi_label = Cpt(EpicsSignal, ".R0NM", kind=Kind.omitted)
elapsed_real_time = Cpt(EpicsSignalRO, ".ERTM", kind=Kind.omitted, auto_monitor=True)
@@ -73,7 +73,7 @@ class DeadTimeCorrectedCounts(Signal):
icr = dxp.input_count_rate.get()
ocr = dxp.output_count_rate.get()
roi = mca.rois.roi0.count.get()
roi = mca.roi_count.get()
ert = mca.elapsed_real_time.get()
print(icr, ocr, roi, ert)
@@ -115,16 +115,16 @@ class FalconControlDirect(Device):
acquiring = Cpt(EpicsSignal, "Acquiring", kind=Kind.omitted, auto_monitor=True)
# DXP parameters
dxp1 = Cpt(DXPControl, "dxp1:")
dxp1 = Cpt(DXPControl, "dxp1:", kind=Kind.omitted)
# dxp2 = Cpt(EpicsDXPFalcon, "dxp2:")
# MCA record with spectrum data
mca1 = Cpt(MCAControl, "mca1")
mca1 = Cpt(MCAControl, "mca1", kind=Kind.omitted)
# mca2 = Cpt(EpicsMCARecord, "mca2")
# Norm Signal
dead_time_cor_cnts1 = Cpt(
DeadTimeCorrectedCounts, name="dead_time_cor_cnts", channel=1, kind=Kind.hinted
DeadTimeCorrectedCounts, name="dead_time_cor_cnts", channel=1, kind=Kind.omitted
)
# dead_time_cor_cnts2 = Cpt(DeadTimeCorrectedCounts, name='dead_time_cor_cnts', channel=2, kind=Kind.normal)
@@ -133,30 +133,18 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
"""Falcon implementierung at SuperXAS. prefix: 'X10DA-SITORO:'"""
preview = Cpt(
Signal, name="preview", kind=Kind.omitted, doc="Preview signal for Falcon detector"
Signal, name="preview", kind=Kind.normal, doc="Preview signal for Falcon detector"
)
icr = Cpt(
AsyncSignal, name="icr", ndim=0, max_size=int(1e6), doc="Async input count rate signal"
)
ocr = Cpt(
AsyncSignal, name="ocr", ndim=0, max_size=int(1e6), doc="Async output count rate signal"
)
elap_real_time = Cpt(
AsyncSignal,
name="elap_real_time",
ndim=0,
max_size=int(1e6),
doc="Async elapsed real time signal",
)
roi0_count = Cpt(
AsyncSignal, name="roi0_count", ndim=0, max_size=int(1e6), doc="Async ROI 0 count signal"
)
Signal, name="icr", kind=Kind.normal)
ocr = Cpt(Signal, name="icr", kind=Kind.normal)
elap_real_time = Cpt(Signal, name="icr", kind=Kind.normal)
roi0_count = Cpt(Signal, name="icr", kind=Kind.normal)
dead_cor_roi0_count = Cpt(
AsyncSignal,
Signal,
name="dead_cor_roi0_count",
ndim=0,
max_size=int(1e6),
doc="Async dead time corrected ROI 0 count signal",
kind=Kind.normal
)
########################################
@@ -205,6 +193,8 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
Called after the device is connected and its signals are connected.
Default values for signals should be set here.
"""
self.stop_all.put(1)
CompareStatus(self.acquiring, FalconAcquiringStatus.DONE).wait(5)
# self.mca1.spectrum.subscribe(self._update_preview, run=False)
# TODO add again once PreviewSIgnal works with GUI
@@ -219,16 +209,14 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
Information about the upcoming scan can be accessed from the scan_info (self.scan_info.msg) object.
"""
self.stop_all.put(1, use_complete=True)
CompareStatus(self.acquiring, FalconAcquiringStatus.DONE).wait(self._pv_timeout)
self.collect_mode.set(0).wait()
self.preset_real_time.set(0).wait()
self.stop_all.put(1)
CompareStatus(self.acquiring, FalconAcquiringStatus.DONE).wait(self._pv_timeout)
def on_unstage(self) -> DeviceStatus | StatusBase | None:
"""Called while unstaging the device."""
self.stop_all.put(1)
self.erase_all.put(1)
CompareStatus(self.acquiring, FalconAcquiringStatus.DONE).wait(self._pv_timeout)
def on_pre_scan(self) -> DeviceStatus | StatusBase | None:
"""Called right before the scan starts on all devices automatically."""
@@ -255,37 +243,13 @@ class FalconSuperXASDirect(PSIDeviceBase, FalconControlDirect):
time_started = time.time()
# CompareStatus(self.acquiring, FalconAcquiringStatus.DONE).wait(self._pv_timeout)
logger.info(f"Sending data for {self.name} at {time_started}")
self.icr.put(
{self.icr.name: {"value": self.dxp1.input_count_rate.get(), "timestamp": time.time()}}
)
self.ocr.put(
{self.ocr.name: {"value": self.dxp1.output_count_rate.get(), "timestamp": time.time()}}
)
self.elap_real_time.put(
{
self.elap_real_time.name: {
"value": self.mca1.elapsed_real_time.get(),
"timestamp": time.time(),
}
}
)
self.roi0_count.put(
{
self.roi0_count.name: {
"value": self.mca1.rois.roi0.count.get(),
"timestamp": time.time(),
}
}
)
self.dead_cor_roi0_count.put(
{
self.dead_cor_roi0_count.name: {
"value": self.dead_time_cor_cnts1.get(),
"timestamp": time.time(),
}
}
)
self._send_preview_async()
self.icr.put(self.dxp1.input_count_rate.get())
self.ocr.put(self.dxp1.output_count_rate.get())
self.elap_real_time.put(self.mca1.elapsed_real_time.get())
self.roi0_count.put(self.mca1.roi_count.get())
self.dead_cor_roi0_count.put(self.dead_time_cor_cnts1.get())
self.preview.put(self.mca1.spectrum.get())
# self._send_preview_async()
logger.info(f"Data sent for {self.name} at {time.time()- time_started}")
def _send_preview_async(self) -> None: