csaxs bpm show all
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
from __future__ import annotations
|
||||
import builtins
|
||||
|
||||
if builtins.__dict__.get("dev") is not None:
|
||||
dev = builtins.__dict__.get("dev")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Base classes
|
||||
# ============================================================
|
||||
|
||||
class SingleSignalDiag:
|
||||
"""Diagnostics for a single-signal device with gain control."""
|
||||
|
||||
def __init__(self, name, label, gain_dev, signal_dev):
|
||||
self._name = name
|
||||
self._label = label
|
||||
self._gain = gain_dev
|
||||
self._signal = signal_dev
|
||||
|
||||
def show_all(self):
|
||||
cfg = self._gain.get()
|
||||
try:
|
||||
val = self._signal.signal.get()
|
||||
sval = f"{val:.4f}"
|
||||
except Exception:
|
||||
sval = "N/A"
|
||||
|
||||
print(self._label)
|
||||
print("-" * len(self._label))
|
||||
print(f"gain : {cfg.gain:.0e}")
|
||||
print(f"coupling : {cfg.coupling}")
|
||||
print(f"speed : {cfg.speed}")
|
||||
print(f"readback : {sval}")
|
||||
print("")
|
||||
print("hint:")
|
||||
print(f" gain : csaxs.diagnostics.{self._name}.gain(1e5)")
|
||||
print(f" raw : dev.{self._signal.name}.signal.get()")
|
||||
|
||||
def gain(self, value):
|
||||
self._gain.set_gain(value)
|
||||
|
||||
|
||||
class BPMDiag:
|
||||
"""Diagnostics for a BPM device."""
|
||||
|
||||
def __init__(self, name, label, gain_dev, rb_dev):
|
||||
self._name = name
|
||||
self._label = label
|
||||
self._gain = gain_dev
|
||||
self._rb = rb_dev
|
||||
|
||||
def show_all(self):
|
||||
cfg = self._gain.get()
|
||||
rb = self._rb.get()
|
||||
|
||||
print(self._label)
|
||||
print("-" * len(self._label))
|
||||
print(f"gain : {cfg.gain:.0e}")
|
||||
print(f"coupling : {cfg.coupling}")
|
||||
print(f"speed : {cfg.speed}")
|
||||
print("readback:")
|
||||
print(f" pos_x : {rb.pos_x:.3e}")
|
||||
print(f" pos_y : {rb.pos_y:.3e}")
|
||||
print(f" intensity : {rb.intensity:.3f}")
|
||||
print("")
|
||||
print("hint:")
|
||||
print(f" gain : csaxs.diagnostics.{self._name}.gain(1e6)")
|
||||
print(f" raw : dev.{self._rb.name}.pos_x.get()")
|
||||
|
||||
def gain(self, value):
|
||||
self._gain.set_gain(value)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Diagnostics root (user-facing object)
|
||||
# ============================================================
|
||||
|
||||
class cSAXSDiagnostics:
|
||||
"""User-visible diagnostics namespace."""
|
||||
|
||||
def __init__(self):
|
||||
# BPMs
|
||||
self.bpm_xbox1 = BPMDiag(
|
||||
name="bpm_xbox1",
|
||||
label="BPM XBox1 (OP hutch)",
|
||||
gain_dev=dev.gain_bpm_xbox1,
|
||||
rb_dev=dev.bpm_xbox1_slowrb,
|
||||
)
|
||||
|
||||
self.bpm_xbox2 = BPMDiag(
|
||||
name="bpm_xbox2",
|
||||
label="BPM XBox2 (ES hutch)",
|
||||
gain_dev=dev.gain_bpm_xbox2,
|
||||
rb_dev=dev.bpm_xbox2_slowrb,
|
||||
)
|
||||
|
||||
# Single-signal diagnostics
|
||||
self.bim = SingleSignalDiag(
|
||||
name="bim",
|
||||
label="BIM XBox3 (ES)",
|
||||
gain_dev=dev.gain_bim_xbox3,
|
||||
signal_dev=dev.bim_xbox3_slowrb,
|
||||
)
|
||||
|
||||
self.beamstop = SingleSignalDiag(
|
||||
name="beamstop",
|
||||
label="Beamstop diode (flight tube)",
|
||||
gain_dev=dev.gain_beamstop_diode,
|
||||
signal_dev=dev.beamstop_intensity,
|
||||
)
|
||||
|
||||
self.polarization = SingleSignalDiag(
|
||||
name="polarization",
|
||||
label="Polarization diodes (XBox1)",
|
||||
gain_dev=dev.gain_diodes_xbox1,
|
||||
signal_dev=dev.diode_horizontal_xbox1_slowrb,
|
||||
)
|
||||
|
||||
def show_all(self):
|
||||
print("CSAXS diagnostics")
|
||||
print("=================")
|
||||
print("")
|
||||
self.bpm_xbox1.show_all()
|
||||
print("")
|
||||
self.bpm_xbox2.show_all()
|
||||
print("")
|
||||
self.bim.show_all()
|
||||
print("")
|
||||
self.beamstop.show_all()
|
||||
print("")
|
||||
self.polarization.show_all()
|
||||
Reference in New Issue
Block a user