feat/diagnostics slits show all and fixes #183
@@ -17,6 +17,7 @@ from csaxs_bec.bec_ipython_client.plugins.cSAXS.smaract import cSAXSSmaract
|
||||
from csaxs_bec.bec_ipython_client.plugins.omny.omny_general_tools import OMNYTools
|
||||
from csaxs_bec.bec_ipython_client.plugins.cSAXS.filter_transmission import cSAXSFilterTransmission
|
||||
from csaxs_bec.bec_ipython_client.plugins.cSAXS.diagnostics import cSAXSDiagnostics
|
||||
from csaxs_bec.bec_ipython_client.plugins.cSAXS.slits import cSAXSSlits
|
||||
class cSAXSError(Exception):
|
||||
pass
|
||||
|
||||
@@ -25,6 +26,7 @@ class cSAXS(
|
||||
cSAXSInitSmaractStages,
|
||||
cSAXSSmaract,
|
||||
cSAXSFilterTransmission,
|
||||
cSAXSSlits,
|
||||
):
|
||||
def __init__(self, client):
|
||||
self.client = client
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
from __future__ import annotations
|
||||
import builtins
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Access to dev (as before)
|
||||
# ------------------------------------------------------------
|
||||
if builtins.__dict__.get("dev") is not None:
|
||||
dev = builtins.__dict__.get("dev")
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Safe device access
|
||||
# ------------------------------------------------------------
|
||||
def _safe_dev(name):
|
||||
try:
|
||||
return getattr(dev, name)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 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):
|
||||
print(self._label)
|
||||
print("-" * len(self._label))
|
||||
|
||||
if self._gain is None or self._signal is None:
|
||||
print("device not available in config\n")
|
||||
return
|
||||
|
||||
try:
|
||||
cfg = self._gain.get()
|
||||
except Exception as e:
|
||||
print(f"error accessing gain: {e}\n")
|
||||
return
|
||||
|
||||
try:
|
||||
val = self._signal.signal.get()
|
||||
sval = f"{val:.4f}"
|
||||
except Exception:
|
||||
sval = "N/A"
|
||||
|
||||
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.{getattr(self._signal, 'name', '?')}.signal.get()")
|
||||
print("")
|
||||
|
||||
def gain(self, value):
|
||||
if self._gain is None:
|
||||
print("gain device not available")
|
||||
return
|
||||
self._gain.set_gain(value)
|
||||
|
||||
|
||||
class MultiSignalDiag:
|
||||
"""Diagnostics for multiple signals sharing one gain."""
|
||||
|
||||
def __init__(self, name, label, gain_dev, signal_devs: dict):
|
||||
self._name = name
|
||||
self._label = label
|
||||
self._gain = gain_dev
|
||||
self._signals = signal_devs # dict: label -> device
|
||||
|
||||
def show_all(self):
|
||||
print(self._label)
|
||||
print("-" * len(self._label))
|
||||
|
||||
if self._gain is None or any(v is None for v in self._signals.values()):
|
||||
print("device not available in config\n")
|
||||
return
|
||||
|
||||
try:
|
||||
cfg = self._gain.get()
|
||||
except Exception as e:
|
||||
print(f"error accessing gain: {e}\n")
|
||||
return
|
||||
|
||||
print(f"gain : {cfg.gain:.0e}")
|
||||
print(f"coupling : {cfg.coupling}")
|
||||
print(f"speed : {cfg.speed}")
|
||||
print("readback:")
|
||||
|
||||
for key, sig in self._signals.items():
|
||||
try:
|
||||
val = sig.signal.get()
|
||||
sval = f"{val:.4f}"
|
||||
except Exception:
|
||||
sval = "N/A"
|
||||
print(f" {key:<10}: {sval}")
|
||||
|
||||
print("")
|
||||
print("hint:")
|
||||
print(f" gain : csaxs.diagnostics.{self._name}.gain(1e5)")
|
||||
print("")
|
||||
|
||||
def gain(self, value):
|
||||
if self._gain is None:
|
||||
print("gain device not available")
|
||||
return
|
||||
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):
|
||||
print(self._label)
|
||||
print("-" * len(self._label))
|
||||
|
||||
if self._gain is None or self._rb is None:
|
||||
print("device not available in config\n")
|
||||
return
|
||||
|
||||
try:
|
||||
cfg = self._gain.get()
|
||||
rb = self._rb.get()
|
||||
except Exception as e:
|
||||
print(f"error accessing device: {e}\n")
|
||||
return
|
||||
|
||||
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.{getattr(self._rb, 'name', '?')}.pos_x.get()")
|
||||
print("")
|
||||
|
||||
def gain(self, value):
|
||||
if self._gain is None:
|
||||
print("gain device not available")
|
||||
return
|
||||
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=_safe_dev("gain_bpm_xbox1"),
|
||||
rb_dev=_safe_dev("bpm_xbox1_slowrb"),
|
||||
)
|
||||
|
||||
self.bpm_xbox2 = BPMDiag(
|
||||
name="bpm_xbox2",
|
||||
label="BPM XBox2 (ES hutch)",
|
||||
gain_dev=_safe_dev("gain_bpm_xbox2"),
|
||||
rb_dev=_safe_dev("bpm_xbox2_slowrb"),
|
||||
)
|
||||
|
||||
# Single-signal diagnostics
|
||||
self.bim = SingleSignalDiag(
|
||||
name="bim",
|
||||
label="BIM XBox3 (ES)",
|
||||
gain_dev=_safe_dev("gain_bim_xbox3"),
|
||||
signal_dev=_safe_dev("bim_xbox3_slowrb"),
|
||||
)
|
||||
|
||||
self.beamstop = SingleSignalDiag(
|
||||
name="beamstop",
|
||||
label="Beamstop diode (flight tube)",
|
||||
gain_dev=_safe_dev("gain_beamstop_diode"),
|
||||
signal_dev=_safe_dev("beamstop_intensity"),
|
||||
)
|
||||
|
||||
# Multi-signal (fixed your diode issue)
|
||||
self.polarization = MultiSignalDiag(
|
||||
name="polarization",
|
||||
label="Polarization diodes (XBox1)",
|
||||
gain_dev=_safe_dev("gain_diodes_xbox1"),
|
||||
signal_devs={
|
||||
"horizontal": _safe_dev("diode_horizontal_xbox1_slowrb"),
|
||||
"vertical": _safe_dev("diode_vertical_xbox1_slowrb"),
|
||||
},
|
||||
)
|
||||
|
||||
def show_all(self):
|
||||
print("CSAXS diagnostics")
|
||||
print("=================\n")
|
||||
|
||||
self.bpm_xbox1.show_all()
|
||||
self.bpm_xbox2.show_all()
|
||||
self.bim.show_all()
|
||||
self.beamstop.show_all()
|
||||
self.polarization.show_all()
|
||||
@@ -0,0 +1,116 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import builtins
|
||||
from typing import Optional
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Make dev visible if running inside BEC
|
||||
# ------------------------------------------------------------
|
||||
if builtins.__dict__.get("dev") is not None:
|
||||
dev = builtins.__dict__.get("dev")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Slits root (user-facing object)
|
||||
# ============================================================
|
||||
|
||||
class cSAXSSlits:
|
||||
"""
|
||||
User-visible slits namespace.
|
||||
"""
|
||||
|
||||
def __init__(self, client):
|
||||
self.client = client
|
||||
self.device_manager = client.device_manager
|
||||
|
||||
# --------------------------------------------------------
|
||||
# internal helpers
|
||||
# --------------------------------------------------------
|
||||
|
||||
def _sl_get_position(self, device_name: str) -> Optional[float]:
|
||||
"""
|
||||
Safely return the position of a device or None.
|
||||
"""
|
||||
try:
|
||||
device = self.device_manager.devices[device_name]
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
try:
|
||||
if hasattr(device, "readback"):
|
||||
return device.readback.get()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
if hasattr(device, "get"):
|
||||
return device.get()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def _sl_fmt(value: Optional[float]) -> str:
|
||||
if value is None:
|
||||
return " --- "
|
||||
return f"{value:7.4f}"
|
||||
|
||||
# --------------------------------------------------------
|
||||
# public API
|
||||
# --------------------------------------------------------
|
||||
|
||||
def slits_show_all(self):
|
||||
"""
|
||||
Show all slits with center and width.
|
||||
"""
|
||||
|
||||
print("")
|
||||
print("========== cSAXS Slits Overview ==========")
|
||||
print("")
|
||||
|
||||
# Slit 1
|
||||
print("Slit 1 (frontend):")
|
||||
|
||||
ch = self._sl_get_position("sl1xc")
|
||||
wh = self._sl_get_position("sl1xs")
|
||||
cv = self._sl_get_position("sl1yc")
|
||||
wv = self._sl_get_position("sl1ys")
|
||||
|
||||
print(
|
||||
f" center horizontal = {self._sl_fmt(ch)} "
|
||||
f"width horizontal = {self._sl_fmt(wh)}"
|
||||
)
|
||||
print(
|
||||
f" center vertical = {self._sl_fmt(cv)} "
|
||||
f"width vertical = {self._sl_fmt(wv)}"
|
||||
)
|
||||
print("")
|
||||
|
||||
# Slits 3–5
|
||||
slit_map = {
|
||||
3: "exposure box 2 entrance",
|
||||
4: "exposure box 2 exit",
|
||||
5: "exposure box 3",
|
||||
}
|
||||
|
||||
for slit, label in slit_map.items():
|
||||
print(f"Slit {slit} ({label}):")
|
||||
|
||||
ch = self._sl_get_position(f"sl{slit}ch")
|
||||
wh = self._sl_get_position(f"sl{slit}wh")
|
||||
cv = self._sl_get_position(f"sl{slit}cv")
|
||||
wv = self._sl_get_position(f"sl{slit}wv")
|
||||
|
||||
print(
|
||||
f" center horizontal = {self._sl_fmt(ch)} "
|
||||
f"width horizontal = {self._sl_fmt(wh)}"
|
||||
)
|
||||
print(
|
||||
f" center vertical = {self._sl_fmt(cv)} "
|
||||
f"width vertical = {self._sl_fmt(wv)}"
|
||||
)
|
||||
print("")
|
||||
|
||||
print("==========================================")
|
||||
print("")
|
||||
@@ -196,6 +196,68 @@ sl3trxt:
|
||||
# bl_smar_stage to use csaxs reference method. assign number according to axis channel
|
||||
bl_smar_stage: 5
|
||||
|
||||
sl3ch:
|
||||
description: ESbox1 slit 3 center horizontal
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitCenter
|
||||
deviceConfig:
|
||||
left_slit: sl3trxi
|
||||
right_slit: sl3trxo
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl3trxi
|
||||
- sl3trxo
|
||||
|
||||
|
||||
sl3wh:
|
||||
description: ESbox1 slit 3 width horizontal
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitWidth
|
||||
deviceConfig:
|
||||
left_slit: sl3trxi
|
||||
right_slit: sl3trxo
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl3trxi
|
||||
- sl3trxo
|
||||
|
||||
sl3cv:
|
||||
description: ESbox1 slit 3 center vertical
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitCenter
|
||||
deviceConfig:
|
||||
left_slit: sl3trxb
|
||||
right_slit: sl3trxt
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl3trxb
|
||||
- sl3trxt
|
||||
|
||||
|
||||
sl3wv:
|
||||
description: ESbox1 slit 3 width vertical
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitWidth
|
||||
deviceConfig:
|
||||
left_slit: sl3trxb
|
||||
right_slit: sl3trxt
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl3trxb
|
||||
- sl3trxt
|
||||
|
||||
fast_shutter_n1_x:
|
||||
description: ESbox1 New fast shutter 1 x movment
|
||||
deviceClass: csaxs_bec.devices.smaract.smaract_ophyd.SmaractMotor
|
||||
@@ -450,7 +512,71 @@ sl4trxt:
|
||||
# bl_smar_stage to use csaxs reference method. assign number according to axis channel
|
||||
bl_smar_stage: 0
|
||||
|
||||
################## XBOX 2 ES #####################
|
||||
sl4ch:
|
||||
description: ESbox1 slit 4 center horizontal
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitCenter
|
||||
deviceConfig:
|
||||
left_slit: sl4trxi
|
||||
right_slit: sl4trxo
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl4trxi
|
||||
- sl4trxo
|
||||
|
||||
|
||||
sl4wh:
|
||||
description: ESbox1 slit 4 width horizontal
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitWidth
|
||||
deviceConfig:
|
||||
left_slit: sl4trxi
|
||||
right_slit: sl4trxo
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl4trxi
|
||||
- sl4trxo
|
||||
|
||||
|
||||
sl4cv:
|
||||
description: ESbox1 slit 4 center vertical
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitCenter
|
||||
deviceConfig:
|
||||
left_slit: sl4trxb
|
||||
right_slit: sl4trxt
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl4trxb
|
||||
- sl4trxt
|
||||
|
||||
|
||||
sl4wv:
|
||||
description: ESbox1 slit 4 width vertical
|
||||
deviceClass: ophyd_devices.devices.virtual_slit.VirtualSlitWidth
|
||||
deviceConfig:
|
||||
left_slit: sl4trxb
|
||||
right_slit: sl4trxt
|
||||
offset: 0
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
needs:
|
||||
- sl4trxb
|
||||
- sl4trxt
|
||||
|
||||
|
||||
############## XBOX 3 (XBOX 2 ES) #####################
|
||||
|
||||
sl5trxi:
|
||||
description: ESbox2 slit 5 inner blade movement
|
||||
@@ -888,120 +1014,120 @@ dettrx:
|
||||
|
||||
|
||||
|
||||
####################
|
||||
### BPM XBox2 (first Xbox in ES) and Xbox3 BIM
|
||||
### This requires galilrioesxbox device. On top of that the gain control devices and slow readback devices are built.
|
||||
####################
|
||||
# ####################
|
||||
# ### BPM XBox2 (first Xbox in ES) and Xbox3 BIM
|
||||
# ### This requires galilrioesxbox device. On top of that the gain control devices and slow readback devices are built.
|
||||
# ####################
|
||||
|
||||
galilrioesxbox:
|
||||
description: Galil RIO for remote gain switching and slow reading XBox ES
|
||||
deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
deviceConfig:
|
||||
host: galilrioesxbox.psi.ch
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
connectionTimeout: 20
|
||||
# galilrioesxbox:
|
||||
# description: Galil RIO for remote gain switching and slow reading XBox ES
|
||||
# deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
# deviceConfig:
|
||||
# host: galilrioesxbox.psi.ch
|
||||
# enabled: true
|
||||
# onFailure: retry
|
||||
# readOnly: false
|
||||
# readoutPriority: baseline
|
||||
# connectionTimeout: 20
|
||||
|
||||
gain_bpm_xbox2:
|
||||
description: Gain control for BPM XBox2
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
deviceConfig:
|
||||
gain_lsb: galilrioesxbox.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
gain_mid: galilrioesxbox.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
gain_msb: galilrioesxbox.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
coupling: galilrioesxbox.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
speed_mode: galilrioesxbox.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesxbox
|
||||
# gain_bpm_xbox2:
|
||||
# description: Gain control for BPM XBox2
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
# deviceConfig:
|
||||
# gain_lsb: galilrioesxbox.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
# gain_mid: galilrioesxbox.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
# gain_msb: galilrioesxbox.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
# coupling: galilrioesxbox.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
# speed_mode: galilrioesxbox.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesxbox
|
||||
|
||||
bpm_xbox2_slowrb:
|
||||
description: BPM Xbox 2 (First Xbox in ES hutch) readback
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm.BPM
|
||||
deviceConfig:
|
||||
left_top: galilrioesxbox.analog_in.ch0
|
||||
right_top: galilrioesxbox.analog_in.ch1
|
||||
right_bot: galilrioesxbox.analog_in.ch2
|
||||
left_bot: galilrioesxbox.analog_in.ch3
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesxbox
|
||||
# bpm_xbox2_slowrb:
|
||||
# description: BPM Xbox 2 (First Xbox in ES hutch) readback
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm.BPM
|
||||
# deviceConfig:
|
||||
# left_top: galilrioesxbox.analog_in.ch0
|
||||
# right_top: galilrioesxbox.analog_in.ch1
|
||||
# right_bot: galilrioesxbox.analog_in.ch2
|
||||
# left_bot: galilrioesxbox.analog_in.ch3
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesxbox
|
||||
|
||||
gain_bim_xbox3:
|
||||
description: Gain control for beam intensity monitor ES Xbox3
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
deviceConfig:
|
||||
gain_lsb: galilrioesxbox.digital_out.ch6 # Pin 10 -> Galil ch0
|
||||
gain_mid: galilrioesxbox.digital_out.ch7 # Pin 11 -> Galil ch1
|
||||
gain_msb: galilrioesxbox.digital_out.ch8 # Pin 12 -> Galil ch2
|
||||
coupling: galilrioesxbox.digital_out.ch9 # Pin 13 -> Galil ch3
|
||||
speed_mode: galilrioesxbox.digital_out.ch10 # Pin 14 -> Galil ch4
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesxbox
|
||||
# gain_bim_xbox3:
|
||||
# description: Gain control for beam intensity monitor ES Xbox3
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
# deviceConfig:
|
||||
# gain_lsb: galilrioesxbox.digital_out.ch6 # Pin 10 -> Galil ch0
|
||||
# gain_mid: galilrioesxbox.digital_out.ch7 # Pin 11 -> Galil ch1
|
||||
# gain_msb: galilrioesxbox.digital_out.ch8 # Pin 12 -> Galil ch2
|
||||
# coupling: galilrioesxbox.digital_out.ch9 # Pin 13 -> Galil ch3
|
||||
# speed_mode: galilrioesxbox.digital_out.ch10 # Pin 14 -> Galil ch4
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesxbox
|
||||
|
||||
bim_xbox3_slowrb:
|
||||
description: Beam intensity slow readback ES XBox3
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
deviceConfig:
|
||||
signal: galilrioesxbox.analog_in.ch6
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesxbox
|
||||
# bim_xbox3_slowrb:
|
||||
# description: Beam intensity slow readback ES XBox3
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
# deviceConfig:
|
||||
# signal: galilrioesxbox.analog_in.ch6
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesxbox
|
||||
|
||||
|
||||
|
||||
####################
|
||||
### Beamstop diode control for flight tube
|
||||
### This requires galilrioft device. On top of that the gain control device is built as well as a slow voltage readback.
|
||||
####################
|
||||
# ####################
|
||||
# ### Beamstop diode control for flight tube
|
||||
# ### This requires galilrioft device. On top of that the gain control device is built as well as a slow voltage readback.
|
||||
# ####################
|
||||
|
||||
galilrioesft:
|
||||
description: Galil RIO for remote gain switching and slow reading FlightTube
|
||||
deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
deviceConfig:
|
||||
host: galilrioesft.psi.ch
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
connectionTimeout: 20
|
||||
# galilrioesft:
|
||||
# description: Galil RIO for remote gain switching and slow reading FlightTube
|
||||
# deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
# deviceConfig:
|
||||
# host: galilrioesft.psi.ch
|
||||
# enabled: true
|
||||
# onFailure: retry
|
||||
# readOnly: false
|
||||
# readoutPriority: baseline
|
||||
# connectionTimeout: 20
|
||||
|
||||
gain_beamstop_diode:
|
||||
description: Gain control for beamstop flightube
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
deviceConfig:
|
||||
gain_lsb: galilrioesft.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
gain_mid: galilrioesft.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
gain_msb: galilrioesft.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
coupling: galilrioesft.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
speed_mode: galilrioesft.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesft
|
||||
# gain_beamstop_diode:
|
||||
# description: Gain control for beamstop flightube
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
# deviceConfig:
|
||||
# gain_lsb: galilrioesft.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
# gain_mid: galilrioesft.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
# gain_msb: galilrioesft.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
# coupling: galilrioesft.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
# speed_mode: galilrioesft.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesft
|
||||
|
||||
beamstop_intensity:
|
||||
description: Beamstop intensity from Galil analog input ch6
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
deviceConfig:
|
||||
signal: galilrioesft.analog_in.ch0
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioesft
|
||||
# beamstop_intensity:
|
||||
# description: Beamstop intensity from Galil analog input ch6
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
# deviceConfig:
|
||||
# signal: galilrioesft.analog_in.ch0
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioesft
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -197,89 +197,89 @@ ccm_energy:
|
||||
|
||||
|
||||
|
||||
####################
|
||||
### BPM and polarization diag XBox1 (optics hutch)
|
||||
### This requires galilrioop device. On top of that the gain control devices and slow readback devices are built.
|
||||
### dev.galilrioop.read() shows the analog inputs
|
||||
### another example ...analog_in.ch0.get()
|
||||
### dev.galilrioop.read_configuration() shows the digital channels
|
||||
### example for direct access dev.galilrioesxbox.digital_out.ch1.put(0)
|
||||
####################
|
||||
# ####################
|
||||
# ### BPM and polarization diag XBox1 (optics hutch)
|
||||
# ### This requires galilrioop device. On top of that the gain control devices and slow readback devices are built.
|
||||
# ### dev.galilrioop.read() shows the analog inputs
|
||||
# ### another example ...analog_in.ch0.get()
|
||||
# ### dev.galilrioop.read_configuration() shows the digital channels
|
||||
# ### example for direct access dev.galilrioesxbox.digital_out.ch1.put(0)
|
||||
# ####################
|
||||
|
||||
galilrioop:
|
||||
description: Galil RIO for remote gain switching and slow reading XBox OP
|
||||
deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
deviceConfig:
|
||||
host: galilrioop.psi.ch
|
||||
enabled: true
|
||||
onFailure: retry
|
||||
readOnly: false
|
||||
readoutPriority: baseline
|
||||
connectionTimeout: 20
|
||||
# galilrioop:
|
||||
# description: Galil RIO for remote gain switching and slow reading XBox OP
|
||||
# deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO
|
||||
# deviceConfig:
|
||||
# host: galilrioop.psi.ch
|
||||
# enabled: true
|
||||
# onFailure: retry
|
||||
# readOnly: false
|
||||
# readoutPriority: baseline
|
||||
# connectionTimeout: 20
|
||||
|
||||
gain_bpm_xbox1:
|
||||
description: Gain control for BPM XBox1 (OP hutch)
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
deviceConfig:
|
||||
gain_lsb: galilrioop.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
gain_mid: galilrioop.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
gain_msb: galilrioop.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
coupling: galilrioop.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
speed_mode: galilrioop.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioop
|
||||
# gain_bpm_xbox1:
|
||||
# description: Gain control for BPM XBox1 (OP hutch)
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
# deviceConfig:
|
||||
# gain_lsb: galilrioop.digital_out.ch0 # Pin 10 -> Galil ch0
|
||||
# gain_mid: galilrioop.digital_out.ch1 # Pin 11 -> Galil ch1
|
||||
# gain_msb: galilrioop.digital_out.ch2 # Pin 12 -> Galil ch2
|
||||
# coupling: galilrioop.digital_out.ch3 # Pin 13 -> Galil ch3
|
||||
# speed_mode: galilrioop.digital_out.ch4 # Pin 14 -> Galil ch4
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioop
|
||||
|
||||
bpm_xbox1_slowrb:
|
||||
description: BPM Xbox 1 (OP hutch) readback
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm.BPM
|
||||
deviceConfig:
|
||||
left_top: galilrioop.analog_in.ch0
|
||||
right_top: galilrioop.analog_in.ch1
|
||||
right_bot: galilrioop.analog_in.ch2
|
||||
left_bot: galilrioop.analog_in.ch3
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioop
|
||||
# bpm_xbox1_slowrb:
|
||||
# description: BPM Xbox 1 (OP hutch) readback
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm.BPM
|
||||
# deviceConfig:
|
||||
# left_top: galilrioop.analog_in.ch0
|
||||
# right_top: galilrioop.analog_in.ch1
|
||||
# right_bot: galilrioop.analog_in.ch2
|
||||
# left_bot: galilrioop.analog_in.ch3
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioop
|
||||
|
||||
gain_diodes_xbox1:
|
||||
description: Gain control for diodes (horizontal and vertical) XBox1
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
deviceConfig:
|
||||
gain_lsb: galilrioop.digital_out.ch6 # Pin 10 -> Galil ch0
|
||||
gain_mid: galilrioop.digital_out.ch7 # Pin 11 -> Galil ch1
|
||||
gain_msb: galilrioop.digital_out.ch8 # Pin 12 -> Galil ch2
|
||||
coupling: galilrioop.digital_out.ch9 # Pin 13 -> Galil ch3
|
||||
speed_mode: galilrioop.digital_out.ch10 # Pin 14 -> Galil ch4
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioop
|
||||
# gain_diodes_xbox1:
|
||||
# description: Gain control for diodes (horizontal and vertical) XBox1
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.bpm_control.BPMControl
|
||||
# deviceConfig:
|
||||
# gain_lsb: galilrioop.digital_out.ch6 # Pin 10 -> Galil ch0
|
||||
# gain_mid: galilrioop.digital_out.ch7 # Pin 11 -> Galil ch1
|
||||
# gain_msb: galilrioop.digital_out.ch8 # Pin 12 -> Galil ch2
|
||||
# coupling: galilrioop.digital_out.ch9 # Pin 13 -> Galil ch3
|
||||
# speed_mode: galilrioop.digital_out.ch10 # Pin 14 -> Galil ch4
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioop
|
||||
|
||||
diode_horizontal_xbox1_slowrb:
|
||||
description: Slow readback diode horizontal XBox OP (polarization diagnostics)
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
deviceConfig:
|
||||
signal: galilrioop.analog_in.ch6
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioop
|
||||
# diode_horizontal_xbox1_slowrb:
|
||||
# description: Slow readback diode horizontal XBox OP (polarization diagnostics)
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
# deviceConfig:
|
||||
# signal: galilrioop.analog_in.ch6
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioop
|
||||
|
||||
diode_vertical_xbox1_slowrb:
|
||||
description: Slow readback diode vertical XBox OP (polarization diagnostics)
|
||||
deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
deviceConfig:
|
||||
signal: galilrioop.analog_in.ch7
|
||||
enabled: true
|
||||
readoutPriority: baseline
|
||||
onFailure: retry
|
||||
needs:
|
||||
- galilrioop
|
||||
# diode_vertical_xbox1_slowrb:
|
||||
# description: Slow readback diode vertical XBox OP (polarization diagnostics)
|
||||
# deviceClass: csaxs_bec.devices.pseudo_devices.signal_forwarder.SignalForwarder
|
||||
# deviceConfig:
|
||||
# signal: galilrioop.analog_in.ch7
|
||||
# enabled: true
|
||||
# readoutPriority: baseline
|
||||
# onFailure: retry
|
||||
# needs:
|
||||
# - galilrioop
|
||||
|
||||
|
||||
Reference in New Issue
Block a user