From 818ebd95fdf2bc98d1dce61a6e605d79216dae48 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 21:13:26 -0500 Subject: [PATCH 01/16] initial commit --- .github/workflows/test-cheetah.yml | 1 + virtual_accelerator/cheetah/actions.py | 354 ++++++++++++++++++ virtual_accelerator/cheetah/transformer.py | 108 ------ virtual_accelerator/cheetah/variables.py | 169 ++++++++- .../tests/test_cheetah_actions.py | 167 +++++++++ .../tests/test_optional_dependencies.py | 2 +- 6 files changed, 674 insertions(+), 127 deletions(-) create mode 100644 virtual_accelerator/cheetah/actions.py delete mode 100644 virtual_accelerator/cheetah/transformer.py create mode 100644 virtual_accelerator/tests/test_cheetah_actions.py diff --git a/.github/workflows/test-cheetah.yml b/.github/workflows/test-cheetah.yml index 304d169..076fd64 100644 --- a/.github/workflows/test-cheetah.yml +++ b/.github/workflows/test-cheetah.yml @@ -54,4 +54,5 @@ jobs: FACET2_LATTICE: ${{ github.workspace }}/facet2-lattice run: > pytest virtual_accelerator/tests/test_optional_dependencies.py + virtual_accelerator/tests/test_cheetah_actions.py -v --tb=short -ra --strict-markers diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py new file mode 100644 index 0000000..286b021 --- /dev/null +++ b/virtual_accelerator/cheetah/actions.py @@ -0,0 +1,354 @@ +"""Action-variable implementations for Cheetah-backed virtual accelerator PVs. + +This module provides a Cheetah equivalent to the BMAD action layer. Each +variable class encapsulates get/set behavior against a Cheetah simulator while +preserving existing SLAC PV semantics implemented in the Cheetah utility +attribute access mappings. +""" + +from typing import Any + +from lume.actions import ReadOnlyActionMixin, WritableActionMixin +from lume.variables import EnumVariable, NDVariable, ScalarVariable + +from virtual_accelerator.cheetah.utils import access_cheetah_attribute + + +def _normalize_element_name(name: str) -> str: + """Return a normalized element name used for split-element matching. + + Cheetah split elements may include a ``#`` suffix (for example + ``Q1#1``). This helper strips the suffix and normalizes case for lookup. + """ + return name.split("#")[0].upper() + + +def _resolve_segment_element(segment, element_name: str): + """Resolve a Cheetah segment element reference from a logical element name. + + Resolution behavior: + 1. Prefer exact case-insensitive name match. + 2. Fallback to normalized split-element match. + 3. Return a list when multiple split elements represent one logical device. + """ + target = element_name.upper() + exact_matches = [element for element in segment.elements if element.name.upper() == target] + if exact_matches: + return exact_matches[0] + + normalized_target = _normalize_element_name(element_name) + normalized_matches = [ + element + for element in segment.elements + if _normalize_element_name(element.name) == normalized_target + ] + + if not normalized_matches: + raise ValueError(f"Element {element_name!r} not found in Cheetah segment") + + if len(normalized_matches) == 1: + return normalized_matches[0] + + return normalized_matches + + +def _resolve_energy(simulator, element: Any): + """Resolve beam energy for a single element or composite split-element list. + + The simulator stores energies keyed by element name. For split elements, + this helper attempts exact key matches first, then normalized-name fallback. + """ + if isinstance(element, list): + candidate_names = [subelement.name for subelement in element] + else: + candidate_names = [element.name] + + for name in candidate_names: + if name in simulator.energies: + return simulator.energies[name] + + normalized_target = _normalize_element_name(candidate_names[0]) + for name, energy in simulator.energies.items(): + if _normalize_element_name(name) == normalized_target: + return energy + + raise ValueError( + f"No beam energy found for element {candidate_names[0]!r} in simulator energies" + ) + + +class _CheetahAttributeAccessMixin: + """Shared accessor logic for action variables using PV attribute mappings. + + Subclasses provide ``element_name`` and ``pv_attribute`` fields. The mixin + resolves both the target element object and corresponding beam energy, then + delegates conversion logic to ``access_cheetah_attribute``. + """ + + element_name: str + pv_attribute: str + + def _resolve_element_and_energy(self, simulator): + """Resolve the element object (or split list) and matching beam energy.""" + element = _resolve_segment_element(simulator.segment, self.element_name) + energy = _resolve_energy(simulator, element) + return element, energy + + def _get(self, simulator): + """Read a PV value from simulator state through the Cheetah mapping layer.""" + element, energy = self._resolve_element_and_energy(simulator) + return access_cheetah_attribute(element, self.pv_attribute, energy) + + def _set(self, simulator, value): + """Write a PV value to simulator state through the Cheetah mapping layer.""" + element, energy = self._resolve_element_and_energy(simulator) + access_cheetah_attribute(element, self.pv_attribute, energy, set_value=value) + + +class CheetahScalarVariable(_CheetahAttributeAccessMixin, ScalarVariable): + """Base scalar action variable for Cheetah-backed PVs.""" + + element_name: str + pv_attribute: str + + +class CheetahNDVariable(_CheetahAttributeAccessMixin, NDVariable): + """Base array-valued action variable for Cheetah-backed PVs.""" + + element_name: str + pv_attribute: str + + +class CheetahEnumVariable(_CheetahAttributeAccessMixin, EnumVariable): + """Base enum action variable for Cheetah-backed PVs.""" + + element_name: str + pv_attribute: str + + +class _ReadOnlyFromAccessMixin(ReadOnlyActionMixin): + """Read-only action behavior for variables backed by attribute mappings.""" + + read_only: bool = True + + def _get(self, simulator): + """Read value using the next class in method resolution order.""" + return super(ReadOnlyActionMixin, self)._get(simulator) + + def _set(self, simulator, value) -> None: + """Reject writes consistently for read-only PVs.""" + raise RuntimeError(f"{self.name} is read-only") + + +class CheetahWritableScalarVariable(CheetahScalarVariable, WritableActionMixin): + """Writable scalar action variable base.""" + + read_only: bool = False + + +class CheetahReadOnlyScalarVariable(_ReadOnlyFromAccessMixin, CheetahScalarVariable): + """Read-only scalar action variable base.""" + + pass + + +class CheetahWritableNDVariable(CheetahNDVariable, WritableActionMixin): + """Writable array action variable base.""" + + read_only: bool = False + + +class CheetahReadOnlyNDVariable(_ReadOnlyFromAccessMixin, CheetahNDVariable): + """Read-only array action variable base.""" + + pass + + +class CheetahWritableEnumVariable(CheetahEnumVariable, WritableActionMixin): + """Writable enum action variable base.""" + + read_only: bool = False + + +class CheetahReadOnlyEnumVariable(_ReadOnlyFromAccessMixin, CheetahEnumVariable): + """Read-only enum action variable base.""" + + pass + + +class QuadrupoleBCTRLVariable(CheetahWritableScalarVariable): + """Quadrupole control/desired magnetic strength (BCTRL/BDES) in kG.""" + + unit: str = "kG" + + +class QuadrupoleBACTVariable(CheetahReadOnlyScalarVariable): + """Quadrupole readback magnetic strength (BACT) in kG.""" + + unit: str = "kG" + + +class SolenoidBCTRLVariable(CheetahWritableScalarVariable): + """Solenoid control/desired field variable in kG-equivalent units.""" + + unit: str = "kG" + + +class SolenoidBACTVariable(CheetahReadOnlyScalarVariable): + """Solenoid readback field variable in kG-equivalent units.""" + + unit: str = "kG" + + +class SBendBCTRLVariable(CheetahWritableScalarVariable): + """SBend control/desired momentum-field representation in GeV/c.""" + + unit: str = "GeV/c" + + +class SBendBACTVariable(CheetahReadOnlyScalarVariable): + """SBend readback momentum-field representation in GeV/c.""" + + unit: str = "GeV/c" + + +class KickerBCTRLVariable(CheetahWritableScalarVariable): + """Horizontal/vertical corrector control variable (BCTRL/BDES) in kG.""" + + unit: str = "kG" + + +class KickerBACTVariable(CheetahReadOnlyScalarVariable): + """Horizontal/vertical corrector readback variable (BACT) in kG.""" + + unit: str = "kG" + + +class StatusVariable(CheetahReadOnlyScalarVariable): + """Generic read-only device status scalar variable.""" + + pass + + +class BminVariable(CheetahReadOnlyScalarVariable): + """Read-only lower operating limit variable for magnet-like devices.""" + + pass + + +class BmaxVariable(CheetahReadOnlyScalarVariable): + """Read-only upper operating limit variable for magnet-like devices.""" + + pass + + +class ControlStateVariable(CheetahReadOnlyEnumVariable): + """Read-only high-level control state enum for magnet-like devices.""" + + options: list[str] = ["Ready", "TRIM", "PERTURB", "BCON_TO_BDES", "BACT_TO_BDES"] + default_value: str = "Ready" + + +class BPMXVariable(CheetahReadOnlyScalarVariable): + """Read-only BPM X readout in millimeters.""" + + unit: str = "mm" + + +class BPMYVariable(CheetahReadOnlyScalarVariable): + """Read-only BPM Y readout in millimeters.""" + + unit: str = "mm" + + +class BPMTMITDummyVariable(CheetahReadOnlyScalarVariable): + """Read-only placeholder BPM intensity variable used for interface parity.""" + + unit: str = "arbitrary units" + + +class KlystronENLDVariable(CheetahWritableScalarVariable): + """Writable klystron amplitude-like variable in MeV.""" + + unit: str = "MeV" + + +class KlystronPDESVariable(CheetahWritableScalarVariable): + """Writable klystron phase setpoint in degrees.""" + + unit: str = "degrees" + + +class KlystronPACTVariable(CheetahReadOnlyScalarVariable): + """Read-only klystron phase readback in degrees.""" + + unit: str = "degrees" + + +class KlystronStatVariable(CheetahReadOnlyEnumVariable): + """Read-only klystron binary status enum.""" + + options: list[str] = ["0", "1"] + default_value: str = "0" + + +class CavityAREQVariable(CheetahWritableScalarVariable): + """Writable cavity amplitude request variable in MV.""" + + unit: str = "MV" + + +class CavityAREQReadbackVariable(CheetahReadOnlyScalarVariable): + """Read-only cavity amplitude readback variable in MV.""" + + unit: str = "MV" + + +class CavityPREQVariable(CheetahWritableScalarVariable): + """Writable cavity phase request variable in degrees.""" + + unit: str = "degrees" + + +class CavityPREQReadbackVariable(CheetahReadOnlyScalarVariable): + """Read-only cavity phase readback variable in degrees.""" + + unit: str = "degrees" + + +class CavityMODECFGVariable(CheetahReadOnlyEnumVariable): + """Read-only cavity mode configuration enum.""" + + options: list[str] = ["Disable", "ACCEL", "STDBY", "ACCEL_STDBY"] + default_value: str = "ACCEL_STDBY" + + +class DummyEnumVariable(CheetahReadOnlyEnumVariable): + """Read-only placeholder enum variable used for unsupported controls.""" + + options: list[str] = ["0", "1"] + default_value: str = "0" + + +class ScreenImageVariable(CheetahReadOnlyNDVariable): + """Read-only screen image array variable.""" + + pass + + +class ScreenImageArraySizeVariable(CheetahReadOnlyScalarVariable): + """Read-only scalar for screen image dimension metadata values.""" + + pass + + +class ScreenResolutionVariable(CheetahReadOnlyScalarVariable): + """Read-only scalar for screen pixel resolution in micrometers.""" + + unit: str = "um" + + +class ScreenPneumaticVariable(CheetahWritableScalarVariable): + """Writable scalar representing screen insertion/activation control.""" + + pass diff --git a/virtual_accelerator/cheetah/transformer.py b/virtual_accelerator/cheetah/transformer.py deleted file mode 100644 index 5a81064..0000000 --- a/virtual_accelerator/cheetah/transformer.py +++ /dev/null @@ -1,108 +0,0 @@ -import torch - -from virtual_accelerator.cheetah.utils import access_cheetah_attribute -from lume_cheetah.transformer import CheetahTransformer - - -class SLACCheetahTransformer(CheetahTransformer): - """ - CheetahTransformer subclass for SLAC accelerator simulations. - - This class can be extended to include any necessary unit conversions or - special handling for SLAC-specific control variables and their mapping - to cheetah properties. - - Attributes - ---------- - control_name_to_cheetah : dict[str, str] - A dictionary mapping control variable names to cheetah elements - (e.g. {"QUAD:IN20:511 : "qe03"}) - #same something about how bctrl maps to k1, in utils.py - """ - - def __init__(self, control_name_to_cheetah: dict[str, str]): - """ - Initialize the transformer with a mapping from control variable names to - cheetah element names. - - Parameters - ---------- - control_name_to_cheetah : dict[str, str] - A dictionary mapping control variable names to cheetah elements - (e.g. {"QUAD:IN20:511" : "qe03"}) (cheetah names are converted to - lower case internally). - """ - self._control_name_to_cheetah = control_name_to_cheetah - - # convert mapping to lower case for cheetah element names - self._control_name_to_cheetah = { - k: v.lower() for k, v in self._control_name_to_cheetah.items() - } - - @property - def control_name_to_cheetah(self): - return self._control_name_to_cheetah - - def get_cheetah_property(self, simulator, control_variable_name): - """ - Get a property of a Cheetah element based on the control - variable name and return its value in EPICS units. - - Parameters - ---------- - simulator : CheetahSimulator - The simulator instance containing the segment and elements. - control_variable_name : str - The name of the control variable (e.g. "QUAD:IN20:511:BCTRL") - energy : float - The beam energy in eV, used for unit conversions if necessary. - """ - # get the last part after the last colon, which is the attribute name - control_name, attribute = ( - ":".join(control_variable_name.split(":", 3)[:3]), - control_variable_name.split(":", 3)[3], - ) - element_name = self.control_name_to_cheetah.get( - control_name - ) # mapping { "QUAD:IN20:511:BCTRL" : "QE03"} - if element_name is None: - raise ValueError( - f"No mapping found for control variable '{control_variable_name}'" - ) - - element = getattr(simulator.segment, element_name) - beam_energy_at_element = simulator.energies[element_name] - # due to getting beam energy this calc is very slow, maybe some list format should - # be passable for args. - if "STATCTRLSUB.T" in attribute: - return torch.tensor(1.0) - - return access_cheetah_attribute(element, attribute, beam_energy_at_element) - - def set_cheetah_property(self, simulator, control_variable_name, value): - """ - Set a property of a Cheetah element based on the control variable - name and value in EPICS units. - - Parameters - ---------- - simulator : CheetahSimulator - The simulator instance containing the segment and elements. - control_variable_name : str - The name of the control variable (e.g. "QUAD:IN20:511:BCTRL") - value : Any - The value to set for the corresponding cheetah property, in EPICS units. - """ - - control_name, attribute = control_variable_name.rsplit(":", 1) - element_name = self.control_name_to_cheetah.get(control_name) - if element_name is None: - raise ValueError( - f"No mapping found for control variable '{control_variable_name}'" - ) - - element = getattr(simulator.segment, element_name) - beam_energy_at_element = simulator.energies[element_name] - access_cheetah_attribute( - element, attribute, beam_energy_at_element, set_value=value - ) diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 0201224..4ec3ea9 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -1,13 +1,131 @@ +"""Variable factory utilities for action-based Cheetah model integration. + +This module builds action variables from a Cheetah lattice segment and SLAC PV +configuration mappings. It replaces the transformer-oriented path by resolving +per-element variable classes from ``virtual_accelerator.cheetah.actions``. +""" + from typing import Any import warnings from lume.variables import Variable +from virtual_accelerator.cheetah import actions as cheetah_actions from virtual_accelerator.utils.variables import ( - get_variables_from_element_name, get_element_attr_mapping, - convert_to_torch_variables, ) +SKIPPED_ELEMENT_TYPES = {"Drift", "Marker", "Cavity"} + +# Element-type aliases bridge Cheetah runtime names to SLAC config keys. +ELEMENT_TYPE_ALIASES = { + "TransverseDeflectingCavity": "Crab_Cavity", +} + +# Screen variables require an explicit mapping because the YAML configuration +# currently uses BMAD screen class names that do not apply to this action layer. +SCREEN_VARIABLE_CLASS_MAPPING = { + "Image:ArrayData": "ScreenImageVariable", + "PNEUMATIC": "ScreenPneumaticVariable", + "Image:ArraySize1_RBV": "ScreenImageArraySizeVariable", + "Image:ArraySize0_RBV": "ScreenImageArraySizeVariable", + "RESOLUTION": "ScreenResolutionVariable", + "IMAGE": "ScreenImageVariable", + "N_OF_ROW": "ScreenImageArraySizeVariable", + "N_OF_COL": "ScreenImageArraySizeVariable", +} + + +def _resolve_variable_class_name(var_spec: Any) -> str: + """Extract the variable class name from config entries. + + The SLAC mapping can provide either a string class name or a dictionary + containing ``variable_class`` metadata. + """ + if isinstance(var_spec, dict): + return var_spec["variable_class"] + return var_spec + + +def _resolve_element_variable_mapping( + element_type: str, + element_attr_mapping: dict[str, dict[str, Any]], +) -> dict[str, Any] | None: + """Resolve PV attribute-to-class mapping for a Cheetah element type. + + Screen mappings are handled separately to force action-layer classes. + All other element types are resolved through alias normalization and YAML + lookup. + """ + if element_type == "Screen": + return SCREEN_VARIABLE_CLASS_MAPPING + + mapping_key = ELEMENT_TYPE_ALIASES.get(element_type, element_type) + return element_attr_mapping.get(mapping_key) + + +def _resolve_control_name(element_name: str, device_mapping: dict[str, str]) -> str | None: + """Resolve control-system base PV from an element name. + + Supports direct element-name matches and split-element fallback by removing + ``#`` suffixes. + """ + normalized_name = element_name.upper() + if normalized_name in device_mapping: + return device_mapping[normalized_name] + + split_name = normalized_name.split("#", 1)[0] + return device_mapping.get(split_name) + + +def _instantiate_element_variables( + element_name: str, + control_name: str, + class_mapping: dict[str, Any], + image_shape: tuple[int, ...] | None = None, +) -> dict[str, Variable]: + """Instantiate mapped action variables for a single logical element. + + Parameters + ---------- + element_name : str + Logical element identifier used by action variables. + control_name : str + Base PV prefix used to build full variable names. + class_mapping : dict[str, Any] + Mapping of PV suffix to variable class descriptor. + image_shape : tuple[int, ...] | None, optional + Explicit NDVariable shape for screen image variables. + + Returns + ------- + dict[str, Variable] + Mapping of full PV names to instantiated action variables. + """ + element_variables: dict[str, Variable] = {} + + for attr, var_spec in class_mapping.items(): + var_class_name = _resolve_variable_class_name(var_spec) + var_class = getattr(cheetah_actions, var_class_name, None) + if var_class is None: + raise ValueError( + f"Unknown Cheetah variable class {var_class_name!r} for {element_name}.{attr}" + ) + + variable_name = f"{control_name}:{attr}" + init_kwargs = { + "name": variable_name, + "element_name": element_name, + "pv_attribute": attr, + } + + if issubclass(var_class, cheetah_actions.CheetahNDVariable): + init_kwargs["shape"] = image_shape or (1,) + + element_variables[variable_name] = var_class(**init_kwargs) + + return element_variables + + def get_variables_from_segment( segment, device_mapping: dict[str, str], @@ -43,33 +161,48 @@ def get_variables_from_segment( An example `device_mapping` might look like: device_mapping = {"QE03": "QUAD:IN20:511", "KLYS01": "KLYS:IN20:1001"} - See `get_variables_from_element_name` for details on the specification of `element_attr_mapping`. + Variable classes are resolved from `virtual_accelerator.cheetah.actions` + using the configured mapping for each element type. """ - from cheetah.accelerator import Screen - all_variables = {} + processed_control_names: set[str] = set() element_attr_mapping = element_attr_mapping or get_element_attr_mapping() for element in segment.elements: - if type(element).__name__ in ["Drift", "Marker", "Cavity"]: + element_type = type(element).__name__ + if element_type in SKIPPED_ELEMENT_TYPES: continue - elif element.name.upper() in device_mapping: - control_name = device_mapping[element.name.upper()] - else: + + control_name = _resolve_control_name(element.name, device_mapping) + if control_name is None: warnings.warn(f"Element {element.name} not found in device mapping") continue - element_variables = get_variables_from_element_name( - type(element).__name__, control_name, element_attr_mapping - ) + if control_name in processed_control_names: + # Skip duplicate split-elements that map to one control device. + continue + processed_control_names.add(control_name) + + class_mapping = _resolve_element_variable_mapping(element_type, element_attr_mapping) + if class_mapping is None: + warnings.warn( + f"Element type {element_type} for {element.name} not found in variable mapping" + ) + continue - # if element type is a screen then modify the output variable - if isinstance(element, Screen): - element_variables[ - f"{control_name}:Image:ArrayData" - ].shape = element.resolution + base_element_name = element.name.split("#", 1)[0] + image_shape = None + if element_type == "Screen": + image_shape = tuple(element.resolution) + + element_variables = _instantiate_element_variables( + element_name=base_element_name, + control_name=control_name, + class_mapping=class_mapping, + image_shape=image_shape, + ) all_variables.update(element_variables) - return convert_to_torch_variables(all_variables) + return all_variables diff --git a/virtual_accelerator/tests/test_cheetah_actions.py b/virtual_accelerator/tests/test_cheetah_actions.py new file mode 100644 index 0000000..dbbd575 --- /dev/null +++ b/virtual_accelerator/tests/test_cheetah_actions.py @@ -0,0 +1,167 @@ +import math + +import pytest + +from virtual_accelerator.tests.dependency_profiles import HAS_CHEETAH_DEPS + +pytestmark = [ + pytest.mark.requires_cheetah, +] + +if HAS_CHEETAH_DEPS: + import torch + from cheetah.accelerator import Drift, Quadrupole, Segment + from cheetah.particles import ParticleBeam + from lume_cheetah.simulator import CheetahSimulator + + from virtual_accelerator.cheetah.actions import ( + QuadrupoleBACTVariable, + QuadrupoleBCTRLVariable, + ) + from virtual_accelerator.cheetah.variables import get_variables_from_segment +else: + pytest.skip("requires cheetah optional dependencies", allow_module_level=True) + + +class TestCheetahActions: + @pytest.fixture + def simulator(self): + segment = Segment( + [ + Quadrupole( + name="Q1", + length=torch.tensor(0.5), + k1=torch.tensor(1.0), + ), + Drift(name="D1", length=torch.tensor(1.0)), + ] + ) + beam = ParticleBeam.from_twiss( + beta_x=torch.tensor(1.0), + beta_y=torch.tensor(1.0), + num_particles=256, + energy=torch.tensor(1e6), + ) + return CheetahSimulator(segment=segment, initial_beam_distribution=beam) + + def test_quadrupole_bctrl_roundtrip(self, simulator): + variable = QuadrupoleBCTRLVariable( + name="QUAD:IN20:511:BCTRL", + element_name="Q1", + pv_attribute="BCTRL", + ) + + initial_value = float(variable._get(simulator)) + expected_initial = 1.0 * 0.5 * 33.356 * 1e6 / 1e9 + assert math.isclose(initial_value, expected_initial, rel_tol=0.0, abs_tol=1e-8) + + variable._set(simulator, torch.tensor(0.05)) + roundtrip = float(variable._get(simulator)) + + assert math.isclose(roundtrip, 0.05, rel_tol=0.0, abs_tol=1e-8) + + def test_quadrupole_bact_is_read_only(self, simulator): + variable = QuadrupoleBACTVariable( + name="QUAD:IN20:511:BACT", + element_name="Q1", + pv_attribute="BACT", + ) + + with pytest.raises(RuntimeError): + variable._set(simulator, torch.tensor(0.1)) + + def test_get_variables_from_segment_instantiates_actions(self): + segment = Segment( + [ + Quadrupole( + name="Q1", + length=torch.tensor(0.5), + k1=torch.tensor(1.0), + ), + Drift(name="D1", length=torch.tensor(1.0)), + ] + ) + + variables = get_variables_from_segment( + segment, + device_mapping={"Q1": "QUAD:IN20:511"}, + element_attr_mapping={ + "Quadrupole": { + "BCTRL": "QuadrupoleBCTRLVariable", + "BACT": "QuadrupoleBACTVariable", + } + }, + ) + + assert "QUAD:IN20:511:BCTRL" in variables + assert "QUAD:IN20:511:BACT" in variables + assert isinstance(variables["QUAD:IN20:511:BCTRL"], QuadrupoleBCTRLVariable) + assert isinstance(variables["QUAD:IN20:511:BACT"], QuadrupoleBACTVariable) + + def test_split_quadrupole_get_and_set(self): + segment = Segment( + [ + Quadrupole( + name="Q1#1", + length=torch.tensor(0.2), + k1=torch.tensor(1.0), + ), + Quadrupole( + name="Q1#2", + length=torch.tensor(0.3), + k1=torch.tensor(1.0), + ), + Drift(name="D1", length=torch.tensor(1.0)), + ] + ) + beam = ParticleBeam.from_twiss( + beta_x=torch.tensor(1.0), + beta_y=torch.tensor(1.0), + num_particles=256, + energy=torch.tensor(1e6), + ) + simulator = CheetahSimulator(segment=segment, initial_beam_distribution=beam) + + variable = QuadrupoleBCTRLVariable( + name="QUAD:IN20:511:BCTRL", + element_name="Q1", + pv_attribute="BCTRL", + ) + + initial_value = float(variable._get(simulator)) + expected_initial = 1.0 * 0.5 * 33.356 * 1e6 / 1e9 + assert math.isclose(initial_value, expected_initial, rel_tol=0.0, abs_tol=1e-8) + + variable._set(simulator, torch.tensor(0.06)) + + q1_k1_values = [element.k1 for element in simulator.segment.elements[:2]] + assert torch.equal(q1_k1_values[0], q1_k1_values[1]) + assert math.isclose(float(variable._get(simulator)), 0.06, rel_tol=0.0, abs_tol=1e-8) + + def test_split_quadrupole_variables_are_deduped_by_control_name(self): + segment = Segment( + [ + Quadrupole( + name="Q1#1", + length=torch.tensor(0.2), + k1=torch.tensor(1.0), + ), + Quadrupole( + name="Q1#2", + length=torch.tensor(0.3), + k1=torch.tensor(1.0), + ), + ] + ) + + variables = get_variables_from_segment( + segment, + device_mapping={"Q1": "QUAD:IN20:511"}, + element_attr_mapping={ + "Quadrupole": { + "BCTRL": "QuadrupoleBCTRLVariable", + } + }, + ) + + assert list(variables.keys()) == ["QUAD:IN20:511:BCTRL"] diff --git a/virtual_accelerator/tests/test_optional_dependencies.py b/virtual_accelerator/tests/test_optional_dependencies.py index 2b68553..9ab1b14 100644 --- a/virtual_accelerator/tests/test_optional_dependencies.py +++ b/virtual_accelerator/tests/test_optional_dependencies.py @@ -31,7 +31,7 @@ def fake_import_module(_name): with pytest.raises(ModuleNotFoundError): import_optional( - "virtual_accelerator.cheetah.transformer", + "virtual_accelerator.cheetah.actions", feature="test feature", extra="cheetah", ) From 45c54b5a98aae9351b25c65e57577da263a74a17 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 21:23:28 -0500 Subject: [PATCH 02/16] refactor of field accessor functionality --- virtual_accelerator/cheetah/actions.py | 273 +++++++++++++----- virtual_accelerator/cheetah/utils.py | 340 ++--------------------- virtual_accelerator/cheetah/variables.py | 4 +- 3 files changed, 219 insertions(+), 398 deletions(-) diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index 286b021..0852827 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -1,9 +1,8 @@ """Action-variable implementations for Cheetah-backed virtual accelerator PVs. -This module provides a Cheetah equivalent to the BMAD action layer. Each -variable class encapsulates get/set behavior against a Cheetah simulator while -preserving existing SLAC PV semantics implemented in the Cheetah utility -attribute access mappings. +This module provides the Cheetah action layer used by the virtual accelerator +package. Conversion and composite-device behavior live directly on action +classes. """ from typing import Any @@ -11,25 +10,31 @@ from lume.actions import ReadOnlyActionMixin, WritableActionMixin from lume.variables import EnumVariable, NDVariable, ScalarVariable -from virtual_accelerator.cheetah.utils import access_cheetah_attribute +BCTRL_LIMIT = 100.0 -def _normalize_element_name(name: str) -> str: - """Return a normalized element name used for split-element matching. - Cheetah split elements may include a ``#`` suffix (for example - ``Q1#1``). This helper strips the suffix and normalizes case for lookup. - """ +def get_magnetic_rigidity(energy): + """Calculate magnetic rigidity ($B\rho$) in kG-m for energy in eV.""" + return 33.356 * energy / 1e9 + + +def _normalize_element_name(name: str) -> str: + """Return normalized element name used for split-element matching.""" return name.split("#")[0].upper() +def _as_element_list(element: Any) -> list[Any]: + """Return a uniform list representation for single or split elements.""" + if isinstance(element, list): + return element + return [element] + + def _resolve_segment_element(segment, element_name: str): - """Resolve a Cheetah segment element reference from a logical element name. + """Resolve a segment element by logical name. - Resolution behavior: - 1. Prefer exact case-insensitive name match. - 2. Fallback to normalized split-element match. - 3. Return a list when multiple split elements represent one logical device. + Returns a list when multiple split elements match the same logical name. """ target = element_name.upper() exact_matches = [element for element in segment.elements if element.name.upper() == target] @@ -53,15 +58,8 @@ def _resolve_segment_element(segment, element_name: str): def _resolve_energy(simulator, element: Any): - """Resolve beam energy for a single element or composite split-element list. - - The simulator stores energies keyed by element name. For split elements, - this helper attempts exact key matches first, then normalized-name fallback. - """ - if isinstance(element, list): - candidate_names = [subelement.name for subelement in element] - else: - candidate_names = [element.name] + """Resolve beam energy for a single element or split-element list.""" + candidate_names = [subelement.name for subelement in _as_element_list(element)] for name in candidate_names: if name in simulator.energies: @@ -77,80 +75,86 @@ def _resolve_energy(simulator, element: Any): ) -class _CheetahAttributeAccessMixin: - """Shared accessor logic for action variables using PV attribute mappings. - - Subclasses provide ``element_name`` and ``pv_attribute`` fields. The mixin - resolves both the target element object and corresponding beam energy, then - delegates conversion logic to ``access_cheetah_attribute``. - """ +class _CheetahElementAccessMixin: + """Shared element/energy resolution and direct attribute helpers.""" element_name: str pv_attribute: str + @staticmethod + def _elements(element: Any) -> list[Any]: + return _as_element_list(element) + + @staticmethod + def _primary_element(element: Any) -> Any: + return _as_element_list(element)[0] + def _resolve_element_and_energy(self, simulator): - """Resolve the element object (or split list) and matching beam energy.""" + """Resolve target element object(s) and matching beam energy.""" element = _resolve_segment_element(simulator.segment, self.element_name) energy = _resolve_energy(simulator, element) return element, energy - def _get(self, simulator): - """Read a PV value from simulator state through the Cheetah mapping layer.""" - element, energy = self._resolve_element_and_energy(simulator) - return access_cheetah_attribute(element, self.pv_attribute, energy) + def _get_direct_attribute(self, simulator, attribute_name: str): + """Read a direct element attribute from the first resolved element.""" + element, _ = self._resolve_element_and_energy(simulator) + return getattr(self._primary_element(element), attribute_name) - def _set(self, simulator, value): - """Write a PV value to simulator state through the Cheetah mapping layer.""" - element, energy = self._resolve_element_and_energy(simulator) - access_cheetah_attribute(element, self.pv_attribute, energy, set_value=value) + def _set_direct_attribute(self, simulator, attribute_name: str, value): + """Set a direct element attribute on all resolved split elements.""" + element, _ = self._resolve_element_and_energy(simulator) + for subelement in self._elements(element): + setattr(subelement, attribute_name, value) -class CheetahScalarVariable(_CheetahAttributeAccessMixin, ScalarVariable): +class CheetahScalarVariable(_CheetahElementAccessMixin, ScalarVariable): """Base scalar action variable for Cheetah-backed PVs.""" element_name: str pv_attribute: str -class CheetahNDVariable(_CheetahAttributeAccessMixin, NDVariable): +class CheetahNDVariable(_CheetahElementAccessMixin, NDVariable): """Base array-valued action variable for Cheetah-backed PVs.""" element_name: str pv_attribute: str -class CheetahEnumVariable(_CheetahAttributeAccessMixin, EnumVariable): +class CheetahEnumVariable(_CheetahElementAccessMixin, EnumVariable): """Base enum action variable for Cheetah-backed PVs.""" element_name: str pv_attribute: str -class _ReadOnlyFromAccessMixin(ReadOnlyActionMixin): - """Read-only action behavior for variables backed by attribute mappings.""" +class _ReadOnlyFromImplementationMixin(ReadOnlyActionMixin): + """Read-only behavior mixin that delegates `_get` to class implementations.""" read_only: bool = True def _get(self, simulator): - """Read value using the next class in method resolution order.""" return super(ReadOnlyActionMixin, self)._get(simulator) def _set(self, simulator, value) -> None: - """Reject writes consistently for read-only PVs.""" raise RuntimeError(f"{self.name} is read-only") +class _ReadbackFromControlMixin(_ReadOnlyFromImplementationMixin): + """Read-only mixin for readback variables sharing control `_get` logic.""" + + class CheetahWritableScalarVariable(CheetahScalarVariable, WritableActionMixin): """Writable scalar action variable base.""" read_only: bool = False -class CheetahReadOnlyScalarVariable(_ReadOnlyFromAccessMixin, CheetahScalarVariable): +class CheetahReadOnlyScalarVariable( + _ReadOnlyFromImplementationMixin, CheetahScalarVariable +): """Read-only scalar action variable base.""" - pass - class CheetahWritableNDVariable(CheetahNDVariable, WritableActionMixin): """Writable array action variable base.""" @@ -158,11 +162,9 @@ class CheetahWritableNDVariable(CheetahNDVariable, WritableActionMixin): read_only: bool = False -class CheetahReadOnlyNDVariable(_ReadOnlyFromAccessMixin, CheetahNDVariable): +class CheetahReadOnlyNDVariable(_ReadOnlyFromImplementationMixin, CheetahNDVariable): """Read-only array action variable base.""" - pass - class CheetahWritableEnumVariable(CheetahEnumVariable, WritableActionMixin): """Writable enum action variable base.""" @@ -170,22 +172,34 @@ class CheetahWritableEnumVariable(CheetahEnumVariable, WritableActionMixin): read_only: bool = False -class CheetahReadOnlyEnumVariable(_ReadOnlyFromAccessMixin, CheetahEnumVariable): +class CheetahReadOnlyEnumVariable( + _ReadOnlyFromImplementationMixin, CheetahEnumVariable +): """Read-only enum action variable base.""" - pass - class QuadrupoleBCTRLVariable(CheetahWritableScalarVariable): """Quadrupole control/desired magnetic strength (BCTRL/BDES) in kG.""" unit: str = "kG" + def _get(self, simulator): + element, energy = self._resolve_element_and_energy(simulator) + elements = self._elements(element) + total_length = sum(subelement.length for subelement in elements) + return elements[0].k1 * total_length * get_magnetic_rigidity(energy) -class QuadrupoleBACTVariable(CheetahReadOnlyScalarVariable): - """Quadrupole readback magnetic strength (BACT) in kG.""" + def _set(self, simulator, value): + element, energy = self._resolve_element_and_energy(simulator) + elements = self._elements(element) + total_length = sum(subelement.length for subelement in elements) + new_k1 = value / get_magnetic_rigidity(energy) / total_length + for subelement in elements: + subelement.k1 = new_k1 - unit: str = "kG" + +class QuadrupoleBACTVariable(_ReadbackFromControlMixin, QuadrupoleBCTRLVariable): + """Quadrupole readback magnetic strength (BACT) in kG.""" class SolenoidBCTRLVariable(CheetahWritableScalarVariable): @@ -193,11 +207,19 @@ class SolenoidBCTRLVariable(CheetahWritableScalarVariable): unit: str = "kG" + def _get(self, simulator): + element, energy = self._resolve_element_and_energy(simulator) + return self._primary_element(element).k * get_magnetic_rigidity(energy) -class SolenoidBACTVariable(CheetahReadOnlyScalarVariable): - """Solenoid readback field variable in kG-equivalent units.""" + def _set(self, simulator, value): + element, energy = self._resolve_element_and_energy(simulator) + new_k = value / (2 * get_magnetic_rigidity(energy)) + for subelement in self._elements(element): + subelement.k = new_k - unit: str = "kG" + +class SolenoidBACTVariable(_ReadbackFromControlMixin, SolenoidBCTRLVariable): + """Solenoid readback field variable in kG-equivalent units.""" class SBendBCTRLVariable(CheetahWritableScalarVariable): @@ -205,11 +227,35 @@ class SBendBCTRLVariable(CheetahWritableScalarVariable): unit: str = "GeV/c" + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + sbend = self._primary_element(element) -class SBendBACTVariable(CheetahReadOnlyScalarVariable): - """SBend readback momentum-field representation in GeV/c.""" + if not all(hasattr(sbend, attr) for attr in ("g", "dg", "p0c")): + raise ValueError( + f"Element {self.element_name!r} does not expose sbend field attributes" + ) - unit: str = "GeV/c" + if sbend.g == 0: + return 0 + p = sbend.p0c * (1 + sbend.dg / sbend.g) + return p * 1e-9 + + def _set(self, simulator, value): + element, _ = self._resolve_element_and_energy(simulator) + sbend = self._primary_element(element) + + if not all(hasattr(sbend, attr) for attr in ("g", "p0c")): + raise ValueError( + f"Element {self.element_name!r} does not expose sbend field attributes" + ) + + dp = (value * 1e9 - sbend.p0c) / sbend.p0c + sbend.dg = dp * sbend.g + + +class SBendBACTVariable(_ReadbackFromControlMixin, SBendBCTRLVariable): + """SBend readback momentum-field representation in GeV/c.""" class KickerBCTRLVariable(CheetahWritableScalarVariable): @@ -217,29 +263,40 @@ class KickerBCTRLVariable(CheetahWritableScalarVariable): unit: str = "kG" + def _get(self, simulator): + element, energy = self._resolve_element_and_energy(simulator) + return self._primary_element(element).angle * get_magnetic_rigidity(energy) -class KickerBACTVariable(CheetahReadOnlyScalarVariable): - """Horizontal/vertical corrector readback variable (BACT) in kG.""" + def _set(self, simulator, value): + element, energy = self._resolve_element_and_energy(simulator) + new_angle = value / get_magnetic_rigidity(energy) + for subelement in self._elements(element): + subelement.angle = new_angle - unit: str = "kG" + +class KickerBACTVariable(_ReadbackFromControlMixin, KickerBCTRLVariable): + """Horizontal/vertical corrector readback variable (BACT) in kG.""" class StatusVariable(CheetahReadOnlyScalarVariable): - """Generic read-only device status scalar variable.""" + """Read-only device status scalar value.""" - pass + def _get(self, simulator): + return 1.0 class BminVariable(CheetahReadOnlyScalarVariable): """Read-only lower operating limit variable for magnet-like devices.""" - pass + def _get(self, simulator): + return -BCTRL_LIMIT class BmaxVariable(CheetahReadOnlyScalarVariable): """Read-only upper operating limit variable for magnet-like devices.""" - pass + def _get(self, simulator): + return BCTRL_LIMIT class ControlStateVariable(CheetahReadOnlyEnumVariable): @@ -248,24 +305,38 @@ class ControlStateVariable(CheetahReadOnlyEnumVariable): options: list[str] = ["Ready", "TRIM", "PERTURB", "BCON_TO_BDES", "BACT_TO_BDES"] default_value: str = "Ready" + def _get(self, simulator): + return "Ready" + class BPMXVariable(CheetahReadOnlyScalarVariable): """Read-only BPM X readout in millimeters.""" unit: str = "mm" + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + return self._primary_element(element).reading[0] + class BPMYVariable(CheetahReadOnlyScalarVariable): """Read-only BPM Y readout in millimeters.""" unit: str = "mm" + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + return self._primary_element(element).reading[1] + class BPMTMITDummyVariable(CheetahReadOnlyScalarVariable): - """Read-only placeholder BPM intensity variable used for interface parity.""" + """Read-only placeholder BPM intensity variable for interface parity.""" unit: str = "arbitrary units" + def _get(self, simulator): + return 1.0 + class KlystronENLDVariable(CheetahWritableScalarVariable): """Writable klystron amplitude-like variable in MeV.""" @@ -291,30 +362,55 @@ class KlystronStatVariable(CheetahReadOnlyEnumVariable): options: list[str] = ["0", "1"] default_value: str = "0" + def _get(self, simulator): + return "0" + class CavityAREQVariable(CheetahWritableScalarVariable): """Writable cavity amplitude request variable in MV.""" unit: str = "MV" + def _get(self, simulator): + return self._get_direct_attribute(simulator, "voltage") + + def _set(self, simulator, value): + self._set_direct_attribute(simulator, "voltage", value) + class CavityAREQReadbackVariable(CheetahReadOnlyScalarVariable): """Read-only cavity amplitude readback variable in MV.""" unit: str = "MV" + def _get(self, simulator): + if self.pv_attribute == "AMPL_W0CH0": + return 0.0 + return self._get_direct_attribute(simulator, "voltage") + class CavityPREQVariable(CheetahWritableScalarVariable): """Writable cavity phase request variable in degrees.""" unit: str = "degrees" + def _get(self, simulator): + return self._get_direct_attribute(simulator, "phase") + + def _set(self, simulator, value): + self._set_direct_attribute(simulator, "phase", value) + class CavityPREQReadbackVariable(CheetahReadOnlyScalarVariable): """Read-only cavity phase readback variable in degrees.""" unit: str = "degrees" + def _get(self, simulator): + if self.pv_attribute == "PACT_AVGNT": + return 0.0 + return self._get_direct_attribute(simulator, "phase") + class CavityMODECFGVariable(CheetahReadOnlyEnumVariable): """Read-only cavity mode configuration enum.""" @@ -322,24 +418,39 @@ class CavityMODECFGVariable(CheetahReadOnlyEnumVariable): options: list[str] = ["Disable", "ACCEL", "STDBY", "ACCEL_STDBY"] default_value: str = "ACCEL_STDBY" + def _get(self, simulator): + return "ACCEL_STDBY" + class DummyEnumVariable(CheetahReadOnlyEnumVariable): - """Read-only placeholder enum variable used for unsupported controls.""" + """Read-only placeholder enum variable for unsupported controls.""" options: list[str] = ["0", "1"] default_value: str = "0" + def _get(self, simulator): + if self.pv_attribute == "RF_ENABLE": + return 1.0 + return 0.0 + class ScreenImageVariable(CheetahReadOnlyNDVariable): """Read-only screen image array variable.""" - pass + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + return self._primary_element(element).reading.T * 65535 class ScreenImageArraySizeVariable(CheetahReadOnlyScalarVariable): """Read-only scalar for screen image dimension metadata values.""" - pass + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + screen = self._primary_element(element) + if self.pv_attribute in {"Image:ArraySize1_RBV", "N_OF_ROW"}: + return screen.resolution[0] + return screen.resolution[1] class ScreenResolutionVariable(CheetahReadOnlyScalarVariable): @@ -347,8 +458,16 @@ class ScreenResolutionVariable(CheetahReadOnlyScalarVariable): unit: str = "um" + def _get(self, simulator): + element, _ = self._resolve_element_and_energy(simulator) + return self._primary_element(element).pixel_size[0] * 1e6 + class ScreenPneumaticVariable(CheetahWritableScalarVariable): """Writable scalar representing screen insertion/activation control.""" - pass + def _get(self, simulator): + return self._get_direct_attribute(simulator, "is_active") + + def _set(self, simulator, value): + self._set_direct_attribute(simulator, "is_active", value) diff --git a/virtual_accelerator/cheetah/utils.py b/virtual_accelerator/cheetah/utils.py index 5f38ad3..edfb9e9 100644 --- a/virtual_accelerator/cheetah/utils.py +++ b/virtual_accelerator/cheetah/utils.py @@ -1,328 +1,27 @@ -import pandas as pd -import torch -import os -from pathlib import Path - - -class NoSetMethodError(Exception): - pass - - -class FieldAccessor: - """ - A class to access and set arbitrary attributes of Cheetah elements when logic - is more complex than simple attribute access (ie. nested attributes). - - This class is used to map process variable (PV) attributes to Cheetah element attributes. - It allows both getting and setting values of the attributes by providing a getter and setter function. - """ - - def __init__(self, getter, setter=None): - self.get = getter - self.set = setter - - def __call__(self, element, energy, value=None): - if value is None: - return self.get(element, energy) - else: - if self.set is None: - raise NoSetMethodError("Cannot set value for this attribute") - self.set(element, energy, value) - - -def get_magnetic_rigidity(energy): - """ - Calculate the magnetic rigidity (Bρ) in kG-m given the beam energy in eV. - """ - return 33.356 * energy / 1e9 - - -# define mappings for different element types - -BCTRL_LIMIT = 100.0 - -# -- include conversions for cheetah attributes to SLAC EPICS attributes -QUADRUPOLE_MAPPING = { - "BCTRL": FieldAccessor( - lambda e, energy: e.k1 * e.length * get_magnetic_rigidity(energy), - lambda e, energy, k1: setattr( - e, "k1", k1 / get_magnetic_rigidity(energy) / e.length - ), - ), - "BACT": FieldAccessor( - lambda e, energy: e.k1 * e.length * get_magnetic_rigidity(energy) - ), - "BMAX": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "BMIN": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVL": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVH": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "CTRL": FieldAccessor(lambda e, energy: "Ready"), - "BCON": FieldAccessor(lambda e, energy: 1.0), - "BDES": FieldAccessor( - lambda e, energy: e.k1 * e.length * get_magnetic_rigidity(energy) - ), -} - -SOLENOID_MAPPING = { - "BCTRL": FieldAccessor( - lambda e, energy: e.k * get_magnetic_rigidity(energy), - lambda e, energy, k: setattr(e, "k", k / (2 * get_magnetic_rigidity(energy))), - ), - "BACT": FieldAccessor(lambda e, energy: e.k * get_magnetic_rigidity(energy)), - "BMAX": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "BMIN": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVL": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVH": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "CTRL": FieldAccessor(lambda e, energy: "Ready"), - "BCON": FieldAccessor(lambda e, energy: 1.0), - "BDES": FieldAccessor(lambda e, energy: e.k * get_magnetic_rigidity(energy)), -} - -CORRECTOR_MAPPING = { - "BCTRL": FieldAccessor( - lambda e, energy: e.angle * get_magnetic_rigidity(energy), - lambda e, energy, a: setattr(e, "angle", a / get_magnetic_rigidity(energy)), - ), - "BACT": FieldAccessor(lambda e, energy: e.angle * get_magnetic_rigidity(energy)), - "BMAX": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "BMIN": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVL": FieldAccessor(lambda e, energy: -BCTRL_LIMIT), - "BCTRL.DRVH": FieldAccessor(lambda e, energy: BCTRL_LIMIT), - "CTRL": FieldAccessor(lambda e, energy: "Ready"), - "BCON": FieldAccessor(lambda e, energy: 1.0), - "BDES": FieldAccessor(lambda e, energy: e.angle * get_magnetic_rigidity(energy)), -} - -TRANSVERSE_DEFLECTING_CAVITY_MAPPING = { - "AREQ": "voltage", - "PREQ": "phase", - "AFBENB": FieldAccessor(lambda e, energy: 0.0), - "AFBST": FieldAccessor(lambda e, energy: 0.0), - "AMPL_W0CH0": FieldAccessor(lambda e, energy: 0.0), - "MODECFG": FieldAccessor(lambda e, energy: 0.0), - "PACT_AVGNT": FieldAccessor(lambda e, energy: 0.0), - "PFBENB": FieldAccessor(lambda e, energy: 0.0), - "PFBST": FieldAccessor(lambda e, energy: 0.0), - "RF_ENABLE": FieldAccessor(lambda e, energy: 1.0), -} - -BPM_MAPPING = { - "X": FieldAccessor(lambda e, energy: e.reading[0]), - "Y": FieldAccessor(lambda e, energy: e.reading[1]), - "XSCDT1H": FieldAccessor(lambda e, energy: e.reading[0]), - "YSCDT1H": FieldAccessor(lambda e, energy: e.reading[1]), - "TMIT": FieldAccessor(lambda e, energy: 1.0), -} - -# multiply image intensity by 16 bit number range (is similar to real machine?) -SCREEN_MAPPING = { - "Image:ArrayData": FieldAccessor(lambda e, energy: e.reading.T * 65535), - "PNEUMATIC": "is_active", - "Image:ArraySize1_RBV": FieldAccessor(lambda e, energy: e.resolution[0]), - "Image:ArraySize0_RBV": FieldAccessor(lambda e, energy: e.resolution[1]), - "RESOLUTION": FieldAccessor(lambda e, energy: e.pixel_size[0] * 1e6), - "IMAGE": FieldAccessor(lambda e, energy: e.reading.T * 65535), - "N_OF_ROW": FieldAccessor(lambda e, energy: e.resolution[0]), - "N_OF_COL": FieldAccessor(lambda e, energy: e.resolution[1]), -} - -# CHEETAH ELEMENT MAPPINGS -MAPPINGS = { - "Quadrupole": QUADRUPOLE_MAPPING, - "Solenoid": SOLENOID_MAPPING, - "HorizontalCorrector": CORRECTOR_MAPPING, - "VerticalCorrector": CORRECTOR_MAPPING, - "BPM": BPM_MAPPING, - "Screen": SCREEN_MAPPING, - "TransverseDeflectingCavity": TRANSVERSE_DEFLECTING_CAVITY_MAPPING, -} - -LCLS_ELEMENTS = os.path.join( - Path(__file__).parent.resolve(), - "lcls_elements.csv", -) - - -def handle_quadrupole_composite(elements, pv_attribute, energy, set_value): - """ - Handle composite quadrupole devices split into multiple subelements. - - Quadrupoles require special handling because their control system - variables (e.g., BCTRL, BDES) represent integrated magnetic strength. - - For a composite quadrupole: - - The total strength depends on the *sum of subelement lengths* - - All subelements share the same normalized strength (k1) - - Behavior: - - GET: - Returns the integrated strength using total length. - - SET: - Computes a single k1 using total length and applies it to all subelements. - - Args: - elements (list[Quadrupole]): - List of quadrupole subelements. - - pv_attribute (str): - Attribute name (e.g., 'BCTRL', 'BDES', 'BACT'). - - energy (torch.Tensor or float): - Beam energy for magnetic rigidity calculation. - - set_value (torch.Tensor or float or None): - Value to set, if performing a set operation. - - Returns: - torch.Tensor or float or None: - Attribute value if getting, otherwise None. - """ - total_length = sum(e.length for e in elements) - - if set_value is not None and pv_attribute in {"BCTRL", "BDES"}: - new_k1 = set_value / get_magnetic_rigidity(energy) / total_length +"""Cheetah utility helpers that are independent from action variable logic. - for e in elements: - e.k1 = new_k1 - return +The action conversion and PV-mapping layer now lives in +``virtual_accelerator.cheetah.actions``. This module keeps only static mapping +helpers used to load MAD/controls naming tables from CSV. +""" - if pv_attribute in {"BCTRL", "BACT", "BDES"}: - return elements[0].k1 * total_length * get_magnetic_rigidity(energy) - - # fallback behavior - return default_composite_handler(elements, pv_attribute, energy, set_value) - - -def default_composite_handler(elements, pv_attribute, energy, set_value): - """ - Default handler for composite devices. - Assumes all subelements share identical attributes. - - Behavior: - - GET: - Returns the attribute from the first subelement. - - SET: - Applies the value to all subelements. - - Args: - elements (list[object]): - List of subelements of the same type. - - pv_attribute (str): - Attribute name. - - energy (torch.Tensor or float): - Beam energy. - - set_value (torch.Tensor or float or None): - Value to set, if performing a set operation. - - Returns: - torch.Tensor or float or None: - Attribute value if getting, otherwise None. - """ - - if set_value is not None: - for e in elements: - access_cheetah_attribute(e, pv_attribute, energy, set_value) - return - - return access_cheetah_attribute(elements[0], pv_attribute, energy) - - -COMPOSITE_HANDLERS = { - "Quadrupole": handle_quadrupole_composite, - "TransverseDeflectingCavity": default_composite_handler, -} - - -def access_cheetah_attribute(element, pv_attribute, energy, set_value=None): - """ - - Return or set a Cheetah element attribute based on the PV attribute. - If `set_value` is provided, it sets the value of the Cheetah attribute. - - - This function supports both single elements and composite devices - represented as lists of subelements (e.g., split quadrupoles or TCAVs). - - For composite devices, behavior is delegated to a device-specific handler. - - Args: - element (element or list[element]): - A single Cheetah element or a list of subelements representing - a single logical device. - - pv_attribute (str): The process variable attribute to map. - - energy (float): The beam energy in eV. - - set_value (optional): If provided, sets the value of the Cheetah attribute. - - Returns: - value: The corresponding Cheetah attribute value if `set_value` is None, otherwise sets the value and returns None. - """ - - # implementing fix for quads, will rethink for tcavs - # simplest case, each subelement has sub_length = length/len(sub_elements) - # handling composite elements - - if isinstance(element, list): - if len(element) == 0: - raise ValueError("Cannot access attribute on empty element list") - element_type = type(element[0]).__name__ - if any(type(sub).__name__ != element_type for sub in element): - raise ValueError("All subelements in element list must have same type") - - handler = COMPOSITE_HANDLERS.get(element_type, default_composite_handler) - return handler(element, pv_attribute, energy, set_value) - - # handling for normal elements - - element_type = type(element).__name__ - if element_type not in MAPPINGS: - raise ValueError(f"Unsupported element type: {element_type}") - - mapping = MAPPINGS[element_type] - if pv_attribute not in mapping: - raise ValueError( - f"Unsupported PV attribute: {pv_attribute} for element type: {element_type}" - ) - - accessor = mapping[pv_attribute] - - # convert to tensor if the value is a float or int - if isinstance(set_value, (float, int)): - set_value = torch.tensor(set_value) +import os +from pathlib import Path - if isinstance(accessor, str): - if set_value is None: - return getattr(element, accessor) - else: - try: - setattr(element, accessor, set_value) - except NoSetMethodError as e: - raise ValueError( - f"Cannot set value for {pv_attribute} of element type {element_type}" - ) from e +import pandas as pd - elif isinstance(accessor, FieldAccessor): - try: - return accessor(element, energy, set_value) - except NoSetMethodError as e: - raise ValueError( - f"Cannot set value for {pv_attribute} of element type {element_type}" - ) from e +LCLS_ELEMENTS = os.path.join(Path(__file__).parent.resolve(), "lcls_elements.csv") def get_mad_control_mapping(fname: str | None = None): """ - Create a mapping from madnames to control names and device types - from a CSV file. - + Create a mapping from MAD element names to control-system names. - Args: - fname (str): Path to the CSV file containing the mapping. + Parameters + ---------- + fname : str | None + Optional path to a CSV file containing ``Element`` and + ``Control System Name`` columns. """ if fname is None: @@ -337,10 +36,13 @@ def get_mad_control_mapping(fname: str | None = None): def get_control_mad_mapping(fname: str | None = None): """ - Create a mapping from control system names to element names from a CSV file. + Create a mapping from control-system names to MAD element names. - Args: - fname (str): Path to the CSV file containing the mapping. + Parameters + ---------- + fname : str | None + Optional path to a CSV file containing ``Control System Name`` and + ``Element`` columns. """ diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 4ec3ea9..8c7a7f9 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -1,8 +1,8 @@ """Variable factory utilities for action-based Cheetah model integration. This module builds action variables from a Cheetah lattice segment and SLAC PV -configuration mappings. It replaces the transformer-oriented path by resolving -per-element variable classes from ``virtual_accelerator.cheetah.actions``. +configuration mappings by resolving per-element variable classes from +``virtual_accelerator.cheetah.actions``. """ from typing import Any From 00908eddf538fccd611aafa01cc5af59d3922dc9 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 21:50:18 -0500 Subject: [PATCH 03/16] implement cu hxr model --- .github/workflows/test-cheetah.yml | 1 + virtual_accelerator/cheetah/actions.py | 13 +- virtual_accelerator/cheetah/variables.py | 2 +- virtual_accelerator/models/cu_hxr.py | 111 +++++++++- .../tests/_bmad_model_test_utils.py | 38 ++-- virtual_accelerator/tests/test_cu_hxr.py | 190 +++++++++++++++--- virtual_accelerator/tests/test_facet.py | 17 +- 7 files changed, 305 insertions(+), 67 deletions(-) diff --git a/.github/workflows/test-cheetah.yml b/.github/workflows/test-cheetah.yml index 076fd64..72a8c17 100644 --- a/.github/workflows/test-cheetah.yml +++ b/.github/workflows/test-cheetah.yml @@ -55,4 +55,5 @@ jobs: run: > pytest virtual_accelerator/tests/test_optional_dependencies.py virtual_accelerator/tests/test_cheetah_actions.py + virtual_accelerator/tests/test_cu_hxr.py -k Cheetah -v --tb=short -ra --strict-markers diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index 0852827..f42e5ee 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -8,7 +8,8 @@ from typing import Any from lume.actions import ReadOnlyActionMixin, WritableActionMixin -from lume.variables import EnumVariable, NDVariable, ScalarVariable +from lume.variables import EnumVariable +from lume_torch.variables import TorchNDVariable, TorchScalarVariable BCTRL_LIMIT = 100.0 @@ -107,14 +108,14 @@ def _set_direct_attribute(self, simulator, attribute_name: str, value): setattr(subelement, attribute_name, value) -class CheetahScalarVariable(_CheetahElementAccessMixin, ScalarVariable): +class CheetahScalarVariable(_CheetahElementAccessMixin, TorchScalarVariable): """Base scalar action variable for Cheetah-backed PVs.""" element_name: str pv_attribute: str -class CheetahNDVariable(_CheetahElementAccessMixin, NDVariable): +class CheetahNDVariable(_CheetahElementAccessMixin, TorchNDVariable): """Base array-valued action variable for Cheetah-backed PVs.""" element_name: str @@ -213,7 +214,7 @@ def _get(self, simulator): def _set(self, simulator, value): element, energy = self._resolve_element_and_energy(simulator) - new_k = value / (2 * get_magnetic_rigidity(energy)) + new_k = value / get_magnetic_rigidity(energy) for subelement in self._elements(element): subelement.k = new_k @@ -467,7 +468,7 @@ class ScreenPneumaticVariable(CheetahWritableScalarVariable): """Writable scalar representing screen insertion/activation control.""" def _get(self, simulator): - return self._get_direct_attribute(simulator, "is_active") + return 1.0 if bool(self._get_direct_attribute(simulator, "is_active")) else 0.0 def _set(self, simulator, value): - self._set_direct_attribute(simulator, "is_active", value) + self._set_direct_attribute(simulator, "is_active", bool(value)) diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 8c7a7f9..5419483 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -14,7 +14,7 @@ ) -SKIPPED_ELEMENT_TYPES = {"Drift", "Marker", "Cavity"} +SKIPPED_ELEMENT_TYPES = {"Drift", "Marker", "Cavity", "Undulator", "Dipole"} # Element-type aliases bridge Cheetah runtime names to SLAC config keys. ELEMENT_TYPE_ALIASES = { diff --git a/virtual_accelerator/models/cu_hxr.py b/virtual_accelerator/models/cu_hxr.py index b4063be..4d6725d 100644 --- a/virtual_accelerator/models/cu_hxr.py +++ b/virtual_accelerator/models/cu_hxr.py @@ -1,5 +1,10 @@ -from virtual_accelerator.bmad.factory import BmadModelSpec, build_bmad_model +import os + from lume.staged_model import StagedModel +from virtual_accelerator.utils.optional_dependencies import ( + import_optional, + import_optional_symbol, +) def get_cu_hxr_bmad_model( @@ -26,6 +31,8 @@ def get_cu_hxr_bmad_model( Instance of the LUMEBmadModel for the CU_HXR lattice. """ + from virtual_accelerator.bmad.factory import BmadModelSpec, build_bmad_model + spec = BmadModelSpec( feature="CU HXR Bmad model", lattice_env_var="LCLS_LATTICE", @@ -85,3 +92,105 @@ def get_cu_hxr_staged_model(n_particles: int = 1000, **kwargs) -> StagedModel: staged_model = StagedModel([injector_surrogate, cu_hxr_bmad_model]) return staged_model + + +def get_cu_hxr_cheetah_model(): + """ + Get the LUMECheetahModel for the CU_HXR lattice from GUN to OTR2. + + Returns + ------- + LUMECheetahModel + Instance of the LUMECheetahModel for the CU_HXR lattice. + """ + LUMECheetahModel = import_optional_symbol( + "lume_cheetah", + "LUMECheetahModel", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + CheetahSimulator = import_optional_symbol( + "lume_cheetah", + "CheetahSimulator", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + Segment = import_optional_symbol( + "cheetah.accelerator", + "Segment", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + ParticleBeam = import_optional_symbol( + "cheetah.particles", + "ParticleBeam", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + get_variables_from_segment = import_optional_symbol( + "virtual_accelerator.cheetah.variables", + "get_variables_from_segment", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + get_mad_control_mapping = import_optional_symbol( + "virtual_accelerator.cheetah.utils", + "get_mad_control_mapping", + feature="CU HXR Cheetah model", + extra="cheetah", + ) + torch = import_optional("torch", feature="CU HXR Cheetah model", extra="cheetah") + + # Get path to beam distributions + # beam_dist = os.environ.get( + # 'BEAM_DISTRIBUTION', + # '/sdf/group/ad/sw/machine-learning/ + # Linac-Simulation-Server/simulation_server/beams' + # ) + # Create Cheetah particle Beam from file + + incoming_beam = ParticleBeam.from_twiss( + beta_x=torch.tensor(9.34), + alpha_x=torch.tensor(-1.6946), + emittance_x=torch.tensor(1e-7), + beta_y=torch.tensor(9.34), + alpha_y=torch.tensor(-1.6946), + emittance_y=torch.tensor(1e-7), + num_particles=1000, + energy=torch.tensor(90e6), + ) + incoming_beam.particle_charges = torch.tensor(1.0) + + # Get path to lattice files + lcls_lattice = os.environ.get("LCLS_LATTICE") + if lcls_lattice is None: + raise ValueError("LCLS_LATTICE environment variable must be set") + + # Create lattice from file + segment = Segment.from_lattice_json( + os.path.join(lcls_lattice, "cheetah/nc_hxr.json") + ) + + # Set end destination from full lattice + segment = segment.subcell(end="otr2") + + # Define the simulator using lattice and particle beam + simulator = CheetahSimulator( + segment=segment, + initial_beam_distribution=incoming_beam, + ) + + # get control system device to cheetah mapping + database_path = os.path.join( + lcls_lattice, "bmad/conversion/from_oracle/lcls_elements.csv" + ) + element_name_to_control_name = get_mad_control_mapping(database_path) + + # Get supported control system variables + # for the model + variables = get_variables_from_segment(segment, element_name_to_control_name) + + # Create model using action-based variable integration. + model = LUMECheetahModel(simulator=simulator, action_variables=list(variables.values())) + + return model \ No newline at end of file diff --git a/virtual_accelerator/tests/_bmad_model_test_utils.py b/virtual_accelerator/tests/_bmad_model_test_utils.py index 94bc1be..6ec7f12 100644 --- a/virtual_accelerator/tests/_bmad_model_test_utils.py +++ b/virtual_accelerator/tests/_bmad_model_test_utils.py @@ -313,23 +313,23 @@ def assert_value_equal(pv_name, expected_value, actual_value) -> None: "No writable variables found in model.supported_variables" ) - scalar_variable_cls = None - try: - from lume.variables import ScalarVariable as scalar_variable_cls - except ImportError: - pass - for pv_name in writable_supported_variables: - if pv_name != "track_type": - if scalar_variable_cls is not None and isinstance( - supported_variables[pv_name], scalar_variable_cls - ): - original_value = ( - model.get(pv_name) + 0.001 - ) # add small offset to ensure set does something - assert original_value != 0, ( - f"Original value for {pv_name} is zero, cannot perform roundtrip test with offset" - ) - model.set({pv_name: original_value}) - roundtrip_value = model.get(pv_name) - assert_value_equal(pv_name, original_value, roundtrip_value) + if pv_name == "track_type": + continue + + current_value = model.get(pv_name) + + if isinstance(current_value, bool): + target_value = not current_value + elif isinstance(current_value, Real): + if pv_name.endswith(":PNEUMATIC"): + target_value = 0.0 if float(current_value) >= 0.5 else 1.0 + else: + target_value = float(current_value) + 0.001 + else: + # Roundtrip helper currently targets scalar-like writable controls. + continue + + model.set({pv_name: target_value}) + roundtrip_value = model.get(pv_name) + assert_value_equal(pv_name, target_value, roundtrip_value) diff --git a/virtual_accelerator/tests/test_cu_hxr.py b/virtual_accelerator/tests/test_cu_hxr.py index 11c5631..3b23c59 100644 --- a/virtual_accelerator/tests/test_cu_hxr.py +++ b/virtual_accelerator/tests/test_cu_hxr.py @@ -7,6 +7,7 @@ from lume.exceptions import ReadOnlyError from virtual_accelerator.tests.dependency_profiles import ( HAS_BMAD_DEPS, + HAS_CHEETAH_DEPS, HAS_LCLS_LATTICE, ) from virtual_accelerator.tests._bmad_model_test_utils import ( @@ -20,20 +21,45 @@ assert_screen_image_pvs_in_supported_variables, ) -pytestmark = [ - pytest.mark.requires_bmad, - pytest.mark.requires_lcls_lattice, -] +CU_HXR_PROFMON_CONFIG_PATH = ( + Path(__file__).resolve().parents[1] / "utils" / "cu_hxr_profmon_info.yaml" +) + + +def _resolve_runtime_getter(has_optional_deps: bool, getter_name: str): + if not (has_optional_deps and HAS_LCLS_LATTICE): + return False, None + + try: + from virtual_accelerator.models import cu_hxr as cu_hxr_models + + return True, getattr(cu_hxr_models, getter_name) + except Exception: + return False, None + -if HAS_BMAD_DEPS and HAS_LCLS_LATTICE: - from virtual_accelerator.models.cu_hxr import get_cu_hxr_bmad_model -else: - pytest.skip( - "requires bmad optional dependencies and LCLS_LATTICE", - allow_module_level=True, - ) +def _load_cu_hxr_screen_config(): + with CU_HXR_PROFMON_CONFIG_PATH.open("r", encoding="utf-8") as config_file: + return yaml.safe_load(config_file) + + +HAS_BMAD_RUNTIME, get_cu_hxr_bmad_model = _resolve_runtime_getter( + HAS_BMAD_DEPS, + "get_cu_hxr_bmad_model", +) + +HAS_CHEETAH_RUNTIME, get_cu_hxr_cheetah_model = _resolve_runtime_getter( + HAS_CHEETAH_DEPS, + "get_cu_hxr_cheetah_model", +) +@pytest.mark.requires_bmad +@pytest.mark.requires_lcls_lattice +@pytest.mark.skipif( + not HAS_BMAD_RUNTIME, + reason="requires bmad optional dependencies and LCLS_LATTICE", +) class TestCUHXRBmad: def test_initialization(self): assert_bmad_model_initialization( @@ -103,11 +129,7 @@ def test_cu_hxr_screen(self): assert not (image == updated_image).all() def test_cu_hxr_screen_resolution_matches_yaml_and_expected_range(self): - config_path = ( - Path(__file__).resolve().parents[1] / "utils" / "cu_hxr_profmon_info.yaml" - ) - with config_path.open("r", encoding="utf-8") as config_file: - screen_config = yaml.safe_load(config_file) + screen_config = _load_cu_hxr_screen_config() otr4_config = screen_config["OTR4"] resolution_pv = f"{otr4_config['name']}:RESOLUTION" @@ -129,17 +151,10 @@ def test_cu_hxr_lcavity(self): ampl = model.get("KLYS:LI21:31:ENLD") assert np.isclose(ampl, enld + 5.0) - def test_quadrupole_pvs_match_tao_lattice(self): - model = get_cu_hxr_bmad_model() - assert_magnet_pvs_match_tao_lattice(model, "Quadrupole") - - def test_hkicker_pvs_match_tao_lattice(self): - model = get_cu_hxr_bmad_model() - assert_magnet_pvs_match_tao_lattice(model, "HKicker") - - def test_vkicker_pvs_match_tao_lattice(self): + @pytest.mark.parametrize("element_type", ["Quadrupole", "HKicker", "VKicker"]) + def test_magnet_pvs_match_tao_lattice(self, element_type): model = get_cu_hxr_bmad_model() - assert_magnet_pvs_match_tao_lattice(model, "VKicker") + assert_magnet_pvs_match_tao_lattice(model, element_type) def test_bpm_pvs_match_tao_lattice(self): model = get_cu_hxr_bmad_model() @@ -150,3 +165,126 @@ def test_roundtrip_pv_get_set(self): custom_beam_path=TEST_BEAM_PATH, end_element="OTR4" ) assert_roundtrip_pv_get_set(model) + + +class TestCUHXRCheetah: + pytestmark = [ + pytest.mark.requires_cheetah, + pytest.mark.requires_lcls_lattice, + pytest.mark.skipif( + not HAS_CHEETAH_RUNTIME, + reason="requires cheetah optional dependencies and LCLS_LATTICE", + ), + ] + + def test_initialization(self): + model = get_cu_hxr_cheetah_model() + writable_control_variables = { + name + for name, variable in model.supported_variables.items() + if not getattr(variable, "read_only", True) + } + + assert len(model.supported_variables) > 0 + assert len(writable_control_variables) > 0 + + # Smoke test that reading all variables works after initialization. + _ = model.get(list(model.supported_variables)) + + def test_bact_readback_is_not_writable(self): + model = get_cu_hxr_cheetah_model() + + bact_pv = next( + name for name in model.supported_variables if name.endswith(":BACT") + ) + + with pytest.raises(ReadOnlyError, match="is read-only"): + model.set({bact_pv: 0.0}) + + def test_cu_hxr_screen(self): + model = get_cu_hxr_cheetah_model() + + image_pv = next( + name + for name in model.supported_variables + if name.endswith(":Image:ArrayData") + ) + image = np.asarray(model.get(image_pv)) + assert image.ndim == 2 + assert image.size > 0 + + control_pv = next( + name + for name, variable in model.supported_variables.items() + if name.endswith(":BCTRL") and not getattr(variable, "read_only", True) + ) + current_value = float(model.get(control_pv)) + target_value = current_value + 0.001 + model.set({control_pv: target_value}) + assert np.isclose(float(model.get(control_pv)), target_value) + + updated_image = np.asarray(model.get(image_pv)) + assert updated_image.shape == image.shape + assert np.isfinite(updated_image).all() + + def test_cu_hxr_screen_resolution_matches_yaml_and_expected_range(self): + screen_config = _load_cu_hxr_screen_config() + + model = get_cu_hxr_cheetah_model() + + resolution_pv, expected_resolution = next( + ( + f"{config_entry['name']}:RESOLUTION", + float(config_entry["pixel_size"]), + ) + for config_entry in screen_config.values() + if f"{config_entry['name']}:RESOLUTION" in model.supported_variables + ) + + resolution = float(model.get(resolution_pv)) + assert np.isclose(resolution, expected_resolution) + assert 5.0 < resolution < 30.0 + + def test_quadrupole_pvs_have_expected_suffixes(self): + model = get_cu_hxr_cheetah_model() + + expected_suffixes = { + "BCTRL", + "BACT", + "BDES", + "BMIN", + "BMAX", + "STATCTRLSUB.T", + "CTRL", + } + + quadrupole_control_pvs = [ + name + for name in model.supported_variables + if name.startswith("QUAD:") and name.endswith(":BCTRL") + ] + assert quadrupole_control_pvs + + for control_pv in quadrupole_control_pvs: + base_pv = control_pv.rsplit(":", 1)[0] + for suffix in expected_suffixes: + assert f"{base_pv}:{suffix}" in model.supported_variables + + def test_bpm_pvs_have_expected_suffixes(self): + model = get_cu_hxr_cheetah_model() + + bpm_x_pvs = [ + name + for name in model.supported_variables + if name.startswith("BPMS:") and name.endswith(":X") + ] + assert bpm_x_pvs + + for x_pv in bpm_x_pvs: + base_pv = x_pv.rsplit(":", 1)[0] + assert f"{base_pv}:Y" in model.supported_variables + assert f"{base_pv}:TMIT" in model.supported_variables + + def test_roundtrip_pv_get_set(self): + model = get_cu_hxr_cheetah_model() + assert_roundtrip_pv_get_set(model) \ No newline at end of file diff --git a/virtual_accelerator/tests/test_facet.py b/virtual_accelerator/tests/test_facet.py index 8419d99..500ba18 100644 --- a/virtual_accelerator/tests/test_facet.py +++ b/virtual_accelerator/tests/test_facet.py @@ -173,21 +173,10 @@ def test_staged_model(self): ) assert screen_pv in staged_model.supported_variables - def test_quadrupole_pvs_match_tao_lattice(self): + @pytest.mark.parametrize("element_type", ["Quadrupole", "HKicker", "VKicker", "SBend"]) + def test_magnet_pvs_match_tao_lattice(self, element_type): model = get_facet_bmad_model(end_element="PR10711") - assert_magnet_pvs_match_tao_lattice(model, "Quadrupole") - - def test_hkicker_pvs_match_tao_lattice(self): - model = get_facet_bmad_model(end_element="PR10711") - assert_magnet_pvs_match_tao_lattice(model, "HKicker") - - def test_vkicker_pvs_match_tao_lattice(self): - model = get_facet_bmad_model(end_element="PR10711") - assert_magnet_pvs_match_tao_lattice(model, "VKicker") - - def test_sbend_pvs_match_tao_lattice(self): - model = get_facet_bmad_model(end_element="PR10711") - assert_magnet_pvs_match_tao_lattice(model, "SBend") + assert_magnet_pvs_match_tao_lattice(model, element_type) def test_bpm_pvs_match_tao_lattice(self): model = get_facet_bmad_model(end_element="PR10711") From 8d2184dd2da699e69a29b3bac2cd9e7323a3d2af Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 22:01:10 -0500 Subject: [PATCH 04/16] update imports --- virtual_accelerator/models/cu_hxr.py | 57 ++++++---------------------- 1 file changed, 11 insertions(+), 46 deletions(-) diff --git a/virtual_accelerator/models/cu_hxr.py b/virtual_accelerator/models/cu_hxr.py index 4d6725d..9c4903b 100644 --- a/virtual_accelerator/models/cu_hxr.py +++ b/virtual_accelerator/models/cu_hxr.py @@ -1,10 +1,6 @@ import os from lume.staged_model import StagedModel -from virtual_accelerator.utils.optional_dependencies import ( - import_optional, - import_optional_symbol, -) def get_cu_hxr_bmad_model( @@ -96,50 +92,19 @@ def get_cu_hxr_staged_model(n_particles: int = 1000, **kwargs) -> StagedModel: def get_cu_hxr_cheetah_model(): """ - Get the LUMECheetahModel for the CU_HXR lattice from GUN to OTR2. + Get the LUMECheetahModel for the CU_HXR lattice. Returns ------- LUMECheetahModel Instance of the LUMECheetahModel for the CU_HXR lattice. """ - LUMECheetahModel = import_optional_symbol( - "lume_cheetah", - "LUMECheetahModel", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - CheetahSimulator = import_optional_symbol( - "lume_cheetah", - "CheetahSimulator", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - Segment = import_optional_symbol( - "cheetah.accelerator", - "Segment", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - ParticleBeam = import_optional_symbol( - "cheetah.particles", - "ParticleBeam", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - get_variables_from_segment = import_optional_symbol( - "virtual_accelerator.cheetah.variables", - "get_variables_from_segment", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - get_mad_control_mapping = import_optional_symbol( - "virtual_accelerator.cheetah.utils", - "get_mad_control_mapping", - feature="CU HXR Cheetah model", - extra="cheetah", - ) - torch = import_optional("torch", feature="CU HXR Cheetah model", extra="cheetah") + import torch + from cheetah.accelerator import Segment + from cheetah.particles import ParticleBeam + from lume_cheetah import LUMECheetahModel, CheetahSimulator + from virtual_accelerator.cheetah.utils import get_mad_control_mapping + from virtual_accelerator.cheetah.variables import get_variables_from_segment # Get path to beam distributions # beam_dist = os.environ.get( @@ -171,9 +136,6 @@ def get_cu_hxr_cheetah_model(): os.path.join(lcls_lattice, "cheetah/nc_hxr.json") ) - # Set end destination from full lattice - segment = segment.subcell(end="otr2") - # Define the simulator using lattice and particle beam simulator = CheetahSimulator( segment=segment, @@ -191,6 +153,9 @@ def get_cu_hxr_cheetah_model(): variables = get_variables_from_segment(segment, element_name_to_control_name) # Create model using action-based variable integration. - model = LUMECheetahModel(simulator=simulator, action_variables=list(variables.values())) + model = LUMECheetahModel( + simulator=simulator, + action_variables=list(variables.values()), + ) return model \ No newline at end of file From 7b24956b54c7d27fa297040a5df07c56bb859bf3 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 22:23:47 -0500 Subject: [PATCH 05/16] skip aperatures add n_particles argument --- virtual_accelerator/cheetah/variables.py | 18 +++++++++++++++++- virtual_accelerator/models/cu_hxr.py | 4 ++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 5419483..edef6df 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -14,7 +14,21 @@ ) -SKIPPED_ELEMENT_TYPES = {"Drift", "Marker", "Cavity", "Undulator", "Dipole"} +SKIPPED_ELEMENT_TYPES = { + "Drift", + "Marker", + "Cavity", + "Undulator", + "Dipole", + "Aperture", +} + +# Some helper correctors in the CU HXR Cheetah lattice are intentionally +# unmapped to controls and should be silently skipped when no device mapping exists. +SKIPPED_UNMAPPED_ELEMENT_TYPES = { + "HorizontalCorrector", + "VerticalCorrector", +} # Element-type aliases bridge Cheetah runtime names to SLAC config keys. ELEMENT_TYPE_ALIASES = { @@ -176,6 +190,8 @@ def get_variables_from_segment( control_name = _resolve_control_name(element.name, device_mapping) if control_name is None: + if element_type in SKIPPED_UNMAPPED_ELEMENT_TYPES: + continue warnings.warn(f"Element {element.name} not found in device mapping") continue diff --git a/virtual_accelerator/models/cu_hxr.py b/virtual_accelerator/models/cu_hxr.py index 9c4903b..a73c1d0 100644 --- a/virtual_accelerator/models/cu_hxr.py +++ b/virtual_accelerator/models/cu_hxr.py @@ -90,7 +90,7 @@ def get_cu_hxr_staged_model(n_particles: int = 1000, **kwargs) -> StagedModel: return staged_model -def get_cu_hxr_cheetah_model(): +def get_cu_hxr_cheetah_model(n_particles: int = 1000) -> "LUMECheetahModel": """ Get the LUMECheetahModel for the CU_HXR lattice. @@ -121,7 +121,7 @@ def get_cu_hxr_cheetah_model(): beta_y=torch.tensor(9.34), alpha_y=torch.tensor(-1.6946), emittance_y=torch.tensor(1e-7), - num_particles=1000, + num_particles=n_particles, energy=torch.tensor(90e6), ) incoming_beam.particle_charges = torch.tensor(1.0) From 07f0de6160d168148c39a02882267d33aa258a70 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Sat, 11 Jul 2026 22:24:02 -0500 Subject: [PATCH 06/16] Update cheetah_model_example.ipynb --- examples/cheetah_model_example.ipynb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/examples/cheetah_model_example.ipynb b/examples/cheetah_model_example.ipynb index df0b9ce..dd3737d 100644 --- a/examples/cheetah_model_example.ipynb +++ b/examples/cheetah_model_example.ipynb @@ -18,7 +18,7 @@ "metadata": {}, "outputs": [], "source": [ - "model = get_cu_hxr_cheetah_model()" + "model = get_cu_hxr_cheetah_model(n_particles=100000)" ] }, { @@ -60,13 +60,9 @@ "outputs": [], "source": [ "# get beam distribution on OTR screen\n", - "info = model.get(\n", - " [\n", - " \"OTRS:IN20:571:Image:ArrayData\",\n", - " ]\n", - ")\n", + "info = model.get(\"OTRS:IN20:571:Image:ArrayData\")\n", "fig, ax = plt.subplots()\n", - "ax.imshow(info[\"OTRS:IN20:571:Image:ArrayData\"])" + "ax.imshow(info)" ] }, { @@ -80,6 +76,14 @@ "model.reset()\n", "model.get(vars)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "187f625f", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -98,7 +102,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.14.3" + "version": "3.13.13" } }, "nbformat": 4, From 22e1020cc1fa20977c1e6127cd78a68d6ef756c4 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Mon, 13 Jul 2026 14:05:21 -0500 Subject: [PATCH 07/16] update variables --- virtual_accelerator/cheetah/actions.py | 289 ++++-------------- virtual_accelerator/cheetah/variables.py | 5 +- .../tests/test_cheetah_actions.py | 68 ----- 3 files changed, 55 insertions(+), 307 deletions(-) diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index f42e5ee..bd65029 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -7,9 +7,15 @@ from typing import Any -from lume.actions import ReadOnlyActionMixin, WritableActionMixin +from lume_cheetah.actions import ( + CheetahReadOnlyEnumVariable, + CheetahReadOnlyNDVariable, + CheetahReadOnlyScalarVariable, + CheetahWritableScalarVariable, +) +from lume_torch.variables import TorchScalarVariable +from lume.actions import ReadOnlyActionMixin from lume.variables import EnumVariable -from lume_torch.variables import TorchNDVariable, TorchScalarVariable BCTRL_LIMIT = 100.0 @@ -20,183 +26,34 @@ def get_magnetic_rigidity(energy): return 33.356 * energy / 1e9 -def _normalize_element_name(name: str) -> str: - """Return normalized element name used for split-element matching.""" - return name.split("#")[0].upper() - - -def _as_element_list(element: Any) -> list[Any]: - """Return a uniform list representation for single or split elements.""" - if isinstance(element, list): - return element - return [element] - - -def _resolve_segment_element(segment, element_name: str): - """Resolve a segment element by logical name. - - Returns a list when multiple split elements match the same logical name. - """ - target = element_name.upper() - exact_matches = [element for element in segment.elements if element.name.upper() == target] - if exact_matches: - return exact_matches[0] - - normalized_target = _normalize_element_name(element_name) - normalized_matches = [ - element - for element in segment.elements - if _normalize_element_name(element.name) == normalized_target - ] - - if not normalized_matches: - raise ValueError(f"Element {element_name!r} not found in Cheetah segment") - - if len(normalized_matches) == 1: - return normalized_matches[0] - - return normalized_matches - - -def _resolve_energy(simulator, element: Any): - """Resolve beam energy for a single element or split-element list.""" - candidate_names = [subelement.name for subelement in _as_element_list(element)] - - for name in candidate_names: - if name in simulator.energies: - return simulator.energies[name] - - normalized_target = _normalize_element_name(candidate_names[0]) - for name, energy in simulator.energies.items(): - if _normalize_element_name(name) == normalized_target: - return energy - - raise ValueError( - f"No beam energy found for element {candidate_names[0]!r} in simulator energies" - ) - - -class _CheetahElementAccessMixin: - """Shared element/energy resolution and direct attribute helpers.""" - - element_name: str - pv_attribute: str - - @staticmethod - def _elements(element: Any) -> list[Any]: - return _as_element_list(element) - - @staticmethod - def _primary_element(element: Any) -> Any: - return _as_element_list(element)[0] - - def _resolve_element_and_energy(self, simulator): - """Resolve target element object(s) and matching beam energy.""" - element = _resolve_segment_element(simulator.segment, self.element_name) - energy = _resolve_energy(simulator, element) - return element, energy - - def _get_direct_attribute(self, simulator, attribute_name: str): - """Read a direct element attribute from the first resolved element.""" - element, _ = self._resolve_element_and_energy(simulator) - return getattr(self._primary_element(element), attribute_name) - - def _set_direct_attribute(self, simulator, attribute_name: str, value): - """Set a direct element attribute on all resolved split elements.""" - element, _ = self._resolve_element_and_energy(simulator) - for subelement in self._elements(element): - setattr(subelement, attribute_name, value) - - -class CheetahScalarVariable(_CheetahElementAccessMixin, TorchScalarVariable): - """Base scalar action variable for Cheetah-backed PVs.""" - - element_name: str - pv_attribute: str - - -class CheetahNDVariable(_CheetahElementAccessMixin, TorchNDVariable): - """Base array-valued action variable for Cheetah-backed PVs.""" - - element_name: str - pv_attribute: str - - -class CheetahEnumVariable(_CheetahElementAccessMixin, EnumVariable): - """Base enum action variable for Cheetah-backed PVs.""" - - element_name: str - pv_attribute: str - - -class _ReadOnlyFromImplementationMixin(ReadOnlyActionMixin): - """Read-only behavior mixin that delegates `_get` to class implementations.""" +class _ReadbackFromControlMixin(ReadOnlyActionMixin): + """Read-only mixin for readbacks that reuse control `_get` logic.""" read_only: bool = True def _get(self, simulator): + # Skip ReadOnlyActionMixin's abstract _get and delegate to the next base. return super(ReadOnlyActionMixin, self)._get(simulator) def _set(self, simulator, value) -> None: raise RuntimeError(f"{self.name} is read-only") -class _ReadbackFromControlMixin(_ReadOnlyFromImplementationMixin): - """Read-only mixin for readback variables sharing control `_get` logic.""" - - -class CheetahWritableScalarVariable(CheetahScalarVariable, WritableActionMixin): - """Writable scalar action variable base.""" - - read_only: bool = False - - -class CheetahReadOnlyScalarVariable( - _ReadOnlyFromImplementationMixin, CheetahScalarVariable -): - """Read-only scalar action variable base.""" - - -class CheetahWritableNDVariable(CheetahNDVariable, WritableActionMixin): - """Writable array action variable base.""" - - read_only: bool = False - - -class CheetahReadOnlyNDVariable(_ReadOnlyFromImplementationMixin, CheetahNDVariable): - """Read-only array action variable base.""" - - -class CheetahWritableEnumVariable(CheetahEnumVariable, WritableActionMixin): - """Writable enum action variable base.""" - - read_only: bool = False - - -class CheetahReadOnlyEnumVariable( - _ReadOnlyFromImplementationMixin, CheetahEnumVariable -): - """Read-only enum action variable base.""" - class QuadrupoleBCTRLVariable(CheetahWritableScalarVariable): """Quadrupole control/desired magnetic strength (BCTRL/BDES) in kG.""" unit: str = "kG" + element_attribute: str = "k1" def _get(self, simulator): - element, energy = self._resolve_element_and_energy(simulator) - elements = self._elements(element) - total_length = sum(subelement.length for subelement in elements) - return elements[0].k1 * total_length * get_magnetic_rigidity(energy) + element, energy = self._resolve_element_and_energy(simulator, self.element_name) + return getattr(element, self.element_attribute) * element.length * get_magnetic_rigidity(energy) def _set(self, simulator, value): - element, energy = self._resolve_element_and_energy(simulator) - elements = self._elements(element) - total_length = sum(subelement.length for subelement in elements) - new_k1 = value / get_magnetic_rigidity(energy) / total_length - for subelement in elements: - subelement.k1 = new_k1 + element, energy = self._resolve_element_and_energy(simulator, self.element_name) + new_k1 = value / get_magnetic_rigidity(energy) / element.length + setattr(element, self.element_attribute, new_k1) class QuadrupoleBACTVariable(_ReadbackFromControlMixin, QuadrupoleBCTRLVariable): @@ -207,16 +64,16 @@ class SolenoidBCTRLVariable(CheetahWritableScalarVariable): """Solenoid control/desired field variable in kG-equivalent units.""" unit: str = "kG" + element_attribute: str = "k" def _get(self, simulator): - element, energy = self._resolve_element_and_energy(simulator) - return self._primary_element(element).k * get_magnetic_rigidity(energy) + element, energy = self._resolve_element_and_energy(simulator, self.element_name) + return getattr(element, self.element_attribute) * get_magnetic_rigidity(energy) def _set(self, simulator, value): - element, energy = self._resolve_element_and_energy(simulator) + element, energy = self._resolve_element_and_energy(simulator, self.element_name) new_k = value / get_magnetic_rigidity(energy) - for subelement in self._elements(element): - subelement.k = new_k + setattr(element, self.element_attribute, new_k) class SolenoidBACTVariable(_ReadbackFromControlMixin, SolenoidBCTRLVariable): @@ -229,7 +86,7 @@ class SBendBCTRLVariable(CheetahWritableScalarVariable): unit: str = "GeV/c" def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) + element, _ = self._resolve_element_and_energy(simulator, self.element_name) sbend = self._primary_element(element) if not all(hasattr(sbend, attr) for attr in ("g", "dg", "p0c")): @@ -243,7 +100,7 @@ def _get(self, simulator): return p * 1e-9 def _set(self, simulator, value): - element, _ = self._resolve_element_and_energy(simulator) + element, _ = self._resolve_element_and_energy(simulator, self.element_name) sbend = self._primary_element(element) if not all(hasattr(sbend, attr) for attr in ("g", "p0c")): @@ -263,45 +120,49 @@ class KickerBCTRLVariable(CheetahWritableScalarVariable): """Horizontal/vertical corrector control variable (BCTRL/BDES) in kG.""" unit: str = "kG" + element_attribute: str = "angle" def _get(self, simulator): - element, energy = self._resolve_element_and_energy(simulator) - return self._primary_element(element).angle * get_magnetic_rigidity(energy) + element, energy = self._resolve_element_and_energy(simulator, self.element_name) + return getattr(element, self.element_attribute) * get_magnetic_rigidity(energy) def _set(self, simulator, value): - element, energy = self._resolve_element_and_energy(simulator) + element, energy = self._resolve_element_and_energy(simulator, self.element_name) new_angle = value / get_magnetic_rigidity(energy) - for subelement in self._elements(element): - subelement.angle = new_angle + setattr(element, self.element_attribute, new_angle) class KickerBACTVariable(_ReadbackFromControlMixin, KickerBCTRLVariable): """Horizontal/vertical corrector readback variable (BACT) in kG.""" -class StatusVariable(CheetahReadOnlyScalarVariable): +class StatusVariable(TorchScalarVariable, ReadOnlyActionMixin): """Read-only device status scalar value.""" + element_name: str def _get(self, simulator): return 1.0 -class BminVariable(CheetahReadOnlyScalarVariable): +class BminVariable(TorchScalarVariable, ReadOnlyActionMixin): """Read-only lower operating limit variable for magnet-like devices.""" + element_name: str def _get(self, simulator): return -BCTRL_LIMIT -class BmaxVariable(CheetahReadOnlyScalarVariable): +class BmaxVariable(TorchScalarVariable, ReadOnlyActionMixin): """Read-only upper operating limit variable for magnet-like devices.""" + element_name: str def _get(self, simulator): return BCTRL_LIMIT -class ControlStateVariable(CheetahReadOnlyEnumVariable): +class ControlStateVariable(EnumVariable, ReadOnlyActionMixin): """Read-only high-level control state enum for magnet-like devices.""" + element_name: str options: list[str] = ["Ready", "TRIM", "PERTURB", "BCON_TO_BDES", "BACT_TO_BDES"] default_value: str = "Ready" @@ -314,24 +175,25 @@ class BPMXVariable(CheetahReadOnlyScalarVariable): """Read-only BPM X readout in millimeters.""" unit: str = "mm" + element_attribute: str = "reading" def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) - return self._primary_element(element).reading[0] + return super()._get(simulator)[0] class BPMYVariable(CheetahReadOnlyScalarVariable): """Read-only BPM Y readout in millimeters.""" unit: str = "mm" + element_attribute: str = "reading" def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) - return self._primary_element(element).reading[1] + return super()._get(simulator)[1] -class BPMTMITDummyVariable(CheetahReadOnlyScalarVariable): +class BPMTMITDummyVariable(TorchScalarVariable, ReadOnlyActionMixin): """Read-only placeholder BPM intensity variable for interface parity.""" + element_name: str unit: str = "arbitrary units" @@ -339,34 +201,6 @@ def _get(self, simulator): return 1.0 -class KlystronENLDVariable(CheetahWritableScalarVariable): - """Writable klystron amplitude-like variable in MeV.""" - - unit: str = "MeV" - - -class KlystronPDESVariable(CheetahWritableScalarVariable): - """Writable klystron phase setpoint in degrees.""" - - unit: str = "degrees" - - -class KlystronPACTVariable(CheetahReadOnlyScalarVariable): - """Read-only klystron phase readback in degrees.""" - - unit: str = "degrees" - - -class KlystronStatVariable(CheetahReadOnlyEnumVariable): - """Read-only klystron binary status enum.""" - - options: list[str] = ["0", "1"] - default_value: str = "0" - - def _get(self, simulator): - return "0" - - class CavityAREQVariable(CheetahWritableScalarVariable): """Writable cavity amplitude request variable in MV.""" @@ -385,8 +219,6 @@ class CavityAREQReadbackVariable(CheetahReadOnlyScalarVariable): unit: str = "MV" def _get(self, simulator): - if self.pv_attribute == "AMPL_W0CH0": - return 0.0 return self._get_direct_attribute(simulator, "voltage") @@ -408,8 +240,6 @@ class CavityPREQReadbackVariable(CheetahReadOnlyScalarVariable): unit: str = "degrees" def _get(self, simulator): - if self.pv_attribute == "PACT_AVGNT": - return 0.0 return self._get_direct_attribute(simulator, "phase") @@ -423,52 +253,39 @@ def _get(self, simulator): return "ACCEL_STDBY" -class DummyEnumVariable(CheetahReadOnlyEnumVariable): - """Read-only placeholder enum variable for unsupported controls.""" - - options: list[str] = ["0", "1"] - default_value: str = "0" - - def _get(self, simulator): - if self.pv_attribute == "RF_ENABLE": - return 1.0 - return 0.0 - - class ScreenImageVariable(CheetahReadOnlyNDVariable): """Read-only screen image array variable.""" + element_attribute: str = "reading" def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) - return self._primary_element(element).reading.T * 65535 + return super()._get(simulator).T * 65535 class ScreenImageArraySizeVariable(CheetahReadOnlyScalarVariable): """Read-only scalar for screen image dimension metadata values.""" + element_attribute: str = "resolution" + index: int def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) - screen = self._primary_element(element) - if self.pv_attribute in {"Image:ArraySize1_RBV", "N_OF_ROW"}: - return screen.resolution[0] - return screen.resolution[1] + return super()._get(simulator)[self.index] class ScreenResolutionVariable(CheetahReadOnlyScalarVariable): """Read-only scalar for screen pixel resolution in micrometers.""" + element_attribute: str = "pixel_size" unit: str = "um" def _get(self, simulator): - element, _ = self._resolve_element_and_energy(simulator) - return self._primary_element(element).pixel_size[0] * 1e6 + return super()._get(simulator)[0] * 1e6 class ScreenPneumaticVariable(CheetahWritableScalarVariable): """Writable scalar representing screen insertion/activation control.""" + element_attribute: str = "is_active" def _get(self, simulator): - return 1.0 if bool(self._get_direct_attribute(simulator, "is_active")) else 0.0 + return 1.0 if bool(super()._get(simulator)) else 0.0 def _set(self, simulator, value): - self._set_direct_attribute(simulator, "is_active", bool(value)) + super()._set(simulator, 1.0 if bool(value) else 0.0) diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index edef6df..965f62d 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -8,10 +8,10 @@ from typing import Any import warnings from lume.variables import Variable -from virtual_accelerator.cheetah import actions as cheetah_actions from virtual_accelerator.utils.variables import ( get_element_attr_mapping, ) +from virtual_accelerator.cheetah import actions as cheetah_actions SKIPPED_ELEMENT_TYPES = { @@ -129,10 +129,9 @@ def _instantiate_element_variables( init_kwargs = { "name": variable_name, "element_name": element_name, - "pv_attribute": attr, } - if issubclass(var_class, cheetah_actions.CheetahNDVariable): + if issubclass(var_class, cheetah_actions.CheetahReadOnlyNDVariable): init_kwargs["shape"] = image_shape or (1,) element_variables[variable_name] = var_class(**init_kwargs) diff --git a/virtual_accelerator/tests/test_cheetah_actions.py b/virtual_accelerator/tests/test_cheetah_actions.py index dbbd575..2a9a52f 100644 --- a/virtual_accelerator/tests/test_cheetah_actions.py +++ b/virtual_accelerator/tests/test_cheetah_actions.py @@ -97,71 +97,3 @@ def test_get_variables_from_segment_instantiates_actions(self): assert "QUAD:IN20:511:BACT" in variables assert isinstance(variables["QUAD:IN20:511:BCTRL"], QuadrupoleBCTRLVariable) assert isinstance(variables["QUAD:IN20:511:BACT"], QuadrupoleBACTVariable) - - def test_split_quadrupole_get_and_set(self): - segment = Segment( - [ - Quadrupole( - name="Q1#1", - length=torch.tensor(0.2), - k1=torch.tensor(1.0), - ), - Quadrupole( - name="Q1#2", - length=torch.tensor(0.3), - k1=torch.tensor(1.0), - ), - Drift(name="D1", length=torch.tensor(1.0)), - ] - ) - beam = ParticleBeam.from_twiss( - beta_x=torch.tensor(1.0), - beta_y=torch.tensor(1.0), - num_particles=256, - energy=torch.tensor(1e6), - ) - simulator = CheetahSimulator(segment=segment, initial_beam_distribution=beam) - - variable = QuadrupoleBCTRLVariable( - name="QUAD:IN20:511:BCTRL", - element_name="Q1", - pv_attribute="BCTRL", - ) - - initial_value = float(variable._get(simulator)) - expected_initial = 1.0 * 0.5 * 33.356 * 1e6 / 1e9 - assert math.isclose(initial_value, expected_initial, rel_tol=0.0, abs_tol=1e-8) - - variable._set(simulator, torch.tensor(0.06)) - - q1_k1_values = [element.k1 for element in simulator.segment.elements[:2]] - assert torch.equal(q1_k1_values[0], q1_k1_values[1]) - assert math.isclose(float(variable._get(simulator)), 0.06, rel_tol=0.0, abs_tol=1e-8) - - def test_split_quadrupole_variables_are_deduped_by_control_name(self): - segment = Segment( - [ - Quadrupole( - name="Q1#1", - length=torch.tensor(0.2), - k1=torch.tensor(1.0), - ), - Quadrupole( - name="Q1#2", - length=torch.tensor(0.3), - k1=torch.tensor(1.0), - ), - ] - ) - - variables = get_variables_from_segment( - segment, - device_mapping={"Q1": "QUAD:IN20:511"}, - element_attr_mapping={ - "Quadrupole": { - "BCTRL": "QuadrupoleBCTRLVariable", - } - }, - ) - - assert list(variables.keys()) == ["QUAD:IN20:511:BCTRL"] From d1616b3de749289bd237262b1e7d4dfa6796a9fd Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Mon, 13 Jul 2026 14:18:48 -0500 Subject: [PATCH 08/16] bugfixes --- examples/cheetah_model_example.ipynb | 3220 ++++++++++++++++- virtual_accelerator/cheetah/actions.py | 31 +- virtual_accelerator/cheetah/variables.py | 23 +- virtual_accelerator/models/cu_hxr.py | 4 +- .../tests/test_cheetah_actions.py | 4 +- virtual_accelerator/tests/test_cu_hxr.py | 2 +- virtual_accelerator/tests/test_facet.py | 4 +- 7 files changed, 3260 insertions(+), 28 deletions(-) diff --git a/examples/cheetah_model_example.ipynb b/examples/cheetah_model_example.ipynb index dd3737d..8134207 100644 --- a/examples/cheetah_model_example.ipynb +++ b/examples/cheetah_model_example.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "aeb55fa2", "metadata": {}, "outputs": [], @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "6313fc77", "metadata": {}, "outputs": [], @@ -31,10 +31,1021 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "062b9f09", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'SOLN:IN20:111:BCTRL': SolenoidBCTRLVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:111:BCTRL.DRVL': BminVariable(read_only=True, name='SOLN:IN20:111:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", + " 'SOLN:IN20:111:BCTRL.DRVH': BmaxVariable(read_only=True, name='SOLN:IN20:111:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", + " 'SOLN:IN20:111:BACT': SolenoidBACTVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:111:BDES': SolenoidBCTRLVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:111:BMIN': BminVariable(read_only=True, name='SOLN:IN20:111:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", + " 'SOLN:IN20:111:BMAX': BmaxVariable(read_only=True, name='SOLN:IN20:111:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", + " 'SOLN:IN20:111:STATCTRLSUB.T': StatusVariable(read_only=True, name='SOLN:IN20:111:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", + " 'SOLN:IN20:111:CTRL': ControlStateVariable(read_only=True, name='SOLN:IN20:111:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sol1bk'),\n", + " 'SOLN:IN20:121:BCTRL': SolenoidBCTRLVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:121:BCTRL.DRVL': BminVariable(read_only=True, name='SOLN:IN20:121:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", + " 'SOLN:IN20:121:BCTRL.DRVH': BmaxVariable(read_only=True, name='SOLN:IN20:121:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", + " 'SOLN:IN20:121:BACT': SolenoidBACTVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:121:BDES': SolenoidBCTRLVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'SOLN:IN20:121:BMIN': BminVariable(read_only=True, name='SOLN:IN20:121:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", + " 'SOLN:IN20:121:BMAX': BmaxVariable(read_only=True, name='SOLN:IN20:121:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", + " 'SOLN:IN20:121:STATCTRLSUB.T': StatusVariable(read_only=True, name='SOLN:IN20:121:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", + " 'SOLN:IN20:121:CTRL': ControlStateVariable(read_only=True, name='SOLN:IN20:121:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sol1'),\n", + " 'XCOR:IN20:221:BCTRL': KickerBCTRLVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:221:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:221:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", + " 'XCOR:IN20:221:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:221:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", + " 'XCOR:IN20:221:BACT': KickerBACTVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:221:BDES': KickerBCTRLVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:221:BMIN': BminVariable(read_only=True, name='XCOR:IN20:221:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", + " 'XCOR:IN20:221:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:221:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", + " 'XCOR:IN20:221:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:221:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", + " 'XCOR:IN20:221:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:221:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc01'),\n", + " 'YCOR:IN20:222:BCTRL': KickerBCTRLVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:222:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:222:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", + " 'YCOR:IN20:222:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:222:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", + " 'YCOR:IN20:222:BACT': KickerBACTVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:222:BDES': KickerBCTRLVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:222:BMIN': BminVariable(read_only=True, name='YCOR:IN20:222:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", + " 'YCOR:IN20:222:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:222:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", + " 'YCOR:IN20:222:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:222:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", + " 'YCOR:IN20:222:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:222:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc01'),\n", + " 'BPMS:IN20:221:X': BPMXVariable(element_name='bpm2', element_attribute='reading', name='BPMS:IN20:221:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:221:Y': BPMYVariable(element_name='bpm2', element_attribute='reading', name='BPMS:IN20:221:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:221:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:221:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm2'),\n", + " 'BPMS:IN20:235:X': BPMXVariable(element_name='bpm3', element_attribute='reading', name='BPMS:IN20:235:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:235:Y': BPMYVariable(element_name='bpm3', element_attribute='reading', name='BPMS:IN20:235:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:235:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:235:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm3'),\n", + " 'QUAD:IN20:361:BCTRL': QuadrupoleBCTRLVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:361:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:361:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", + " 'QUAD:IN20:361:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:361:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", + " 'QUAD:IN20:361:BACT': QuadrupoleBACTVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:361:BDES': QuadrupoleBCTRLVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:361:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:361:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", + " 'QUAD:IN20:361:BMIN': BminVariable(read_only=True, name='QUAD:IN20:361:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", + " 'QUAD:IN20:361:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:361:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", + " 'QUAD:IN20:361:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:361:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa01'),\n", + " 'QUAD:IN20:371:BCTRL': QuadrupoleBCTRLVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:371:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:371:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", + " 'QUAD:IN20:371:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:371:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", + " 'QUAD:IN20:371:BACT': QuadrupoleBACTVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:371:BDES': QuadrupoleBCTRLVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:371:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:371:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", + " 'QUAD:IN20:371:BMIN': BminVariable(read_only=True, name='QUAD:IN20:371:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", + " 'QUAD:IN20:371:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:371:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", + " 'QUAD:IN20:371:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:371:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa02'),\n", + " 'QUAD:IN20:425:BCTRL': QuadrupoleBCTRLVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:425:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:425:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", + " 'QUAD:IN20:425:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:425:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", + " 'QUAD:IN20:425:BACT': QuadrupoleBACTVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:425:BDES': QuadrupoleBCTRLVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:425:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:425:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", + " 'QUAD:IN20:425:BMIN': BminVariable(read_only=True, name='QUAD:IN20:425:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", + " 'QUAD:IN20:425:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:425:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", + " 'QUAD:IN20:425:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:425:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe01'),\n", + " 'QUAD:IN20:441:BCTRL': QuadrupoleBCTRLVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:441:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:441:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", + " 'QUAD:IN20:441:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:441:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", + " 'QUAD:IN20:441:BACT': QuadrupoleBACTVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:441:BDES': QuadrupoleBCTRLVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:441:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:441:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", + " 'QUAD:IN20:441:BMIN': BminVariable(read_only=True, name='QUAD:IN20:441:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", + " 'QUAD:IN20:441:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:441:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", + " 'QUAD:IN20:441:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:441:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe02'),\n", + " 'OTRS:IN20:465:Image:ArrayData': ScreenImageVariable(element_name='otrh1', element_attribute='reading', name='OTRS:IN20:465:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1040, 1392), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:465:PNEUMATIC': ScreenPneumaticVariable(element_name='otrh1', element_attribute='is_active', name='OTRS:IN20:465:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:465:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:465:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:465:RESOLUTION': ScreenResolutionVariable(element_name='otrh1', element_attribute='pixel_size', name='OTRS:IN20:465:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:465:IMAGE': ScreenImageVariable(element_name='otrh1', element_attribute='reading', name='OTRS:IN20:465:IMAGE', read_only=True, default_validation_config='none', shape=(1040, 1392), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:465:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:465:N_OF_COL': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:471:Image:ArrayData': ScreenImageVariable(element_name='otrh2', element_attribute='reading', name='OTRS:IN20:471:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:471:PNEUMATIC': ScreenPneumaticVariable(element_name='otrh2', element_attribute='is_active', name='OTRS:IN20:471:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:471:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:471:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:471:RESOLUTION': ScreenResolutionVariable(element_name='otrh2', element_attribute='pixel_size', name='OTRS:IN20:471:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:471:IMAGE': ScreenImageVariable(element_name='otrh2', element_attribute='reading', name='OTRS:IN20:471:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:471:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:471:N_OF_COL': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'QUAD:IN20:511:BCTRL': QuadrupoleBCTRLVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:511:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:511:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", + " 'QUAD:IN20:511:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:511:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", + " 'QUAD:IN20:511:BACT': QuadrupoleBACTVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:511:BDES': QuadrupoleBCTRLVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:511:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:511:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", + " 'QUAD:IN20:511:BMIN': BminVariable(read_only=True, name='QUAD:IN20:511:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", + " 'QUAD:IN20:511:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:511:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", + " 'QUAD:IN20:511:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:511:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe03'),\n", + " 'XCOR:IN20:521:BCTRL': KickerBCTRLVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:521:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:521:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", + " 'XCOR:IN20:521:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:521:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", + " 'XCOR:IN20:521:BACT': KickerBACTVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:521:BDES': KickerBCTRLVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:521:BMIN': BminVariable(read_only=True, name='XCOR:IN20:521:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", + " 'XCOR:IN20:521:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:521:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", + " 'XCOR:IN20:521:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:521:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", + " 'XCOR:IN20:521:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:521:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc07'),\n", + " 'YCOR:IN20:522:BCTRL': KickerBCTRLVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:522:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:522:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", + " 'YCOR:IN20:522:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:522:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", + " 'YCOR:IN20:522:BACT': KickerBACTVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:522:BDES': KickerBCTRLVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:522:BMIN': BminVariable(read_only=True, name='YCOR:IN20:522:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", + " 'YCOR:IN20:522:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:522:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", + " 'YCOR:IN20:522:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:522:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", + " 'YCOR:IN20:522:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:522:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc07'),\n", + " 'QUAD:IN20:525:BCTRL': QuadrupoleBCTRLVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:525:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:525:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", + " 'QUAD:IN20:525:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:525:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", + " 'QUAD:IN20:525:BACT': QuadrupoleBACTVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:525:BDES': QuadrupoleBCTRLVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:525:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:525:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", + " 'QUAD:IN20:525:BMIN': BminVariable(read_only=True, name='QUAD:IN20:525:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", + " 'QUAD:IN20:525:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:525:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", + " 'QUAD:IN20:525:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:525:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe04'),\n", + " 'OTRS:IN20:541:Image:ArrayData': ScreenImageVariable(element_name='otr1', element_attribute='reading', name='OTRS:IN20:541:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:541:PNEUMATIC': ScreenPneumaticVariable(element_name='otr1', element_attribute='is_active', name='OTRS:IN20:541:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:541:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:541:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:541:RESOLUTION': ScreenResolutionVariable(element_name='otr1', element_attribute='pixel_size', name='OTRS:IN20:541:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:541:IMAGE': ScreenImageVariable(element_name='otr1', element_attribute='reading', name='OTRS:IN20:541:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:541:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:541:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:571:Image:ArrayData': ScreenImageVariable(element_name='otr2', element_attribute='reading', name='OTRS:IN20:571:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:571:PNEUMATIC': ScreenPneumaticVariable(element_name='otr2', element_attribute='is_active', name='OTRS:IN20:571:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:571:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:571:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:571:RESOLUTION': ScreenResolutionVariable(element_name='otr2', element_attribute='pixel_size', name='OTRS:IN20:571:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:571:IMAGE': ScreenImageVariable(element_name='otr2', element_attribute='reading', name='OTRS:IN20:571:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:571:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:571:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'BPMS:IN20:581:X': BPMXVariable(element_name='bpm10', element_attribute='reading', name='BPMS:IN20:581:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:581:Y': BPMYVariable(element_name='bpm10', element_attribute='reading', name='BPMS:IN20:581:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:IN20:581:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:581:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm10'),\n", + " 'OTRS:IN20:621:Image:ArrayData': ScreenImageVariable(element_name='otr3', element_attribute='reading', name='OTRS:IN20:621:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:621:PNEUMATIC': ScreenPneumaticVariable(element_name='otr3', element_attribute='is_active', name='OTRS:IN20:621:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:621:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:621:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:621:RESOLUTION': ScreenResolutionVariable(element_name='otr3', element_attribute='pixel_size', name='OTRS:IN20:621:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:621:IMAGE': ScreenImageVariable(element_name='otr3', element_attribute='reading', name='OTRS:IN20:621:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:621:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:621:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'QUAD:IN20:631:BCTRL': QuadrupoleBCTRLVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:631:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:631:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", + " 'QUAD:IN20:631:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:631:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", + " 'QUAD:IN20:631:BACT': QuadrupoleBACTVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:631:BDES': QuadrupoleBCTRLVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:631:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:631:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", + " 'QUAD:IN20:631:BMIN': BminVariable(read_only=True, name='QUAD:IN20:631:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", + " 'QUAD:IN20:631:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:631:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", + " 'QUAD:IN20:631:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:631:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm01'),\n", + " 'XCOR:IN20:641:BCTRL': KickerBCTRLVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:641:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:641:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", + " 'XCOR:IN20:641:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:641:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", + " 'XCOR:IN20:641:BACT': KickerBACTVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:641:BDES': KickerBCTRLVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:641:BMIN': BminVariable(read_only=True, name='XCOR:IN20:641:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", + " 'XCOR:IN20:641:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:641:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", + " 'XCOR:IN20:641:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:641:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", + " 'XCOR:IN20:641:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:641:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc08'),\n", + " 'YCOR:IN20:642:BCTRL': KickerBCTRLVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:642:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:642:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", + " 'YCOR:IN20:642:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:642:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", + " 'YCOR:IN20:642:BACT': KickerBACTVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:642:BDES': KickerBCTRLVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:642:BMIN': BminVariable(read_only=True, name='YCOR:IN20:642:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", + " 'YCOR:IN20:642:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:642:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", + " 'YCOR:IN20:642:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:642:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", + " 'YCOR:IN20:642:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:642:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc08'),\n", + " 'QUAD:IN20:651:BCTRL': QuadrupoleBCTRLVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:651:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:651:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", + " 'QUAD:IN20:651:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:651:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", + " 'QUAD:IN20:651:BACT': QuadrupoleBACTVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:651:BDES': QuadrupoleBCTRLVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:651:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:651:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", + " 'QUAD:IN20:651:BMIN': BminVariable(read_only=True, name='QUAD:IN20:651:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", + " 'QUAD:IN20:651:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:651:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", + " 'QUAD:IN20:651:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:651:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm02'),\n", + " 'OTRS:IN20:711:Image:ArrayData': ScreenImageVariable(element_name='otr4', element_attribute='reading', name='OTRS:IN20:711:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:711:PNEUMATIC': ScreenPneumaticVariable(element_name='otr4', element_attribute='is_active', name='OTRS:IN20:711:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", + " 'OTRS:IN20:711:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:711:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'OTRS:IN20:711:RESOLUTION': ScreenResolutionVariable(element_name='otr4', element_attribute='pixel_size', name='OTRS:IN20:711:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", + " 'OTRS:IN20:711:IMAGE': ScreenImageVariable(element_name='otr4', element_attribute='reading', name='OTRS:IN20:711:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", + " 'OTRS:IN20:711:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", + " 'OTRS:IN20:711:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", + " 'XCOR:IN20:721:BCTRL': KickerBCTRLVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:721:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:721:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", + " 'XCOR:IN20:721:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:721:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", + " 'XCOR:IN20:721:BACT': KickerBACTVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:721:BDES': KickerBCTRLVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:721:BMIN': BminVariable(read_only=True, name='XCOR:IN20:721:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", + " 'XCOR:IN20:721:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:721:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", + " 'XCOR:IN20:721:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:721:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", + " 'XCOR:IN20:721:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:721:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc09'),\n", + " 'YCOR:IN20:722:BCTRL': KickerBCTRLVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:722:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:722:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", + " 'YCOR:IN20:722:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:722:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", + " 'YCOR:IN20:722:BACT': KickerBACTVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:722:BDES': KickerBCTRLVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:722:BMIN': BminVariable(read_only=True, name='YCOR:IN20:722:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", + " 'YCOR:IN20:722:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:722:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", + " 'YCOR:IN20:722:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:722:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", + " 'YCOR:IN20:722:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:722:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc09'),\n", + " 'QUAD:IN20:731:BCTRL': QuadrupoleBCTRLVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:731:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:731:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", + " 'QUAD:IN20:731:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:731:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", + " 'QUAD:IN20:731:BACT': QuadrupoleBACTVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:731:BDES': QuadrupoleBCTRLVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:731:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:731:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", + " 'QUAD:IN20:731:BMIN': BminVariable(read_only=True, name='QUAD:IN20:731:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", + " 'QUAD:IN20:731:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:731:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", + " 'QUAD:IN20:731:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:731:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qb'),\n", + " 'XCOR:IN20:761:BCTRL': KickerBCTRLVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:761:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:761:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", + " 'XCOR:IN20:761:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:761:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", + " 'XCOR:IN20:761:BACT': KickerBACTVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:761:BDES': KickerBCTRLVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:IN20:761:BMIN': BminVariable(read_only=True, name='XCOR:IN20:761:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", + " 'XCOR:IN20:761:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:761:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", + " 'XCOR:IN20:761:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:761:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", + " 'XCOR:IN20:761:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:761:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc10'),\n", + " 'YCOR:IN20:762:BCTRL': KickerBCTRLVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:762:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:762:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", + " 'YCOR:IN20:762:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:762:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", + " 'YCOR:IN20:762:BACT': KickerBACTVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:762:BDES': KickerBCTRLVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:IN20:762:BMIN': BminVariable(read_only=True, name='YCOR:IN20:762:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", + " 'YCOR:IN20:762:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:762:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", + " 'YCOR:IN20:762:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:762:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", + " 'YCOR:IN20:762:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:762:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc10'),\n", + " 'QUAD:IN20:771:BCTRL': QuadrupoleBCTRLVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:771:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:771:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", + " 'QUAD:IN20:771:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:771:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", + " 'QUAD:IN20:771:BACT': QuadrupoleBACTVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:771:BDES': QuadrupoleBCTRLVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:771:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:771:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", + " 'QUAD:IN20:771:BMIN': BminVariable(read_only=True, name='QUAD:IN20:771:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", + " 'QUAD:IN20:771:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:771:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", + " 'QUAD:IN20:771:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:771:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm03'),\n", + " 'QUAD:IN20:781:BCTRL': QuadrupoleBCTRLVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:781:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:781:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", + " 'QUAD:IN20:781:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:781:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", + " 'QUAD:IN20:781:BACT': QuadrupoleBACTVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:781:BDES': QuadrupoleBCTRLVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:IN20:781:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:781:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", + " 'QUAD:IN20:781:BMIN': BminVariable(read_only=True, name='QUAD:IN20:781:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", + " 'QUAD:IN20:781:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:781:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", + " 'QUAD:IN20:781:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:781:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm04'),\n", + " 'QUAD:LI21:131:BCTRL': QuadrupoleBCTRLVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:131:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:131:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", + " 'QUAD:LI21:131:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:131:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", + " 'QUAD:LI21:131:BACT': QuadrupoleBACTVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:131:BDES': QuadrupoleBCTRLVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:131:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:131:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", + " 'QUAD:LI21:131:BMIN': BminVariable(read_only=True, name='QUAD:LI21:131:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", + " 'QUAD:LI21:131:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:131:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", + " 'QUAD:LI21:131:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:131:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa11'),\n", + " 'QUAD:LI21:161:BCTRL': QuadrupoleBCTRLVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:161:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:161:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", + " 'QUAD:LI21:161:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:161:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", + " 'QUAD:LI21:161:BACT': QuadrupoleBACTVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:161:BDES': QuadrupoleBCTRLVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:161:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:161:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", + " 'QUAD:LI21:161:BMIN': BminVariable(read_only=True, name='QUAD:LI21:161:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", + " 'QUAD:LI21:161:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:161:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", + " 'QUAD:LI21:161:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:161:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa12'),\n", + " 'QUAD:LI21:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", + " 'QUAD:LI21:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", + " 'QUAD:LI21:201:BACT': QuadrupoleBACTVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:201:BDES': QuadrupoleBCTRLVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", + " 'QUAD:LI21:201:BMIN': BminVariable(read_only=True, name='QUAD:LI21:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", + " 'QUAD:LI21:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", + " 'QUAD:LI21:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21201'),\n", + " 'QUAD:LI21:211:BCTRL': QuadrupoleBCTRLVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:211:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:211:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", + " 'QUAD:LI21:211:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:211:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", + " 'QUAD:LI21:211:BACT': QuadrupoleBACTVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:211:BDES': QuadrupoleBCTRLVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:211:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:211:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", + " 'QUAD:LI21:211:BMIN': BminVariable(read_only=True, name='QUAD:LI21:211:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", + " 'QUAD:LI21:211:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:211:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", + " 'QUAD:LI21:211:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:211:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm11'),\n", + " 'QUAD:LI21:221:BCTRL': QuadrupoleBCTRLVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:221:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:221:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", + " 'QUAD:LI21:221:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:221:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", + " 'QUAD:LI21:221:BACT': QuadrupoleBACTVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:221:BDES': QuadrupoleBCTRLVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:221:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:221:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", + " 'QUAD:LI21:221:BMIN': BminVariable(read_only=True, name='QUAD:LI21:221:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", + " 'QUAD:LI21:221:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:221:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", + " 'QUAD:LI21:221:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:221:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq11'),\n", + " 'BPMS:LI21:233:X': BPMXVariable(element_name='bpms11', element_attribute='reading', name='BPMS:LI21:233:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:LI21:233:Y': BPMYVariable(element_name='bpms11', element_attribute='reading', name='BPMS:LI21:233:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:LI21:233:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:LI21:233:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpms11'),\n", + " 'QUAD:LI21:243:BCTRL': QuadrupoleBCTRLVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:243:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:243:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", + " 'QUAD:LI21:243:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:243:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", + " 'QUAD:LI21:243:BACT': QuadrupoleBACTVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:243:BDES': QuadrupoleBCTRLVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:243:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:243:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", + " 'QUAD:LI21:243:BMIN': BminVariable(read_only=True, name='QUAD:LI21:243:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", + " 'QUAD:LI21:243:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:243:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", + " 'QUAD:LI21:243:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:243:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sq13'),\n", + " 'QUAD:LI21:251:BCTRL': QuadrupoleBCTRLVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:251:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:251:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", + " 'QUAD:LI21:251:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:251:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", + " 'QUAD:LI21:251:BACT': QuadrupoleBACTVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:251:BDES': QuadrupoleBCTRLVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:251:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:251:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", + " 'QUAD:LI21:251:BMIN': BminVariable(read_only=True, name='QUAD:LI21:251:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", + " 'QUAD:LI21:251:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:251:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", + " 'QUAD:LI21:251:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:251:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq12'),\n", + " 'QUAD:LI21:271:BCTRL': QuadrupoleBCTRLVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:271:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:271:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", + " 'QUAD:LI21:271:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:271:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", + " 'QUAD:LI21:271:BACT': QuadrupoleBACTVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:271:BDES': QuadrupoleBCTRLVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:271:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:271:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", + " 'QUAD:LI21:271:BMIN': BminVariable(read_only=True, name='QUAD:LI21:271:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", + " 'QUAD:LI21:271:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:271:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", + " 'QUAD:LI21:271:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:271:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm12'),\n", + " 'QUAD:LI21:278:BCTRL': QuadrupoleBCTRLVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:278:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:278:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", + " 'QUAD:LI21:278:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:278:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", + " 'QUAD:LI21:278:BACT': QuadrupoleBACTVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:278:BDES': QuadrupoleBCTRLVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:278:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:278:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", + " 'QUAD:LI21:278:BMIN': BminVariable(read_only=True, name='QUAD:LI21:278:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", + " 'QUAD:LI21:278:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:278:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", + " 'QUAD:LI21:278:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:278:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm13'),\n", + " 'XCOR:LI21:275:BCTRL': KickerBCTRLVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:275:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:275:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", + " 'XCOR:LI21:275:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:275:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", + " 'XCOR:LI21:275:BACT': KickerBACTVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:275:BDES': KickerBCTRLVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:275:BMIN': BminVariable(read_only=True, name='XCOR:LI21:275:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", + " 'XCOR:LI21:275:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:275:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", + " 'XCOR:LI21:275:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:275:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", + " 'XCOR:LI21:275:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:275:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21275'),\n", + " 'YCOR:LI21:276:BCTRL': KickerBCTRLVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:276:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:276:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", + " 'YCOR:LI21:276:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:276:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", + " 'YCOR:LI21:276:BACT': KickerBACTVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:276:BDES': KickerBCTRLVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:276:BMIN': BminVariable(read_only=True, name='YCOR:LI21:276:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", + " 'YCOR:LI21:276:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:276:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", + " 'YCOR:LI21:276:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:276:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", + " 'YCOR:LI21:276:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:276:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21276'),\n", + " 'XCOR:LI21:302:BCTRL': KickerBCTRLVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:302:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:302:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", + " 'XCOR:LI21:302:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:302:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", + " 'XCOR:LI21:302:BACT': KickerBACTVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:302:BDES': KickerBCTRLVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:302:BMIN': BminVariable(read_only=True, name='XCOR:LI21:302:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", + " 'XCOR:LI21:302:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:302:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", + " 'XCOR:LI21:302:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:302:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", + " 'XCOR:LI21:302:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:302:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21302'),\n", + " 'YCOR:LI21:303:BCTRL': KickerBCTRLVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:303:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:303:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", + " 'YCOR:LI21:303:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:303:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", + " 'YCOR:LI21:303:BACT': KickerBACTVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:303:BDES': KickerBCTRLVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:303:BMIN': BminVariable(read_only=True, name='YCOR:LI21:303:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", + " 'YCOR:LI21:303:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:303:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", + " 'YCOR:LI21:303:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:303:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", + " 'YCOR:LI21:303:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:303:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21303'),\n", + " 'QUAD:LI21:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", + " 'QUAD:LI21:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", + " 'QUAD:LI21:301:BACT': QuadrupoleBACTVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:301:BDES': QuadrupoleBCTRLVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", + " 'QUAD:LI21:301:BMIN': BminVariable(read_only=True, name='QUAD:LI21:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", + " 'QUAD:LI21:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", + " 'QUAD:LI21:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21301'),\n", + " 'QUAD:LI21:315:BCTRL': QuadrupoleBCTRLVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:315:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:315:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", + " 'QUAD:LI21:315:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:315:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", + " 'QUAD:LI21:315:BACT': QuadrupoleBACTVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:315:BDES': QuadrupoleBCTRLVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:315:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:315:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", + " 'QUAD:LI21:315:BMIN': BminVariable(read_only=True, name='QUAD:LI21:315:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", + " 'QUAD:LI21:315:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:315:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", + " 'QUAD:LI21:315:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:315:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm14'),\n", + " 'XCOR:LI21:325:BCTRL': KickerBCTRLVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:325:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:325:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", + " 'XCOR:LI21:325:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:325:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", + " 'XCOR:LI21:325:BACT': KickerBACTVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:325:BDES': KickerBCTRLVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'XCOR:LI21:325:BMIN': BminVariable(read_only=True, name='XCOR:LI21:325:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", + " 'XCOR:LI21:325:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:325:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", + " 'XCOR:LI21:325:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:325:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", + " 'XCOR:LI21:325:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:325:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21325'),\n", + " 'YCOR:LI21:325:BCTRL': KickerBCTRLVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:325:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:325:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", + " 'YCOR:LI21:325:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:325:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", + " 'YCOR:LI21:325:BACT': KickerBACTVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:325:BDES': KickerBCTRLVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'YCOR:LI21:325:BMIN': BminVariable(read_only=True, name='YCOR:LI21:325:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", + " 'YCOR:LI21:325:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:325:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", + " 'YCOR:LI21:325:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:325:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", + " 'YCOR:LI21:325:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:325:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21325'),\n", + " 'QUAD:LI21:335:BCTRL': QuadrupoleBCTRLVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:335:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:335:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", + " 'QUAD:LI21:335:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:335:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", + " 'QUAD:LI21:335:BACT': QuadrupoleBACTVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:335:BDES': QuadrupoleBCTRLVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:335:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:335:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", + " 'QUAD:LI21:335:BMIN': BminVariable(read_only=True, name='QUAD:LI21:335:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", + " 'QUAD:LI21:335:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:335:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", + " 'QUAD:LI21:335:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:335:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm15'),\n", + " 'QUAD:LI21:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", + " 'QUAD:LI21:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", + " 'QUAD:LI21:401:BACT': QuadrupoleBACTVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:401:BDES': QuadrupoleBCTRLVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", + " 'QUAD:LI21:401:BMIN': BminVariable(read_only=True, name='QUAD:LI21:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", + " 'QUAD:LI21:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", + " 'QUAD:LI21:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21401'),\n", + " 'QUAD:LI21:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", + " 'QUAD:LI21:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", + " 'QUAD:LI21:501:BACT': QuadrupoleBACTVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:501:BDES': QuadrupoleBCTRLVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", + " 'QUAD:LI21:501:BMIN': BminVariable(read_only=True, name='QUAD:LI21:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", + " 'QUAD:LI21:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", + " 'QUAD:LI21:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21501'),\n", + " 'QUAD:LI21:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", + " 'QUAD:LI21:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", + " 'QUAD:LI21:601:BACT': QuadrupoleBACTVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:601:BDES': QuadrupoleBCTRLVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", + " 'QUAD:LI21:601:BMIN': BminVariable(read_only=True, name='QUAD:LI21:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", + " 'QUAD:LI21:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", + " 'QUAD:LI21:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21601'),\n", + " 'QUAD:LI21:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", + " 'QUAD:LI21:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", + " 'QUAD:LI21:701:BACT': QuadrupoleBACTVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:701:BDES': QuadrupoleBCTRLVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", + " 'QUAD:LI21:701:BMIN': BminVariable(read_only=True, name='QUAD:LI21:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", + " 'QUAD:LI21:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", + " 'QUAD:LI21:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21701'),\n", + " 'QUAD:LI21:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", + " 'QUAD:LI21:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", + " 'QUAD:LI21:801:BACT': QuadrupoleBACTVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:801:BDES': QuadrupoleBCTRLVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", + " 'QUAD:LI21:801:BMIN': BminVariable(read_only=True, name='QUAD:LI21:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", + " 'QUAD:LI21:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", + " 'QUAD:LI21:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21801'),\n", + " 'QUAD:LI21:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", + " 'QUAD:LI21:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", + " 'QUAD:LI21:901:BACT': QuadrupoleBACTVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:901:BDES': QuadrupoleBCTRLVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI21:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", + " 'QUAD:LI21:901:BMIN': BminVariable(read_only=True, name='QUAD:LI21:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", + " 'QUAD:LI21:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", + " 'QUAD:LI21:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21901'),\n", + " 'QUAD:LI22:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", + " 'QUAD:LI22:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", + " 'QUAD:LI22:201:BACT': QuadrupoleBACTVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:201:BDES': QuadrupoleBCTRLVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", + " 'QUAD:LI22:201:BMIN': BminVariable(read_only=True, name='QUAD:LI22:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", + " 'QUAD:LI22:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", + " 'QUAD:LI22:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22201'),\n", + " 'QUAD:LI22:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", + " 'QUAD:LI22:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", + " 'QUAD:LI22:301:BACT': QuadrupoleBACTVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:301:BDES': QuadrupoleBCTRLVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", + " 'QUAD:LI22:301:BMIN': BminVariable(read_only=True, name='QUAD:LI22:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", + " 'QUAD:LI22:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", + " 'QUAD:LI22:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22301'),\n", + " 'QUAD:LI22:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", + " 'QUAD:LI22:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", + " 'QUAD:LI22:401:BACT': QuadrupoleBACTVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:401:BDES': QuadrupoleBCTRLVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", + " 'QUAD:LI22:401:BMIN': BminVariable(read_only=True, name='QUAD:LI22:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", + " 'QUAD:LI22:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", + " 'QUAD:LI22:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22401'),\n", + " 'QUAD:LI22:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", + " 'QUAD:LI22:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", + " 'QUAD:LI22:501:BACT': QuadrupoleBACTVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:501:BDES': QuadrupoleBCTRLVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", + " 'QUAD:LI22:501:BMIN': BminVariable(read_only=True, name='QUAD:LI22:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", + " 'QUAD:LI22:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", + " 'QUAD:LI22:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22501'),\n", + " 'QUAD:LI22:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", + " 'QUAD:LI22:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", + " 'QUAD:LI22:601:BACT': QuadrupoleBACTVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:601:BDES': QuadrupoleBCTRLVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", + " 'QUAD:LI22:601:BMIN': BminVariable(read_only=True, name='QUAD:LI22:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", + " 'QUAD:LI22:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", + " 'QUAD:LI22:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22601'),\n", + " 'QUAD:LI22:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", + " 'QUAD:LI22:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", + " 'QUAD:LI22:701:BACT': QuadrupoleBACTVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:701:BDES': QuadrupoleBCTRLVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", + " 'QUAD:LI22:701:BMIN': BminVariable(read_only=True, name='QUAD:LI22:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", + " 'QUAD:LI22:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", + " 'QUAD:LI22:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22701'),\n", + " 'QUAD:LI22:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", + " 'QUAD:LI22:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", + " 'QUAD:LI22:801:BACT': QuadrupoleBACTVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:801:BDES': QuadrupoleBCTRLVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", + " 'QUAD:LI22:801:BMIN': BminVariable(read_only=True, name='QUAD:LI22:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", + " 'QUAD:LI22:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", + " 'QUAD:LI22:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22801'),\n", + " 'QUAD:LI22:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", + " 'QUAD:LI22:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", + " 'QUAD:LI22:901:BACT': QuadrupoleBACTVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:901:BDES': QuadrupoleBCTRLVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI22:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", + " 'QUAD:LI22:901:BMIN': BminVariable(read_only=True, name='QUAD:LI22:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", + " 'QUAD:LI22:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", + " 'QUAD:LI22:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22901'),\n", + " 'QUAD:LI23:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", + " 'QUAD:LI23:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", + " 'QUAD:LI23:201:BACT': QuadrupoleBACTVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:201:BDES': QuadrupoleBCTRLVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", + " 'QUAD:LI23:201:BMIN': BminVariable(read_only=True, name='QUAD:LI23:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", + " 'QUAD:LI23:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", + " 'QUAD:LI23:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23201'),\n", + " 'QUAD:LI23:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", + " 'QUAD:LI23:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", + " 'QUAD:LI23:301:BACT': QuadrupoleBACTVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:301:BDES': QuadrupoleBCTRLVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", + " 'QUAD:LI23:301:BMIN': BminVariable(read_only=True, name='QUAD:LI23:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", + " 'QUAD:LI23:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", + " 'QUAD:LI23:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23301'),\n", + " 'QUAD:LI23:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", + " 'QUAD:LI23:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", + " 'QUAD:LI23:401:BACT': QuadrupoleBACTVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:401:BDES': QuadrupoleBCTRLVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", + " 'QUAD:LI23:401:BMIN': BminVariable(read_only=True, name='QUAD:LI23:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", + " 'QUAD:LI23:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", + " 'QUAD:LI23:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23401'),\n", + " 'QUAD:LI23:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", + " 'QUAD:LI23:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", + " 'QUAD:LI23:501:BACT': QuadrupoleBACTVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:501:BDES': QuadrupoleBCTRLVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", + " 'QUAD:LI23:501:BMIN': BminVariable(read_only=True, name='QUAD:LI23:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", + " 'QUAD:LI23:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", + " 'QUAD:LI23:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23501'),\n", + " 'QUAD:LI23:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", + " 'QUAD:LI23:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", + " 'QUAD:LI23:601:BACT': QuadrupoleBACTVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:601:BDES': QuadrupoleBCTRLVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", + " 'QUAD:LI23:601:BMIN': BminVariable(read_only=True, name='QUAD:LI23:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", + " 'QUAD:LI23:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", + " 'QUAD:LI23:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23601'),\n", + " 'QUAD:LI23:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", + " 'QUAD:LI23:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", + " 'QUAD:LI23:701:BACT': QuadrupoleBACTVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:701:BDES': QuadrupoleBCTRLVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", + " 'QUAD:LI23:701:BMIN': BminVariable(read_only=True, name='QUAD:LI23:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", + " 'QUAD:LI23:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", + " 'QUAD:LI23:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23701'),\n", + " 'QUAD:LI23:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", + " 'QUAD:LI23:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", + " 'QUAD:LI23:801:BACT': QuadrupoleBACTVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:801:BDES': QuadrupoleBCTRLVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", + " 'QUAD:LI23:801:BMIN': BminVariable(read_only=True, name='QUAD:LI23:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", + " 'QUAD:LI23:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", + " 'QUAD:LI23:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23801'),\n", + " 'QUAD:LI23:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", + " 'QUAD:LI23:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", + " 'QUAD:LI23:901:BACT': QuadrupoleBACTVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:901:BDES': QuadrupoleBCTRLVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI23:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", + " 'QUAD:LI23:901:BMIN': BminVariable(read_only=True, name='QUAD:LI23:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", + " 'QUAD:LI23:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", + " 'QUAD:LI23:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23901'),\n", + " 'QUAD:LI24:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", + " 'QUAD:LI24:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", + " 'QUAD:LI24:201:BACT': QuadrupoleBACTVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:201:BDES': QuadrupoleBCTRLVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", + " 'QUAD:LI24:201:BMIN': BminVariable(read_only=True, name='QUAD:LI24:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", + " 'QUAD:LI24:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", + " 'QUAD:LI24:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24201'),\n", + " 'QUAD:LI24:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", + " 'QUAD:LI24:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", + " 'QUAD:LI24:301:BACT': QuadrupoleBACTVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:301:BDES': QuadrupoleBCTRLVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", + " 'QUAD:LI24:301:BMIN': BminVariable(read_only=True, name='QUAD:LI24:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", + " 'QUAD:LI24:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", + " 'QUAD:LI24:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24301'),\n", + " 'QUAD:LI24:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", + " 'QUAD:LI24:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", + " 'QUAD:LI24:401:BACT': QuadrupoleBACTVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:401:BDES': QuadrupoleBCTRLVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", + " 'QUAD:LI24:401:BMIN': BminVariable(read_only=True, name='QUAD:LI24:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", + " 'QUAD:LI24:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", + " 'QUAD:LI24:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24401'),\n", + " 'QUAD:LI24:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", + " 'QUAD:LI24:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", + " 'QUAD:LI24:501:BACT': QuadrupoleBACTVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:501:BDES': QuadrupoleBCTRLVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", + " 'QUAD:LI24:501:BMIN': BminVariable(read_only=True, name='QUAD:LI24:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", + " 'QUAD:LI24:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", + " 'QUAD:LI24:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24501'),\n", + " 'QUAD:LI24:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", + " 'QUAD:LI24:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", + " 'QUAD:LI24:601:BACT': QuadrupoleBACTVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:601:BDES': QuadrupoleBCTRLVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", + " 'QUAD:LI24:601:BMIN': BminVariable(read_only=True, name='QUAD:LI24:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", + " 'QUAD:LI24:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", + " 'QUAD:LI24:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24601'),\n", + " 'QUAD:LI24:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", + " 'QUAD:LI24:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", + " 'QUAD:LI24:701:BACT': QuadrupoleBACTVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:701:BDES': QuadrupoleBCTRLVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", + " 'QUAD:LI24:701:BMIN': BminVariable(read_only=True, name='QUAD:LI24:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", + " 'QUAD:LI24:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", + " 'QUAD:LI24:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24701a'),\n", + " 'QUAD:LI24:702:BCTRL': QuadrupoleBCTRLVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:702:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:702:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", + " 'QUAD:LI24:702:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:702:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", + " 'QUAD:LI24:702:BACT': QuadrupoleBACTVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:702:BDES': QuadrupoleBCTRLVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:702:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:702:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", + " 'QUAD:LI24:702:BMIN': BminVariable(read_only=True, name='QUAD:LI24:702:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", + " 'QUAD:LI24:702:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:702:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", + " 'QUAD:LI24:702:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:702:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24701b'),\n", + " 'QUAD:LI24:713:BCTRL': QuadrupoleBCTRLVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:713:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:713:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", + " 'QUAD:LI24:713:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:713:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", + " 'QUAD:LI24:713:BACT': QuadrupoleBACTVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:713:BDES': QuadrupoleBCTRLVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:713:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:713:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", + " 'QUAD:LI24:713:BMIN': BminVariable(read_only=True, name='QUAD:LI24:713:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", + " 'QUAD:LI24:713:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:713:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", + " 'QUAD:LI24:713:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:713:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm21'),\n", + " 'QUAD:LI24:740:BCTRL': QuadrupoleBCTRLVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:740:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:740:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", + " 'QUAD:LI24:740:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:740:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", + " 'QUAD:LI24:740:BACT': QuadrupoleBACTVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:740:BDES': QuadrupoleBCTRLVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:740:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:740:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", + " 'QUAD:LI24:740:BMIN': BminVariable(read_only=True, name='QUAD:LI24:740:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", + " 'QUAD:LI24:740:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:740:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", + " 'QUAD:LI24:740:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:740:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq21'),\n", + " 'BPMS:LI24:801:X': BPMXVariable(element_name='bpms21', element_attribute='reading', name='BPMS:LI24:801:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:LI24:801:Y': BPMYVariable(element_name='bpms21', element_attribute='reading', name='BPMS:LI24:801:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", + " 'BPMS:LI24:801:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:LI24:801:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpms21'),\n", + " 'QUAD:LI24:860:BCTRL': QuadrupoleBCTRLVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:860:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:860:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", + " 'QUAD:LI24:860:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:860:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", + " 'QUAD:LI24:860:BACT': QuadrupoleBACTVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:860:BDES': QuadrupoleBCTRLVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:860:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:860:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", + " 'QUAD:LI24:860:BMIN': BminVariable(read_only=True, name='QUAD:LI24:860:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", + " 'QUAD:LI24:860:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:860:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", + " 'QUAD:LI24:860:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:860:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq22'),\n", + " 'QUAD:LI24:892:BCTRL': QuadrupoleBCTRLVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:892:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:892:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", + " 'QUAD:LI24:892:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:892:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", + " 'QUAD:LI24:892:BACT': QuadrupoleBACTVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:892:BDES': QuadrupoleBCTRLVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:892:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:892:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", + " 'QUAD:LI24:892:BMIN': BminVariable(read_only=True, name='QUAD:LI24:892:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", + " 'QUAD:LI24:892:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:892:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", + " 'QUAD:LI24:892:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:892:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm22'),\n", + " 'QUAD:LI24:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", + " 'QUAD:LI24:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", + " 'QUAD:LI24:901:BACT': QuadrupoleBACTVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:901:BDES': QuadrupoleBCTRLVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", + " 'QUAD:LI24:901:BMIN': BminVariable(read_only=True, name='QUAD:LI24:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", + " 'QUAD:LI24:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", + " 'QUAD:LI24:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24901a'),\n", + " 'QUAD:LI24:902:BCTRL': QuadrupoleBCTRLVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:902:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:902:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", + " 'QUAD:LI24:902:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:902:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", + " 'QUAD:LI24:902:BACT': QuadrupoleBACTVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:902:BDES': QuadrupoleBCTRLVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI24:902:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:902:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", + " 'QUAD:LI24:902:BMIN': BminVariable(read_only=True, name='QUAD:LI24:902:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", + " 'QUAD:LI24:902:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:902:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", + " 'QUAD:LI24:902:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:902:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24901b'),\n", + " 'QUAD:LI25:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", + " 'QUAD:LI25:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", + " 'QUAD:LI25:201:BACT': QuadrupoleBACTVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:201:BDES': QuadrupoleBCTRLVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", + " 'QUAD:LI25:201:BMIN': BminVariable(read_only=True, name='QUAD:LI25:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", + " 'QUAD:LI25:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", + " 'QUAD:LI25:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25201'),\n", + " 'QUAD:LI25:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", + " 'QUAD:LI25:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", + " 'QUAD:LI25:301:BACT': QuadrupoleBACTVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:301:BDES': QuadrupoleBCTRLVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", + " 'QUAD:LI25:301:BMIN': BminVariable(read_only=True, name='QUAD:LI25:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", + " 'QUAD:LI25:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", + " 'QUAD:LI25:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25301'),\n", + " 'QUAD:LI25:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", + " 'QUAD:LI25:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", + " 'QUAD:LI25:401:BACT': QuadrupoleBACTVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:401:BDES': QuadrupoleBCTRLVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", + " 'QUAD:LI25:401:BMIN': BminVariable(read_only=True, name='QUAD:LI25:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", + " 'QUAD:LI25:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", + " 'QUAD:LI25:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25401'),\n", + " 'QUAD:LI25:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", + " 'QUAD:LI25:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", + " 'QUAD:LI25:501:BACT': QuadrupoleBACTVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:501:BDES': QuadrupoleBCTRLVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", + " 'QUAD:LI25:501:BMIN': BminVariable(read_only=True, name='QUAD:LI25:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", + " 'QUAD:LI25:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", + " 'QUAD:LI25:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25501'),\n", + " 'QUAD:LI25:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", + " 'QUAD:LI25:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", + " 'QUAD:LI25:601:BACT': QuadrupoleBACTVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:601:BDES': QuadrupoleBCTRLVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", + " 'QUAD:LI25:601:BMIN': BminVariable(read_only=True, name='QUAD:LI25:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", + " 'QUAD:LI25:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", + " 'QUAD:LI25:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25601'),\n", + " 'QUAD:LI25:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", + " 'QUAD:LI25:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", + " 'QUAD:LI25:701:BACT': QuadrupoleBACTVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:701:BDES': QuadrupoleBCTRLVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", + " 'QUAD:LI25:701:BMIN': BminVariable(read_only=True, name='QUAD:LI25:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", + " 'QUAD:LI25:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", + " 'QUAD:LI25:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25701'),\n", + " 'QUAD:LI25:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", + " 'QUAD:LI25:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", + " 'QUAD:LI25:801:BACT': QuadrupoleBACTVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:801:BDES': QuadrupoleBCTRLVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", + " 'QUAD:LI25:801:BMIN': BminVariable(read_only=True, name='QUAD:LI25:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", + " 'QUAD:LI25:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", + " 'QUAD:LI25:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25801'),\n", + " 'QUAD:LI25:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", + " 'QUAD:LI25:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", + " 'QUAD:LI25:901:BACT': QuadrupoleBACTVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:901:BDES': QuadrupoleBCTRLVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI25:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", + " 'QUAD:LI25:901:BMIN': BminVariable(read_only=True, name='QUAD:LI25:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", + " 'QUAD:LI25:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", + " 'QUAD:LI25:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25901'),\n", + " 'QUAD:LI26:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", + " 'QUAD:LI26:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", + " 'QUAD:LI26:201:BACT': QuadrupoleBACTVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:201:BDES': QuadrupoleBCTRLVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", + " 'QUAD:LI26:201:BMIN': BminVariable(read_only=True, name='QUAD:LI26:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", + " 'QUAD:LI26:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", + " 'QUAD:LI26:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26201'),\n", + " 'QUAD:LI26:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", + " 'QUAD:LI26:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", + " 'QUAD:LI26:301:BACT': QuadrupoleBACTVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:301:BDES': QuadrupoleBCTRLVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", + " 'QUAD:LI26:301:BMIN': BminVariable(read_only=True, name='QUAD:LI26:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", + " 'QUAD:LI26:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", + " 'QUAD:LI26:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26301'),\n", + " 'QUAD:LI26:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", + " 'QUAD:LI26:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", + " 'QUAD:LI26:401:BACT': QuadrupoleBACTVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:401:BDES': QuadrupoleBCTRLVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", + " 'QUAD:LI26:401:BMIN': BminVariable(read_only=True, name='QUAD:LI26:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", + " 'QUAD:LI26:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", + " 'QUAD:LI26:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26401'),\n", + " 'QUAD:LI26:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", + " 'QUAD:LI26:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", + " 'QUAD:LI26:501:BACT': QuadrupoleBACTVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:501:BDES': QuadrupoleBCTRLVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", + " 'QUAD:LI26:501:BMIN': BminVariable(read_only=True, name='QUAD:LI26:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", + " 'QUAD:LI26:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", + " 'QUAD:LI26:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26501'),\n", + " 'QUAD:LI26:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", + " 'QUAD:LI26:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", + " 'QUAD:LI26:601:BACT': QuadrupoleBACTVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:601:BDES': QuadrupoleBCTRLVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", + " 'QUAD:LI26:601:BMIN': BminVariable(read_only=True, name='QUAD:LI26:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", + " 'QUAD:LI26:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", + " 'QUAD:LI26:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26601'),\n", + " 'QUAD:LI26:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", + " 'QUAD:LI26:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", + " 'QUAD:LI26:701:BACT': QuadrupoleBACTVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:701:BDES': QuadrupoleBCTRLVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", + " 'QUAD:LI26:701:BMIN': BminVariable(read_only=True, name='QUAD:LI26:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", + " 'QUAD:LI26:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", + " 'QUAD:LI26:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26701'),\n", + " 'QUAD:LI26:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", + " 'QUAD:LI26:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", + " 'QUAD:LI26:801:BACT': QuadrupoleBACTVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:801:BDES': QuadrupoleBCTRLVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", + " 'QUAD:LI26:801:BMIN': BminVariable(read_only=True, name='QUAD:LI26:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", + " 'QUAD:LI26:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", + " 'QUAD:LI26:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26801'),\n", + " 'QUAD:LI26:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", + " 'QUAD:LI26:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", + " 'QUAD:LI26:901:BACT': QuadrupoleBACTVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:901:BDES': QuadrupoleBCTRLVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI26:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", + " 'QUAD:LI26:901:BMIN': BminVariable(read_only=True, name='QUAD:LI26:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", + " 'QUAD:LI26:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", + " 'QUAD:LI26:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26901'),\n", + " 'QUAD:LI27:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", + " 'QUAD:LI27:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", + " 'QUAD:LI27:201:BACT': QuadrupoleBACTVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:201:BDES': QuadrupoleBCTRLVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", + " 'QUAD:LI27:201:BMIN': BminVariable(read_only=True, name='QUAD:LI27:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", + " 'QUAD:LI27:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", + " 'QUAD:LI27:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27201'),\n", + " 'QUAD:LI27:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", + " 'QUAD:LI27:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", + " 'QUAD:LI27:301:BACT': QuadrupoleBACTVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:301:BDES': QuadrupoleBCTRLVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", + " 'QUAD:LI27:301:BMIN': BminVariable(read_only=True, name='QUAD:LI27:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", + " 'QUAD:LI27:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", + " 'QUAD:LI27:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27301'),\n", + " 'QUAD:LI27:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", + " 'QUAD:LI27:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", + " 'QUAD:LI27:401:BACT': QuadrupoleBACTVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:401:BDES': QuadrupoleBCTRLVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", + " 'QUAD:LI27:401:BMIN': BminVariable(read_only=True, name='QUAD:LI27:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", + " 'QUAD:LI27:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", + " 'QUAD:LI27:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27401'),\n", + " 'QUAD:LI27:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", + " 'QUAD:LI27:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", + " 'QUAD:LI27:501:BACT': QuadrupoleBACTVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:501:BDES': QuadrupoleBCTRLVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", + " 'QUAD:LI27:501:BMIN': BminVariable(read_only=True, name='QUAD:LI27:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", + " 'QUAD:LI27:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", + " 'QUAD:LI27:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27501'),\n", + " 'QUAD:LI27:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", + " 'QUAD:LI27:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", + " 'QUAD:LI27:601:BACT': QuadrupoleBACTVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:601:BDES': QuadrupoleBCTRLVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", + " 'QUAD:LI27:601:BMIN': BminVariable(read_only=True, name='QUAD:LI27:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", + " 'QUAD:LI27:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", + " 'QUAD:LI27:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27601'),\n", + " 'QUAD:LI27:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", + " 'QUAD:LI27:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", + " 'QUAD:LI27:701:BACT': QuadrupoleBACTVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:701:BDES': QuadrupoleBCTRLVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", + " 'QUAD:LI27:701:BMIN': BminVariable(read_only=True, name='QUAD:LI27:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", + " 'QUAD:LI27:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", + " 'QUAD:LI27:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27701'),\n", + " 'QUAD:LI27:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", + " 'QUAD:LI27:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", + " 'QUAD:LI27:801:BACT': QuadrupoleBACTVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:801:BDES': QuadrupoleBCTRLVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", + " 'QUAD:LI27:801:BMIN': BminVariable(read_only=True, name='QUAD:LI27:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", + " 'QUAD:LI27:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", + " 'QUAD:LI27:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27801'),\n", + " 'QUAD:LI27:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", + " 'QUAD:LI27:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", + " 'QUAD:LI27:901:BACT': QuadrupoleBACTVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:901:BDES': QuadrupoleBCTRLVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI27:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", + " 'QUAD:LI27:901:BMIN': BminVariable(read_only=True, name='QUAD:LI27:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", + " 'QUAD:LI27:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", + " 'QUAD:LI27:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27901'),\n", + " 'QUAD:LI28:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", + " 'QUAD:LI28:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", + " 'QUAD:LI28:201:BACT': QuadrupoleBACTVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:201:BDES': QuadrupoleBCTRLVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", + " 'QUAD:LI28:201:BMIN': BminVariable(read_only=True, name='QUAD:LI28:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", + " 'QUAD:LI28:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", + " 'QUAD:LI28:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28201'),\n", + " 'QUAD:LI28:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", + " 'QUAD:LI28:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", + " 'QUAD:LI28:301:BACT': QuadrupoleBACTVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:301:BDES': QuadrupoleBCTRLVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", + " 'QUAD:LI28:301:BMIN': BminVariable(read_only=True, name='QUAD:LI28:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", + " 'QUAD:LI28:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", + " 'QUAD:LI28:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28301'),\n", + " 'QUAD:LI28:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", + " 'QUAD:LI28:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", + " 'QUAD:LI28:401:BACT': QuadrupoleBACTVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:401:BDES': QuadrupoleBCTRLVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", + " 'QUAD:LI28:401:BMIN': BminVariable(read_only=True, name='QUAD:LI28:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", + " 'QUAD:LI28:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", + " 'QUAD:LI28:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28401'),\n", + " 'QUAD:LI28:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", + " 'QUAD:LI28:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", + " 'QUAD:LI28:501:BACT': QuadrupoleBACTVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:501:BDES': QuadrupoleBCTRLVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " 'QUAD:LI28:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", + " 'QUAD:LI28:501:BMIN': BminVariable(read_only=True, name='QUAD:LI28:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", + " 'QUAD:LI28:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", + " 'QUAD:LI28:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28501'),\n", + " 'QUAD:LI28:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q28601', element_attribute='k1', name='QUAD:LI28:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", + " ...}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get variables objects\n", "vars = list(model.supported_variables.keys())\n", @@ -43,10 +1054,1093 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "bb5822c2", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'SOLN:IN20:111:BCTRL': tensor(0.),\n", + " 'SOLN:IN20:111:BCTRL.DRVL': -100.0,\n", + " 'SOLN:IN20:111:BCTRL.DRVH': 100.0,\n", + " 'SOLN:IN20:111:BACT': tensor(0.),\n", + " 'SOLN:IN20:111:BDES': tensor(0.),\n", + " 'SOLN:IN20:111:BMIN': -100.0,\n", + " 'SOLN:IN20:111:BMAX': 100.0,\n", + " 'SOLN:IN20:111:STATCTRLSUB.T': 1.0,\n", + " 'SOLN:IN20:111:CTRL': 'Ready',\n", + " 'SOLN:IN20:121:BCTRL': tensor(0.),\n", + " 'SOLN:IN20:121:BCTRL.DRVL': -100.0,\n", + " 'SOLN:IN20:121:BCTRL.DRVH': 100.0,\n", + " 'SOLN:IN20:121:BACT': tensor(0.),\n", + " 'SOLN:IN20:121:BDES': tensor(0.),\n", + " 'SOLN:IN20:121:BMIN': -100.0,\n", + " 'SOLN:IN20:121:BMAX': 100.0,\n", + " 'SOLN:IN20:121:STATCTRLSUB.T': 1.0,\n", + " 'SOLN:IN20:121:CTRL': 'Ready',\n", + " 'XCOR:IN20:221:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:221:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:221:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:221:BACT': tensor(0.),\n", + " 'XCOR:IN20:221:BDES': tensor(0.),\n", + " 'XCOR:IN20:221:BMIN': -100.0,\n", + " 'XCOR:IN20:221:BMAX': 100.0,\n", + " 'XCOR:IN20:221:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:221:CTRL': 'Ready',\n", + " 'YCOR:IN20:222:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:222:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:222:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:222:BACT': tensor(0.),\n", + " 'YCOR:IN20:222:BDES': tensor(0.),\n", + " 'YCOR:IN20:222:BMIN': -100.0,\n", + " 'YCOR:IN20:222:BMAX': 100.0,\n", + " 'YCOR:IN20:222:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:222:CTRL': 'Ready',\n", + " 'BPMS:IN20:221:X': tensor(5.3644e-12),\n", + " 'BPMS:IN20:221:Y': tensor(9.0152e-12),\n", + " 'BPMS:IN20:221:TMIT': 1.0,\n", + " 'BPMS:IN20:235:X': tensor(5.1409e-12),\n", + " 'BPMS:IN20:235:Y': tensor(1.0058e-11),\n", + " 'BPMS:IN20:235:TMIT': 1.0,\n", + " 'QUAD:IN20:361:BCTRL': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:361:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:361:BACT': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BDES': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BMAX': 100.0,\n", + " 'QUAD:IN20:361:BMIN': -100.0,\n", + " 'QUAD:IN20:361:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:361:CTRL': 'Ready',\n", + " 'QUAD:IN20:371:BCTRL': tensor(5.7451),\n", + " 'QUAD:IN20:371:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:371:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:371:BACT': tensor(5.7451),\n", + " 'QUAD:IN20:371:BDES': tensor(5.7451),\n", + " 'QUAD:IN20:371:BMAX': 100.0,\n", + " 'QUAD:IN20:371:BMIN': -100.0,\n", + " 'QUAD:IN20:371:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:371:CTRL': 'Ready',\n", + " 'QUAD:IN20:425:BCTRL': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:425:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:425:BACT': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BDES': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BMAX': 100.0,\n", + " 'QUAD:IN20:425:BMIN': -100.0,\n", + " 'QUAD:IN20:425:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:425:CTRL': 'Ready',\n", + " 'QUAD:IN20:441:BCTRL': tensor(0.6177),\n", + " 'QUAD:IN20:441:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:441:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:441:BACT': tensor(0.6177),\n", + " 'QUAD:IN20:441:BDES': tensor(0.6177),\n", + " 'QUAD:IN20:441:BMAX': 100.0,\n", + " 'QUAD:IN20:441:BMIN': -100.0,\n", + " 'QUAD:IN20:441:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:441:CTRL': 'Ready',\n", + " 'OTRS:IN20:465:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:465:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:465:Image:ArraySize1_RBV': 1040,\n", + " 'OTRS:IN20:465:Image:ArraySize0_RBV': 1392,\n", + " 'OTRS:IN20:465:RESOLUTION': tensor(18.5900),\n", + " 'OTRS:IN20:465:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:465:N_OF_ROW': 1040,\n", + " 'OTRS:IN20:465:N_OF_COL': 1392,\n", + " 'OTRS:IN20:471:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:471:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:471:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:471:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:471:RESOLUTION': tensor(19.1600),\n", + " 'OTRS:IN20:471:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:471:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:471:N_OF_COL': 1040,\n", + " 'QUAD:IN20:511:BCTRL': tensor(9.1265),\n", + " 'QUAD:IN20:511:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:511:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:511:BACT': tensor(9.1265),\n", + " 'QUAD:IN20:511:BDES': tensor(9.1265),\n", + " 'QUAD:IN20:511:BMAX': 100.0,\n", + " 'QUAD:IN20:511:BMIN': -100.0,\n", + " 'QUAD:IN20:511:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:511:CTRL': 'Ready',\n", + " 'XCOR:IN20:521:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:521:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:521:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:521:BACT': tensor(0.),\n", + " 'XCOR:IN20:521:BDES': tensor(0.),\n", + " 'XCOR:IN20:521:BMIN': -100.0,\n", + " 'XCOR:IN20:521:BMAX': 100.0,\n", + " 'XCOR:IN20:521:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:521:CTRL': 'Ready',\n", + " 'YCOR:IN20:522:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:522:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:522:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:522:BACT': tensor(0.),\n", + " 'YCOR:IN20:522:BDES': tensor(0.),\n", + " 'YCOR:IN20:522:BMIN': -100.0,\n", + " 'YCOR:IN20:522:BMAX': 100.0,\n", + " 'YCOR:IN20:522:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:522:CTRL': 'Ready',\n", + " 'QUAD:IN20:525:BCTRL': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:525:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:525:BACT': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BDES': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BMAX': 100.0,\n", + " 'QUAD:IN20:525:BMIN': -100.0,\n", + " 'QUAD:IN20:525:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:525:CTRL': 'Ready',\n", + " 'OTRS:IN20:541:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:541:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:541:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:541:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:541:RESOLUTION': tensor(12.6600),\n", + " 'OTRS:IN20:541:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:541:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:541:N_OF_COL': 1040,\n", + " 'OTRS:IN20:571:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:571:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:571:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:571:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:571:RESOLUTION': tensor(12.6600),\n", + " 'OTRS:IN20:571:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:571:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:571:N_OF_COL': 1040,\n", + " 'BPMS:IN20:581:X': tensor(2.7940e-12),\n", + " 'BPMS:IN20:581:Y': tensor(-9.0152e-12),\n", + " 'BPMS:IN20:581:TMIT': 1.0,\n", + " 'OTRS:IN20:621:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:621:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:621:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:621:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:621:RESOLUTION': tensor(12.1200),\n", + " 'OTRS:IN20:621:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:621:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:621:N_OF_COL': 1040,\n", + " 'QUAD:IN20:631:BCTRL': tensor(11.8995),\n", + " 'QUAD:IN20:631:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:631:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:631:BACT': tensor(11.8995),\n", + " 'QUAD:IN20:631:BDES': tensor(11.8995),\n", + " 'QUAD:IN20:631:BMAX': 100.0,\n", + " 'QUAD:IN20:631:BMIN': -100.0,\n", + " 'QUAD:IN20:631:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:631:CTRL': 'Ready',\n", + " 'XCOR:IN20:641:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:641:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:641:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:641:BACT': tensor(0.),\n", + " 'XCOR:IN20:641:BDES': tensor(0.),\n", + " 'XCOR:IN20:641:BMIN': -100.0,\n", + " 'XCOR:IN20:641:BMAX': 100.0,\n", + " 'XCOR:IN20:641:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:641:CTRL': 'Ready',\n", + " 'YCOR:IN20:642:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:642:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:642:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:642:BACT': tensor(0.),\n", + " 'YCOR:IN20:642:BDES': tensor(0.),\n", + " 'YCOR:IN20:642:BMIN': -100.0,\n", + " 'YCOR:IN20:642:BMAX': 100.0,\n", + " 'YCOR:IN20:642:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:642:CTRL': 'Ready',\n", + " 'QUAD:IN20:651:BCTRL': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:651:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:651:BACT': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BDES': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BMAX': 100.0,\n", + " 'QUAD:IN20:651:BMIN': -100.0,\n", + " 'QUAD:IN20:651:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:651:CTRL': 'Ready',\n", + " 'OTRS:IN20:711:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:711:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:711:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:711:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:711:RESOLUTION': tensor(17.0600),\n", + " 'OTRS:IN20:711:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:711:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:711:N_OF_COL': 1040,\n", + " 'XCOR:IN20:721:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:721:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:721:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:721:BACT': tensor(0.),\n", + " 'XCOR:IN20:721:BDES': tensor(0.),\n", + " 'XCOR:IN20:721:BMIN': -100.0,\n", + " 'XCOR:IN20:721:BMAX': 100.0,\n", + " 'XCOR:IN20:721:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:721:CTRL': 'Ready',\n", + " 'YCOR:IN20:722:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:722:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:722:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:722:BACT': tensor(0.),\n", + " 'YCOR:IN20:722:BDES': tensor(0.),\n", + " 'YCOR:IN20:722:BMIN': -100.0,\n", + " 'YCOR:IN20:722:BMAX': 100.0,\n", + " 'YCOR:IN20:722:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:722:CTRL': 'Ready',\n", + " 'QUAD:IN20:731:BCTRL': tensor(17.2962),\n", + " 'QUAD:IN20:731:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:731:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:731:BACT': tensor(17.2962),\n", + " 'QUAD:IN20:731:BDES': tensor(17.2962),\n", + " 'QUAD:IN20:731:BMAX': 100.0,\n", + " 'QUAD:IN20:731:BMIN': -100.0,\n", + " 'QUAD:IN20:731:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:731:CTRL': 'Ready',\n", + " 'XCOR:IN20:761:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:761:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:761:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:761:BACT': tensor(0.),\n", + " 'XCOR:IN20:761:BDES': tensor(0.),\n", + " 'XCOR:IN20:761:BMIN': -100.0,\n", + " 'XCOR:IN20:761:BMAX': 100.0,\n", + " 'XCOR:IN20:761:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:761:CTRL': 'Ready',\n", + " 'YCOR:IN20:762:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:762:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:762:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:762:BACT': tensor(0.),\n", + " 'YCOR:IN20:762:BDES': tensor(0.),\n", + " 'YCOR:IN20:762:BMIN': -100.0,\n", + " 'YCOR:IN20:762:BMAX': 100.0,\n", + " 'YCOR:IN20:762:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:762:CTRL': 'Ready',\n", + " 'QUAD:IN20:771:BCTRL': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:771:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:771:BACT': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BDES': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BMAX': 100.0,\n", + " 'QUAD:IN20:771:BMIN': -100.0,\n", + " 'QUAD:IN20:771:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:771:CTRL': 'Ready',\n", + " 'QUAD:IN20:781:BCTRL': tensor(10.5227),\n", + " 'QUAD:IN20:781:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:781:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:781:BACT': tensor(10.5227),\n", + " 'QUAD:IN20:781:BDES': tensor(10.5227),\n", + " 'QUAD:IN20:781:BMAX': 100.0,\n", + " 'QUAD:IN20:781:BMIN': -100.0,\n", + " 'QUAD:IN20:781:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:781:CTRL': 'Ready',\n", + " 'QUAD:LI21:131:BCTRL': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:131:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:131:BACT': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BDES': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BMAX': 100.0,\n", + " 'QUAD:LI21:131:BMIN': -100.0,\n", + " 'QUAD:LI21:131:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:131:CTRL': 'Ready',\n", + " 'QUAD:LI21:161:BCTRL': tensor(1.9730),\n", + " 'QUAD:LI21:161:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:161:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:161:BACT': tensor(1.9730),\n", + " 'QUAD:LI21:161:BDES': tensor(1.9730),\n", + " 'QUAD:LI21:161:BMAX': 100.0,\n", + " 'QUAD:LI21:161:BMIN': -100.0,\n", + " 'QUAD:LI21:161:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:161:CTRL': 'Ready',\n", + " 'QUAD:LI21:201:BCTRL': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:201:BACT': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BDES': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BMAX': 100.0,\n", + " 'QUAD:LI21:201:BMIN': -100.0,\n", + " 'QUAD:LI21:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:201:CTRL': 'Ready',\n", + " 'QUAD:LI21:211:BCTRL': tensor(8.7054),\n", + " 'QUAD:LI21:211:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:211:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:211:BACT': tensor(8.7054),\n", + " 'QUAD:LI21:211:BDES': tensor(8.7054),\n", + " 'QUAD:LI21:211:BMAX': 100.0,\n", + " 'QUAD:LI21:211:BMIN': -100.0,\n", + " 'QUAD:LI21:211:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:211:CTRL': 'Ready',\n", + " 'QUAD:LI21:221:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:221:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:221:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:221:BACT': tensor(0.),\n", + " 'QUAD:LI21:221:BDES': tensor(0.),\n", + " 'QUAD:LI21:221:BMAX': 100.0,\n", + " 'QUAD:LI21:221:BMIN': -100.0,\n", + " 'QUAD:LI21:221:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:221:CTRL': 'Ready',\n", + " 'BPMS:LI21:233:X': tensor(6.5923e-10),\n", + " 'BPMS:LI21:233:Y': tensor(-1.1474e-11),\n", + " 'BPMS:LI21:233:TMIT': 1.0,\n", + " 'QUAD:LI21:243:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:243:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:243:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:243:BACT': tensor(0.),\n", + " 'QUAD:LI21:243:BDES': tensor(0.),\n", + " 'QUAD:LI21:243:BMAX': 100.0,\n", + " 'QUAD:LI21:243:BMIN': -100.0,\n", + " 'QUAD:LI21:243:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:243:CTRL': 'Ready',\n", + " 'QUAD:LI21:251:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:251:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:251:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:251:BACT': tensor(0.),\n", + " 'QUAD:LI21:251:BDES': tensor(0.),\n", + " 'QUAD:LI21:251:BMAX': 100.0,\n", + " 'QUAD:LI21:251:BMIN': -100.0,\n", + " 'QUAD:LI21:251:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:251:CTRL': 'Ready',\n", + " 'QUAD:LI21:271:BCTRL': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:271:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:271:BACT': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BDES': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BMAX': 100.0,\n", + " 'QUAD:LI21:271:BMIN': -100.0,\n", + " 'QUAD:LI21:271:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:271:CTRL': 'Ready',\n", + " 'QUAD:LI21:278:BCTRL': tensor(10.8832),\n", + " 'QUAD:LI21:278:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:278:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:278:BACT': tensor(10.8832),\n", + " 'QUAD:LI21:278:BDES': tensor(10.8832),\n", + " 'QUAD:LI21:278:BMAX': 100.0,\n", + " 'QUAD:LI21:278:BMIN': -100.0,\n", + " 'QUAD:LI21:278:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:278:CTRL': 'Ready',\n", + " 'XCOR:LI21:275:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:275:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:275:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:275:BACT': tensor(0.),\n", + " 'XCOR:LI21:275:BDES': tensor(0.),\n", + " 'XCOR:LI21:275:BMIN': -100.0,\n", + " 'XCOR:LI21:275:BMAX': 100.0,\n", + " 'XCOR:LI21:275:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:275:CTRL': 'Ready',\n", + " 'YCOR:LI21:276:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:276:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:276:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:276:BACT': tensor(0.),\n", + " 'YCOR:LI21:276:BDES': tensor(0.),\n", + " 'YCOR:LI21:276:BMIN': -100.0,\n", + " 'YCOR:LI21:276:BMAX': 100.0,\n", + " 'YCOR:LI21:276:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:276:CTRL': 'Ready',\n", + " 'XCOR:LI21:302:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:302:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:302:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:302:BACT': tensor(0.),\n", + " 'XCOR:LI21:302:BDES': tensor(0.),\n", + " 'XCOR:LI21:302:BMIN': -100.0,\n", + " 'XCOR:LI21:302:BMAX': 100.0,\n", + " 'XCOR:LI21:302:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:302:CTRL': 'Ready',\n", + " 'YCOR:LI21:303:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:303:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:303:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:303:BACT': tensor(0.),\n", + " 'YCOR:LI21:303:BDES': tensor(0.),\n", + " 'YCOR:LI21:303:BMIN': -100.0,\n", + " 'YCOR:LI21:303:BMAX': 100.0,\n", + " 'YCOR:LI21:303:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:303:CTRL': 'Ready',\n", + " 'QUAD:LI21:301:BCTRL': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:301:BACT': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BDES': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BMAX': 100.0,\n", + " 'QUAD:LI21:301:BMIN': -100.0,\n", + " 'QUAD:LI21:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:301:CTRL': 'Ready',\n", + " 'QUAD:LI21:315:BCTRL': tensor(7.7253),\n", + " 'QUAD:LI21:315:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:315:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:315:BACT': tensor(7.7253),\n", + " 'QUAD:LI21:315:BDES': tensor(7.7253),\n", + " 'QUAD:LI21:315:BMAX': 100.0,\n", + " 'QUAD:LI21:315:BMIN': -100.0,\n", + " 'QUAD:LI21:315:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:315:CTRL': 'Ready',\n", + " 'XCOR:LI21:325:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:325:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:325:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:325:BACT': tensor(0.),\n", + " 'XCOR:LI21:325:BDES': tensor(0.),\n", + " 'XCOR:LI21:325:BMIN': -100.0,\n", + " 'XCOR:LI21:325:BMAX': 100.0,\n", + " 'XCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:325:CTRL': 'Ready',\n", + " 'YCOR:LI21:325:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:325:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:325:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:325:BACT': tensor(0.),\n", + " 'YCOR:LI21:325:BDES': tensor(0.),\n", + " 'YCOR:LI21:325:BMIN': -100.0,\n", + " 'YCOR:LI21:325:BMAX': 100.0,\n", + " 'YCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:325:CTRL': 'Ready',\n", + " 'QUAD:LI21:335:BCTRL': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:335:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:335:BACT': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BDES': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BMAX': 100.0,\n", + " 'QUAD:LI21:335:BMIN': -100.0,\n", + " 'QUAD:LI21:335:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:335:CTRL': 'Ready',\n", + " 'QUAD:LI21:401:BCTRL': tensor(1.6531),\n", + " 'QUAD:LI21:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:401:BACT': tensor(1.6531),\n", + " 'QUAD:LI21:401:BDES': tensor(1.6531),\n", + " 'QUAD:LI21:401:BMAX': 100.0,\n", + " 'QUAD:LI21:401:BMIN': -100.0,\n", + " 'QUAD:LI21:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:401:CTRL': 'Ready',\n", + " 'QUAD:LI21:501:BCTRL': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:501:BACT': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BDES': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BMAX': 100.0,\n", + " 'QUAD:LI21:501:BMIN': -100.0,\n", + " 'QUAD:LI21:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:501:CTRL': 'Ready',\n", + " 'QUAD:LI21:601:BCTRL': tensor(2.0186),\n", + " 'QUAD:LI21:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:601:BACT': tensor(2.0186),\n", + " 'QUAD:LI21:601:BDES': tensor(2.0186),\n", + " 'QUAD:LI21:601:BMAX': 100.0,\n", + " 'QUAD:LI21:601:BMIN': -100.0,\n", + " 'QUAD:LI21:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:601:CTRL': 'Ready',\n", + " 'QUAD:LI21:701:BCTRL': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:701:BACT': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BDES': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BMAX': 100.0,\n", + " 'QUAD:LI21:701:BMIN': -100.0,\n", + " 'QUAD:LI21:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:701:CTRL': 'Ready',\n", + " 'QUAD:LI21:801:BCTRL': tensor(2.9797),\n", + " 'QUAD:LI21:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:801:BACT': tensor(2.9797),\n", + " 'QUAD:LI21:801:BDES': tensor(2.9797),\n", + " 'QUAD:LI21:801:BMAX': 100.0,\n", + " 'QUAD:LI21:801:BMIN': -100.0,\n", + " 'QUAD:LI21:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:801:CTRL': 'Ready',\n", + " 'QUAD:LI21:901:BCTRL': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:901:BACT': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BDES': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BMAX': 100.0,\n", + " 'QUAD:LI21:901:BMIN': -100.0,\n", + " 'QUAD:LI21:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:901:CTRL': 'Ready',\n", + " 'QUAD:LI22:201:BCTRL': tensor(3.7680),\n", + " 'QUAD:LI22:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:201:BACT': tensor(3.7680),\n", + " 'QUAD:LI22:201:BDES': tensor(3.7680),\n", + " 'QUAD:LI22:201:BMAX': 100.0,\n", + " 'QUAD:LI22:201:BMIN': -100.0,\n", + " 'QUAD:LI22:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:201:CTRL': 'Ready',\n", + " 'QUAD:LI22:301:BCTRL': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:301:BACT': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BDES': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BMAX': 100.0,\n", + " 'QUAD:LI22:301:BMIN': -100.0,\n", + " 'QUAD:LI22:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:301:CTRL': 'Ready',\n", + " 'QUAD:LI22:401:BCTRL': tensor(4.6014),\n", + " 'QUAD:LI22:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:401:BACT': tensor(4.6014),\n", + " 'QUAD:LI22:401:BDES': tensor(4.6014),\n", + " 'QUAD:LI22:401:BMAX': 100.0,\n", + " 'QUAD:LI22:401:BMIN': -100.0,\n", + " 'QUAD:LI22:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:401:CTRL': 'Ready',\n", + " 'QUAD:LI22:501:BCTRL': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:501:BACT': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BDES': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BMAX': 100.0,\n", + " 'QUAD:LI22:501:BMIN': -100.0,\n", + " 'QUAD:LI22:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:501:CTRL': 'Ready',\n", + " 'QUAD:LI22:601:BCTRL': tensor(5.4676),\n", + " 'QUAD:LI22:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:601:BACT': tensor(5.4676),\n", + " 'QUAD:LI22:601:BDES': tensor(5.4676),\n", + " 'QUAD:LI22:601:BMAX': 100.0,\n", + " 'QUAD:LI22:601:BMIN': -100.0,\n", + " 'QUAD:LI22:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:601:CTRL': 'Ready',\n", + " 'QUAD:LI22:701:BCTRL': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:701:BACT': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BDES': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BMAX': 100.0,\n", + " 'QUAD:LI22:701:BMIN': -100.0,\n", + " 'QUAD:LI22:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:701:CTRL': 'Ready',\n", + " 'QUAD:LI22:801:BCTRL': tensor(6.6840),\n", + " 'QUAD:LI22:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:801:BACT': tensor(6.6840),\n", + " 'QUAD:LI22:801:BDES': tensor(6.6840),\n", + " 'QUAD:LI22:801:BMAX': 100.0,\n", + " 'QUAD:LI22:801:BMIN': -100.0,\n", + " 'QUAD:LI22:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:801:CTRL': 'Ready',\n", + " 'QUAD:LI22:901:BCTRL': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:901:BACT': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BDES': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BMAX': 100.0,\n", + " 'QUAD:LI22:901:BMIN': -100.0,\n", + " 'QUAD:LI22:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:901:CTRL': 'Ready',\n", + " 'QUAD:LI23:201:BCTRL': tensor(7.3259),\n", + " 'QUAD:LI23:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:201:BACT': tensor(7.3259),\n", + " 'QUAD:LI23:201:BDES': tensor(7.3259),\n", + " 'QUAD:LI23:201:BMAX': 100.0,\n", + " 'QUAD:LI23:201:BMIN': -100.0,\n", + " 'QUAD:LI23:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:201:CTRL': 'Ready',\n", + " 'QUAD:LI23:301:BCTRL': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:301:BACT': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BDES': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BMAX': 100.0,\n", + " 'QUAD:LI23:301:BMIN': -100.0,\n", + " 'QUAD:LI23:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:301:CTRL': 'Ready',\n", + " 'QUAD:LI23:401:BCTRL': tensor(8.0660),\n", + " 'QUAD:LI23:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:401:BACT': tensor(8.0660),\n", + " 'QUAD:LI23:401:BDES': tensor(8.0660),\n", + " 'QUAD:LI23:401:BMAX': 100.0,\n", + " 'QUAD:LI23:401:BMIN': -100.0,\n", + " 'QUAD:LI23:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:401:CTRL': 'Ready',\n", + " 'QUAD:LI23:501:BCTRL': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:501:BACT': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BDES': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BMAX': 100.0,\n", + " 'QUAD:LI23:501:BMIN': -100.0,\n", + " 'QUAD:LI23:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:501:CTRL': 'Ready',\n", + " 'QUAD:LI23:601:BCTRL': tensor(8.9322),\n", + " 'QUAD:LI23:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:601:BACT': tensor(8.9322),\n", + " 'QUAD:LI23:601:BDES': tensor(8.9322),\n", + " 'QUAD:LI23:601:BMAX': 100.0,\n", + " 'QUAD:LI23:601:BMIN': -100.0,\n", + " 'QUAD:LI23:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:601:CTRL': 'Ready',\n", + " 'QUAD:LI23:701:BCTRL': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:701:BACT': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BDES': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BMAX': 100.0,\n", + " 'QUAD:LI23:701:BMIN': -100.0,\n", + " 'QUAD:LI23:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:701:CTRL': 'Ready',\n", + " 'QUAD:LI23:801:BCTRL': tensor(10.6598),\n", + " 'QUAD:LI23:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:801:BACT': tensor(10.6598),\n", + " 'QUAD:LI23:801:BDES': tensor(10.6598),\n", + " 'QUAD:LI23:801:BMAX': 100.0,\n", + " 'QUAD:LI23:801:BMIN': -100.0,\n", + " 'QUAD:LI23:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:801:CTRL': 'Ready',\n", + " 'QUAD:LI23:901:BCTRL': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:901:BACT': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BDES': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BMAX': 100.0,\n", + " 'QUAD:LI23:901:BMIN': -100.0,\n", + " 'QUAD:LI23:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:901:CTRL': 'Ready',\n", + " 'QUAD:LI24:201:BCTRL': tensor(11.7319),\n", + " 'QUAD:LI24:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:201:BACT': tensor(11.7319),\n", + " 'QUAD:LI24:201:BDES': tensor(11.7319),\n", + " 'QUAD:LI24:201:BMAX': 100.0,\n", + " 'QUAD:LI24:201:BMIN': -100.0,\n", + " 'QUAD:LI24:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:201:CTRL': 'Ready',\n", + " 'QUAD:LI24:301:BCTRL': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:301:BACT': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BDES': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BMAX': 100.0,\n", + " 'QUAD:LI24:301:BMIN': -100.0,\n", + " 'QUAD:LI24:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:301:CTRL': 'Ready',\n", + " 'QUAD:LI24:401:BCTRL': tensor(16.6813),\n", + " 'QUAD:LI24:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:401:BACT': tensor(16.6813),\n", + " 'QUAD:LI24:401:BDES': tensor(16.6813),\n", + " 'QUAD:LI24:401:BMAX': 100.0,\n", + " 'QUAD:LI24:401:BMIN': -100.0,\n", + " 'QUAD:LI24:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:401:CTRL': 'Ready',\n", + " 'QUAD:LI24:501:BCTRL': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:501:BACT': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BDES': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BMAX': 100.0,\n", + " 'QUAD:LI24:501:BMIN': -100.0,\n", + " 'QUAD:LI24:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:501:CTRL': 'Ready',\n", + " 'QUAD:LI24:601:BCTRL': tensor(10.6424),\n", + " 'QUAD:LI24:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:601:BACT': tensor(10.6424),\n", + " 'QUAD:LI24:601:BDES': tensor(10.6424),\n", + " 'QUAD:LI24:601:BMAX': 100.0,\n", + " 'QUAD:LI24:601:BMIN': -100.0,\n", + " 'QUAD:LI24:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:601:CTRL': 'Ready',\n", + " 'QUAD:LI24:701:BCTRL': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:701:BACT': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BDES': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BMAX': 100.0,\n", + " 'QUAD:LI24:701:BMIN': -100.0,\n", + " 'QUAD:LI24:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:701:CTRL': 'Ready',\n", + " 'QUAD:LI24:702:BCTRL': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:702:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:702:BACT': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BDES': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BMAX': 100.0,\n", + " 'QUAD:LI24:702:BMIN': -100.0,\n", + " 'QUAD:LI24:702:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:702:CTRL': 'Ready',\n", + " 'QUAD:LI24:713:BCTRL': tensor(40.0117),\n", + " 'QUAD:LI24:713:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:713:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:713:BACT': tensor(40.0117),\n", + " 'QUAD:LI24:713:BDES': tensor(40.0117),\n", + " 'QUAD:LI24:713:BMAX': 100.0,\n", + " 'QUAD:LI24:713:BMIN': -100.0,\n", + " 'QUAD:LI24:713:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:713:CTRL': 'Ready',\n", + " 'QUAD:LI24:740:BCTRL': tensor(0.),\n", + " 'QUAD:LI24:740:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:740:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:740:BACT': tensor(0.),\n", + " 'QUAD:LI24:740:BDES': tensor(0.),\n", + " 'QUAD:LI24:740:BMAX': 100.0,\n", + " 'QUAD:LI24:740:BMIN': -100.0,\n", + " 'QUAD:LI24:740:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:740:CTRL': 'Ready',\n", + " 'BPMS:LI24:801:X': tensor(4.0082e-09),\n", + " 'BPMS:LI24:801:Y': tensor(8.8476e-13),\n", + " 'BPMS:LI24:801:TMIT': 1.0,\n", + " 'QUAD:LI24:860:BCTRL': tensor(0.),\n", + " 'QUAD:LI24:860:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:860:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:860:BACT': tensor(0.),\n", + " 'QUAD:LI24:860:BDES': tensor(0.),\n", + " 'QUAD:LI24:860:BMAX': 100.0,\n", + " 'QUAD:LI24:860:BMIN': -100.0,\n", + " 'QUAD:LI24:860:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:860:CTRL': 'Ready',\n", + " 'QUAD:LI24:892:BCTRL': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:892:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:892:BACT': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BDES': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BMAX': 100.0,\n", + " 'QUAD:LI24:892:BMIN': -100.0,\n", + " 'QUAD:LI24:892:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:892:CTRL': 'Ready',\n", + " 'QUAD:LI24:901:BCTRL': tensor(19.5866),\n", + " 'QUAD:LI24:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:901:BACT': tensor(19.5866),\n", + " 'QUAD:LI24:901:BDES': tensor(19.5866),\n", + " 'QUAD:LI24:901:BMAX': 100.0,\n", + " 'QUAD:LI24:901:BMIN': -100.0,\n", + " 'QUAD:LI24:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:901:CTRL': 'Ready',\n", + " 'QUAD:LI24:902:BCTRL': tensor(19.5866),\n", + " 'QUAD:LI24:902:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:902:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:902:BACT': tensor(19.5866),\n", + " 'QUAD:LI24:902:BDES': tensor(19.5866),\n", + " 'QUAD:LI24:902:BMAX': 100.0,\n", + " 'QUAD:LI24:902:BMIN': -100.0,\n", + " 'QUAD:LI24:902:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:902:CTRL': 'Ready',\n", + " 'QUAD:LI25:201:BCTRL': tensor(13.0575),\n", + " 'QUAD:LI25:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:201:BACT': tensor(13.0575),\n", + " 'QUAD:LI25:201:BDES': tensor(13.0575),\n", + " 'QUAD:LI25:201:BMAX': 100.0,\n", + " 'QUAD:LI25:201:BMIN': -100.0,\n", + " 'QUAD:LI25:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:201:CTRL': 'Ready',\n", + " 'QUAD:LI25:301:BCTRL': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:301:BACT': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BDES': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BMAX': 100.0,\n", + " 'QUAD:LI25:301:BMIN': -100.0,\n", + " 'QUAD:LI25:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:301:CTRL': 'Ready',\n", + " 'QUAD:LI25:401:BCTRL': tensor(8.5408),\n", + " 'QUAD:LI25:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:401:BACT': tensor(8.5408),\n", + " 'QUAD:LI25:401:BDES': tensor(8.5408),\n", + " 'QUAD:LI25:401:BMAX': 100.0,\n", + " 'QUAD:LI25:401:BMIN': -100.0,\n", + " 'QUAD:LI25:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:401:CTRL': 'Ready',\n", + " 'QUAD:LI25:501:BCTRL': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:501:BACT': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BDES': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BMAX': 100.0,\n", + " 'QUAD:LI25:501:BMIN': -100.0,\n", + " 'QUAD:LI25:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:501:CTRL': 'Ready',\n", + " 'QUAD:LI25:601:BCTRL': tensor(8.4082),\n", + " 'QUAD:LI25:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:601:BACT': tensor(8.4082),\n", + " 'QUAD:LI25:601:BDES': tensor(8.4082),\n", + " 'QUAD:LI25:601:BMAX': 100.0,\n", + " 'QUAD:LI25:601:BMIN': -100.0,\n", + " 'QUAD:LI25:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:601:CTRL': 'Ready',\n", + " 'QUAD:LI25:701:BCTRL': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:701:BACT': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BDES': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BMAX': 100.0,\n", + " 'QUAD:LI25:701:BMIN': -100.0,\n", + " 'QUAD:LI25:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:701:CTRL': 'Ready',\n", + " 'QUAD:LI25:801:BCTRL': tensor(9.2171),\n", + " 'QUAD:LI25:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:801:BACT': tensor(9.2171),\n", + " 'QUAD:LI25:801:BDES': tensor(9.2171),\n", + " 'QUAD:LI25:801:BMAX': 100.0,\n", + " 'QUAD:LI25:801:BMIN': -100.0,\n", + " 'QUAD:LI25:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:801:CTRL': 'Ready',\n", + " 'QUAD:LI25:901:BCTRL': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:901:BACT': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BDES': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BMAX': 100.0,\n", + " 'QUAD:LI25:901:BMIN': -100.0,\n", + " 'QUAD:LI25:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:901:CTRL': 'Ready',\n", + " 'QUAD:LI26:201:BCTRL': tensor(9.3287),\n", + " 'QUAD:LI26:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:201:BACT': tensor(9.3287),\n", + " 'QUAD:LI26:201:BDES': tensor(9.3287),\n", + " 'QUAD:LI26:201:BMAX': 100.0,\n", + " 'QUAD:LI26:201:BMIN': -100.0,\n", + " 'QUAD:LI26:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:201:CTRL': 'Ready',\n", + " 'QUAD:LI26:301:BCTRL': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:301:BACT': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BDES': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BMAX': 100.0,\n", + " 'QUAD:LI26:301:BMIN': -100.0,\n", + " 'QUAD:LI26:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:301:CTRL': 'Ready',\n", + " 'QUAD:LI26:401:BCTRL': tensor(10.0393),\n", + " 'QUAD:LI26:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:401:BACT': tensor(10.0393),\n", + " 'QUAD:LI26:401:BDES': tensor(10.0393),\n", + " 'QUAD:LI26:401:BMAX': 100.0,\n", + " 'QUAD:LI26:401:BMIN': -100.0,\n", + " 'QUAD:LI26:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:401:CTRL': 'Ready',\n", + " 'QUAD:LI26:501:BCTRL': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:501:BACT': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BDES': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BMAX': 100.0,\n", + " 'QUAD:LI26:501:BMIN': -100.0,\n", + " 'QUAD:LI26:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:501:CTRL': 'Ready',\n", + " 'QUAD:LI26:601:BCTRL': tensor(10.5830),\n", + " 'QUAD:LI26:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:601:BACT': tensor(10.5830),\n", + " 'QUAD:LI26:601:BDES': tensor(10.5830),\n", + " 'QUAD:LI26:601:BMAX': 100.0,\n", + " 'QUAD:LI26:601:BMIN': -100.0,\n", + " 'QUAD:LI26:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:601:CTRL': 'Ready',\n", + " 'QUAD:LI26:701:BCTRL': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:701:BACT': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BDES': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BMAX': 100.0,\n", + " 'QUAD:LI26:701:BMIN': -100.0,\n", + " 'QUAD:LI26:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:701:CTRL': 'Ready',\n", + " 'QUAD:LI26:801:BCTRL': tensor(11.4136),\n", + " 'QUAD:LI26:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:801:BACT': tensor(11.4136),\n", + " 'QUAD:LI26:801:BDES': tensor(11.4136),\n", + " 'QUAD:LI26:801:BMAX': 100.0,\n", + " 'QUAD:LI26:801:BMIN': -100.0,\n", + " 'QUAD:LI26:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:801:CTRL': 'Ready',\n", + " 'QUAD:LI26:901:BCTRL': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:901:BACT': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BDES': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BMAX': 100.0,\n", + " 'QUAD:LI26:901:BMIN': -100.0,\n", + " 'QUAD:LI26:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:901:CTRL': 'Ready',\n", + " 'QUAD:LI27:201:BCTRL': tensor(11.2623),\n", + " 'QUAD:LI27:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:201:BACT': tensor(11.2623),\n", + " 'QUAD:LI27:201:BDES': tensor(11.2623),\n", + " 'QUAD:LI27:201:BMAX': 100.0,\n", + " 'QUAD:LI27:201:BMIN': -100.0,\n", + " 'QUAD:LI27:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:201:CTRL': 'Ready',\n", + " 'QUAD:LI27:301:BCTRL': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:301:BACT': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BDES': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BMAX': 100.0,\n", + " 'QUAD:LI27:301:BMIN': -100.0,\n", + " 'QUAD:LI27:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:301:CTRL': 'Ready',\n", + " 'QUAD:LI27:401:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI27:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:401:BACT': tensor(11.3985),\n", + " 'QUAD:LI27:401:BDES': tensor(11.3985),\n", + " 'QUAD:LI27:401:BMAX': 100.0,\n", + " 'QUAD:LI27:401:BMIN': -100.0,\n", + " 'QUAD:LI27:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:401:CTRL': 'Ready',\n", + " 'QUAD:LI27:501:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:501:BACT': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BDES': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BMAX': 100.0,\n", + " 'QUAD:LI27:501:BMIN': -100.0,\n", + " 'QUAD:LI27:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:501:CTRL': 'Ready',\n", + " 'QUAD:LI27:601:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI27:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:601:BACT': tensor(11.3985),\n", + " 'QUAD:LI27:601:BDES': tensor(11.3985),\n", + " 'QUAD:LI27:601:BMAX': 100.0,\n", + " 'QUAD:LI27:601:BMIN': -100.0,\n", + " 'QUAD:LI27:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:601:CTRL': 'Ready',\n", + " 'QUAD:LI27:701:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:701:BACT': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BDES': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BMAX': 100.0,\n", + " 'QUAD:LI27:701:BMIN': -100.0,\n", + " 'QUAD:LI27:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:701:CTRL': 'Ready',\n", + " 'QUAD:LI27:801:BCTRL': tensor(11.7159),\n", + " 'QUAD:LI27:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:801:BACT': tensor(11.7159),\n", + " 'QUAD:LI27:801:BDES': tensor(11.7159),\n", + " 'QUAD:LI27:801:BMAX': 100.0,\n", + " 'QUAD:LI27:801:BMIN': -100.0,\n", + " 'QUAD:LI27:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:801:CTRL': 'Ready',\n", + " 'QUAD:LI27:901:BCTRL': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:901:BACT': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BDES': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BMAX': 100.0,\n", + " 'QUAD:LI27:901:BMIN': -100.0,\n", + " 'QUAD:LI27:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:901:CTRL': 'Ready',\n", + " 'QUAD:LI28:201:BCTRL': tensor(11.2548),\n", + " 'QUAD:LI28:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:201:BACT': tensor(11.2548),\n", + " 'QUAD:LI28:201:BDES': tensor(11.2548),\n", + " 'QUAD:LI28:201:BMAX': 100.0,\n", + " 'QUAD:LI28:201:BMIN': -100.0,\n", + " 'QUAD:LI28:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:201:CTRL': 'Ready',\n", + " 'QUAD:LI28:301:BCTRL': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:301:BACT': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BDES': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BMAX': 100.0,\n", + " 'QUAD:LI28:301:BMIN': -100.0,\n", + " 'QUAD:LI28:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:301:CTRL': 'Ready',\n", + " 'QUAD:LI28:401:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI28:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:401:BACT': tensor(11.3985),\n", + " 'QUAD:LI28:401:BDES': tensor(11.3985),\n", + " 'QUAD:LI28:401:BMAX': 100.0,\n", + " 'QUAD:LI28:401:BMIN': -100.0,\n", + " 'QUAD:LI28:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:401:CTRL': 'Ready',\n", + " 'QUAD:LI28:501:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:501:BACT': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BDES': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BMAX': 100.0,\n", + " 'QUAD:LI28:501:BMIN': -100.0,\n", + " 'QUAD:LI28:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:501:CTRL': 'Ready',\n", + " 'QUAD:LI28:601:BCTRL': tensor(11.3985),\n", + " ...}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get variable values\n", "model.get(vars)" @@ -54,10 +2148,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "39e7298a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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nXfeebOec16Lru+blDUEd778kTjweviaZj/8nObX5zQwA8EbJ9IIISRHKLqEEJIj81p0y+WynHPOOfrvfIGvaW7Az2luUN4KGuElm+t/IIQQ0jHzOtIlhJDZBkWXEEJyhKJLCCE5Mm99uk888YTceuut0tfXJ4cccoiUSiWZzdx3333y4IMPyq677ir77befeJ7XtsLuN7/5jSb98Zq6u7s3aUze3HLLLfLwww/La17zGtluu+2a7oPZ/Oabb1bjOY63nQ+ykzF5AiP9HXfcoZ/V/vvvv8H91WpVj3d8fFwOOugg2X777TdpTF6sX79ebrvtNhkdHZU999xTXvCCF2wwptFoyK9+9SsZHByUAw44QHbZZZdNGrOlGBkZkWuuuUYWLlwoy5cvbzvmySeflN/97nfS29urf0ftJs9masyUJPOQr3zlK0l3d3eyfPnyZNmyZcnuu++ePPjgg8ls5NZbb01e9rKXJS984QuTN77xjckuu+yitx9//PGmcd///veT3t7e5JBDDkle9KIXJc95znOS22+/fdpj8ua+++5LFi5ciMna5Kabbmq675e//GWyaNEifb0HHnhgsmDBguQXv/jFtMfkRaPRSN7//vcnPT09yVFHHaXv8zHHHJNEUZSOueeee/QzxOd56KGH6tjvfve7TfvpZExeXHzxxUlfX19y0EEH6d/fwMCA/lutVtMxjz76aPL85z8/2WOPPZJXvepVSVdXV3L++ec37aeTMVuC8fHx5IMf/KD+rePn1a9+ddtxX//611UTDj/8cD3OpUuXJn/+85+3yJiNMe9EF+JaLBaTb37zm+kXBeL7mte8JpmN3HDDDcltt92W3h4bG0v222+/5Pjjj0+3rVmzJunv709WrlyZbnvrW9+qwjqdMXmDL8S+++6bfO5zn9tAdOv1erJkyZLk9NNPT7d9+MMfTnbaaSd9XKdj8mTFihXJ9ttv3/Ql++lPf6rH6cDJ4c1vfnMSx7HePvfcc/VL+tRTT01rTF4sXrw4+ehHP5refuSRR5IgCJILL7ww3Xb00UfrycG9zosuukjH3H///dMasyVYv3598sUvfjEZHBxMTj755Laii9dUKpWSr371q3o7DEMdB12Y6THbpOhCdLbbbjt9Qxw/+MEPEs/zNogeZyv4ciNCd+AEgg97aGgo3fbrX/9aheyOO+7oeEzefOADH0hOPfVUFalW0b3mmmt0W/YKBNEStv34xz/ueExejIyMaESKE8hk/PGPf9RjQ3SefRyivi996Usdj8kLROiIcv/7v/873QbRxOv82te+prefffbZxPf95JJLLml6HE58//zP/9zxmDw4eRLRxUkNV1sIwBxXXHGFfg6rV6+e0TGdMO8m0u6++27NSQVBkG578YtfrPnAe++9V2Y7OM7rrrtOXvSiFzW9puc+97man86+Jndfp2Py5Ac/+IH84he/kPPOO6/t/Timrq4u2X333dNtu+22m+Zrs69pY2Py4g9/+IPmPF/3utfJ7bffLldccYXm4bO4Y8p+dj09PXr82de0sTF59ia54IIL5N///d/l3HPPlW984xty7LHHak70ne98p47Ba4zjuOl48bh99tknPd5OxmxN7r77btl7772lUChs8N245557ZnTMNjmRhiS+6y7mWLx4cTphMNv59Kc/LXfeead85StfmfI1IYmPyUH3mjoZkxfo6vaBD3xArrzyShWUdrQ7XvdZTfWaWsfkxdNPP51+Pjh5L126VCeNDjvsMLnsssv0fcbxAkzmTHa8nYzJk7322kvf40svvVQn8/DaTjvttHTi2R1vu++Ua53ayZjZrgmDMzRmmxRdzCS6P4LszCaoVCoym/nyl78s//Iv/yLf+973ZN999216Te41ZGeK6/V6+po6GZMXZ555pkY9Dz30kP489dRTuv3aa6/Vfw899NC2xwuwbarX1DomL9zzIcpBxAN3CVwMeJ3nn3++nHXWWeksNiJinPDaHW8nY/IC35MjjzxSPvKRj8jZZ5+t2/CaEL3hpHD66aenx9v6ObR7TVON2ZqUy+UNRLFVE2ZqTCfMu/TCHnvsoZFWlkcffVT/zV6mzja++tWvyoc+9CG5+OKL5U1vetMGr+mxxx6TKIomfU2djMkLnDAQNf3oRz/SH1h5wE033aT2MXe8+NJnT5AQIkRG2de0sTF5gWMBxx13XGrnQx/WAw88UFMP2THZvz+kiyBk2de0sTF5cdddd8m6devkhBNOSLfhNcHCdv311096vO5va6rX1DpmtmvCHjM0piOSecb111+vie2sVerv/u7vkuc973npbPFsA5MWmASD5Wsy2xUmAq+++up027/+67+qfcrN4ncyZmvRbiINky/lcjmdsAHf+ta31HnyxBNPdDwmT/bcc099Tx2YUIFlyM3+YxIKk7jZySPY27J/j52MyYuHH35Yn/eHP/xh02uC7QsuEcdee+2lVrms5Q2Py/6tdTJma02k3XTTTXosv//979NtZ5xxRrLbbrulmjBTYzph3okueMtb3qJfhvPOOy/5yEc+otaVH/3oR8lsBH/wEMsTTzxRvZru57LLLmsaBy8i7EqYQf3EJz6hwgM/8nTHzBbRBZ/+9Kd1pvxTn/qU/o6Z9HPOOWfaY/Liqquu0uf/+Mc/rieC17/+9TpDn3XFwGqF9x0OlM9//vN6/ymnnNK0n07G5MW73vUuPQn827/9m1qhXve61+mJOusYwesuFArJhz70oeQLX/iC+t5hEcvSyZgtxeWXX67fmf/3//6fWiTxe9ZJAU444QQVx//8z/9MzjrrLNWE1iBnpsZsjHnZZQyX2N/85jd1ogOz+SeddJJeBs5GkL/FTH8ryBF961vfSm/jY0LqAY4A5JaOP/54edWrXtX0mE7GbA2Q0/3whz8sn/zkJ3XiJsuPf/xjdQLg2I8++mh585vfvMHjOxmTF6hEu/DCCzXlgZnsU089dYNJsRtvvFEuueQSrTbD+4+/v9YKw07G5AHeU/z9IfWDyr9ly5bJe9/7Xtlhhx2axiGF4l73wQcfrGOKxeK0x2wJkHtunbCDe+k73/lOkyZ8+9vf1teJXDrcGUijZJmpMRtjXoouIYTMVubdRBohhMxmKLqEEJIjFF1CCMkRii4hhOQIRZcQQnKEoksIITlC0SWEkByh6BJCSI5QdAkhJEcouoQQkiMUXUIIyRGKLiGESH78f/C7VOBg3ONYAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# get beam distribution on OTR screen\n", "info = model.get(\"OTRS:IN20:571:Image:ArrayData\")\n", @@ -67,10 +2182,1093 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "7c2b3ca0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'SOLN:IN20:111:BCTRL': tensor(0.),\n", + " 'SOLN:IN20:111:BCTRL.DRVL': -100.0,\n", + " 'SOLN:IN20:111:BCTRL.DRVH': 100.0,\n", + " 'SOLN:IN20:111:BACT': tensor(0.),\n", + " 'SOLN:IN20:111:BDES': tensor(0.),\n", + " 'SOLN:IN20:111:BMIN': -100.0,\n", + " 'SOLN:IN20:111:BMAX': 100.0,\n", + " 'SOLN:IN20:111:STATCTRLSUB.T': 1.0,\n", + " 'SOLN:IN20:111:CTRL': 'Ready',\n", + " 'SOLN:IN20:121:BCTRL': tensor(0.),\n", + " 'SOLN:IN20:121:BCTRL.DRVL': -100.0,\n", + " 'SOLN:IN20:121:BCTRL.DRVH': 100.0,\n", + " 'SOLN:IN20:121:BACT': tensor(0.),\n", + " 'SOLN:IN20:121:BDES': tensor(0.),\n", + " 'SOLN:IN20:121:BMIN': -100.0,\n", + " 'SOLN:IN20:121:BMAX': 100.0,\n", + " 'SOLN:IN20:121:STATCTRLSUB.T': 1.0,\n", + " 'SOLN:IN20:121:CTRL': 'Ready',\n", + " 'XCOR:IN20:221:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:221:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:221:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:221:BACT': tensor(0.),\n", + " 'XCOR:IN20:221:BDES': tensor(0.),\n", + " 'XCOR:IN20:221:BMIN': -100.0,\n", + " 'XCOR:IN20:221:BMAX': 100.0,\n", + " 'XCOR:IN20:221:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:221:CTRL': 'Ready',\n", + " 'YCOR:IN20:222:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:222:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:222:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:222:BACT': tensor(0.),\n", + " 'YCOR:IN20:222:BDES': tensor(0.),\n", + " 'YCOR:IN20:222:BMIN': -100.0,\n", + " 'YCOR:IN20:222:BMAX': 100.0,\n", + " 'YCOR:IN20:222:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:222:CTRL': 'Ready',\n", + " 'BPMS:IN20:221:X': tensor(5.3644e-12),\n", + " 'BPMS:IN20:221:Y': tensor(9.0152e-12),\n", + " 'BPMS:IN20:221:TMIT': 1.0,\n", + " 'BPMS:IN20:235:X': tensor(5.1409e-12),\n", + " 'BPMS:IN20:235:Y': tensor(1.0058e-11),\n", + " 'BPMS:IN20:235:TMIT': 1.0,\n", + " 'QUAD:IN20:361:BCTRL': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:361:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:361:BACT': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BDES': tensor(-5.2671),\n", + " 'QUAD:IN20:361:BMAX': 100.0,\n", + " 'QUAD:IN20:361:BMIN': -100.0,\n", + " 'QUAD:IN20:361:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:361:CTRL': 'Ready',\n", + " 'QUAD:IN20:371:BCTRL': tensor(5.7451),\n", + " 'QUAD:IN20:371:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:371:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:371:BACT': tensor(5.7451),\n", + " 'QUAD:IN20:371:BDES': tensor(5.7451),\n", + " 'QUAD:IN20:371:BMAX': 100.0,\n", + " 'QUAD:IN20:371:BMIN': -100.0,\n", + " 'QUAD:IN20:371:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:371:CTRL': 'Ready',\n", + " 'QUAD:IN20:425:BCTRL': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:425:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:425:BACT': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BDES': tensor(-0.2164),\n", + " 'QUAD:IN20:425:BMAX': 100.0,\n", + " 'QUAD:IN20:425:BMIN': -100.0,\n", + " 'QUAD:IN20:425:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:425:CTRL': 'Ready',\n", + " 'QUAD:IN20:441:BCTRL': tensor(0.6177),\n", + " 'QUAD:IN20:441:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:441:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:441:BACT': tensor(0.6177),\n", + " 'QUAD:IN20:441:BDES': tensor(0.6177),\n", + " 'QUAD:IN20:441:BMAX': 100.0,\n", + " 'QUAD:IN20:441:BMIN': -100.0,\n", + " 'QUAD:IN20:441:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:441:CTRL': 'Ready',\n", + " 'OTRS:IN20:465:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:465:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:465:Image:ArraySize1_RBV': 1040,\n", + " 'OTRS:IN20:465:Image:ArraySize0_RBV': 1392,\n", + " 'OTRS:IN20:465:RESOLUTION': tensor(18.5900),\n", + " 'OTRS:IN20:465:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:465:N_OF_ROW': 1040,\n", + " 'OTRS:IN20:465:N_OF_COL': 1392,\n", + " 'OTRS:IN20:471:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:471:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:471:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:471:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:471:RESOLUTION': tensor(19.1600),\n", + " 'OTRS:IN20:471:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:471:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:471:N_OF_COL': 1040,\n", + " 'QUAD:IN20:511:BCTRL': tensor(9.1265),\n", + " 'QUAD:IN20:511:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:511:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:511:BACT': tensor(9.1265),\n", + " 'QUAD:IN20:511:BDES': tensor(9.1265),\n", + " 'QUAD:IN20:511:BMAX': 100.0,\n", + " 'QUAD:IN20:511:BMIN': -100.0,\n", + " 'QUAD:IN20:511:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:511:CTRL': 'Ready',\n", + " 'XCOR:IN20:521:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:521:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:521:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:521:BACT': tensor(0.),\n", + " 'XCOR:IN20:521:BDES': tensor(0.),\n", + " 'XCOR:IN20:521:BMIN': -100.0,\n", + " 'XCOR:IN20:521:BMAX': 100.0,\n", + " 'XCOR:IN20:521:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:521:CTRL': 'Ready',\n", + " 'YCOR:IN20:522:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:522:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:522:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:522:BACT': tensor(0.),\n", + " 'YCOR:IN20:522:BDES': tensor(0.),\n", + " 'YCOR:IN20:522:BMIN': -100.0,\n", + " 'YCOR:IN20:522:BMAX': 100.0,\n", + " 'YCOR:IN20:522:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:522:CTRL': 'Ready',\n", + " 'QUAD:IN20:525:BCTRL': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:525:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:525:BACT': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BDES': tensor(-5.3568),\n", + " 'QUAD:IN20:525:BMAX': 100.0,\n", + " 'QUAD:IN20:525:BMIN': -100.0,\n", + " 'QUAD:IN20:525:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:525:CTRL': 'Ready',\n", + " 'OTRS:IN20:541:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:541:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:541:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:541:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:541:RESOLUTION': tensor(12.6600),\n", + " 'OTRS:IN20:541:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:541:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:541:N_OF_COL': 1040,\n", + " 'OTRS:IN20:571:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:571:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:571:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:571:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:571:RESOLUTION': tensor(12.6600),\n", + " 'OTRS:IN20:571:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:571:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:571:N_OF_COL': 1040,\n", + " 'BPMS:IN20:581:X': tensor(2.7940e-12),\n", + " 'BPMS:IN20:581:Y': tensor(-9.0152e-12),\n", + " 'BPMS:IN20:581:TMIT': 1.0,\n", + " 'OTRS:IN20:621:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:621:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:621:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:621:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:621:RESOLUTION': tensor(12.1200),\n", + " 'OTRS:IN20:621:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:621:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:621:N_OF_COL': 1040,\n", + " 'QUAD:IN20:631:BCTRL': tensor(11.8995),\n", + " 'QUAD:IN20:631:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:631:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:631:BACT': tensor(11.8995),\n", + " 'QUAD:IN20:631:BDES': tensor(11.8995),\n", + " 'QUAD:IN20:631:BMAX': 100.0,\n", + " 'QUAD:IN20:631:BMIN': -100.0,\n", + " 'QUAD:IN20:631:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:631:CTRL': 'Ready',\n", + " 'XCOR:IN20:641:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:641:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:641:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:641:BACT': tensor(0.),\n", + " 'XCOR:IN20:641:BDES': tensor(0.),\n", + " 'XCOR:IN20:641:BMIN': -100.0,\n", + " 'XCOR:IN20:641:BMAX': 100.0,\n", + " 'XCOR:IN20:641:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:641:CTRL': 'Ready',\n", + " 'YCOR:IN20:642:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:642:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:642:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:642:BACT': tensor(0.),\n", + " 'YCOR:IN20:642:BDES': tensor(0.),\n", + " 'YCOR:IN20:642:BMIN': -100.0,\n", + " 'YCOR:IN20:642:BMAX': 100.0,\n", + " 'YCOR:IN20:642:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:642:CTRL': 'Ready',\n", + " 'QUAD:IN20:651:BCTRL': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:651:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:651:BACT': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BDES': tensor(-9.4431),\n", + " 'QUAD:IN20:651:BMAX': 100.0,\n", + " 'QUAD:IN20:651:BMIN': -100.0,\n", + " 'QUAD:IN20:651:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:651:CTRL': 'Ready',\n", + " 'OTRS:IN20:711:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:711:PNEUMATIC': 1.0,\n", + " 'OTRS:IN20:711:Image:ArraySize1_RBV': 1392,\n", + " 'OTRS:IN20:711:Image:ArraySize0_RBV': 1040,\n", + " 'OTRS:IN20:711:RESOLUTION': tensor(17.0600),\n", + " 'OTRS:IN20:711:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.]]),\n", + " 'OTRS:IN20:711:N_OF_ROW': 1392,\n", + " 'OTRS:IN20:711:N_OF_COL': 1040,\n", + " 'XCOR:IN20:721:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:721:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:721:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:721:BACT': tensor(0.),\n", + " 'XCOR:IN20:721:BDES': tensor(0.),\n", + " 'XCOR:IN20:721:BMIN': -100.0,\n", + " 'XCOR:IN20:721:BMAX': 100.0,\n", + " 'XCOR:IN20:721:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:721:CTRL': 'Ready',\n", + " 'YCOR:IN20:722:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:722:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:722:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:722:BACT': tensor(0.),\n", + " 'YCOR:IN20:722:BDES': tensor(0.),\n", + " 'YCOR:IN20:722:BMIN': -100.0,\n", + " 'YCOR:IN20:722:BMAX': 100.0,\n", + " 'YCOR:IN20:722:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:722:CTRL': 'Ready',\n", + " 'QUAD:IN20:731:BCTRL': tensor(17.2962),\n", + " 'QUAD:IN20:731:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:731:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:731:BACT': tensor(17.2962),\n", + " 'QUAD:IN20:731:BDES': tensor(17.2962),\n", + " 'QUAD:IN20:731:BMAX': 100.0,\n", + " 'QUAD:IN20:731:BMIN': -100.0,\n", + " 'QUAD:IN20:731:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:731:CTRL': 'Ready',\n", + " 'XCOR:IN20:761:BCTRL': tensor(0.),\n", + " 'XCOR:IN20:761:BCTRL.DRVL': -100.0,\n", + " 'XCOR:IN20:761:BCTRL.DRVH': 100.0,\n", + " 'XCOR:IN20:761:BACT': tensor(0.),\n", + " 'XCOR:IN20:761:BDES': tensor(0.),\n", + " 'XCOR:IN20:761:BMIN': -100.0,\n", + " 'XCOR:IN20:761:BMAX': 100.0,\n", + " 'XCOR:IN20:761:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:IN20:761:CTRL': 'Ready',\n", + " 'YCOR:IN20:762:BCTRL': tensor(0.),\n", + " 'YCOR:IN20:762:BCTRL.DRVL': -100.0,\n", + " 'YCOR:IN20:762:BCTRL.DRVH': 100.0,\n", + " 'YCOR:IN20:762:BACT': tensor(0.),\n", + " 'YCOR:IN20:762:BDES': tensor(0.),\n", + " 'YCOR:IN20:762:BMIN': -100.0,\n", + " 'YCOR:IN20:762:BMAX': 100.0,\n", + " 'YCOR:IN20:762:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:IN20:762:CTRL': 'Ready',\n", + " 'QUAD:IN20:771:BCTRL': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:771:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:771:BACT': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BDES': tensor(-6.5442),\n", + " 'QUAD:IN20:771:BMAX': 100.0,\n", + " 'QUAD:IN20:771:BMIN': -100.0,\n", + " 'QUAD:IN20:771:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:771:CTRL': 'Ready',\n", + " 'QUAD:IN20:781:BCTRL': tensor(10.5227),\n", + " 'QUAD:IN20:781:BCTRL.DRVL': -100.0,\n", + " 'QUAD:IN20:781:BCTRL.DRVH': 100.0,\n", + " 'QUAD:IN20:781:BACT': tensor(10.5227),\n", + " 'QUAD:IN20:781:BDES': tensor(10.5227),\n", + " 'QUAD:IN20:781:BMAX': 100.0,\n", + " 'QUAD:IN20:781:BMIN': -100.0,\n", + " 'QUAD:IN20:781:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:IN20:781:CTRL': 'Ready',\n", + " 'QUAD:LI21:131:BCTRL': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:131:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:131:BACT': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BDES': tensor(-3.5554),\n", + " 'QUAD:LI21:131:BMAX': 100.0,\n", + " 'QUAD:LI21:131:BMIN': -100.0,\n", + " 'QUAD:LI21:131:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:131:CTRL': 'Ready',\n", + " 'QUAD:LI21:161:BCTRL': tensor(1.9730),\n", + " 'QUAD:LI21:161:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:161:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:161:BACT': tensor(1.9730),\n", + " 'QUAD:LI21:161:BDES': tensor(1.9730),\n", + " 'QUAD:LI21:161:BMAX': 100.0,\n", + " 'QUAD:LI21:161:BMIN': -100.0,\n", + " 'QUAD:LI21:161:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:161:CTRL': 'Ready',\n", + " 'QUAD:LI21:201:BCTRL': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:201:BACT': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BDES': tensor(-10.1131),\n", + " 'QUAD:LI21:201:BMAX': 100.0,\n", + " 'QUAD:LI21:201:BMIN': -100.0,\n", + " 'QUAD:LI21:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:201:CTRL': 'Ready',\n", + " 'QUAD:LI21:211:BCTRL': tensor(8.7054),\n", + " 'QUAD:LI21:211:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:211:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:211:BACT': tensor(8.7054),\n", + " 'QUAD:LI21:211:BDES': tensor(8.7054),\n", + " 'QUAD:LI21:211:BMAX': 100.0,\n", + " 'QUAD:LI21:211:BMIN': -100.0,\n", + " 'QUAD:LI21:211:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:211:CTRL': 'Ready',\n", + " 'QUAD:LI21:221:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:221:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:221:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:221:BACT': tensor(0.),\n", + " 'QUAD:LI21:221:BDES': tensor(0.),\n", + " 'QUAD:LI21:221:BMAX': 100.0,\n", + " 'QUAD:LI21:221:BMIN': -100.0,\n", + " 'QUAD:LI21:221:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:221:CTRL': 'Ready',\n", + " 'BPMS:LI21:233:X': tensor(6.5923e-10),\n", + " 'BPMS:LI21:233:Y': tensor(-1.1474e-11),\n", + " 'BPMS:LI21:233:TMIT': 1.0,\n", + " 'QUAD:LI21:243:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:243:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:243:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:243:BACT': tensor(0.),\n", + " 'QUAD:LI21:243:BDES': tensor(0.),\n", + " 'QUAD:LI21:243:BMAX': 100.0,\n", + " 'QUAD:LI21:243:BMIN': -100.0,\n", + " 'QUAD:LI21:243:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:243:CTRL': 'Ready',\n", + " 'QUAD:LI21:251:BCTRL': tensor(0.),\n", + " 'QUAD:LI21:251:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:251:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:251:BACT': tensor(0.),\n", + " 'QUAD:LI21:251:BDES': tensor(0.),\n", + " 'QUAD:LI21:251:BMAX': 100.0,\n", + " 'QUAD:LI21:251:BMIN': -100.0,\n", + " 'QUAD:LI21:251:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:251:CTRL': 'Ready',\n", + " 'QUAD:LI21:271:BCTRL': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:271:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:271:BACT': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BDES': tensor(-9.1188),\n", + " 'QUAD:LI21:271:BMAX': 100.0,\n", + " 'QUAD:LI21:271:BMIN': -100.0,\n", + " 'QUAD:LI21:271:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:271:CTRL': 'Ready',\n", + " 'QUAD:LI21:278:BCTRL': tensor(10.8832),\n", + " 'QUAD:LI21:278:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:278:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:278:BACT': tensor(10.8832),\n", + " 'QUAD:LI21:278:BDES': tensor(10.8832),\n", + " 'QUAD:LI21:278:BMAX': 100.0,\n", + " 'QUAD:LI21:278:BMIN': -100.0,\n", + " 'QUAD:LI21:278:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:278:CTRL': 'Ready',\n", + " 'XCOR:LI21:275:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:275:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:275:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:275:BACT': tensor(0.),\n", + " 'XCOR:LI21:275:BDES': tensor(0.),\n", + " 'XCOR:LI21:275:BMIN': -100.0,\n", + " 'XCOR:LI21:275:BMAX': 100.0,\n", + " 'XCOR:LI21:275:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:275:CTRL': 'Ready',\n", + " 'YCOR:LI21:276:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:276:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:276:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:276:BACT': tensor(0.),\n", + " 'YCOR:LI21:276:BDES': tensor(0.),\n", + " 'YCOR:LI21:276:BMIN': -100.0,\n", + " 'YCOR:LI21:276:BMAX': 100.0,\n", + " 'YCOR:LI21:276:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:276:CTRL': 'Ready',\n", + " 'XCOR:LI21:302:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:302:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:302:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:302:BACT': tensor(0.),\n", + " 'XCOR:LI21:302:BDES': tensor(0.),\n", + " 'XCOR:LI21:302:BMIN': -100.0,\n", + " 'XCOR:LI21:302:BMAX': 100.0,\n", + " 'XCOR:LI21:302:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:302:CTRL': 'Ready',\n", + " 'YCOR:LI21:303:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:303:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:303:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:303:BACT': tensor(0.),\n", + " 'YCOR:LI21:303:BDES': tensor(0.),\n", + " 'YCOR:LI21:303:BMIN': -100.0,\n", + " 'YCOR:LI21:303:BMAX': 100.0,\n", + " 'YCOR:LI21:303:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:303:CTRL': 'Ready',\n", + " 'QUAD:LI21:301:BCTRL': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:301:BACT': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BDES': tensor(-0.1459),\n", + " 'QUAD:LI21:301:BMAX': 100.0,\n", + " 'QUAD:LI21:301:BMIN': -100.0,\n", + " 'QUAD:LI21:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:301:CTRL': 'Ready',\n", + " 'QUAD:LI21:315:BCTRL': tensor(7.7253),\n", + " 'QUAD:LI21:315:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:315:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:315:BACT': tensor(7.7253),\n", + " 'QUAD:LI21:315:BDES': tensor(7.7253),\n", + " 'QUAD:LI21:315:BMAX': 100.0,\n", + " 'QUAD:LI21:315:BMIN': -100.0,\n", + " 'QUAD:LI21:315:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:315:CTRL': 'Ready',\n", + " 'XCOR:LI21:325:BCTRL': tensor(0.),\n", + " 'XCOR:LI21:325:BCTRL.DRVL': -100.0,\n", + " 'XCOR:LI21:325:BCTRL.DRVH': 100.0,\n", + " 'XCOR:LI21:325:BACT': tensor(0.),\n", + " 'XCOR:LI21:325:BDES': tensor(0.),\n", + " 'XCOR:LI21:325:BMIN': -100.0,\n", + " 'XCOR:LI21:325:BMAX': 100.0,\n", + " 'XCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", + " 'XCOR:LI21:325:CTRL': 'Ready',\n", + " 'YCOR:LI21:325:BCTRL': tensor(0.),\n", + " 'YCOR:LI21:325:BCTRL.DRVL': -100.0,\n", + " 'YCOR:LI21:325:BCTRL.DRVH': 100.0,\n", + " 'YCOR:LI21:325:BACT': tensor(0.),\n", + " 'YCOR:LI21:325:BDES': tensor(0.),\n", + " 'YCOR:LI21:325:BMIN': -100.0,\n", + " 'YCOR:LI21:325:BMAX': 100.0,\n", + " 'YCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", + " 'YCOR:LI21:325:CTRL': 'Ready',\n", + " 'QUAD:LI21:335:BCTRL': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:335:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:335:BACT': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BDES': tensor(-7.3627),\n", + " 'QUAD:LI21:335:BMAX': 100.0,\n", + " 'QUAD:LI21:335:BMIN': -100.0,\n", + " 'QUAD:LI21:335:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:335:CTRL': 'Ready',\n", + " 'QUAD:LI21:401:BCTRL': tensor(1.6531),\n", + " 'QUAD:LI21:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:401:BACT': tensor(1.6531),\n", + " 'QUAD:LI21:401:BDES': tensor(1.6531),\n", + " 'QUAD:LI21:401:BMAX': 100.0,\n", + " 'QUAD:LI21:401:BMIN': -100.0,\n", + " 'QUAD:LI21:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:401:CTRL': 'Ready',\n", + " 'QUAD:LI21:501:BCTRL': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:501:BACT': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BDES': tensor(-1.8189),\n", + " 'QUAD:LI21:501:BMAX': 100.0,\n", + " 'QUAD:LI21:501:BMIN': -100.0,\n", + " 'QUAD:LI21:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:501:CTRL': 'Ready',\n", + " 'QUAD:LI21:601:BCTRL': tensor(2.0186),\n", + " 'QUAD:LI21:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:601:BACT': tensor(2.0186),\n", + " 'QUAD:LI21:601:BDES': tensor(2.0186),\n", + " 'QUAD:LI21:601:BMAX': 100.0,\n", + " 'QUAD:LI21:601:BMIN': -100.0,\n", + " 'QUAD:LI21:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:601:CTRL': 'Ready',\n", + " 'QUAD:LI21:701:BCTRL': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:701:BACT': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BDES': tensor(-2.4272),\n", + " 'QUAD:LI21:701:BMAX': 100.0,\n", + " 'QUAD:LI21:701:BMIN': -100.0,\n", + " 'QUAD:LI21:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:701:CTRL': 'Ready',\n", + " 'QUAD:LI21:801:BCTRL': tensor(2.9797),\n", + " 'QUAD:LI21:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:801:BACT': tensor(2.9797),\n", + " 'QUAD:LI21:801:BDES': tensor(2.9797),\n", + " 'QUAD:LI21:801:BMAX': 100.0,\n", + " 'QUAD:LI21:801:BMIN': -100.0,\n", + " 'QUAD:LI21:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:801:CTRL': 'Ready',\n", + " 'QUAD:LI21:901:BCTRL': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI21:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI21:901:BACT': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BDES': tensor(-3.3480),\n", + " 'QUAD:LI21:901:BMAX': 100.0,\n", + " 'QUAD:LI21:901:BMIN': -100.0,\n", + " 'QUAD:LI21:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI21:901:CTRL': 'Ready',\n", + " 'QUAD:LI22:201:BCTRL': tensor(3.7680),\n", + " 'QUAD:LI22:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:201:BACT': tensor(3.7680),\n", + " 'QUAD:LI22:201:BDES': tensor(3.7680),\n", + " 'QUAD:LI22:201:BMAX': 100.0,\n", + " 'QUAD:LI22:201:BMIN': -100.0,\n", + " 'QUAD:LI22:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:201:CTRL': 'Ready',\n", + " 'QUAD:LI22:301:BCTRL': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:301:BACT': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BDES': tensor(-4.4849),\n", + " 'QUAD:LI22:301:BMAX': 100.0,\n", + " 'QUAD:LI22:301:BMIN': -100.0,\n", + " 'QUAD:LI22:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:301:CTRL': 'Ready',\n", + " 'QUAD:LI22:401:BCTRL': tensor(4.6014),\n", + " 'QUAD:LI22:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:401:BACT': tensor(4.6014),\n", + " 'QUAD:LI22:401:BDES': tensor(4.6014),\n", + " 'QUAD:LI22:401:BMAX': 100.0,\n", + " 'QUAD:LI22:401:BMIN': -100.0,\n", + " 'QUAD:LI22:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:401:CTRL': 'Ready',\n", + " 'QUAD:LI22:501:BCTRL': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:501:BACT': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BDES': tensor(-5.0345),\n", + " 'QUAD:LI22:501:BMAX': 100.0,\n", + " 'QUAD:LI22:501:BMIN': -100.0,\n", + " 'QUAD:LI22:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:501:CTRL': 'Ready',\n", + " 'QUAD:LI22:601:BCTRL': tensor(5.4676),\n", + " 'QUAD:LI22:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:601:BACT': tensor(5.4676),\n", + " 'QUAD:LI22:601:BDES': tensor(5.4676),\n", + " 'QUAD:LI22:601:BMAX': 100.0,\n", + " 'QUAD:LI22:601:BMIN': -100.0,\n", + " 'QUAD:LI22:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:601:CTRL': 'Ready',\n", + " 'QUAD:LI22:701:BCTRL': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:701:BACT': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BDES': tensor(-5.9007),\n", + " 'QUAD:LI22:701:BMAX': 100.0,\n", + " 'QUAD:LI22:701:BMIN': -100.0,\n", + " 'QUAD:LI22:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:701:CTRL': 'Ready',\n", + " 'QUAD:LI22:801:BCTRL': tensor(6.6840),\n", + " 'QUAD:LI22:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:801:BACT': tensor(6.6840),\n", + " 'QUAD:LI22:801:BDES': tensor(6.6840),\n", + " 'QUAD:LI22:801:BMAX': 100.0,\n", + " 'QUAD:LI22:801:BMIN': -100.0,\n", + " 'QUAD:LI22:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:801:CTRL': 'Ready',\n", + " 'QUAD:LI22:901:BCTRL': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI22:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI22:901:BACT': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BDES': tensor(-6.7820),\n", + " 'QUAD:LI22:901:BMAX': 100.0,\n", + " 'QUAD:LI22:901:BMIN': -100.0,\n", + " 'QUAD:LI22:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI22:901:CTRL': 'Ready',\n", + " 'QUAD:LI23:201:BCTRL': tensor(7.3259),\n", + " 'QUAD:LI23:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:201:BACT': tensor(7.3259),\n", + " 'QUAD:LI23:201:BDES': tensor(7.3259),\n", + " 'QUAD:LI23:201:BMAX': 100.0,\n", + " 'QUAD:LI23:201:BMIN': -100.0,\n", + " 'QUAD:LI23:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:201:CTRL': 'Ready',\n", + " 'QUAD:LI23:301:BCTRL': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:301:BACT': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BDES': tensor(-7.9935),\n", + " 'QUAD:LI23:301:BMAX': 100.0,\n", + " 'QUAD:LI23:301:BMIN': -100.0,\n", + " 'QUAD:LI23:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:301:CTRL': 'Ready',\n", + " 'QUAD:LI23:401:BCTRL': tensor(8.0660),\n", + " 'QUAD:LI23:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:401:BACT': tensor(8.0660),\n", + " 'QUAD:LI23:401:BDES': tensor(8.0660),\n", + " 'QUAD:LI23:401:BMAX': 100.0,\n", + " 'QUAD:LI23:401:BMIN': -100.0,\n", + " 'QUAD:LI23:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:401:CTRL': 'Ready',\n", + " 'QUAD:LI23:501:BCTRL': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:501:BACT': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BDES': tensor(-8.4991),\n", + " 'QUAD:LI23:501:BMAX': 100.0,\n", + " 'QUAD:LI23:501:BMIN': -100.0,\n", + " 'QUAD:LI23:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:501:CTRL': 'Ready',\n", + " 'QUAD:LI23:601:BCTRL': tensor(8.9322),\n", + " 'QUAD:LI23:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:601:BACT': tensor(8.9322),\n", + " 'QUAD:LI23:601:BDES': tensor(8.9322),\n", + " 'QUAD:LI23:601:BMAX': 100.0,\n", + " 'QUAD:LI23:601:BMIN': -100.0,\n", + " 'QUAD:LI23:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:601:CTRL': 'Ready',\n", + " 'QUAD:LI23:701:BCTRL': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:701:BACT': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BDES': tensor(-9.3653),\n", + " 'QUAD:LI23:701:BMAX': 100.0,\n", + " 'QUAD:LI23:701:BMIN': -100.0,\n", + " 'QUAD:LI23:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:701:CTRL': 'Ready',\n", + " 'QUAD:LI23:801:BCTRL': tensor(10.6598),\n", + " 'QUAD:LI23:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:801:BACT': tensor(10.6598),\n", + " 'QUAD:LI23:801:BDES': tensor(10.6598),\n", + " 'QUAD:LI23:801:BMAX': 100.0,\n", + " 'QUAD:LI23:801:BMIN': -100.0,\n", + " 'QUAD:LI23:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:801:CTRL': 'Ready',\n", + " 'QUAD:LI23:901:BCTRL': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI23:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI23:901:BACT': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BDES': tensor(-10.4981),\n", + " 'QUAD:LI23:901:BMAX': 100.0,\n", + " 'QUAD:LI23:901:BMIN': -100.0,\n", + " 'QUAD:LI23:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI23:901:CTRL': 'Ready',\n", + " 'QUAD:LI24:201:BCTRL': tensor(11.7319),\n", + " 'QUAD:LI24:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:201:BACT': tensor(11.7319),\n", + " 'QUAD:LI24:201:BDES': tensor(11.7319),\n", + " 'QUAD:LI24:201:BMAX': 100.0,\n", + " 'QUAD:LI24:201:BMIN': -100.0,\n", + " 'QUAD:LI24:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:201:CTRL': 'Ready',\n", + " 'QUAD:LI24:301:BCTRL': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:301:BACT': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BDES': tensor(-13.4178),\n", + " 'QUAD:LI24:301:BMAX': 100.0,\n", + " 'QUAD:LI24:301:BMIN': -100.0,\n", + " 'QUAD:LI24:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:301:CTRL': 'Ready',\n", + " 'QUAD:LI24:401:BCTRL': tensor(16.6813),\n", + " 'QUAD:LI24:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:401:BACT': tensor(16.6813),\n", + " 'QUAD:LI24:401:BDES': tensor(16.6813),\n", + " 'QUAD:LI24:401:BMAX': 100.0,\n", + " 'QUAD:LI24:401:BMIN': -100.0,\n", + " 'QUAD:LI24:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:401:CTRL': 'Ready',\n", + " 'QUAD:LI24:501:BCTRL': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:501:BACT': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BDES': tensor(-16.1118),\n", + " 'QUAD:LI24:501:BMAX': 100.0,\n", + " 'QUAD:LI24:501:BMIN': -100.0,\n", + " 'QUAD:LI24:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:501:CTRL': 'Ready',\n", + " 'QUAD:LI24:601:BCTRL': tensor(10.6424),\n", + " 'QUAD:LI24:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:601:BACT': tensor(10.6424),\n", + " 'QUAD:LI24:601:BDES': tensor(10.6424),\n", + " 'QUAD:LI24:601:BMAX': 100.0,\n", + " 'QUAD:LI24:601:BMIN': -100.0,\n", + " 'QUAD:LI24:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:601:CTRL': 'Ready',\n", + " 'QUAD:LI24:701:BCTRL': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:701:BACT': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BDES': tensor(-23.6738),\n", + " 'QUAD:LI24:701:BMAX': 100.0,\n", + " 'QUAD:LI24:701:BMIN': -100.0,\n", + " 'QUAD:LI24:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:701:CTRL': 'Ready',\n", + " 'QUAD:LI24:702:BCTRL': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:702:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:702:BACT': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BDES': tensor(-23.6738),\n", + " 'QUAD:LI24:702:BMAX': 100.0,\n", + " 'QUAD:LI24:702:BMIN': -100.0,\n", + " 'QUAD:LI24:702:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:702:CTRL': 'Ready',\n", + " 'QUAD:LI24:713:BCTRL': tensor(40.0117),\n", + " 'QUAD:LI24:713:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:713:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:713:BACT': tensor(40.0117),\n", + " 'QUAD:LI24:713:BDES': tensor(40.0117),\n", + " 'QUAD:LI24:713:BMAX': 100.0,\n", + " 'QUAD:LI24:713:BMIN': -100.0,\n", + " 'QUAD:LI24:713:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:713:CTRL': 'Ready',\n", + " 'QUAD:LI24:740:BCTRL': tensor(0.),\n", + " 'QUAD:LI24:740:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:740:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:740:BACT': tensor(0.),\n", + " 'QUAD:LI24:740:BDES': tensor(0.),\n", + " 'QUAD:LI24:740:BMAX': 100.0,\n", + " 'QUAD:LI24:740:BMIN': -100.0,\n", + " 'QUAD:LI24:740:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:740:CTRL': 'Ready',\n", + " 'BPMS:LI24:801:X': tensor(4.0082e-09),\n", + " 'BPMS:LI24:801:Y': tensor(8.8476e-13),\n", + " 'BPMS:LI24:801:TMIT': 1.0,\n", + " 'QUAD:LI24:860:BCTRL': tensor(0.),\n", + " 'QUAD:LI24:860:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:860:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:860:BACT': tensor(0.),\n", + " 'QUAD:LI24:860:BDES': tensor(0.),\n", + " 'QUAD:LI24:860:BMAX': 100.0,\n", + " 'QUAD:LI24:860:BMIN': -100.0,\n", + " 'QUAD:LI24:860:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:860:CTRL': 'Ready',\n", + " 'QUAD:LI24:892:BCTRL': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:892:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:892:BACT': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BDES': tensor(-46.0741),\n", + " 'QUAD:LI24:892:BMAX': 100.0,\n", + " 'QUAD:LI24:892:BMIN': -100.0,\n", + " 'QUAD:LI24:892:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:892:CTRL': 'Ready',\n", + " 'QUAD:LI24:901:BCTRL': tensor(19.5866),\n", + " 'QUAD:LI24:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:901:BACT': tensor(19.5866),\n", + " 'QUAD:LI24:901:BDES': tensor(19.5866),\n", + " 'QUAD:LI24:901:BMAX': 100.0,\n", + " 'QUAD:LI24:901:BMIN': -100.0,\n", + " 'QUAD:LI24:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:901:CTRL': 'Ready',\n", + " 'QUAD:LI24:902:BCTRL': tensor(19.5866),\n", + " 'QUAD:LI24:902:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI24:902:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI24:902:BACT': tensor(19.5866),\n", + " 'QUAD:LI24:902:BDES': tensor(19.5866),\n", + " 'QUAD:LI24:902:BMAX': 100.0,\n", + " 'QUAD:LI24:902:BMIN': -100.0,\n", + " 'QUAD:LI24:902:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI24:902:CTRL': 'Ready',\n", + " 'QUAD:LI25:201:BCTRL': tensor(13.0575),\n", + " 'QUAD:LI25:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:201:BACT': tensor(13.0575),\n", + " 'QUAD:LI25:201:BDES': tensor(13.0575),\n", + " 'QUAD:LI25:201:BMAX': 100.0,\n", + " 'QUAD:LI25:201:BMIN': -100.0,\n", + " 'QUAD:LI25:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:201:CTRL': 'Ready',\n", + " 'QUAD:LI25:301:BCTRL': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:301:BACT': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BDES': tensor(-9.2534),\n", + " 'QUAD:LI25:301:BMAX': 100.0,\n", + " 'QUAD:LI25:301:BMIN': -100.0,\n", + " 'QUAD:LI25:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:301:CTRL': 'Ready',\n", + " 'QUAD:LI25:401:BCTRL': tensor(8.5408),\n", + " 'QUAD:LI25:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:401:BACT': tensor(8.5408),\n", + " 'QUAD:LI25:401:BDES': tensor(8.5408),\n", + " 'QUAD:LI25:401:BMAX': 100.0,\n", + " 'QUAD:LI25:401:BMIN': -100.0,\n", + " 'QUAD:LI25:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:401:CTRL': 'Ready',\n", + " 'QUAD:LI25:501:BCTRL': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:501:BACT': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BDES': tensor(-8.2272),\n", + " 'QUAD:LI25:501:BMAX': 100.0,\n", + " 'QUAD:LI25:501:BMIN': -100.0,\n", + " 'QUAD:LI25:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:501:CTRL': 'Ready',\n", + " 'QUAD:LI25:601:BCTRL': tensor(8.4082),\n", + " 'QUAD:LI25:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:601:BACT': tensor(8.4082),\n", + " 'QUAD:LI25:601:BDES': tensor(8.4082),\n", + " 'QUAD:LI25:601:BMAX': 100.0,\n", + " 'QUAD:LI25:601:BMIN': -100.0,\n", + " 'QUAD:LI25:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:601:CTRL': 'Ready',\n", + " 'QUAD:LI25:701:BCTRL': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:701:BACT': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BDES': tensor(-8.6768),\n", + " 'QUAD:LI25:701:BMAX': 100.0,\n", + " 'QUAD:LI25:701:BMIN': -100.0,\n", + " 'QUAD:LI25:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:701:CTRL': 'Ready',\n", + " 'QUAD:LI25:801:BCTRL': tensor(9.2171),\n", + " 'QUAD:LI25:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:801:BACT': tensor(9.2171),\n", + " 'QUAD:LI25:801:BDES': tensor(9.2171),\n", + " 'QUAD:LI25:801:BMAX': 100.0,\n", + " 'QUAD:LI25:801:BMIN': -100.0,\n", + " 'QUAD:LI25:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:801:CTRL': 'Ready',\n", + " 'QUAD:LI25:901:BCTRL': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI25:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI25:901:BACT': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BDES': tensor(-9.0578),\n", + " 'QUAD:LI25:901:BMAX': 100.0,\n", + " 'QUAD:LI25:901:BMIN': -100.0,\n", + " 'QUAD:LI25:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI25:901:CTRL': 'Ready',\n", + " 'QUAD:LI26:201:BCTRL': tensor(9.3287),\n", + " 'QUAD:LI26:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:201:BACT': tensor(9.3287),\n", + " 'QUAD:LI26:201:BDES': tensor(9.3287),\n", + " 'QUAD:LI26:201:BMAX': 100.0,\n", + " 'QUAD:LI26:201:BMIN': -100.0,\n", + " 'QUAD:LI26:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:201:CTRL': 'Ready',\n", + " 'QUAD:LI26:301:BCTRL': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:301:BACT': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BDES': tensor(-10.0039),\n", + " 'QUAD:LI26:301:BMAX': 100.0,\n", + " 'QUAD:LI26:301:BMIN': -100.0,\n", + " 'QUAD:LI26:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:301:CTRL': 'Ready',\n", + " 'QUAD:LI26:401:BCTRL': tensor(10.0393),\n", + " 'QUAD:LI26:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:401:BACT': tensor(10.0393),\n", + " 'QUAD:LI26:401:BDES': tensor(10.0393),\n", + " 'QUAD:LI26:401:BMAX': 100.0,\n", + " 'QUAD:LI26:401:BMIN': -100.0,\n", + " 'QUAD:LI26:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:401:CTRL': 'Ready',\n", + " 'QUAD:LI26:501:BCTRL': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:501:BACT': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BDES': tensor(-10.3072),\n", + " 'QUAD:LI26:501:BMAX': 100.0,\n", + " 'QUAD:LI26:501:BMIN': -100.0,\n", + " 'QUAD:LI26:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:501:CTRL': 'Ready',\n", + " 'QUAD:LI26:601:BCTRL': tensor(10.5830),\n", + " 'QUAD:LI26:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:601:BACT': tensor(10.5830),\n", + " 'QUAD:LI26:601:BDES': tensor(10.5830),\n", + " 'QUAD:LI26:601:BMAX': 100.0,\n", + " 'QUAD:LI26:601:BMIN': -100.0,\n", + " 'QUAD:LI26:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:601:CTRL': 'Ready',\n", + " 'QUAD:LI26:701:BCTRL': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:701:BACT': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BDES': tensor(-10.8507),\n", + " 'QUAD:LI26:701:BMAX': 100.0,\n", + " 'QUAD:LI26:701:BMIN': -100.0,\n", + " 'QUAD:LI26:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:701:CTRL': 'Ready',\n", + " 'QUAD:LI26:801:BCTRL': tensor(11.4136),\n", + " 'QUAD:LI26:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:801:BACT': tensor(11.4136),\n", + " 'QUAD:LI26:801:BDES': tensor(11.4136),\n", + " 'QUAD:LI26:801:BMAX': 100.0,\n", + " 'QUAD:LI26:801:BMIN': -100.0,\n", + " 'QUAD:LI26:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:801:CTRL': 'Ready',\n", + " 'QUAD:LI26:901:BCTRL': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI26:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI26:901:BACT': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BDES': tensor(-11.1960),\n", + " 'QUAD:LI26:901:BMAX': 100.0,\n", + " 'QUAD:LI26:901:BMIN': -100.0,\n", + " 'QUAD:LI26:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI26:901:CTRL': 'Ready',\n", + " 'QUAD:LI27:201:BCTRL': tensor(11.2623),\n", + " 'QUAD:LI27:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:201:BACT': tensor(11.2623),\n", + " 'QUAD:LI27:201:BDES': tensor(11.2623),\n", + " 'QUAD:LI27:201:BMAX': 100.0,\n", + " 'QUAD:LI27:201:BMIN': -100.0,\n", + " 'QUAD:LI27:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:201:CTRL': 'Ready',\n", + " 'QUAD:LI27:301:BCTRL': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:301:BACT': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BDES': tensor(-11.7260),\n", + " 'QUAD:LI27:301:BMAX': 100.0,\n", + " 'QUAD:LI27:301:BMIN': -100.0,\n", + " 'QUAD:LI27:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:301:CTRL': 'Ready',\n", + " 'QUAD:LI27:401:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI27:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:401:BACT': tensor(11.3985),\n", + " 'QUAD:LI27:401:BDES': tensor(11.3985),\n", + " 'QUAD:LI27:401:BMAX': 100.0,\n", + " 'QUAD:LI27:401:BMIN': -100.0,\n", + " 'QUAD:LI27:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:401:CTRL': 'Ready',\n", + " 'QUAD:LI27:501:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:501:BACT': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BDES': tensor(-11.3942),\n", + " 'QUAD:LI27:501:BMAX': 100.0,\n", + " 'QUAD:LI27:501:BMIN': -100.0,\n", + " 'QUAD:LI27:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:501:CTRL': 'Ready',\n", + " 'QUAD:LI27:601:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI27:601:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:601:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:601:BACT': tensor(11.3985),\n", + " 'QUAD:LI27:601:BDES': tensor(11.3985),\n", + " 'QUAD:LI27:601:BMAX': 100.0,\n", + " 'QUAD:LI27:601:BMIN': -100.0,\n", + " 'QUAD:LI27:601:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:601:CTRL': 'Ready',\n", + " 'QUAD:LI27:701:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:701:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:701:BACT': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BDES': tensor(-11.3942),\n", + " 'QUAD:LI27:701:BMAX': 100.0,\n", + " 'QUAD:LI27:701:BMIN': -100.0,\n", + " 'QUAD:LI27:701:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:701:CTRL': 'Ready',\n", + " 'QUAD:LI27:801:BCTRL': tensor(11.7159),\n", + " 'QUAD:LI27:801:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:801:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:801:BACT': tensor(11.7159),\n", + " 'QUAD:LI27:801:BDES': tensor(11.7159),\n", + " 'QUAD:LI27:801:BMAX': 100.0,\n", + " 'QUAD:LI27:801:BMIN': -100.0,\n", + " 'QUAD:LI27:801:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:801:CTRL': 'Ready',\n", + " 'QUAD:LI27:901:BCTRL': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI27:901:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI27:901:BACT': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BDES': tensor(-11.2172),\n", + " 'QUAD:LI27:901:BMAX': 100.0,\n", + " 'QUAD:LI27:901:BMIN': -100.0,\n", + " 'QUAD:LI27:901:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI27:901:CTRL': 'Ready',\n", + " 'QUAD:LI28:201:BCTRL': tensor(11.2548),\n", + " 'QUAD:LI28:201:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:201:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:201:BACT': tensor(11.2548),\n", + " 'QUAD:LI28:201:BDES': tensor(11.2548),\n", + " 'QUAD:LI28:201:BMAX': 100.0,\n", + " 'QUAD:LI28:201:BMIN': -100.0,\n", + " 'QUAD:LI28:201:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:201:CTRL': 'Ready',\n", + " 'QUAD:LI28:301:BCTRL': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:301:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:301:BACT': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BDES': tensor(-11.7069),\n", + " 'QUAD:LI28:301:BMAX': 100.0,\n", + " 'QUAD:LI28:301:BMIN': -100.0,\n", + " 'QUAD:LI28:301:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:301:CTRL': 'Ready',\n", + " 'QUAD:LI28:401:BCTRL': tensor(11.3985),\n", + " 'QUAD:LI28:401:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:401:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:401:BACT': tensor(11.3985),\n", + " 'QUAD:LI28:401:BDES': tensor(11.3985),\n", + " 'QUAD:LI28:401:BMAX': 100.0,\n", + " 'QUAD:LI28:401:BMIN': -100.0,\n", + " 'QUAD:LI28:401:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:401:CTRL': 'Ready',\n", + " 'QUAD:LI28:501:BCTRL': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BCTRL.DRVL': -100.0,\n", + " 'QUAD:LI28:501:BCTRL.DRVH': 100.0,\n", + " 'QUAD:LI28:501:BACT': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BDES': tensor(-11.3942),\n", + " 'QUAD:LI28:501:BMAX': 100.0,\n", + " 'QUAD:LI28:501:BMIN': -100.0,\n", + " 'QUAD:LI28:501:STATCTRLSUB.T': 1.0,\n", + " 'QUAD:LI28:501:CTRL': 'Ready',\n", + " 'QUAD:LI28:601:BCTRL': tensor(11.3985),\n", + " ...}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Reset model and verify variables when back to init values\n", "model.reset()\n", @@ -102,7 +3300,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.13" + "version": "3.13.14" } }, "nbformat": 4, diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index bd65029..8eebe24 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -5,8 +5,6 @@ classes. """ -from typing import Any - from lume_cheetah.actions import ( CheetahReadOnlyEnumVariable, CheetahReadOnlyNDVariable, @@ -26,6 +24,10 @@ def get_magnetic_rigidity(energy): return 33.356 * energy / 1e9 +class _ReadOnlyActionMixin(ReadOnlyActionMixin): + read_only: bool = True + + class _ReadbackFromControlMixin(ReadOnlyActionMixin): """Read-only mixin for readbacks that reuse control `_get` logic.""" @@ -39,7 +41,6 @@ def _set(self, simulator, value) -> None: raise RuntimeError(f"{self.name} is read-only") - class QuadrupoleBCTRLVariable(CheetahWritableScalarVariable): """Quadrupole control/desired magnetic strength (BCTRL/BDES) in kG.""" @@ -48,7 +49,11 @@ class QuadrupoleBCTRLVariable(CheetahWritableScalarVariable): def _get(self, simulator): element, energy = self._resolve_element_and_energy(simulator, self.element_name) - return getattr(element, self.element_attribute) * element.length * get_magnetic_rigidity(energy) + return ( + getattr(element, self.element_attribute) + * element.length + * get_magnetic_rigidity(energy) + ) def _set(self, simulator, value): element, energy = self._resolve_element_and_energy(simulator, self.element_name) @@ -136,32 +141,36 @@ class KickerBACTVariable(_ReadbackFromControlMixin, KickerBCTRLVariable): """Horizontal/vertical corrector readback variable (BACT) in kG.""" -class StatusVariable(TorchScalarVariable, ReadOnlyActionMixin): +class StatusVariable(TorchScalarVariable, _ReadOnlyActionMixin): """Read-only device status scalar value.""" + element_name: str def _get(self, simulator): return 1.0 -class BminVariable(TorchScalarVariable, ReadOnlyActionMixin): +class BminVariable(TorchScalarVariable, _ReadOnlyActionMixin): """Read-only lower operating limit variable for magnet-like devices.""" + element_name: str def _get(self, simulator): return -BCTRL_LIMIT -class BmaxVariable(TorchScalarVariable, ReadOnlyActionMixin): +class BmaxVariable(TorchScalarVariable, _ReadOnlyActionMixin): """Read-only upper operating limit variable for magnet-like devices.""" + element_name: str def _get(self, simulator): return BCTRL_LIMIT -class ControlStateVariable(EnumVariable, ReadOnlyActionMixin): +class ControlStateVariable(EnumVariable, _ReadOnlyActionMixin): """Read-only high-level control state enum for magnet-like devices.""" + element_name: str options: list[str] = ["Ready", "TRIM", "PERTURB", "BCON_TO_BDES", "BACT_TO_BDES"] @@ -191,8 +200,9 @@ def _get(self, simulator): return super()._get(simulator)[1] -class BPMTMITDummyVariable(TorchScalarVariable, ReadOnlyActionMixin): +class BPMTMITDummyVariable(TorchScalarVariable, _ReadOnlyActionMixin): """Read-only placeholder BPM intensity variable for interface parity.""" + element_name: str unit: str = "arbitrary units" @@ -255,6 +265,7 @@ def _get(self, simulator): class ScreenImageVariable(CheetahReadOnlyNDVariable): """Read-only screen image array variable.""" + element_attribute: str = "reading" def _get(self, simulator): @@ -263,6 +274,7 @@ def _get(self, simulator): class ScreenImageArraySizeVariable(CheetahReadOnlyScalarVariable): """Read-only scalar for screen image dimension metadata values.""" + element_attribute: str = "resolution" index: int @@ -282,6 +294,7 @@ def _get(self, simulator): class ScreenPneumaticVariable(CheetahWritableScalarVariable): """Writable scalar representing screen insertion/activation control.""" + element_attribute: str = "is_active" def _get(self, simulator): diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 965f62d..54ca5ac 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -48,6 +48,13 @@ "N_OF_COL": "ScreenImageArraySizeVariable", } +SCREEN_ARRAY_SIZE_INDEX_BY_SUFFIX = { + "Image:ArraySize1_RBV": 0, + "N_OF_ROW": 0, + "Image:ArraySize0_RBV": 1, + "N_OF_COL": 1, +} + def _resolve_variable_class_name(var_spec: Any) -> str: """Extract the variable class name from config entries. @@ -77,7 +84,9 @@ def _resolve_element_variable_mapping( return element_attr_mapping.get(mapping_key) -def _resolve_control_name(element_name: str, device_mapping: dict[str, str]) -> str | None: +def _resolve_control_name( + element_name: str, device_mapping: dict[str, str] +) -> str | None: """Resolve control-system base PV from an element name. Supports direct element-name matches and split-element fallback by removing @@ -134,6 +143,14 @@ def _instantiate_element_variables( if issubclass(var_class, cheetah_actions.CheetahReadOnlyNDVariable): init_kwargs["shape"] = image_shape or (1,) + if var_class_name == "ScreenImageArraySizeVariable": + size_index = SCREEN_ARRAY_SIZE_INDEX_BY_SUFFIX.get(attr) + if size_index is None: + raise ValueError( + f"No screen array-size index configured for suffix {attr!r}" + ) + init_kwargs["index"] = size_index + element_variables[variable_name] = var_class(**init_kwargs) return element_variables @@ -199,7 +216,9 @@ def get_variables_from_segment( continue processed_control_names.add(control_name) - class_mapping = _resolve_element_variable_mapping(element_type, element_attr_mapping) + class_mapping = _resolve_element_variable_mapping( + element_type, element_attr_mapping + ) if class_mapping is None: warnings.warn( f"Element type {element_type} for {element.name} not found in variable mapping" diff --git a/virtual_accelerator/models/cu_hxr.py b/virtual_accelerator/models/cu_hxr.py index a73c1d0..cff8778 100644 --- a/virtual_accelerator/models/cu_hxr.py +++ b/virtual_accelerator/models/cu_hxr.py @@ -90,7 +90,7 @@ def get_cu_hxr_staged_model(n_particles: int = 1000, **kwargs) -> StagedModel: return staged_model -def get_cu_hxr_cheetah_model(n_particles: int = 1000) -> "LUMECheetahModel": +def get_cu_hxr_cheetah_model(n_particles: int = 1000): """ Get the LUMECheetahModel for the CU_HXR lattice. @@ -158,4 +158,4 @@ def get_cu_hxr_cheetah_model(n_particles: int = 1000) -> "LUMECheetahModel": action_variables=list(variables.values()), ) - return model \ No newline at end of file + return model diff --git a/virtual_accelerator/tests/test_cheetah_actions.py b/virtual_accelerator/tests/test_cheetah_actions.py index 2a9a52f..6091be4 100644 --- a/virtual_accelerator/tests/test_cheetah_actions.py +++ b/virtual_accelerator/tests/test_cheetah_actions.py @@ -48,7 +48,7 @@ def test_quadrupole_bctrl_roundtrip(self, simulator): variable = QuadrupoleBCTRLVariable( name="QUAD:IN20:511:BCTRL", element_name="Q1", - pv_attribute="BCTRL", + element_attribute="k1", ) initial_value = float(variable._get(simulator)) @@ -64,7 +64,7 @@ def test_quadrupole_bact_is_read_only(self, simulator): variable = QuadrupoleBACTVariable( name="QUAD:IN20:511:BACT", element_name="Q1", - pv_attribute="BACT", + element_attribute="k1", ) with pytest.raises(RuntimeError): diff --git a/virtual_accelerator/tests/test_cu_hxr.py b/virtual_accelerator/tests/test_cu_hxr.py index 3b23c59..714cd26 100644 --- a/virtual_accelerator/tests/test_cu_hxr.py +++ b/virtual_accelerator/tests/test_cu_hxr.py @@ -287,4 +287,4 @@ def test_bpm_pvs_have_expected_suffixes(self): def test_roundtrip_pv_get_set(self): model = get_cu_hxr_cheetah_model() - assert_roundtrip_pv_get_set(model) \ No newline at end of file + assert_roundtrip_pv_get_set(model) diff --git a/virtual_accelerator/tests/test_facet.py b/virtual_accelerator/tests/test_facet.py index 500ba18..9d2af25 100644 --- a/virtual_accelerator/tests/test_facet.py +++ b/virtual_accelerator/tests/test_facet.py @@ -173,7 +173,9 @@ def test_staged_model(self): ) assert screen_pv in staged_model.supported_variables - @pytest.mark.parametrize("element_type", ["Quadrupole", "HKicker", "VKicker", "SBend"]) + @pytest.mark.parametrize( + "element_type", ["Quadrupole", "HKicker", "VKicker", "SBend"] + ) def test_magnet_pvs_match_tao_lattice(self, element_type): model = get_facet_bmad_model(end_element="PR10711") assert_magnet_pvs_match_tao_lattice(model, element_type) From 23e7690206232ff2df526c58cef4c63350f63419 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Mon, 13 Jul 2026 16:24:58 -0500 Subject: [PATCH 09/16] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 56f43ef..538c39a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ dependencies = [ "numpy", "scipy", "pyyaml", - "lume-base @ git+https://github.com/slaclab/lume-base", + "lume-base", ] [project.urls] From 4ed26bf547cf2f6bfb1c567f8d94155bd8b06507 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Mon, 13 Jul 2026 16:26:36 -0500 Subject: [PATCH 10/16] clear outputs --- examples/cheetah_model_example.ipynb | 3218 +------------------------- 1 file changed, 10 insertions(+), 3208 deletions(-) diff --git a/examples/cheetah_model_example.ipynb b/examples/cheetah_model_example.ipynb index 8134207..2e72aef 100644 --- a/examples/cheetah_model_example.ipynb +++ b/examples/cheetah_model_example.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "aeb55fa2", "metadata": {}, "outputs": [], @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "6313fc77", "metadata": {}, "outputs": [], @@ -31,1021 +31,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "062b9f09", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'SOLN:IN20:111:BCTRL': SolenoidBCTRLVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:111:BCTRL.DRVL': BminVariable(read_only=True, name='SOLN:IN20:111:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", - " 'SOLN:IN20:111:BCTRL.DRVH': BmaxVariable(read_only=True, name='SOLN:IN20:111:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", - " 'SOLN:IN20:111:BACT': SolenoidBACTVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:111:BDES': SolenoidBCTRLVariable(element_name='sol1bk', element_attribute='k', name='SOLN:IN20:111:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:111:BMIN': BminVariable(read_only=True, name='SOLN:IN20:111:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", - " 'SOLN:IN20:111:BMAX': BmaxVariable(read_only=True, name='SOLN:IN20:111:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", - " 'SOLN:IN20:111:STATCTRLSUB.T': StatusVariable(read_only=True, name='SOLN:IN20:111:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1bk'),\n", - " 'SOLN:IN20:111:CTRL': ControlStateVariable(read_only=True, name='SOLN:IN20:111:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sol1bk'),\n", - " 'SOLN:IN20:121:BCTRL': SolenoidBCTRLVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:121:BCTRL.DRVL': BminVariable(read_only=True, name='SOLN:IN20:121:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", - " 'SOLN:IN20:121:BCTRL.DRVH': BmaxVariable(read_only=True, name='SOLN:IN20:121:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", - " 'SOLN:IN20:121:BACT': SolenoidBACTVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:121:BDES': SolenoidBCTRLVariable(element_name='sol1', element_attribute='k', name='SOLN:IN20:121:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'SOLN:IN20:121:BMIN': BminVariable(read_only=True, name='SOLN:IN20:121:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", - " 'SOLN:IN20:121:BMAX': BmaxVariable(read_only=True, name='SOLN:IN20:121:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", - " 'SOLN:IN20:121:STATCTRLSUB.T': StatusVariable(read_only=True, name='SOLN:IN20:121:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sol1'),\n", - " 'SOLN:IN20:121:CTRL': ControlStateVariable(read_only=True, name='SOLN:IN20:121:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sol1'),\n", - " 'XCOR:IN20:221:BCTRL': KickerBCTRLVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:221:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:221:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", - " 'XCOR:IN20:221:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:221:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", - " 'XCOR:IN20:221:BACT': KickerBACTVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:221:BDES': KickerBCTRLVariable(element_name='xc01', element_attribute='angle', name='XCOR:IN20:221:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:221:BMIN': BminVariable(read_only=True, name='XCOR:IN20:221:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", - " 'XCOR:IN20:221:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:221:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", - " 'XCOR:IN20:221:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:221:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc01'),\n", - " 'XCOR:IN20:221:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:221:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc01'),\n", - " 'YCOR:IN20:222:BCTRL': KickerBCTRLVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:222:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:222:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", - " 'YCOR:IN20:222:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:222:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", - " 'YCOR:IN20:222:BACT': KickerBACTVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:222:BDES': KickerBCTRLVariable(element_name='yc01', element_attribute='angle', name='YCOR:IN20:222:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:222:BMIN': BminVariable(read_only=True, name='YCOR:IN20:222:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", - " 'YCOR:IN20:222:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:222:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", - " 'YCOR:IN20:222:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:222:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc01'),\n", - " 'YCOR:IN20:222:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:222:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc01'),\n", - " 'BPMS:IN20:221:X': BPMXVariable(element_name='bpm2', element_attribute='reading', name='BPMS:IN20:221:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:221:Y': BPMYVariable(element_name='bpm2', element_attribute='reading', name='BPMS:IN20:221:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:221:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:221:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm2'),\n", - " 'BPMS:IN20:235:X': BPMXVariable(element_name='bpm3', element_attribute='reading', name='BPMS:IN20:235:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:235:Y': BPMYVariable(element_name='bpm3', element_attribute='reading', name='BPMS:IN20:235:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:235:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:235:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm3'),\n", - " 'QUAD:IN20:361:BCTRL': QuadrupoleBCTRLVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:361:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:361:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", - " 'QUAD:IN20:361:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:361:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", - " 'QUAD:IN20:361:BACT': QuadrupoleBACTVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:361:BDES': QuadrupoleBCTRLVariable(element_name='qa01', element_attribute='k1', name='QUAD:IN20:361:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:361:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:361:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", - " 'QUAD:IN20:361:BMIN': BminVariable(read_only=True, name='QUAD:IN20:361:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", - " 'QUAD:IN20:361:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:361:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa01'),\n", - " 'QUAD:IN20:361:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:361:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa01'),\n", - " 'QUAD:IN20:371:BCTRL': QuadrupoleBCTRLVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:371:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:371:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", - " 'QUAD:IN20:371:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:371:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", - " 'QUAD:IN20:371:BACT': QuadrupoleBACTVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:371:BDES': QuadrupoleBCTRLVariable(element_name='qa02', element_attribute='k1', name='QUAD:IN20:371:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:371:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:371:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", - " 'QUAD:IN20:371:BMIN': BminVariable(read_only=True, name='QUAD:IN20:371:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", - " 'QUAD:IN20:371:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:371:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa02'),\n", - " 'QUAD:IN20:371:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:371:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa02'),\n", - " 'QUAD:IN20:425:BCTRL': QuadrupoleBCTRLVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:425:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:425:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", - " 'QUAD:IN20:425:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:425:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", - " 'QUAD:IN20:425:BACT': QuadrupoleBACTVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:425:BDES': QuadrupoleBCTRLVariable(element_name='qe01', element_attribute='k1', name='QUAD:IN20:425:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:425:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:425:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", - " 'QUAD:IN20:425:BMIN': BminVariable(read_only=True, name='QUAD:IN20:425:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", - " 'QUAD:IN20:425:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:425:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe01'),\n", - " 'QUAD:IN20:425:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:425:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe01'),\n", - " 'QUAD:IN20:441:BCTRL': QuadrupoleBCTRLVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:441:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:441:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", - " 'QUAD:IN20:441:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:441:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", - " 'QUAD:IN20:441:BACT': QuadrupoleBACTVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:441:BDES': QuadrupoleBCTRLVariable(element_name='qe02', element_attribute='k1', name='QUAD:IN20:441:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:441:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:441:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", - " 'QUAD:IN20:441:BMIN': BminVariable(read_only=True, name='QUAD:IN20:441:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", - " 'QUAD:IN20:441:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:441:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe02'),\n", - " 'QUAD:IN20:441:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:441:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe02'),\n", - " 'OTRS:IN20:465:Image:ArrayData': ScreenImageVariable(element_name='otrh1', element_attribute='reading', name='OTRS:IN20:465:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1040, 1392), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:465:PNEUMATIC': ScreenPneumaticVariable(element_name='otrh1', element_attribute='is_active', name='OTRS:IN20:465:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:465:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:465:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:465:RESOLUTION': ScreenResolutionVariable(element_name='otrh1', element_attribute='pixel_size', name='OTRS:IN20:465:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:465:IMAGE': ScreenImageVariable(element_name='otrh1', element_attribute='reading', name='OTRS:IN20:465:IMAGE', read_only=True, default_validation_config='none', shape=(1040, 1392), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:465:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:465:N_OF_COL': ScreenImageArraySizeVariable(element_name='otrh1', element_attribute='resolution', name='OTRS:IN20:465:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:471:Image:ArrayData': ScreenImageVariable(element_name='otrh2', element_attribute='reading', name='OTRS:IN20:471:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:471:PNEUMATIC': ScreenPneumaticVariable(element_name='otrh2', element_attribute='is_active', name='OTRS:IN20:471:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:471:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:471:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:471:RESOLUTION': ScreenResolutionVariable(element_name='otrh2', element_attribute='pixel_size', name='OTRS:IN20:471:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:471:IMAGE': ScreenImageVariable(element_name='otrh2', element_attribute='reading', name='OTRS:IN20:471:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:471:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:471:N_OF_COL': ScreenImageArraySizeVariable(element_name='otrh2', element_attribute='resolution', name='OTRS:IN20:471:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'QUAD:IN20:511:BCTRL': QuadrupoleBCTRLVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:511:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:511:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", - " 'QUAD:IN20:511:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:511:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", - " 'QUAD:IN20:511:BACT': QuadrupoleBACTVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:511:BDES': QuadrupoleBCTRLVariable(element_name='qe03', element_attribute='k1', name='QUAD:IN20:511:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:511:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:511:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", - " 'QUAD:IN20:511:BMIN': BminVariable(read_only=True, name='QUAD:IN20:511:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", - " 'QUAD:IN20:511:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:511:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe03'),\n", - " 'QUAD:IN20:511:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:511:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe03'),\n", - " 'XCOR:IN20:521:BCTRL': KickerBCTRLVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:521:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:521:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", - " 'XCOR:IN20:521:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:521:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", - " 'XCOR:IN20:521:BACT': KickerBACTVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:521:BDES': KickerBCTRLVariable(element_name='xc07', element_attribute='angle', name='XCOR:IN20:521:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:521:BMIN': BminVariable(read_only=True, name='XCOR:IN20:521:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", - " 'XCOR:IN20:521:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:521:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", - " 'XCOR:IN20:521:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:521:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc07'),\n", - " 'XCOR:IN20:521:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:521:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc07'),\n", - " 'YCOR:IN20:522:BCTRL': KickerBCTRLVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:522:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:522:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", - " 'YCOR:IN20:522:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:522:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", - " 'YCOR:IN20:522:BACT': KickerBACTVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:522:BDES': KickerBCTRLVariable(element_name='yc07', element_attribute='angle', name='YCOR:IN20:522:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:522:BMIN': BminVariable(read_only=True, name='YCOR:IN20:522:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", - " 'YCOR:IN20:522:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:522:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", - " 'YCOR:IN20:522:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:522:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc07'),\n", - " 'YCOR:IN20:522:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:522:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc07'),\n", - " 'QUAD:IN20:525:BCTRL': QuadrupoleBCTRLVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:525:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:525:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", - " 'QUAD:IN20:525:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:525:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", - " 'QUAD:IN20:525:BACT': QuadrupoleBACTVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:525:BDES': QuadrupoleBCTRLVariable(element_name='qe04', element_attribute='k1', name='QUAD:IN20:525:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:525:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:525:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", - " 'QUAD:IN20:525:BMIN': BminVariable(read_only=True, name='QUAD:IN20:525:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", - " 'QUAD:IN20:525:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:525:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qe04'),\n", - " 'QUAD:IN20:525:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:525:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qe04'),\n", - " 'OTRS:IN20:541:Image:ArrayData': ScreenImageVariable(element_name='otr1', element_attribute='reading', name='OTRS:IN20:541:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:541:PNEUMATIC': ScreenPneumaticVariable(element_name='otr1', element_attribute='is_active', name='OTRS:IN20:541:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:541:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:541:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:541:RESOLUTION': ScreenResolutionVariable(element_name='otr1', element_attribute='pixel_size', name='OTRS:IN20:541:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:541:IMAGE': ScreenImageVariable(element_name='otr1', element_attribute='reading', name='OTRS:IN20:541:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:541:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:541:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr1', element_attribute='resolution', name='OTRS:IN20:541:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:571:Image:ArrayData': ScreenImageVariable(element_name='otr2', element_attribute='reading', name='OTRS:IN20:571:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:571:PNEUMATIC': ScreenPneumaticVariable(element_name='otr2', element_attribute='is_active', name='OTRS:IN20:571:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:571:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:571:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:571:RESOLUTION': ScreenResolutionVariable(element_name='otr2', element_attribute='pixel_size', name='OTRS:IN20:571:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:571:IMAGE': ScreenImageVariable(element_name='otr2', element_attribute='reading', name='OTRS:IN20:571:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:571:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:571:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr2', element_attribute='resolution', name='OTRS:IN20:571:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'BPMS:IN20:581:X': BPMXVariable(element_name='bpm10', element_attribute='reading', name='BPMS:IN20:581:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:581:Y': BPMYVariable(element_name='bpm10', element_attribute='reading', name='BPMS:IN20:581:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:IN20:581:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:IN20:581:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpm10'),\n", - " 'OTRS:IN20:621:Image:ArrayData': ScreenImageVariable(element_name='otr3', element_attribute='reading', name='OTRS:IN20:621:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:621:PNEUMATIC': ScreenPneumaticVariable(element_name='otr3', element_attribute='is_active', name='OTRS:IN20:621:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:621:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:621:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:621:RESOLUTION': ScreenResolutionVariable(element_name='otr3', element_attribute='pixel_size', name='OTRS:IN20:621:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:621:IMAGE': ScreenImageVariable(element_name='otr3', element_attribute='reading', name='OTRS:IN20:621:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:621:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:621:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr3', element_attribute='resolution', name='OTRS:IN20:621:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'QUAD:IN20:631:BCTRL': QuadrupoleBCTRLVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:631:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:631:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", - " 'QUAD:IN20:631:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:631:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", - " 'QUAD:IN20:631:BACT': QuadrupoleBACTVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:631:BDES': QuadrupoleBCTRLVariable(element_name='qm01', element_attribute='k1', name='QUAD:IN20:631:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:631:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:631:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", - " 'QUAD:IN20:631:BMIN': BminVariable(read_only=True, name='QUAD:IN20:631:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", - " 'QUAD:IN20:631:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:631:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm01'),\n", - " 'QUAD:IN20:631:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:631:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm01'),\n", - " 'XCOR:IN20:641:BCTRL': KickerBCTRLVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:641:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:641:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", - " 'XCOR:IN20:641:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:641:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", - " 'XCOR:IN20:641:BACT': KickerBACTVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:641:BDES': KickerBCTRLVariable(element_name='xc08', element_attribute='angle', name='XCOR:IN20:641:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:641:BMIN': BminVariable(read_only=True, name='XCOR:IN20:641:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", - " 'XCOR:IN20:641:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:641:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", - " 'XCOR:IN20:641:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:641:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc08'),\n", - " 'XCOR:IN20:641:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:641:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc08'),\n", - " 'YCOR:IN20:642:BCTRL': KickerBCTRLVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:642:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:642:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", - " 'YCOR:IN20:642:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:642:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", - " 'YCOR:IN20:642:BACT': KickerBACTVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:642:BDES': KickerBCTRLVariable(element_name='yc08', element_attribute='angle', name='YCOR:IN20:642:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:642:BMIN': BminVariable(read_only=True, name='YCOR:IN20:642:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", - " 'YCOR:IN20:642:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:642:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", - " 'YCOR:IN20:642:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:642:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc08'),\n", - " 'YCOR:IN20:642:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:642:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc08'),\n", - " 'QUAD:IN20:651:BCTRL': QuadrupoleBCTRLVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:651:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:651:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", - " 'QUAD:IN20:651:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:651:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", - " 'QUAD:IN20:651:BACT': QuadrupoleBACTVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:651:BDES': QuadrupoleBCTRLVariable(element_name='qm02', element_attribute='k1', name='QUAD:IN20:651:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:651:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:651:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", - " 'QUAD:IN20:651:BMIN': BminVariable(read_only=True, name='QUAD:IN20:651:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", - " 'QUAD:IN20:651:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:651:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm02'),\n", - " 'QUAD:IN20:651:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:651:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm02'),\n", - " 'OTRS:IN20:711:Image:ArrayData': ScreenImageVariable(element_name='otr4', element_attribute='reading', name='OTRS:IN20:711:Image:ArrayData', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:711:PNEUMATIC': ScreenPneumaticVariable(element_name='otr4', element_attribute='is_active', name='OTRS:IN20:711:PNEUMATIC', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None),\n", - " 'OTRS:IN20:711:Image:ArraySize1_RBV': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:Image:ArraySize1_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:711:Image:ArraySize0_RBV': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:Image:ArraySize0_RBV', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'OTRS:IN20:711:RESOLUTION': ScreenResolutionVariable(element_name='otr4', element_attribute='pixel_size', name='OTRS:IN20:711:RESOLUTION', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='um', dtype=None),\n", - " 'OTRS:IN20:711:IMAGE': ScreenImageVariable(element_name='otr4', element_attribute='reading', name='OTRS:IN20:711:IMAGE', read_only=True, default_validation_config='none', shape=(1392, 1040), dtype=torch.float32, default_value=None, unit=None),\n", - " 'OTRS:IN20:711:N_OF_ROW': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:N_OF_ROW', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=0),\n", - " 'OTRS:IN20:711:N_OF_COL': ScreenImageArraySizeVariable(element_name='otr4', element_attribute='resolution', name='OTRS:IN20:711:N_OF_COL', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, index=1),\n", - " 'XCOR:IN20:721:BCTRL': KickerBCTRLVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:721:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:721:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", - " 'XCOR:IN20:721:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:721:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", - " 'XCOR:IN20:721:BACT': KickerBACTVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:721:BDES': KickerBCTRLVariable(element_name='xc09', element_attribute='angle', name='XCOR:IN20:721:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:721:BMIN': BminVariable(read_only=True, name='XCOR:IN20:721:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", - " 'XCOR:IN20:721:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:721:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", - " 'XCOR:IN20:721:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:721:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc09'),\n", - " 'XCOR:IN20:721:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:721:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc09'),\n", - " 'YCOR:IN20:722:BCTRL': KickerBCTRLVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:722:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:722:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", - " 'YCOR:IN20:722:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:722:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", - " 'YCOR:IN20:722:BACT': KickerBACTVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:722:BDES': KickerBCTRLVariable(element_name='yc09', element_attribute='angle', name='YCOR:IN20:722:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:722:BMIN': BminVariable(read_only=True, name='YCOR:IN20:722:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", - " 'YCOR:IN20:722:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:722:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", - " 'YCOR:IN20:722:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:722:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc09'),\n", - " 'YCOR:IN20:722:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:722:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc09'),\n", - " 'QUAD:IN20:731:BCTRL': QuadrupoleBCTRLVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:731:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:731:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", - " 'QUAD:IN20:731:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:731:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", - " 'QUAD:IN20:731:BACT': QuadrupoleBACTVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:731:BDES': QuadrupoleBCTRLVariable(element_name='qb', element_attribute='k1', name='QUAD:IN20:731:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:731:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:731:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", - " 'QUAD:IN20:731:BMIN': BminVariable(read_only=True, name='QUAD:IN20:731:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", - " 'QUAD:IN20:731:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:731:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qb'),\n", - " 'QUAD:IN20:731:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:731:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qb'),\n", - " 'XCOR:IN20:761:BCTRL': KickerBCTRLVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:761:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:IN20:761:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", - " 'XCOR:IN20:761:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:IN20:761:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", - " 'XCOR:IN20:761:BACT': KickerBACTVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:761:BDES': KickerBCTRLVariable(element_name='xc10', element_attribute='angle', name='XCOR:IN20:761:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:IN20:761:BMIN': BminVariable(read_only=True, name='XCOR:IN20:761:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", - " 'XCOR:IN20:761:BMAX': BmaxVariable(read_only=True, name='XCOR:IN20:761:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", - " 'XCOR:IN20:761:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:IN20:761:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc10'),\n", - " 'XCOR:IN20:761:CTRL': ControlStateVariable(read_only=True, name='XCOR:IN20:761:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc10'),\n", - " 'YCOR:IN20:762:BCTRL': KickerBCTRLVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:762:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:IN20:762:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", - " 'YCOR:IN20:762:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:IN20:762:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", - " 'YCOR:IN20:762:BACT': KickerBACTVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:762:BDES': KickerBCTRLVariable(element_name='yc10', element_attribute='angle', name='YCOR:IN20:762:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:IN20:762:BMIN': BminVariable(read_only=True, name='YCOR:IN20:762:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", - " 'YCOR:IN20:762:BMAX': BmaxVariable(read_only=True, name='YCOR:IN20:762:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", - " 'YCOR:IN20:762:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:IN20:762:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc10'),\n", - " 'YCOR:IN20:762:CTRL': ControlStateVariable(read_only=True, name='YCOR:IN20:762:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc10'),\n", - " 'QUAD:IN20:771:BCTRL': QuadrupoleBCTRLVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:771:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:771:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", - " 'QUAD:IN20:771:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:771:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", - " 'QUAD:IN20:771:BACT': QuadrupoleBACTVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:771:BDES': QuadrupoleBCTRLVariable(element_name='qm03', element_attribute='k1', name='QUAD:IN20:771:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:771:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:771:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", - " 'QUAD:IN20:771:BMIN': BminVariable(read_only=True, name='QUAD:IN20:771:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", - " 'QUAD:IN20:771:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:771:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm03'),\n", - " 'QUAD:IN20:771:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:771:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm03'),\n", - " 'QUAD:IN20:781:BCTRL': QuadrupoleBCTRLVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:781:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:IN20:781:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", - " 'QUAD:IN20:781:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:IN20:781:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", - " 'QUAD:IN20:781:BACT': QuadrupoleBACTVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:781:BDES': QuadrupoleBCTRLVariable(element_name='qm04', element_attribute='k1', name='QUAD:IN20:781:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:IN20:781:BMAX': BmaxVariable(read_only=True, name='QUAD:IN20:781:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", - " 'QUAD:IN20:781:BMIN': BminVariable(read_only=True, name='QUAD:IN20:781:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", - " 'QUAD:IN20:781:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:IN20:781:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm04'),\n", - " 'QUAD:IN20:781:CTRL': ControlStateVariable(read_only=True, name='QUAD:IN20:781:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm04'),\n", - " 'QUAD:LI21:131:BCTRL': QuadrupoleBCTRLVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:131:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:131:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", - " 'QUAD:LI21:131:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:131:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", - " 'QUAD:LI21:131:BACT': QuadrupoleBACTVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:131:BDES': QuadrupoleBCTRLVariable(element_name='qa11', element_attribute='k1', name='QUAD:LI21:131:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:131:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:131:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", - " 'QUAD:LI21:131:BMIN': BminVariable(read_only=True, name='QUAD:LI21:131:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", - " 'QUAD:LI21:131:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:131:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa11'),\n", - " 'QUAD:LI21:131:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:131:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa11'),\n", - " 'QUAD:LI21:161:BCTRL': QuadrupoleBCTRLVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:161:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:161:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", - " 'QUAD:LI21:161:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:161:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", - " 'QUAD:LI21:161:BACT': QuadrupoleBACTVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:161:BDES': QuadrupoleBCTRLVariable(element_name='qa12', element_attribute='k1', name='QUAD:LI21:161:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:161:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:161:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", - " 'QUAD:LI21:161:BMIN': BminVariable(read_only=True, name='QUAD:LI21:161:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", - " 'QUAD:LI21:161:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:161:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qa12'),\n", - " 'QUAD:LI21:161:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:161:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qa12'),\n", - " 'QUAD:LI21:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", - " 'QUAD:LI21:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", - " 'QUAD:LI21:201:BACT': QuadrupoleBACTVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:201:BDES': QuadrupoleBCTRLVariable(element_name='q21201', element_attribute='k1', name='QUAD:LI21:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", - " 'QUAD:LI21:201:BMIN': BminVariable(read_only=True, name='QUAD:LI21:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", - " 'QUAD:LI21:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21201'),\n", - " 'QUAD:LI21:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21201'),\n", - " 'QUAD:LI21:211:BCTRL': QuadrupoleBCTRLVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:211:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:211:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", - " 'QUAD:LI21:211:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:211:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", - " 'QUAD:LI21:211:BACT': QuadrupoleBACTVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:211:BDES': QuadrupoleBCTRLVariable(element_name='qm11', element_attribute='k1', name='QUAD:LI21:211:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:211:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:211:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", - " 'QUAD:LI21:211:BMIN': BminVariable(read_only=True, name='QUAD:LI21:211:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", - " 'QUAD:LI21:211:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:211:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm11'),\n", - " 'QUAD:LI21:211:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:211:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm11'),\n", - " 'QUAD:LI21:221:BCTRL': QuadrupoleBCTRLVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:221:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:221:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", - " 'QUAD:LI21:221:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:221:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", - " 'QUAD:LI21:221:BACT': QuadrupoleBACTVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:221:BDES': QuadrupoleBCTRLVariable(element_name='cq11', element_attribute='k1', name='QUAD:LI21:221:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:221:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:221:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", - " 'QUAD:LI21:221:BMIN': BminVariable(read_only=True, name='QUAD:LI21:221:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", - " 'QUAD:LI21:221:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:221:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq11'),\n", - " 'QUAD:LI21:221:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:221:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq11'),\n", - " 'BPMS:LI21:233:X': BPMXVariable(element_name='bpms11', element_attribute='reading', name='BPMS:LI21:233:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:LI21:233:Y': BPMYVariable(element_name='bpms11', element_attribute='reading', name='BPMS:LI21:233:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:LI21:233:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:LI21:233:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpms11'),\n", - " 'QUAD:LI21:243:BCTRL': QuadrupoleBCTRLVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:243:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:243:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", - " 'QUAD:LI21:243:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:243:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", - " 'QUAD:LI21:243:BACT': QuadrupoleBACTVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:243:BDES': QuadrupoleBCTRLVariable(element_name='sq13', element_attribute='k1', name='QUAD:LI21:243:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:243:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:243:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", - " 'QUAD:LI21:243:BMIN': BminVariable(read_only=True, name='QUAD:LI21:243:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", - " 'QUAD:LI21:243:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:243:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='sq13'),\n", - " 'QUAD:LI21:243:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:243:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='sq13'),\n", - " 'QUAD:LI21:251:BCTRL': QuadrupoleBCTRLVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:251:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:251:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", - " 'QUAD:LI21:251:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:251:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", - " 'QUAD:LI21:251:BACT': QuadrupoleBACTVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:251:BDES': QuadrupoleBCTRLVariable(element_name='cq12', element_attribute='k1', name='QUAD:LI21:251:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:251:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:251:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", - " 'QUAD:LI21:251:BMIN': BminVariable(read_only=True, name='QUAD:LI21:251:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", - " 'QUAD:LI21:251:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:251:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq12'),\n", - " 'QUAD:LI21:251:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:251:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq12'),\n", - " 'QUAD:LI21:271:BCTRL': QuadrupoleBCTRLVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:271:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:271:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", - " 'QUAD:LI21:271:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:271:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", - " 'QUAD:LI21:271:BACT': QuadrupoleBACTVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:271:BDES': QuadrupoleBCTRLVariable(element_name='qm12', element_attribute='k1', name='QUAD:LI21:271:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:271:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:271:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", - " 'QUAD:LI21:271:BMIN': BminVariable(read_only=True, name='QUAD:LI21:271:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", - " 'QUAD:LI21:271:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:271:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm12'),\n", - " 'QUAD:LI21:271:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:271:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm12'),\n", - " 'QUAD:LI21:278:BCTRL': QuadrupoleBCTRLVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:278:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:278:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", - " 'QUAD:LI21:278:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:278:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", - " 'QUAD:LI21:278:BACT': QuadrupoleBACTVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:278:BDES': QuadrupoleBCTRLVariable(element_name='qm13', element_attribute='k1', name='QUAD:LI21:278:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:278:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:278:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", - " 'QUAD:LI21:278:BMIN': BminVariable(read_only=True, name='QUAD:LI21:278:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", - " 'QUAD:LI21:278:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:278:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm13'),\n", - " 'QUAD:LI21:278:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:278:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm13'),\n", - " 'XCOR:LI21:275:BCTRL': KickerBCTRLVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:275:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:275:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", - " 'XCOR:LI21:275:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:275:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", - " 'XCOR:LI21:275:BACT': KickerBACTVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:275:BDES': KickerBCTRLVariable(element_name='xc21275', element_attribute='angle', name='XCOR:LI21:275:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:275:BMIN': BminVariable(read_only=True, name='XCOR:LI21:275:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", - " 'XCOR:LI21:275:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:275:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", - " 'XCOR:LI21:275:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:275:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21275'),\n", - " 'XCOR:LI21:275:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:275:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21275'),\n", - " 'YCOR:LI21:276:BCTRL': KickerBCTRLVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:276:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:276:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", - " 'YCOR:LI21:276:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:276:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", - " 'YCOR:LI21:276:BACT': KickerBACTVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:276:BDES': KickerBCTRLVariable(element_name='yc21276', element_attribute='angle', name='YCOR:LI21:276:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:276:BMIN': BminVariable(read_only=True, name='YCOR:LI21:276:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", - " 'YCOR:LI21:276:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:276:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", - " 'YCOR:LI21:276:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:276:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21276'),\n", - " 'YCOR:LI21:276:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:276:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21276'),\n", - " 'XCOR:LI21:302:BCTRL': KickerBCTRLVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:302:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:302:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", - " 'XCOR:LI21:302:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:302:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", - " 'XCOR:LI21:302:BACT': KickerBACTVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:302:BDES': KickerBCTRLVariable(element_name='xc21302', element_attribute='angle', name='XCOR:LI21:302:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:302:BMIN': BminVariable(read_only=True, name='XCOR:LI21:302:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", - " 'XCOR:LI21:302:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:302:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", - " 'XCOR:LI21:302:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:302:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21302'),\n", - " 'XCOR:LI21:302:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:302:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21302'),\n", - " 'YCOR:LI21:303:BCTRL': KickerBCTRLVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:303:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:303:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", - " 'YCOR:LI21:303:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:303:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", - " 'YCOR:LI21:303:BACT': KickerBACTVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:303:BDES': KickerBCTRLVariable(element_name='yc21303', element_attribute='angle', name='YCOR:LI21:303:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:303:BMIN': BminVariable(read_only=True, name='YCOR:LI21:303:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", - " 'YCOR:LI21:303:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:303:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", - " 'YCOR:LI21:303:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:303:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21303'),\n", - " 'YCOR:LI21:303:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:303:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21303'),\n", - " 'QUAD:LI21:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", - " 'QUAD:LI21:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", - " 'QUAD:LI21:301:BACT': QuadrupoleBACTVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:301:BDES': QuadrupoleBCTRLVariable(element_name='q21301', element_attribute='k1', name='QUAD:LI21:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", - " 'QUAD:LI21:301:BMIN': BminVariable(read_only=True, name='QUAD:LI21:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", - " 'QUAD:LI21:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21301'),\n", - " 'QUAD:LI21:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21301'),\n", - " 'QUAD:LI21:315:BCTRL': QuadrupoleBCTRLVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:315:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:315:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", - " 'QUAD:LI21:315:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:315:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", - " 'QUAD:LI21:315:BACT': QuadrupoleBACTVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:315:BDES': QuadrupoleBCTRLVariable(element_name='qm14', element_attribute='k1', name='QUAD:LI21:315:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:315:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:315:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", - " 'QUAD:LI21:315:BMIN': BminVariable(read_only=True, name='QUAD:LI21:315:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", - " 'QUAD:LI21:315:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:315:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm14'),\n", - " 'QUAD:LI21:315:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:315:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm14'),\n", - " 'XCOR:LI21:325:BCTRL': KickerBCTRLVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:325:BCTRL.DRVL': BminVariable(read_only=True, name='XCOR:LI21:325:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", - " 'XCOR:LI21:325:BCTRL.DRVH': BmaxVariable(read_only=True, name='XCOR:LI21:325:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", - " 'XCOR:LI21:325:BACT': KickerBACTVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:325:BDES': KickerBCTRLVariable(element_name='xc21325', element_attribute='angle', name='XCOR:LI21:325:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'XCOR:LI21:325:BMIN': BminVariable(read_only=True, name='XCOR:LI21:325:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", - " 'XCOR:LI21:325:BMAX': BmaxVariable(read_only=True, name='XCOR:LI21:325:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", - " 'XCOR:LI21:325:STATCTRLSUB.T': StatusVariable(read_only=True, name='XCOR:LI21:325:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='xc21325'),\n", - " 'XCOR:LI21:325:CTRL': ControlStateVariable(read_only=True, name='XCOR:LI21:325:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='xc21325'),\n", - " 'YCOR:LI21:325:BCTRL': KickerBCTRLVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:325:BCTRL.DRVL': BminVariable(read_only=True, name='YCOR:LI21:325:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", - " 'YCOR:LI21:325:BCTRL.DRVH': BmaxVariable(read_only=True, name='YCOR:LI21:325:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", - " 'YCOR:LI21:325:BACT': KickerBACTVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:325:BDES': KickerBCTRLVariable(element_name='yc21325', element_attribute='angle', name='YCOR:LI21:325:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'YCOR:LI21:325:BMIN': BminVariable(read_only=True, name='YCOR:LI21:325:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", - " 'YCOR:LI21:325:BMAX': BmaxVariable(read_only=True, name='YCOR:LI21:325:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", - " 'YCOR:LI21:325:STATCTRLSUB.T': StatusVariable(read_only=True, name='YCOR:LI21:325:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='yc21325'),\n", - " 'YCOR:LI21:325:CTRL': ControlStateVariable(read_only=True, name='YCOR:LI21:325:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='yc21325'),\n", - " 'QUAD:LI21:335:BCTRL': QuadrupoleBCTRLVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:335:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:335:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", - " 'QUAD:LI21:335:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:335:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", - " 'QUAD:LI21:335:BACT': QuadrupoleBACTVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:335:BDES': QuadrupoleBCTRLVariable(element_name='qm15', element_attribute='k1', name='QUAD:LI21:335:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:335:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:335:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", - " 'QUAD:LI21:335:BMIN': BminVariable(read_only=True, name='QUAD:LI21:335:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", - " 'QUAD:LI21:335:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:335:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm15'),\n", - " 'QUAD:LI21:335:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:335:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm15'),\n", - " 'QUAD:LI21:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", - " 'QUAD:LI21:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", - " 'QUAD:LI21:401:BACT': QuadrupoleBACTVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:401:BDES': QuadrupoleBCTRLVariable(element_name='q21401', element_attribute='k1', name='QUAD:LI21:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", - " 'QUAD:LI21:401:BMIN': BminVariable(read_only=True, name='QUAD:LI21:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", - " 'QUAD:LI21:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21401'),\n", - " 'QUAD:LI21:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21401'),\n", - " 'QUAD:LI21:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", - " 'QUAD:LI21:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", - " 'QUAD:LI21:501:BACT': QuadrupoleBACTVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:501:BDES': QuadrupoleBCTRLVariable(element_name='q21501', element_attribute='k1', name='QUAD:LI21:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", - " 'QUAD:LI21:501:BMIN': BminVariable(read_only=True, name='QUAD:LI21:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", - " 'QUAD:LI21:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21501'),\n", - " 'QUAD:LI21:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21501'),\n", - " 'QUAD:LI21:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", - " 'QUAD:LI21:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", - " 'QUAD:LI21:601:BACT': QuadrupoleBACTVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:601:BDES': QuadrupoleBCTRLVariable(element_name='q21601', element_attribute='k1', name='QUAD:LI21:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", - " 'QUAD:LI21:601:BMIN': BminVariable(read_only=True, name='QUAD:LI21:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", - " 'QUAD:LI21:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21601'),\n", - " 'QUAD:LI21:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21601'),\n", - " 'QUAD:LI21:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", - " 'QUAD:LI21:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", - " 'QUAD:LI21:701:BACT': QuadrupoleBACTVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:701:BDES': QuadrupoleBCTRLVariable(element_name='q21701', element_attribute='k1', name='QUAD:LI21:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", - " 'QUAD:LI21:701:BMIN': BminVariable(read_only=True, name='QUAD:LI21:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", - " 'QUAD:LI21:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21701'),\n", - " 'QUAD:LI21:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21701'),\n", - " 'QUAD:LI21:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", - " 'QUAD:LI21:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", - " 'QUAD:LI21:801:BACT': QuadrupoleBACTVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:801:BDES': QuadrupoleBCTRLVariable(element_name='q21801', element_attribute='k1', name='QUAD:LI21:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", - " 'QUAD:LI21:801:BMIN': BminVariable(read_only=True, name='QUAD:LI21:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", - " 'QUAD:LI21:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21801'),\n", - " 'QUAD:LI21:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21801'),\n", - " 'QUAD:LI21:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI21:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", - " 'QUAD:LI21:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI21:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", - " 'QUAD:LI21:901:BACT': QuadrupoleBACTVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:901:BDES': QuadrupoleBCTRLVariable(element_name='q21901', element_attribute='k1', name='QUAD:LI21:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI21:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI21:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", - " 'QUAD:LI21:901:BMIN': BminVariable(read_only=True, name='QUAD:LI21:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", - " 'QUAD:LI21:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI21:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q21901'),\n", - " 'QUAD:LI21:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI21:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q21901'),\n", - " 'QUAD:LI22:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", - " 'QUAD:LI22:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", - " 'QUAD:LI22:201:BACT': QuadrupoleBACTVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:201:BDES': QuadrupoleBCTRLVariable(element_name='q22201', element_attribute='k1', name='QUAD:LI22:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", - " 'QUAD:LI22:201:BMIN': BminVariable(read_only=True, name='QUAD:LI22:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", - " 'QUAD:LI22:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22201'),\n", - " 'QUAD:LI22:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22201'),\n", - " 'QUAD:LI22:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", - " 'QUAD:LI22:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", - " 'QUAD:LI22:301:BACT': QuadrupoleBACTVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:301:BDES': QuadrupoleBCTRLVariable(element_name='q22301', element_attribute='k1', name='QUAD:LI22:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", - " 'QUAD:LI22:301:BMIN': BminVariable(read_only=True, name='QUAD:LI22:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", - " 'QUAD:LI22:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22301'),\n", - " 'QUAD:LI22:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22301'),\n", - " 'QUAD:LI22:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", - " 'QUAD:LI22:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", - " 'QUAD:LI22:401:BACT': QuadrupoleBACTVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:401:BDES': QuadrupoleBCTRLVariable(element_name='q22401', element_attribute='k1', name='QUAD:LI22:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", - " 'QUAD:LI22:401:BMIN': BminVariable(read_only=True, name='QUAD:LI22:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", - " 'QUAD:LI22:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22401'),\n", - " 'QUAD:LI22:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22401'),\n", - " 'QUAD:LI22:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", - " 'QUAD:LI22:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", - " 'QUAD:LI22:501:BACT': QuadrupoleBACTVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:501:BDES': QuadrupoleBCTRLVariable(element_name='q22501', element_attribute='k1', name='QUAD:LI22:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", - " 'QUAD:LI22:501:BMIN': BminVariable(read_only=True, name='QUAD:LI22:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", - " 'QUAD:LI22:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22501'),\n", - " 'QUAD:LI22:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22501'),\n", - " 'QUAD:LI22:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", - " 'QUAD:LI22:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", - " 'QUAD:LI22:601:BACT': QuadrupoleBACTVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:601:BDES': QuadrupoleBCTRLVariable(element_name='q22601', element_attribute='k1', name='QUAD:LI22:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", - " 'QUAD:LI22:601:BMIN': BminVariable(read_only=True, name='QUAD:LI22:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", - " 'QUAD:LI22:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22601'),\n", - " 'QUAD:LI22:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22601'),\n", - " 'QUAD:LI22:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", - " 'QUAD:LI22:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", - " 'QUAD:LI22:701:BACT': QuadrupoleBACTVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:701:BDES': QuadrupoleBCTRLVariable(element_name='q22701', element_attribute='k1', name='QUAD:LI22:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", - " 'QUAD:LI22:701:BMIN': BminVariable(read_only=True, name='QUAD:LI22:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", - " 'QUAD:LI22:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22701'),\n", - " 'QUAD:LI22:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22701'),\n", - " 'QUAD:LI22:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", - " 'QUAD:LI22:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", - " 'QUAD:LI22:801:BACT': QuadrupoleBACTVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:801:BDES': QuadrupoleBCTRLVariable(element_name='q22801', element_attribute='k1', name='QUAD:LI22:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", - " 'QUAD:LI22:801:BMIN': BminVariable(read_only=True, name='QUAD:LI22:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", - " 'QUAD:LI22:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22801'),\n", - " 'QUAD:LI22:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22801'),\n", - " 'QUAD:LI22:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI22:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", - " 'QUAD:LI22:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI22:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", - " 'QUAD:LI22:901:BACT': QuadrupoleBACTVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:901:BDES': QuadrupoleBCTRLVariable(element_name='q22901', element_attribute='k1', name='QUAD:LI22:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI22:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI22:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", - " 'QUAD:LI22:901:BMIN': BminVariable(read_only=True, name='QUAD:LI22:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", - " 'QUAD:LI22:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI22:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q22901'),\n", - " 'QUAD:LI22:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI22:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q22901'),\n", - " 'QUAD:LI23:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", - " 'QUAD:LI23:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", - " 'QUAD:LI23:201:BACT': QuadrupoleBACTVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:201:BDES': QuadrupoleBCTRLVariable(element_name='q23201', element_attribute='k1', name='QUAD:LI23:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", - " 'QUAD:LI23:201:BMIN': BminVariable(read_only=True, name='QUAD:LI23:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", - " 'QUAD:LI23:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23201'),\n", - " 'QUAD:LI23:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23201'),\n", - " 'QUAD:LI23:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", - " 'QUAD:LI23:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", - " 'QUAD:LI23:301:BACT': QuadrupoleBACTVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:301:BDES': QuadrupoleBCTRLVariable(element_name='q23301', element_attribute='k1', name='QUAD:LI23:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", - " 'QUAD:LI23:301:BMIN': BminVariable(read_only=True, name='QUAD:LI23:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", - " 'QUAD:LI23:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23301'),\n", - " 'QUAD:LI23:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23301'),\n", - " 'QUAD:LI23:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", - " 'QUAD:LI23:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", - " 'QUAD:LI23:401:BACT': QuadrupoleBACTVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:401:BDES': QuadrupoleBCTRLVariable(element_name='q23401', element_attribute='k1', name='QUAD:LI23:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", - " 'QUAD:LI23:401:BMIN': BminVariable(read_only=True, name='QUAD:LI23:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", - " 'QUAD:LI23:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23401'),\n", - " 'QUAD:LI23:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23401'),\n", - " 'QUAD:LI23:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", - " 'QUAD:LI23:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", - " 'QUAD:LI23:501:BACT': QuadrupoleBACTVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:501:BDES': QuadrupoleBCTRLVariable(element_name='q23501', element_attribute='k1', name='QUAD:LI23:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", - " 'QUAD:LI23:501:BMIN': BminVariable(read_only=True, name='QUAD:LI23:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", - " 'QUAD:LI23:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23501'),\n", - " 'QUAD:LI23:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23501'),\n", - " 'QUAD:LI23:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", - " 'QUAD:LI23:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", - " 'QUAD:LI23:601:BACT': QuadrupoleBACTVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:601:BDES': QuadrupoleBCTRLVariable(element_name='q23601', element_attribute='k1', name='QUAD:LI23:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", - " 'QUAD:LI23:601:BMIN': BminVariable(read_only=True, name='QUAD:LI23:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", - " 'QUAD:LI23:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23601'),\n", - " 'QUAD:LI23:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23601'),\n", - " 'QUAD:LI23:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", - " 'QUAD:LI23:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", - " 'QUAD:LI23:701:BACT': QuadrupoleBACTVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:701:BDES': QuadrupoleBCTRLVariable(element_name='q23701', element_attribute='k1', name='QUAD:LI23:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", - " 'QUAD:LI23:701:BMIN': BminVariable(read_only=True, name='QUAD:LI23:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", - " 'QUAD:LI23:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23701'),\n", - " 'QUAD:LI23:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23701'),\n", - " 'QUAD:LI23:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", - " 'QUAD:LI23:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", - " 'QUAD:LI23:801:BACT': QuadrupoleBACTVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:801:BDES': QuadrupoleBCTRLVariable(element_name='q23801', element_attribute='k1', name='QUAD:LI23:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", - " 'QUAD:LI23:801:BMIN': BminVariable(read_only=True, name='QUAD:LI23:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", - " 'QUAD:LI23:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23801'),\n", - " 'QUAD:LI23:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23801'),\n", - " 'QUAD:LI23:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI23:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", - " 'QUAD:LI23:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI23:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", - " 'QUAD:LI23:901:BACT': QuadrupoleBACTVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:901:BDES': QuadrupoleBCTRLVariable(element_name='q23901', element_attribute='k1', name='QUAD:LI23:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI23:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI23:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", - " 'QUAD:LI23:901:BMIN': BminVariable(read_only=True, name='QUAD:LI23:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", - " 'QUAD:LI23:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI23:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q23901'),\n", - " 'QUAD:LI23:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI23:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q23901'),\n", - " 'QUAD:LI24:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", - " 'QUAD:LI24:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", - " 'QUAD:LI24:201:BACT': QuadrupoleBACTVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:201:BDES': QuadrupoleBCTRLVariable(element_name='q24201', element_attribute='k1', name='QUAD:LI24:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", - " 'QUAD:LI24:201:BMIN': BminVariable(read_only=True, name='QUAD:LI24:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", - " 'QUAD:LI24:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24201'),\n", - " 'QUAD:LI24:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24201'),\n", - " 'QUAD:LI24:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", - " 'QUAD:LI24:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", - " 'QUAD:LI24:301:BACT': QuadrupoleBACTVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:301:BDES': QuadrupoleBCTRLVariable(element_name='q24301', element_attribute='k1', name='QUAD:LI24:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", - " 'QUAD:LI24:301:BMIN': BminVariable(read_only=True, name='QUAD:LI24:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", - " 'QUAD:LI24:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24301'),\n", - " 'QUAD:LI24:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24301'),\n", - " 'QUAD:LI24:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", - " 'QUAD:LI24:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", - " 'QUAD:LI24:401:BACT': QuadrupoleBACTVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:401:BDES': QuadrupoleBCTRLVariable(element_name='q24401', element_attribute='k1', name='QUAD:LI24:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", - " 'QUAD:LI24:401:BMIN': BminVariable(read_only=True, name='QUAD:LI24:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", - " 'QUAD:LI24:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24401'),\n", - " 'QUAD:LI24:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24401'),\n", - " 'QUAD:LI24:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", - " 'QUAD:LI24:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", - " 'QUAD:LI24:501:BACT': QuadrupoleBACTVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:501:BDES': QuadrupoleBCTRLVariable(element_name='q24501', element_attribute='k1', name='QUAD:LI24:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", - " 'QUAD:LI24:501:BMIN': BminVariable(read_only=True, name='QUAD:LI24:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", - " 'QUAD:LI24:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24501'),\n", - " 'QUAD:LI24:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24501'),\n", - " 'QUAD:LI24:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", - " 'QUAD:LI24:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", - " 'QUAD:LI24:601:BACT': QuadrupoleBACTVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:601:BDES': QuadrupoleBCTRLVariable(element_name='q24601', element_attribute='k1', name='QUAD:LI24:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", - " 'QUAD:LI24:601:BMIN': BminVariable(read_only=True, name='QUAD:LI24:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", - " 'QUAD:LI24:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24601'),\n", - " 'QUAD:LI24:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24601'),\n", - " 'QUAD:LI24:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", - " 'QUAD:LI24:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", - " 'QUAD:LI24:701:BACT': QuadrupoleBACTVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:701:BDES': QuadrupoleBCTRLVariable(element_name='q24701a', element_attribute='k1', name='QUAD:LI24:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", - " 'QUAD:LI24:701:BMIN': BminVariable(read_only=True, name='QUAD:LI24:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", - " 'QUAD:LI24:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701a'),\n", - " 'QUAD:LI24:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24701a'),\n", - " 'QUAD:LI24:702:BCTRL': QuadrupoleBCTRLVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:702:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:702:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", - " 'QUAD:LI24:702:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:702:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", - " 'QUAD:LI24:702:BACT': QuadrupoleBACTVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:702:BDES': QuadrupoleBCTRLVariable(element_name='q24701b', element_attribute='k1', name='QUAD:LI24:702:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:702:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:702:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", - " 'QUAD:LI24:702:BMIN': BminVariable(read_only=True, name='QUAD:LI24:702:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", - " 'QUAD:LI24:702:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:702:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24701b'),\n", - " 'QUAD:LI24:702:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:702:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24701b'),\n", - " 'QUAD:LI24:713:BCTRL': QuadrupoleBCTRLVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:713:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:713:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", - " 'QUAD:LI24:713:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:713:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", - " 'QUAD:LI24:713:BACT': QuadrupoleBACTVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:713:BDES': QuadrupoleBCTRLVariable(element_name='qm21', element_attribute='k1', name='QUAD:LI24:713:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:713:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:713:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", - " 'QUAD:LI24:713:BMIN': BminVariable(read_only=True, name='QUAD:LI24:713:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", - " 'QUAD:LI24:713:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:713:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm21'),\n", - " 'QUAD:LI24:713:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:713:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm21'),\n", - " 'QUAD:LI24:740:BCTRL': QuadrupoleBCTRLVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:740:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:740:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", - " 'QUAD:LI24:740:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:740:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", - " 'QUAD:LI24:740:BACT': QuadrupoleBACTVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:740:BDES': QuadrupoleBCTRLVariable(element_name='cq21', element_attribute='k1', name='QUAD:LI24:740:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:740:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:740:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", - " 'QUAD:LI24:740:BMIN': BminVariable(read_only=True, name='QUAD:LI24:740:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", - " 'QUAD:LI24:740:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:740:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq21'),\n", - " 'QUAD:LI24:740:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:740:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq21'),\n", - " 'BPMS:LI24:801:X': BPMXVariable(element_name='bpms21', element_attribute='reading', name='BPMS:LI24:801:X', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:LI24:801:Y': BPMYVariable(element_name='bpms21', element_attribute='reading', name='BPMS:LI24:801:Y', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='mm', dtype=None),\n", - " 'BPMS:LI24:801:TMIT': BPMTMITDummyVariable(read_only=True, name='BPMS:LI24:801:TMIT', default_validation_config='none', default_value=None, value_range=None, unit='arbitrary units', dtype=None, element_name='bpms21'),\n", - " 'QUAD:LI24:860:BCTRL': QuadrupoleBCTRLVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:860:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:860:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", - " 'QUAD:LI24:860:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:860:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", - " 'QUAD:LI24:860:BACT': QuadrupoleBACTVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:860:BDES': QuadrupoleBCTRLVariable(element_name='cq22', element_attribute='k1', name='QUAD:LI24:860:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:860:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:860:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", - " 'QUAD:LI24:860:BMIN': BminVariable(read_only=True, name='QUAD:LI24:860:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", - " 'QUAD:LI24:860:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:860:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='cq22'),\n", - " 'QUAD:LI24:860:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:860:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='cq22'),\n", - " 'QUAD:LI24:892:BCTRL': QuadrupoleBCTRLVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:892:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:892:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", - " 'QUAD:LI24:892:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:892:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", - " 'QUAD:LI24:892:BACT': QuadrupoleBACTVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:892:BDES': QuadrupoleBCTRLVariable(element_name='qm22', element_attribute='k1', name='QUAD:LI24:892:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:892:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:892:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", - " 'QUAD:LI24:892:BMIN': BminVariable(read_only=True, name='QUAD:LI24:892:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", - " 'QUAD:LI24:892:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:892:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='qm22'),\n", - " 'QUAD:LI24:892:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:892:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='qm22'),\n", - " 'QUAD:LI24:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", - " 'QUAD:LI24:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", - " 'QUAD:LI24:901:BACT': QuadrupoleBACTVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:901:BDES': QuadrupoleBCTRLVariable(element_name='q24901a', element_attribute='k1', name='QUAD:LI24:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", - " 'QUAD:LI24:901:BMIN': BminVariable(read_only=True, name='QUAD:LI24:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", - " 'QUAD:LI24:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901a'),\n", - " 'QUAD:LI24:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24901a'),\n", - " 'QUAD:LI24:902:BCTRL': QuadrupoleBCTRLVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:902:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI24:902:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", - " 'QUAD:LI24:902:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI24:902:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", - " 'QUAD:LI24:902:BACT': QuadrupoleBACTVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:902:BDES': QuadrupoleBCTRLVariable(element_name='q24901b', element_attribute='k1', name='QUAD:LI24:902:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI24:902:BMAX': BmaxVariable(read_only=True, name='QUAD:LI24:902:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", - " 'QUAD:LI24:902:BMIN': BminVariable(read_only=True, name='QUAD:LI24:902:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", - " 'QUAD:LI24:902:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI24:902:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q24901b'),\n", - " 'QUAD:LI24:902:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI24:902:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q24901b'),\n", - " 'QUAD:LI25:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", - " 'QUAD:LI25:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", - " 'QUAD:LI25:201:BACT': QuadrupoleBACTVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:201:BDES': QuadrupoleBCTRLVariable(element_name='q25201', element_attribute='k1', name='QUAD:LI25:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", - " 'QUAD:LI25:201:BMIN': BminVariable(read_only=True, name='QUAD:LI25:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", - " 'QUAD:LI25:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25201'),\n", - " 'QUAD:LI25:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25201'),\n", - " 'QUAD:LI25:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", - " 'QUAD:LI25:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", - " 'QUAD:LI25:301:BACT': QuadrupoleBACTVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:301:BDES': QuadrupoleBCTRLVariable(element_name='q25301', element_attribute='k1', name='QUAD:LI25:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", - " 'QUAD:LI25:301:BMIN': BminVariable(read_only=True, name='QUAD:LI25:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", - " 'QUAD:LI25:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25301'),\n", - " 'QUAD:LI25:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25301'),\n", - " 'QUAD:LI25:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", - " 'QUAD:LI25:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", - " 'QUAD:LI25:401:BACT': QuadrupoleBACTVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:401:BDES': QuadrupoleBCTRLVariable(element_name='q25401', element_attribute='k1', name='QUAD:LI25:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", - " 'QUAD:LI25:401:BMIN': BminVariable(read_only=True, name='QUAD:LI25:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", - " 'QUAD:LI25:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25401'),\n", - " 'QUAD:LI25:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25401'),\n", - " 'QUAD:LI25:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", - " 'QUAD:LI25:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", - " 'QUAD:LI25:501:BACT': QuadrupoleBACTVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:501:BDES': QuadrupoleBCTRLVariable(element_name='q25501', element_attribute='k1', name='QUAD:LI25:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", - " 'QUAD:LI25:501:BMIN': BminVariable(read_only=True, name='QUAD:LI25:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", - " 'QUAD:LI25:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25501'),\n", - " 'QUAD:LI25:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25501'),\n", - " 'QUAD:LI25:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", - " 'QUAD:LI25:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", - " 'QUAD:LI25:601:BACT': QuadrupoleBACTVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:601:BDES': QuadrupoleBCTRLVariable(element_name='q25601', element_attribute='k1', name='QUAD:LI25:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", - " 'QUAD:LI25:601:BMIN': BminVariable(read_only=True, name='QUAD:LI25:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", - " 'QUAD:LI25:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25601'),\n", - " 'QUAD:LI25:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25601'),\n", - " 'QUAD:LI25:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", - " 'QUAD:LI25:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", - " 'QUAD:LI25:701:BACT': QuadrupoleBACTVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:701:BDES': QuadrupoleBCTRLVariable(element_name='q25701', element_attribute='k1', name='QUAD:LI25:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", - " 'QUAD:LI25:701:BMIN': BminVariable(read_only=True, name='QUAD:LI25:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", - " 'QUAD:LI25:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25701'),\n", - " 'QUAD:LI25:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25701'),\n", - " 'QUAD:LI25:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", - " 'QUAD:LI25:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", - " 'QUAD:LI25:801:BACT': QuadrupoleBACTVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:801:BDES': QuadrupoleBCTRLVariable(element_name='q25801', element_attribute='k1', name='QUAD:LI25:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", - " 'QUAD:LI25:801:BMIN': BminVariable(read_only=True, name='QUAD:LI25:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", - " 'QUAD:LI25:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25801'),\n", - " 'QUAD:LI25:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25801'),\n", - " 'QUAD:LI25:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI25:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", - " 'QUAD:LI25:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI25:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", - " 'QUAD:LI25:901:BACT': QuadrupoleBACTVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:901:BDES': QuadrupoleBCTRLVariable(element_name='q25901', element_attribute='k1', name='QUAD:LI25:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI25:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI25:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", - " 'QUAD:LI25:901:BMIN': BminVariable(read_only=True, name='QUAD:LI25:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", - " 'QUAD:LI25:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI25:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q25901'),\n", - " 'QUAD:LI25:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI25:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q25901'),\n", - " 'QUAD:LI26:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", - " 'QUAD:LI26:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", - " 'QUAD:LI26:201:BACT': QuadrupoleBACTVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:201:BDES': QuadrupoleBCTRLVariable(element_name='q26201', element_attribute='k1', name='QUAD:LI26:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", - " 'QUAD:LI26:201:BMIN': BminVariable(read_only=True, name='QUAD:LI26:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", - " 'QUAD:LI26:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26201'),\n", - " 'QUAD:LI26:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26201'),\n", - " 'QUAD:LI26:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", - " 'QUAD:LI26:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", - " 'QUAD:LI26:301:BACT': QuadrupoleBACTVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:301:BDES': QuadrupoleBCTRLVariable(element_name='q26301', element_attribute='k1', name='QUAD:LI26:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", - " 'QUAD:LI26:301:BMIN': BminVariable(read_only=True, name='QUAD:LI26:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", - " 'QUAD:LI26:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26301'),\n", - " 'QUAD:LI26:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26301'),\n", - " 'QUAD:LI26:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", - " 'QUAD:LI26:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", - " 'QUAD:LI26:401:BACT': QuadrupoleBACTVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:401:BDES': QuadrupoleBCTRLVariable(element_name='q26401', element_attribute='k1', name='QUAD:LI26:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", - " 'QUAD:LI26:401:BMIN': BminVariable(read_only=True, name='QUAD:LI26:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", - " 'QUAD:LI26:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26401'),\n", - " 'QUAD:LI26:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26401'),\n", - " 'QUAD:LI26:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", - " 'QUAD:LI26:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", - " 'QUAD:LI26:501:BACT': QuadrupoleBACTVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:501:BDES': QuadrupoleBCTRLVariable(element_name='q26501', element_attribute='k1', name='QUAD:LI26:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", - " 'QUAD:LI26:501:BMIN': BminVariable(read_only=True, name='QUAD:LI26:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", - " 'QUAD:LI26:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26501'),\n", - " 'QUAD:LI26:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26501'),\n", - " 'QUAD:LI26:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", - " 'QUAD:LI26:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", - " 'QUAD:LI26:601:BACT': QuadrupoleBACTVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:601:BDES': QuadrupoleBCTRLVariable(element_name='q26601', element_attribute='k1', name='QUAD:LI26:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", - " 'QUAD:LI26:601:BMIN': BminVariable(read_only=True, name='QUAD:LI26:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", - " 'QUAD:LI26:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26601'),\n", - " 'QUAD:LI26:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26601'),\n", - " 'QUAD:LI26:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", - " 'QUAD:LI26:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", - " 'QUAD:LI26:701:BACT': QuadrupoleBACTVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:701:BDES': QuadrupoleBCTRLVariable(element_name='q26701', element_attribute='k1', name='QUAD:LI26:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", - " 'QUAD:LI26:701:BMIN': BminVariable(read_only=True, name='QUAD:LI26:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", - " 'QUAD:LI26:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26701'),\n", - " 'QUAD:LI26:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26701'),\n", - " 'QUAD:LI26:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", - " 'QUAD:LI26:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", - " 'QUAD:LI26:801:BACT': QuadrupoleBACTVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:801:BDES': QuadrupoleBCTRLVariable(element_name='q26801', element_attribute='k1', name='QUAD:LI26:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", - " 'QUAD:LI26:801:BMIN': BminVariable(read_only=True, name='QUAD:LI26:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", - " 'QUAD:LI26:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26801'),\n", - " 'QUAD:LI26:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26801'),\n", - " 'QUAD:LI26:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI26:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", - " 'QUAD:LI26:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI26:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", - " 'QUAD:LI26:901:BACT': QuadrupoleBACTVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:901:BDES': QuadrupoleBCTRLVariable(element_name='q26901', element_attribute='k1', name='QUAD:LI26:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI26:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI26:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", - " 'QUAD:LI26:901:BMIN': BminVariable(read_only=True, name='QUAD:LI26:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", - " 'QUAD:LI26:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI26:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q26901'),\n", - " 'QUAD:LI26:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI26:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q26901'),\n", - " 'QUAD:LI27:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", - " 'QUAD:LI27:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", - " 'QUAD:LI27:201:BACT': QuadrupoleBACTVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:201:BDES': QuadrupoleBCTRLVariable(element_name='q27201', element_attribute='k1', name='QUAD:LI27:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", - " 'QUAD:LI27:201:BMIN': BminVariable(read_only=True, name='QUAD:LI27:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", - " 'QUAD:LI27:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27201'),\n", - " 'QUAD:LI27:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27201'),\n", - " 'QUAD:LI27:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", - " 'QUAD:LI27:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", - " 'QUAD:LI27:301:BACT': QuadrupoleBACTVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:301:BDES': QuadrupoleBCTRLVariable(element_name='q27301', element_attribute='k1', name='QUAD:LI27:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", - " 'QUAD:LI27:301:BMIN': BminVariable(read_only=True, name='QUAD:LI27:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", - " 'QUAD:LI27:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27301'),\n", - " 'QUAD:LI27:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27301'),\n", - " 'QUAD:LI27:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", - " 'QUAD:LI27:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", - " 'QUAD:LI27:401:BACT': QuadrupoleBACTVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:401:BDES': QuadrupoleBCTRLVariable(element_name='q27401', element_attribute='k1', name='QUAD:LI27:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", - " 'QUAD:LI27:401:BMIN': BminVariable(read_only=True, name='QUAD:LI27:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", - " 'QUAD:LI27:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27401'),\n", - " 'QUAD:LI27:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27401'),\n", - " 'QUAD:LI27:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", - " 'QUAD:LI27:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", - " 'QUAD:LI27:501:BACT': QuadrupoleBACTVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:501:BDES': QuadrupoleBCTRLVariable(element_name='q27501', element_attribute='k1', name='QUAD:LI27:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", - " 'QUAD:LI27:501:BMIN': BminVariable(read_only=True, name='QUAD:LI27:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", - " 'QUAD:LI27:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27501'),\n", - " 'QUAD:LI27:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27501'),\n", - " 'QUAD:LI27:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:601:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:601:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", - " 'QUAD:LI27:601:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:601:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", - " 'QUAD:LI27:601:BACT': QuadrupoleBACTVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:601:BDES': QuadrupoleBCTRLVariable(element_name='q27601', element_attribute='k1', name='QUAD:LI27:601:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:601:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:601:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", - " 'QUAD:LI27:601:BMIN': BminVariable(read_only=True, name='QUAD:LI27:601:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", - " 'QUAD:LI27:601:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:601:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27601'),\n", - " 'QUAD:LI27:601:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:601:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27601'),\n", - " 'QUAD:LI27:701:BCTRL': QuadrupoleBCTRLVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:701:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:701:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", - " 'QUAD:LI27:701:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:701:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", - " 'QUAD:LI27:701:BACT': QuadrupoleBACTVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:701:BDES': QuadrupoleBCTRLVariable(element_name='q27701', element_attribute='k1', name='QUAD:LI27:701:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:701:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:701:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", - " 'QUAD:LI27:701:BMIN': BminVariable(read_only=True, name='QUAD:LI27:701:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", - " 'QUAD:LI27:701:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:701:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27701'),\n", - " 'QUAD:LI27:701:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:701:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27701'),\n", - " 'QUAD:LI27:801:BCTRL': QuadrupoleBCTRLVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:801:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:801:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", - " 'QUAD:LI27:801:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:801:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", - " 'QUAD:LI27:801:BACT': QuadrupoleBACTVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:801:BDES': QuadrupoleBCTRLVariable(element_name='q27801', element_attribute='k1', name='QUAD:LI27:801:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:801:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:801:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", - " 'QUAD:LI27:801:BMIN': BminVariable(read_only=True, name='QUAD:LI27:801:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", - " 'QUAD:LI27:801:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:801:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27801'),\n", - " 'QUAD:LI27:801:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:801:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27801'),\n", - " 'QUAD:LI27:901:BCTRL': QuadrupoleBCTRLVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:901:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI27:901:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", - " 'QUAD:LI27:901:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI27:901:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", - " 'QUAD:LI27:901:BACT': QuadrupoleBACTVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:901:BDES': QuadrupoleBCTRLVariable(element_name='q27901', element_attribute='k1', name='QUAD:LI27:901:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI27:901:BMAX': BmaxVariable(read_only=True, name='QUAD:LI27:901:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", - " 'QUAD:LI27:901:BMIN': BminVariable(read_only=True, name='QUAD:LI27:901:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", - " 'QUAD:LI27:901:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI27:901:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q27901'),\n", - " 'QUAD:LI27:901:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI27:901:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q27901'),\n", - " 'QUAD:LI28:201:BCTRL': QuadrupoleBCTRLVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:201:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:201:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", - " 'QUAD:LI28:201:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:201:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", - " 'QUAD:LI28:201:BACT': QuadrupoleBACTVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:201:BDES': QuadrupoleBCTRLVariable(element_name='q28201', element_attribute='k1', name='QUAD:LI28:201:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:201:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:201:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", - " 'QUAD:LI28:201:BMIN': BminVariable(read_only=True, name='QUAD:LI28:201:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", - " 'QUAD:LI28:201:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:201:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28201'),\n", - " 'QUAD:LI28:201:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:201:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28201'),\n", - " 'QUAD:LI28:301:BCTRL': QuadrupoleBCTRLVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:301:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:301:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", - " 'QUAD:LI28:301:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:301:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", - " 'QUAD:LI28:301:BACT': QuadrupoleBACTVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:301:BDES': QuadrupoleBCTRLVariable(element_name='q28301', element_attribute='k1', name='QUAD:LI28:301:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:301:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:301:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", - " 'QUAD:LI28:301:BMIN': BminVariable(read_only=True, name='QUAD:LI28:301:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", - " 'QUAD:LI28:301:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:301:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28301'),\n", - " 'QUAD:LI28:301:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:301:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28301'),\n", - " 'QUAD:LI28:401:BCTRL': QuadrupoleBCTRLVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:401:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:401:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", - " 'QUAD:LI28:401:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:401:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", - " 'QUAD:LI28:401:BACT': QuadrupoleBACTVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:401:BDES': QuadrupoleBCTRLVariable(element_name='q28401', element_attribute='k1', name='QUAD:LI28:401:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:401:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:401:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", - " 'QUAD:LI28:401:BMIN': BminVariable(read_only=True, name='QUAD:LI28:401:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", - " 'QUAD:LI28:401:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:401:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28401'),\n", - " 'QUAD:LI28:401:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:401:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28401'),\n", - " 'QUAD:LI28:501:BCTRL': QuadrupoleBCTRLVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:501:BCTRL.DRVL': BminVariable(read_only=True, name='QUAD:LI28:501:BCTRL.DRVL', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", - " 'QUAD:LI28:501:BCTRL.DRVH': BmaxVariable(read_only=True, name='QUAD:LI28:501:BCTRL.DRVH', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", - " 'QUAD:LI28:501:BACT': QuadrupoleBACTVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BACT', read_only=True, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:501:BDES': QuadrupoleBCTRLVariable(element_name='q28501', element_attribute='k1', name='QUAD:LI28:501:BDES', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " 'QUAD:LI28:501:BMAX': BmaxVariable(read_only=True, name='QUAD:LI28:501:BMAX', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", - " 'QUAD:LI28:501:BMIN': BminVariable(read_only=True, name='QUAD:LI28:501:BMIN', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", - " 'QUAD:LI28:501:STATCTRLSUB.T': StatusVariable(read_only=True, name='QUAD:LI28:501:STATCTRLSUB.T', default_validation_config='none', default_value=None, value_range=None, unit=None, dtype=None, element_name='q28501'),\n", - " 'QUAD:LI28:501:CTRL': ControlStateVariable(read_only=True, name='QUAD:LI28:501:CTRL', default_validation_config='none', default_value='Ready', options=['Ready', 'TRIM', 'PERTURB', 'BCON_TO_BDES', 'BACT_TO_BDES'], element_name='q28501'),\n", - " 'QUAD:LI28:601:BCTRL': QuadrupoleBCTRLVariable(element_name='q28601', element_attribute='k1', name='QUAD:LI28:601:BCTRL', read_only=False, default_validation_config='none', default_value=None, value_range=None, unit='kG', dtype=None),\n", - " ...}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get variables objects\n", "vars = list(model.supported_variables.keys())\n", @@ -1054,1093 +43,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "bb5822c2", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'SOLN:IN20:111:BCTRL': tensor(0.),\n", - " 'SOLN:IN20:111:BCTRL.DRVL': -100.0,\n", - " 'SOLN:IN20:111:BCTRL.DRVH': 100.0,\n", - " 'SOLN:IN20:111:BACT': tensor(0.),\n", - " 'SOLN:IN20:111:BDES': tensor(0.),\n", - " 'SOLN:IN20:111:BMIN': -100.0,\n", - " 'SOLN:IN20:111:BMAX': 100.0,\n", - " 'SOLN:IN20:111:STATCTRLSUB.T': 1.0,\n", - " 'SOLN:IN20:111:CTRL': 'Ready',\n", - " 'SOLN:IN20:121:BCTRL': tensor(0.),\n", - " 'SOLN:IN20:121:BCTRL.DRVL': -100.0,\n", - " 'SOLN:IN20:121:BCTRL.DRVH': 100.0,\n", - " 'SOLN:IN20:121:BACT': tensor(0.),\n", - " 'SOLN:IN20:121:BDES': tensor(0.),\n", - " 'SOLN:IN20:121:BMIN': -100.0,\n", - " 'SOLN:IN20:121:BMAX': 100.0,\n", - " 'SOLN:IN20:121:STATCTRLSUB.T': 1.0,\n", - " 'SOLN:IN20:121:CTRL': 'Ready',\n", - " 'XCOR:IN20:221:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:221:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:221:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:221:BACT': tensor(0.),\n", - " 'XCOR:IN20:221:BDES': tensor(0.),\n", - " 'XCOR:IN20:221:BMIN': -100.0,\n", - " 'XCOR:IN20:221:BMAX': 100.0,\n", - " 'XCOR:IN20:221:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:221:CTRL': 'Ready',\n", - " 'YCOR:IN20:222:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:222:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:222:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:222:BACT': tensor(0.),\n", - " 'YCOR:IN20:222:BDES': tensor(0.),\n", - " 'YCOR:IN20:222:BMIN': -100.0,\n", - " 'YCOR:IN20:222:BMAX': 100.0,\n", - " 'YCOR:IN20:222:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:222:CTRL': 'Ready',\n", - " 'BPMS:IN20:221:X': tensor(5.3644e-12),\n", - " 'BPMS:IN20:221:Y': tensor(9.0152e-12),\n", - " 'BPMS:IN20:221:TMIT': 1.0,\n", - " 'BPMS:IN20:235:X': tensor(5.1409e-12),\n", - " 'BPMS:IN20:235:Y': tensor(1.0058e-11),\n", - " 'BPMS:IN20:235:TMIT': 1.0,\n", - " 'QUAD:IN20:361:BCTRL': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:361:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:361:BACT': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BDES': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BMAX': 100.0,\n", - " 'QUAD:IN20:361:BMIN': -100.0,\n", - " 'QUAD:IN20:361:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:361:CTRL': 'Ready',\n", - " 'QUAD:IN20:371:BCTRL': tensor(5.7451),\n", - " 'QUAD:IN20:371:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:371:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:371:BACT': tensor(5.7451),\n", - " 'QUAD:IN20:371:BDES': tensor(5.7451),\n", - " 'QUAD:IN20:371:BMAX': 100.0,\n", - " 'QUAD:IN20:371:BMIN': -100.0,\n", - " 'QUAD:IN20:371:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:371:CTRL': 'Ready',\n", - " 'QUAD:IN20:425:BCTRL': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:425:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:425:BACT': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BDES': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BMAX': 100.0,\n", - " 'QUAD:IN20:425:BMIN': -100.0,\n", - " 'QUAD:IN20:425:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:425:CTRL': 'Ready',\n", - " 'QUAD:IN20:441:BCTRL': tensor(0.6177),\n", - " 'QUAD:IN20:441:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:441:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:441:BACT': tensor(0.6177),\n", - " 'QUAD:IN20:441:BDES': tensor(0.6177),\n", - " 'QUAD:IN20:441:BMAX': 100.0,\n", - " 'QUAD:IN20:441:BMIN': -100.0,\n", - " 'QUAD:IN20:441:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:441:CTRL': 'Ready',\n", - " 'OTRS:IN20:465:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:465:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:465:Image:ArraySize1_RBV': 1040,\n", - " 'OTRS:IN20:465:Image:ArraySize0_RBV': 1392,\n", - " 'OTRS:IN20:465:RESOLUTION': tensor(18.5900),\n", - " 'OTRS:IN20:465:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:465:N_OF_ROW': 1040,\n", - " 'OTRS:IN20:465:N_OF_COL': 1392,\n", - " 'OTRS:IN20:471:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:471:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:471:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:471:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:471:RESOLUTION': tensor(19.1600),\n", - " 'OTRS:IN20:471:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:471:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:471:N_OF_COL': 1040,\n", - " 'QUAD:IN20:511:BCTRL': tensor(9.1265),\n", - " 'QUAD:IN20:511:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:511:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:511:BACT': tensor(9.1265),\n", - " 'QUAD:IN20:511:BDES': tensor(9.1265),\n", - " 'QUAD:IN20:511:BMAX': 100.0,\n", - " 'QUAD:IN20:511:BMIN': -100.0,\n", - " 'QUAD:IN20:511:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:511:CTRL': 'Ready',\n", - " 'XCOR:IN20:521:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:521:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:521:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:521:BACT': tensor(0.),\n", - " 'XCOR:IN20:521:BDES': tensor(0.),\n", - " 'XCOR:IN20:521:BMIN': -100.0,\n", - " 'XCOR:IN20:521:BMAX': 100.0,\n", - " 'XCOR:IN20:521:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:521:CTRL': 'Ready',\n", - " 'YCOR:IN20:522:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:522:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:522:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:522:BACT': tensor(0.),\n", - " 'YCOR:IN20:522:BDES': tensor(0.),\n", - " 'YCOR:IN20:522:BMIN': -100.0,\n", - " 'YCOR:IN20:522:BMAX': 100.0,\n", - " 'YCOR:IN20:522:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:522:CTRL': 'Ready',\n", - " 'QUAD:IN20:525:BCTRL': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:525:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:525:BACT': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BDES': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BMAX': 100.0,\n", - " 'QUAD:IN20:525:BMIN': -100.0,\n", - " 'QUAD:IN20:525:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:525:CTRL': 'Ready',\n", - " 'OTRS:IN20:541:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:541:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:541:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:541:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:541:RESOLUTION': tensor(12.6600),\n", - " 'OTRS:IN20:541:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:541:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:541:N_OF_COL': 1040,\n", - " 'OTRS:IN20:571:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:571:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:571:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:571:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:571:RESOLUTION': tensor(12.6600),\n", - " 'OTRS:IN20:571:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:571:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:571:N_OF_COL': 1040,\n", - " 'BPMS:IN20:581:X': tensor(2.7940e-12),\n", - " 'BPMS:IN20:581:Y': tensor(-9.0152e-12),\n", - " 'BPMS:IN20:581:TMIT': 1.0,\n", - " 'OTRS:IN20:621:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:621:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:621:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:621:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:621:RESOLUTION': tensor(12.1200),\n", - " 'OTRS:IN20:621:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:621:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:621:N_OF_COL': 1040,\n", - " 'QUAD:IN20:631:BCTRL': tensor(11.8995),\n", - " 'QUAD:IN20:631:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:631:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:631:BACT': tensor(11.8995),\n", - " 'QUAD:IN20:631:BDES': tensor(11.8995),\n", - " 'QUAD:IN20:631:BMAX': 100.0,\n", - " 'QUAD:IN20:631:BMIN': -100.0,\n", - " 'QUAD:IN20:631:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:631:CTRL': 'Ready',\n", - " 'XCOR:IN20:641:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:641:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:641:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:641:BACT': tensor(0.),\n", - " 'XCOR:IN20:641:BDES': tensor(0.),\n", - " 'XCOR:IN20:641:BMIN': -100.0,\n", - " 'XCOR:IN20:641:BMAX': 100.0,\n", - " 'XCOR:IN20:641:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:641:CTRL': 'Ready',\n", - " 'YCOR:IN20:642:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:642:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:642:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:642:BACT': tensor(0.),\n", - " 'YCOR:IN20:642:BDES': tensor(0.),\n", - " 'YCOR:IN20:642:BMIN': -100.0,\n", - " 'YCOR:IN20:642:BMAX': 100.0,\n", - " 'YCOR:IN20:642:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:642:CTRL': 'Ready',\n", - " 'QUAD:IN20:651:BCTRL': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:651:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:651:BACT': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BDES': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BMAX': 100.0,\n", - " 'QUAD:IN20:651:BMIN': -100.0,\n", - " 'QUAD:IN20:651:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:651:CTRL': 'Ready',\n", - " 'OTRS:IN20:711:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:711:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:711:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:711:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:711:RESOLUTION': tensor(17.0600),\n", - " 'OTRS:IN20:711:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:711:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:711:N_OF_COL': 1040,\n", - " 'XCOR:IN20:721:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:721:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:721:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:721:BACT': tensor(0.),\n", - " 'XCOR:IN20:721:BDES': tensor(0.),\n", - " 'XCOR:IN20:721:BMIN': -100.0,\n", - " 'XCOR:IN20:721:BMAX': 100.0,\n", - " 'XCOR:IN20:721:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:721:CTRL': 'Ready',\n", - " 'YCOR:IN20:722:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:722:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:722:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:722:BACT': tensor(0.),\n", - " 'YCOR:IN20:722:BDES': tensor(0.),\n", - " 'YCOR:IN20:722:BMIN': -100.0,\n", - " 'YCOR:IN20:722:BMAX': 100.0,\n", - " 'YCOR:IN20:722:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:722:CTRL': 'Ready',\n", - " 'QUAD:IN20:731:BCTRL': tensor(17.2962),\n", - " 'QUAD:IN20:731:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:731:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:731:BACT': tensor(17.2962),\n", - " 'QUAD:IN20:731:BDES': tensor(17.2962),\n", - " 'QUAD:IN20:731:BMAX': 100.0,\n", - " 'QUAD:IN20:731:BMIN': -100.0,\n", - " 'QUAD:IN20:731:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:731:CTRL': 'Ready',\n", - " 'XCOR:IN20:761:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:761:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:761:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:761:BACT': tensor(0.),\n", - " 'XCOR:IN20:761:BDES': tensor(0.),\n", - " 'XCOR:IN20:761:BMIN': -100.0,\n", - " 'XCOR:IN20:761:BMAX': 100.0,\n", - " 'XCOR:IN20:761:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:761:CTRL': 'Ready',\n", - " 'YCOR:IN20:762:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:762:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:762:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:762:BACT': tensor(0.),\n", - " 'YCOR:IN20:762:BDES': tensor(0.),\n", - " 'YCOR:IN20:762:BMIN': -100.0,\n", - " 'YCOR:IN20:762:BMAX': 100.0,\n", - " 'YCOR:IN20:762:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:762:CTRL': 'Ready',\n", - " 'QUAD:IN20:771:BCTRL': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:771:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:771:BACT': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BDES': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BMAX': 100.0,\n", - " 'QUAD:IN20:771:BMIN': -100.0,\n", - " 'QUAD:IN20:771:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:771:CTRL': 'Ready',\n", - " 'QUAD:IN20:781:BCTRL': tensor(10.5227),\n", - " 'QUAD:IN20:781:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:781:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:781:BACT': tensor(10.5227),\n", - " 'QUAD:IN20:781:BDES': tensor(10.5227),\n", - " 'QUAD:IN20:781:BMAX': 100.0,\n", - " 'QUAD:IN20:781:BMIN': -100.0,\n", - " 'QUAD:IN20:781:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:781:CTRL': 'Ready',\n", - " 'QUAD:LI21:131:BCTRL': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:131:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:131:BACT': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BDES': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BMAX': 100.0,\n", - " 'QUAD:LI21:131:BMIN': -100.0,\n", - " 'QUAD:LI21:131:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:131:CTRL': 'Ready',\n", - " 'QUAD:LI21:161:BCTRL': tensor(1.9730),\n", - " 'QUAD:LI21:161:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:161:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:161:BACT': tensor(1.9730),\n", - " 'QUAD:LI21:161:BDES': tensor(1.9730),\n", - " 'QUAD:LI21:161:BMAX': 100.0,\n", - " 'QUAD:LI21:161:BMIN': -100.0,\n", - " 'QUAD:LI21:161:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:161:CTRL': 'Ready',\n", - " 'QUAD:LI21:201:BCTRL': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:201:BACT': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BDES': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BMAX': 100.0,\n", - " 'QUAD:LI21:201:BMIN': -100.0,\n", - " 'QUAD:LI21:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:201:CTRL': 'Ready',\n", - " 'QUAD:LI21:211:BCTRL': tensor(8.7054),\n", - " 'QUAD:LI21:211:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:211:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:211:BACT': tensor(8.7054),\n", - " 'QUAD:LI21:211:BDES': tensor(8.7054),\n", - " 'QUAD:LI21:211:BMAX': 100.0,\n", - " 'QUAD:LI21:211:BMIN': -100.0,\n", - " 'QUAD:LI21:211:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:211:CTRL': 'Ready',\n", - " 'QUAD:LI21:221:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:221:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:221:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:221:BACT': tensor(0.),\n", - " 'QUAD:LI21:221:BDES': tensor(0.),\n", - " 'QUAD:LI21:221:BMAX': 100.0,\n", - " 'QUAD:LI21:221:BMIN': -100.0,\n", - " 'QUAD:LI21:221:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:221:CTRL': 'Ready',\n", - " 'BPMS:LI21:233:X': tensor(6.5923e-10),\n", - " 'BPMS:LI21:233:Y': tensor(-1.1474e-11),\n", - " 'BPMS:LI21:233:TMIT': 1.0,\n", - " 'QUAD:LI21:243:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:243:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:243:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:243:BACT': tensor(0.),\n", - " 'QUAD:LI21:243:BDES': tensor(0.),\n", - " 'QUAD:LI21:243:BMAX': 100.0,\n", - " 'QUAD:LI21:243:BMIN': -100.0,\n", - " 'QUAD:LI21:243:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:243:CTRL': 'Ready',\n", - " 'QUAD:LI21:251:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:251:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:251:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:251:BACT': tensor(0.),\n", - " 'QUAD:LI21:251:BDES': tensor(0.),\n", - " 'QUAD:LI21:251:BMAX': 100.0,\n", - " 'QUAD:LI21:251:BMIN': -100.0,\n", - " 'QUAD:LI21:251:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:251:CTRL': 'Ready',\n", - " 'QUAD:LI21:271:BCTRL': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:271:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:271:BACT': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BDES': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BMAX': 100.0,\n", - " 'QUAD:LI21:271:BMIN': -100.0,\n", - " 'QUAD:LI21:271:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:271:CTRL': 'Ready',\n", - " 'QUAD:LI21:278:BCTRL': tensor(10.8832),\n", - " 'QUAD:LI21:278:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:278:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:278:BACT': tensor(10.8832),\n", - " 'QUAD:LI21:278:BDES': tensor(10.8832),\n", - " 'QUAD:LI21:278:BMAX': 100.0,\n", - " 'QUAD:LI21:278:BMIN': -100.0,\n", - " 'QUAD:LI21:278:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:278:CTRL': 'Ready',\n", - " 'XCOR:LI21:275:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:275:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:275:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:275:BACT': tensor(0.),\n", - " 'XCOR:LI21:275:BDES': tensor(0.),\n", - " 'XCOR:LI21:275:BMIN': -100.0,\n", - " 'XCOR:LI21:275:BMAX': 100.0,\n", - " 'XCOR:LI21:275:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:275:CTRL': 'Ready',\n", - " 'YCOR:LI21:276:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:276:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:276:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:276:BACT': tensor(0.),\n", - " 'YCOR:LI21:276:BDES': tensor(0.),\n", - " 'YCOR:LI21:276:BMIN': -100.0,\n", - " 'YCOR:LI21:276:BMAX': 100.0,\n", - " 'YCOR:LI21:276:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:276:CTRL': 'Ready',\n", - " 'XCOR:LI21:302:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:302:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:302:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:302:BACT': tensor(0.),\n", - " 'XCOR:LI21:302:BDES': tensor(0.),\n", - " 'XCOR:LI21:302:BMIN': -100.0,\n", - " 'XCOR:LI21:302:BMAX': 100.0,\n", - " 'XCOR:LI21:302:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:302:CTRL': 'Ready',\n", - " 'YCOR:LI21:303:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:303:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:303:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:303:BACT': tensor(0.),\n", - " 'YCOR:LI21:303:BDES': tensor(0.),\n", - " 'YCOR:LI21:303:BMIN': -100.0,\n", - " 'YCOR:LI21:303:BMAX': 100.0,\n", - " 'YCOR:LI21:303:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:303:CTRL': 'Ready',\n", - " 'QUAD:LI21:301:BCTRL': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:301:BACT': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BDES': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BMAX': 100.0,\n", - " 'QUAD:LI21:301:BMIN': -100.0,\n", - " 'QUAD:LI21:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:301:CTRL': 'Ready',\n", - " 'QUAD:LI21:315:BCTRL': tensor(7.7253),\n", - " 'QUAD:LI21:315:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:315:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:315:BACT': tensor(7.7253),\n", - " 'QUAD:LI21:315:BDES': tensor(7.7253),\n", - " 'QUAD:LI21:315:BMAX': 100.0,\n", - " 'QUAD:LI21:315:BMIN': -100.0,\n", - " 'QUAD:LI21:315:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:315:CTRL': 'Ready',\n", - " 'XCOR:LI21:325:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:325:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:325:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:325:BACT': tensor(0.),\n", - " 'XCOR:LI21:325:BDES': tensor(0.),\n", - " 'XCOR:LI21:325:BMIN': -100.0,\n", - " 'XCOR:LI21:325:BMAX': 100.0,\n", - " 'XCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:325:CTRL': 'Ready',\n", - " 'YCOR:LI21:325:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:325:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:325:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:325:BACT': tensor(0.),\n", - " 'YCOR:LI21:325:BDES': tensor(0.),\n", - " 'YCOR:LI21:325:BMIN': -100.0,\n", - " 'YCOR:LI21:325:BMAX': 100.0,\n", - " 'YCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:325:CTRL': 'Ready',\n", - " 'QUAD:LI21:335:BCTRL': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:335:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:335:BACT': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BDES': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BMAX': 100.0,\n", - " 'QUAD:LI21:335:BMIN': -100.0,\n", - " 'QUAD:LI21:335:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:335:CTRL': 'Ready',\n", - " 'QUAD:LI21:401:BCTRL': tensor(1.6531),\n", - " 'QUAD:LI21:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:401:BACT': tensor(1.6531),\n", - " 'QUAD:LI21:401:BDES': tensor(1.6531),\n", - " 'QUAD:LI21:401:BMAX': 100.0,\n", - " 'QUAD:LI21:401:BMIN': -100.0,\n", - " 'QUAD:LI21:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:401:CTRL': 'Ready',\n", - " 'QUAD:LI21:501:BCTRL': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:501:BACT': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BDES': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BMAX': 100.0,\n", - " 'QUAD:LI21:501:BMIN': -100.0,\n", - " 'QUAD:LI21:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:501:CTRL': 'Ready',\n", - " 'QUAD:LI21:601:BCTRL': tensor(2.0186),\n", - " 'QUAD:LI21:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:601:BACT': tensor(2.0186),\n", - " 'QUAD:LI21:601:BDES': tensor(2.0186),\n", - " 'QUAD:LI21:601:BMAX': 100.0,\n", - " 'QUAD:LI21:601:BMIN': -100.0,\n", - " 'QUAD:LI21:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:601:CTRL': 'Ready',\n", - " 'QUAD:LI21:701:BCTRL': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:701:BACT': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BDES': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BMAX': 100.0,\n", - " 'QUAD:LI21:701:BMIN': -100.0,\n", - " 'QUAD:LI21:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:701:CTRL': 'Ready',\n", - " 'QUAD:LI21:801:BCTRL': tensor(2.9797),\n", - " 'QUAD:LI21:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:801:BACT': tensor(2.9797),\n", - " 'QUAD:LI21:801:BDES': tensor(2.9797),\n", - " 'QUAD:LI21:801:BMAX': 100.0,\n", - " 'QUAD:LI21:801:BMIN': -100.0,\n", - " 'QUAD:LI21:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:801:CTRL': 'Ready',\n", - " 'QUAD:LI21:901:BCTRL': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:901:BACT': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BDES': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BMAX': 100.0,\n", - " 'QUAD:LI21:901:BMIN': -100.0,\n", - " 'QUAD:LI21:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:901:CTRL': 'Ready',\n", - " 'QUAD:LI22:201:BCTRL': tensor(3.7680),\n", - " 'QUAD:LI22:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:201:BACT': tensor(3.7680),\n", - " 'QUAD:LI22:201:BDES': tensor(3.7680),\n", - " 'QUAD:LI22:201:BMAX': 100.0,\n", - " 'QUAD:LI22:201:BMIN': -100.0,\n", - " 'QUAD:LI22:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:201:CTRL': 'Ready',\n", - " 'QUAD:LI22:301:BCTRL': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:301:BACT': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BDES': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BMAX': 100.0,\n", - " 'QUAD:LI22:301:BMIN': -100.0,\n", - " 'QUAD:LI22:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:301:CTRL': 'Ready',\n", - " 'QUAD:LI22:401:BCTRL': tensor(4.6014),\n", - " 'QUAD:LI22:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:401:BACT': tensor(4.6014),\n", - " 'QUAD:LI22:401:BDES': tensor(4.6014),\n", - " 'QUAD:LI22:401:BMAX': 100.0,\n", - " 'QUAD:LI22:401:BMIN': -100.0,\n", - " 'QUAD:LI22:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:401:CTRL': 'Ready',\n", - " 'QUAD:LI22:501:BCTRL': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:501:BACT': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BDES': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BMAX': 100.0,\n", - " 'QUAD:LI22:501:BMIN': -100.0,\n", - " 'QUAD:LI22:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:501:CTRL': 'Ready',\n", - " 'QUAD:LI22:601:BCTRL': tensor(5.4676),\n", - " 'QUAD:LI22:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:601:BACT': tensor(5.4676),\n", - " 'QUAD:LI22:601:BDES': tensor(5.4676),\n", - " 'QUAD:LI22:601:BMAX': 100.0,\n", - " 'QUAD:LI22:601:BMIN': -100.0,\n", - " 'QUAD:LI22:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:601:CTRL': 'Ready',\n", - " 'QUAD:LI22:701:BCTRL': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:701:BACT': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BDES': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BMAX': 100.0,\n", - " 'QUAD:LI22:701:BMIN': -100.0,\n", - " 'QUAD:LI22:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:701:CTRL': 'Ready',\n", - " 'QUAD:LI22:801:BCTRL': tensor(6.6840),\n", - " 'QUAD:LI22:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:801:BACT': tensor(6.6840),\n", - " 'QUAD:LI22:801:BDES': tensor(6.6840),\n", - " 'QUAD:LI22:801:BMAX': 100.0,\n", - " 'QUAD:LI22:801:BMIN': -100.0,\n", - " 'QUAD:LI22:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:801:CTRL': 'Ready',\n", - " 'QUAD:LI22:901:BCTRL': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:901:BACT': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BDES': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BMAX': 100.0,\n", - " 'QUAD:LI22:901:BMIN': -100.0,\n", - " 'QUAD:LI22:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:901:CTRL': 'Ready',\n", - " 'QUAD:LI23:201:BCTRL': tensor(7.3259),\n", - " 'QUAD:LI23:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:201:BACT': tensor(7.3259),\n", - " 'QUAD:LI23:201:BDES': tensor(7.3259),\n", - " 'QUAD:LI23:201:BMAX': 100.0,\n", - " 'QUAD:LI23:201:BMIN': -100.0,\n", - " 'QUAD:LI23:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:201:CTRL': 'Ready',\n", - " 'QUAD:LI23:301:BCTRL': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:301:BACT': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BDES': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BMAX': 100.0,\n", - " 'QUAD:LI23:301:BMIN': -100.0,\n", - " 'QUAD:LI23:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:301:CTRL': 'Ready',\n", - " 'QUAD:LI23:401:BCTRL': tensor(8.0660),\n", - " 'QUAD:LI23:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:401:BACT': tensor(8.0660),\n", - " 'QUAD:LI23:401:BDES': tensor(8.0660),\n", - " 'QUAD:LI23:401:BMAX': 100.0,\n", - " 'QUAD:LI23:401:BMIN': -100.0,\n", - " 'QUAD:LI23:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:401:CTRL': 'Ready',\n", - " 'QUAD:LI23:501:BCTRL': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:501:BACT': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BDES': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BMAX': 100.0,\n", - " 'QUAD:LI23:501:BMIN': -100.0,\n", - " 'QUAD:LI23:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:501:CTRL': 'Ready',\n", - " 'QUAD:LI23:601:BCTRL': tensor(8.9322),\n", - " 'QUAD:LI23:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:601:BACT': tensor(8.9322),\n", - " 'QUAD:LI23:601:BDES': tensor(8.9322),\n", - " 'QUAD:LI23:601:BMAX': 100.0,\n", - " 'QUAD:LI23:601:BMIN': -100.0,\n", - " 'QUAD:LI23:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:601:CTRL': 'Ready',\n", - " 'QUAD:LI23:701:BCTRL': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:701:BACT': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BDES': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BMAX': 100.0,\n", - " 'QUAD:LI23:701:BMIN': -100.0,\n", - " 'QUAD:LI23:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:701:CTRL': 'Ready',\n", - " 'QUAD:LI23:801:BCTRL': tensor(10.6598),\n", - " 'QUAD:LI23:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:801:BACT': tensor(10.6598),\n", - " 'QUAD:LI23:801:BDES': tensor(10.6598),\n", - " 'QUAD:LI23:801:BMAX': 100.0,\n", - " 'QUAD:LI23:801:BMIN': -100.0,\n", - " 'QUAD:LI23:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:801:CTRL': 'Ready',\n", - " 'QUAD:LI23:901:BCTRL': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:901:BACT': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BDES': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BMAX': 100.0,\n", - " 'QUAD:LI23:901:BMIN': -100.0,\n", - " 'QUAD:LI23:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:901:CTRL': 'Ready',\n", - " 'QUAD:LI24:201:BCTRL': tensor(11.7319),\n", - " 'QUAD:LI24:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:201:BACT': tensor(11.7319),\n", - " 'QUAD:LI24:201:BDES': tensor(11.7319),\n", - " 'QUAD:LI24:201:BMAX': 100.0,\n", - " 'QUAD:LI24:201:BMIN': -100.0,\n", - " 'QUAD:LI24:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:201:CTRL': 'Ready',\n", - " 'QUAD:LI24:301:BCTRL': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:301:BACT': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BDES': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BMAX': 100.0,\n", - " 'QUAD:LI24:301:BMIN': -100.0,\n", - " 'QUAD:LI24:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:301:CTRL': 'Ready',\n", - " 'QUAD:LI24:401:BCTRL': tensor(16.6813),\n", - " 'QUAD:LI24:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:401:BACT': tensor(16.6813),\n", - " 'QUAD:LI24:401:BDES': tensor(16.6813),\n", - " 'QUAD:LI24:401:BMAX': 100.0,\n", - " 'QUAD:LI24:401:BMIN': -100.0,\n", - " 'QUAD:LI24:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:401:CTRL': 'Ready',\n", - " 'QUAD:LI24:501:BCTRL': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:501:BACT': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BDES': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BMAX': 100.0,\n", - " 'QUAD:LI24:501:BMIN': -100.0,\n", - " 'QUAD:LI24:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:501:CTRL': 'Ready',\n", - " 'QUAD:LI24:601:BCTRL': tensor(10.6424),\n", - " 'QUAD:LI24:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:601:BACT': tensor(10.6424),\n", - " 'QUAD:LI24:601:BDES': tensor(10.6424),\n", - " 'QUAD:LI24:601:BMAX': 100.0,\n", - " 'QUAD:LI24:601:BMIN': -100.0,\n", - " 'QUAD:LI24:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:601:CTRL': 'Ready',\n", - " 'QUAD:LI24:701:BCTRL': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:701:BACT': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BDES': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BMAX': 100.0,\n", - " 'QUAD:LI24:701:BMIN': -100.0,\n", - " 'QUAD:LI24:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:701:CTRL': 'Ready',\n", - " 'QUAD:LI24:702:BCTRL': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:702:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:702:BACT': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BDES': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BMAX': 100.0,\n", - " 'QUAD:LI24:702:BMIN': -100.0,\n", - " 'QUAD:LI24:702:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:702:CTRL': 'Ready',\n", - " 'QUAD:LI24:713:BCTRL': tensor(40.0117),\n", - " 'QUAD:LI24:713:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:713:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:713:BACT': tensor(40.0117),\n", - " 'QUAD:LI24:713:BDES': tensor(40.0117),\n", - " 'QUAD:LI24:713:BMAX': 100.0,\n", - " 'QUAD:LI24:713:BMIN': -100.0,\n", - " 'QUAD:LI24:713:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:713:CTRL': 'Ready',\n", - " 'QUAD:LI24:740:BCTRL': tensor(0.),\n", - " 'QUAD:LI24:740:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:740:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:740:BACT': tensor(0.),\n", - " 'QUAD:LI24:740:BDES': tensor(0.),\n", - " 'QUAD:LI24:740:BMAX': 100.0,\n", - " 'QUAD:LI24:740:BMIN': -100.0,\n", - " 'QUAD:LI24:740:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:740:CTRL': 'Ready',\n", - " 'BPMS:LI24:801:X': tensor(4.0082e-09),\n", - " 'BPMS:LI24:801:Y': tensor(8.8476e-13),\n", - " 'BPMS:LI24:801:TMIT': 1.0,\n", - " 'QUAD:LI24:860:BCTRL': tensor(0.),\n", - " 'QUAD:LI24:860:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:860:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:860:BACT': tensor(0.),\n", - " 'QUAD:LI24:860:BDES': tensor(0.),\n", - " 'QUAD:LI24:860:BMAX': 100.0,\n", - " 'QUAD:LI24:860:BMIN': -100.0,\n", - " 'QUAD:LI24:860:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:860:CTRL': 'Ready',\n", - " 'QUAD:LI24:892:BCTRL': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:892:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:892:BACT': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BDES': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BMAX': 100.0,\n", - " 'QUAD:LI24:892:BMIN': -100.0,\n", - " 'QUAD:LI24:892:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:892:CTRL': 'Ready',\n", - " 'QUAD:LI24:901:BCTRL': tensor(19.5866),\n", - " 'QUAD:LI24:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:901:BACT': tensor(19.5866),\n", - " 'QUAD:LI24:901:BDES': tensor(19.5866),\n", - " 'QUAD:LI24:901:BMAX': 100.0,\n", - " 'QUAD:LI24:901:BMIN': -100.0,\n", - " 'QUAD:LI24:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:901:CTRL': 'Ready',\n", - " 'QUAD:LI24:902:BCTRL': tensor(19.5866),\n", - " 'QUAD:LI24:902:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:902:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:902:BACT': tensor(19.5866),\n", - " 'QUAD:LI24:902:BDES': tensor(19.5866),\n", - " 'QUAD:LI24:902:BMAX': 100.0,\n", - " 'QUAD:LI24:902:BMIN': -100.0,\n", - " 'QUAD:LI24:902:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:902:CTRL': 'Ready',\n", - " 'QUAD:LI25:201:BCTRL': tensor(13.0575),\n", - " 'QUAD:LI25:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:201:BACT': tensor(13.0575),\n", - " 'QUAD:LI25:201:BDES': tensor(13.0575),\n", - " 'QUAD:LI25:201:BMAX': 100.0,\n", - " 'QUAD:LI25:201:BMIN': -100.0,\n", - " 'QUAD:LI25:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:201:CTRL': 'Ready',\n", - " 'QUAD:LI25:301:BCTRL': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:301:BACT': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BDES': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BMAX': 100.0,\n", - " 'QUAD:LI25:301:BMIN': -100.0,\n", - " 'QUAD:LI25:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:301:CTRL': 'Ready',\n", - " 'QUAD:LI25:401:BCTRL': tensor(8.5408),\n", - " 'QUAD:LI25:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:401:BACT': tensor(8.5408),\n", - " 'QUAD:LI25:401:BDES': tensor(8.5408),\n", - " 'QUAD:LI25:401:BMAX': 100.0,\n", - " 'QUAD:LI25:401:BMIN': -100.0,\n", - " 'QUAD:LI25:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:401:CTRL': 'Ready',\n", - " 'QUAD:LI25:501:BCTRL': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:501:BACT': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BDES': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BMAX': 100.0,\n", - " 'QUAD:LI25:501:BMIN': -100.0,\n", - " 'QUAD:LI25:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:501:CTRL': 'Ready',\n", - " 'QUAD:LI25:601:BCTRL': tensor(8.4082),\n", - " 'QUAD:LI25:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:601:BACT': tensor(8.4082),\n", - " 'QUAD:LI25:601:BDES': tensor(8.4082),\n", - " 'QUAD:LI25:601:BMAX': 100.0,\n", - " 'QUAD:LI25:601:BMIN': -100.0,\n", - " 'QUAD:LI25:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:601:CTRL': 'Ready',\n", - " 'QUAD:LI25:701:BCTRL': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:701:BACT': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BDES': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BMAX': 100.0,\n", - " 'QUAD:LI25:701:BMIN': -100.0,\n", - " 'QUAD:LI25:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:701:CTRL': 'Ready',\n", - " 'QUAD:LI25:801:BCTRL': tensor(9.2171),\n", - " 'QUAD:LI25:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:801:BACT': tensor(9.2171),\n", - " 'QUAD:LI25:801:BDES': tensor(9.2171),\n", - " 'QUAD:LI25:801:BMAX': 100.0,\n", - " 'QUAD:LI25:801:BMIN': -100.0,\n", - " 'QUAD:LI25:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:801:CTRL': 'Ready',\n", - " 'QUAD:LI25:901:BCTRL': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:901:BACT': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BDES': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BMAX': 100.0,\n", - " 'QUAD:LI25:901:BMIN': -100.0,\n", - " 'QUAD:LI25:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:901:CTRL': 'Ready',\n", - " 'QUAD:LI26:201:BCTRL': tensor(9.3287),\n", - " 'QUAD:LI26:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:201:BACT': tensor(9.3287),\n", - " 'QUAD:LI26:201:BDES': tensor(9.3287),\n", - " 'QUAD:LI26:201:BMAX': 100.0,\n", - " 'QUAD:LI26:201:BMIN': -100.0,\n", - " 'QUAD:LI26:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:201:CTRL': 'Ready',\n", - " 'QUAD:LI26:301:BCTRL': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:301:BACT': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BDES': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BMAX': 100.0,\n", - " 'QUAD:LI26:301:BMIN': -100.0,\n", - " 'QUAD:LI26:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:301:CTRL': 'Ready',\n", - " 'QUAD:LI26:401:BCTRL': tensor(10.0393),\n", - " 'QUAD:LI26:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:401:BACT': tensor(10.0393),\n", - " 'QUAD:LI26:401:BDES': tensor(10.0393),\n", - " 'QUAD:LI26:401:BMAX': 100.0,\n", - " 'QUAD:LI26:401:BMIN': -100.0,\n", - " 'QUAD:LI26:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:401:CTRL': 'Ready',\n", - " 'QUAD:LI26:501:BCTRL': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:501:BACT': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BDES': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BMAX': 100.0,\n", - " 'QUAD:LI26:501:BMIN': -100.0,\n", - " 'QUAD:LI26:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:501:CTRL': 'Ready',\n", - " 'QUAD:LI26:601:BCTRL': tensor(10.5830),\n", - " 'QUAD:LI26:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:601:BACT': tensor(10.5830),\n", - " 'QUAD:LI26:601:BDES': tensor(10.5830),\n", - " 'QUAD:LI26:601:BMAX': 100.0,\n", - " 'QUAD:LI26:601:BMIN': -100.0,\n", - " 'QUAD:LI26:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:601:CTRL': 'Ready',\n", - " 'QUAD:LI26:701:BCTRL': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:701:BACT': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BDES': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BMAX': 100.0,\n", - " 'QUAD:LI26:701:BMIN': -100.0,\n", - " 'QUAD:LI26:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:701:CTRL': 'Ready',\n", - " 'QUAD:LI26:801:BCTRL': tensor(11.4136),\n", - " 'QUAD:LI26:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:801:BACT': tensor(11.4136),\n", - " 'QUAD:LI26:801:BDES': tensor(11.4136),\n", - " 'QUAD:LI26:801:BMAX': 100.0,\n", - " 'QUAD:LI26:801:BMIN': -100.0,\n", - " 'QUAD:LI26:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:801:CTRL': 'Ready',\n", - " 'QUAD:LI26:901:BCTRL': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:901:BACT': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BDES': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BMAX': 100.0,\n", - " 'QUAD:LI26:901:BMIN': -100.0,\n", - " 'QUAD:LI26:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:901:CTRL': 'Ready',\n", - " 'QUAD:LI27:201:BCTRL': tensor(11.2623),\n", - " 'QUAD:LI27:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:201:BACT': tensor(11.2623),\n", - " 'QUAD:LI27:201:BDES': tensor(11.2623),\n", - " 'QUAD:LI27:201:BMAX': 100.0,\n", - " 'QUAD:LI27:201:BMIN': -100.0,\n", - " 'QUAD:LI27:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:201:CTRL': 'Ready',\n", - " 'QUAD:LI27:301:BCTRL': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:301:BACT': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BDES': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BMAX': 100.0,\n", - " 'QUAD:LI27:301:BMIN': -100.0,\n", - " 'QUAD:LI27:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:301:CTRL': 'Ready',\n", - " 'QUAD:LI27:401:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI27:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:401:BACT': tensor(11.3985),\n", - " 'QUAD:LI27:401:BDES': tensor(11.3985),\n", - " 'QUAD:LI27:401:BMAX': 100.0,\n", - " 'QUAD:LI27:401:BMIN': -100.0,\n", - " 'QUAD:LI27:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:401:CTRL': 'Ready',\n", - " 'QUAD:LI27:501:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:501:BACT': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BDES': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BMAX': 100.0,\n", - " 'QUAD:LI27:501:BMIN': -100.0,\n", - " 'QUAD:LI27:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:501:CTRL': 'Ready',\n", - " 'QUAD:LI27:601:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI27:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:601:BACT': tensor(11.3985),\n", - " 'QUAD:LI27:601:BDES': tensor(11.3985),\n", - " 'QUAD:LI27:601:BMAX': 100.0,\n", - " 'QUAD:LI27:601:BMIN': -100.0,\n", - " 'QUAD:LI27:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:601:CTRL': 'Ready',\n", - " 'QUAD:LI27:701:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:701:BACT': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BDES': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BMAX': 100.0,\n", - " 'QUAD:LI27:701:BMIN': -100.0,\n", - " 'QUAD:LI27:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:701:CTRL': 'Ready',\n", - " 'QUAD:LI27:801:BCTRL': tensor(11.7159),\n", - " 'QUAD:LI27:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:801:BACT': tensor(11.7159),\n", - " 'QUAD:LI27:801:BDES': tensor(11.7159),\n", - " 'QUAD:LI27:801:BMAX': 100.0,\n", - " 'QUAD:LI27:801:BMIN': -100.0,\n", - " 'QUAD:LI27:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:801:CTRL': 'Ready',\n", - " 'QUAD:LI27:901:BCTRL': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:901:BACT': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BDES': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BMAX': 100.0,\n", - " 'QUAD:LI27:901:BMIN': -100.0,\n", - " 'QUAD:LI27:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:901:CTRL': 'Ready',\n", - " 'QUAD:LI28:201:BCTRL': tensor(11.2548),\n", - " 'QUAD:LI28:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:201:BACT': tensor(11.2548),\n", - " 'QUAD:LI28:201:BDES': tensor(11.2548),\n", - " 'QUAD:LI28:201:BMAX': 100.0,\n", - " 'QUAD:LI28:201:BMIN': -100.0,\n", - " 'QUAD:LI28:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:201:CTRL': 'Ready',\n", - " 'QUAD:LI28:301:BCTRL': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:301:BACT': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BDES': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BMAX': 100.0,\n", - " 'QUAD:LI28:301:BMIN': -100.0,\n", - " 'QUAD:LI28:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:301:CTRL': 'Ready',\n", - " 'QUAD:LI28:401:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI28:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:401:BACT': tensor(11.3985),\n", - " 'QUAD:LI28:401:BDES': tensor(11.3985),\n", - " 'QUAD:LI28:401:BMAX': 100.0,\n", - " 'QUAD:LI28:401:BMIN': -100.0,\n", - " 'QUAD:LI28:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:401:CTRL': 'Ready',\n", - " 'QUAD:LI28:501:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:501:BACT': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BDES': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BMAX': 100.0,\n", - " 'QUAD:LI28:501:BMIN': -100.0,\n", - " 'QUAD:LI28:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:501:CTRL': 'Ready',\n", - " 'QUAD:LI28:601:BCTRL': tensor(11.3985),\n", - " ...}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get variable values\n", "model.get(vars)" @@ -2148,31 +54,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "39e7298a", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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nXfeebOec16Lru+blDUEd778kTjweviaZj/8nObX5zQwA8EbJ9IIISRHKLqEEJIj81p0y+WynHPOOfrvfIGvaW7Az2luUN4KGuElm+t/IIQQ0jHzOtIlhJDZBkWXEEJyhKJLCCE5Mm99uk888YTceuut0tfXJ4cccoiUSiWZzdx3333y4IMPyq677ir77befeJ7XtsLuN7/5jSb98Zq6u7s3aUze3HLLLfLwww/La17zGtluu+2a7oPZ/Oabb1bjOY63nQ+ykzF5AiP9HXfcoZ/V/vvvv8H91WpVj3d8fFwOOugg2X777TdpTF6sX79ebrvtNhkdHZU999xTXvCCF2wwptFoyK9+9SsZHByUAw44QHbZZZdNGrOlGBkZkWuuuUYWLlwoy5cvbzvmySeflN/97nfS29urf0ftJs9masyUJPOQr3zlK0l3d3eyfPnyZNmyZcnuu++ePPjgg8ls5NZbb01e9rKXJS984QuTN77xjckuu+yitx9//PGmcd///veT3t7e5JBDDkle9KIXJc95znOS22+/fdpj8ua+++5LFi5ciMna5Kabbmq675e//GWyaNEifb0HHnhgsmDBguQXv/jFtMfkRaPRSN7//vcnPT09yVFHHaXv8zHHHJNEUZSOueeee/QzxOd56KGH6tjvfve7TfvpZExeXHzxxUlfX19y0EEH6d/fwMCA/lutVtMxjz76aPL85z8/2WOPPZJXvepVSVdXV3L++ec37aeTMVuC8fHx5IMf/KD+rePn1a9+ddtxX//611UTDj/8cD3OpUuXJn/+85+3yJiNMe9EF+JaLBaTb37zm+kXBeL7mte8JpmN3HDDDcltt92W3h4bG0v222+/5Pjjj0+3rVmzJunv709WrlyZbnvrW9+qwjqdMXmDL8S+++6bfO5zn9tAdOv1erJkyZLk9NNPT7d9+MMfTnbaaSd9XKdj8mTFihXJ9ttv3/Ql++lPf6rH6cDJ4c1vfnMSx7HePvfcc/VL+tRTT01rTF4sXrw4+ehHP5refuSRR5IgCJILL7ww3Xb00UfrycG9zosuukjH3H///dMasyVYv3598sUvfjEZHBxMTj755Laii9dUKpWSr371q3o7DEMdB12Y6THbpOhCdLbbbjt9Qxw/+MEPEs/zNogeZyv4ciNCd+AEgg97aGgo3fbrX/9aheyOO+7oeEzefOADH0hOPfVUFalW0b3mmmt0W/YKBNEStv34xz/ueExejIyMaESKE8hk/PGPf9RjQ3SefRyivi996Usdj8kLROiIcv/7v/873QbRxOv82te+prefffbZxPf95JJLLml6HE58//zP/9zxmDw4eRLRxUkNV1sIwBxXXHGFfg6rV6+e0TGdMO8m0u6++27NSQVBkG578YtfrPnAe++9V2Y7OM7rrrtOXvSiFzW9puc+97man86+Jndfp2Py5Ac/+IH84he/kPPOO6/t/Timrq4u2X333dNtu+22m+Zrs69pY2Py4g9/+IPmPF/3utfJ7bffLldccYXm4bO4Y8p+dj09PXr82de0sTF59ia54IIL5N///d/l3HPPlW984xty7LHHak70ne98p47Ba4zjuOl48bh99tknPd5OxmxN7r77btl7772lUChs8N245557ZnTMNjmRhiS+6y7mWLx4cTphMNv59Kc/LXfeead85StfmfI1IYmPyUH3mjoZkxfo6vaBD3xArrzyShWUdrQ7XvdZTfWaWsfkxdNPP51+Pjh5L126VCeNDjvsMLnsssv0fcbxAkzmTHa8nYzJk7322kvf40svvVQn8/DaTjvttHTi2R1vu++Ua53ayZjZrgmDMzRmmxRdzCS6P4LszCaoVCoym/nyl78s//Iv/yLf+973ZN999216Te41ZGeK6/V6+po6GZMXZ555pkY9Dz30kP489dRTuv3aa6/Vfw899NC2xwuwbarX1DomL9zzIcpBxAN3CVwMeJ3nn3++nHXWWeksNiJinPDaHW8nY/IC35MjjzxSPvKRj8jZZ5+t2/CaEL3hpHD66aenx9v6ObR7TVON2ZqUy+UNRLFVE2ZqTCfMu/TCHnvsoZFWlkcffVT/zV6mzja++tWvyoc+9CG5+OKL5U1vetMGr+mxxx6TKIomfU2djMkLnDAQNf3oRz/SH1h5wE033aT2MXe8+NJnT5AQIkRG2de0sTF5gWMBxx13XGrnQx/WAw88UFMP2THZvz+kiyBk2de0sTF5cdddd8m6devkhBNOSLfhNcHCdv311096vO5va6rX1DpmtmvCHjM0piOSecb111+vie2sVerv/u7vkuc973npbPFsA5MWmASD5Wsy2xUmAq+++up027/+67+qfcrN4ncyZmvRbiINky/lcjmdsAHf+ta31HnyxBNPdDwmT/bcc099Tx2YUIFlyM3+YxIKk7jZySPY27J/j52MyYuHH35Yn/eHP/xh02uC7QsuEcdee+2lVrms5Q2Py/6tdTJma02k3XTTTXosv//979NtZ5xxRrLbbrulmjBTYzph3okueMtb3qJfhvPOOy/5yEc+otaVH/3oR8lsBH/wEMsTTzxRvZru57LLLmsaBy8i7EqYQf3EJz6hwgM/8nTHzBbRBZ/+9Kd1pvxTn/qU/o6Z9HPOOWfaY/Liqquu0uf/+Mc/rieC17/+9TpDn3XFwGqF9x0OlM9//vN6/ymnnNK0n07G5MW73vUuPQn827/9m1qhXve61+mJOusYwesuFArJhz70oeQLX/iC+t5hEcvSyZgtxeWXX67fmf/3//6fWiTxe9ZJAU444QQVx//8z/9MzjrrLNWE1iBnpsZsjHnZZQyX2N/85jd1ogOz+SeddJJeBs5GkL/FTH8ryBF961vfSm/jY0LqAY4A5JaOP/54edWrXtX0mE7GbA2Q0/3whz8sn/zkJ3XiJsuPf/xjdQLg2I8++mh585vfvMHjOxmTF6hEu/DCCzXlgZnsU089dYNJsRtvvFEuueQSrTbD+4+/v9YKw07G5AHeU/z9IfWDyr9ly5bJe9/7Xtlhhx2axiGF4l73wQcfrGOKxeK0x2wJkHtunbCDe+k73/lOkyZ8+9vf1teJXDrcGUijZJmpMRtjXoouIYTMVubdRBohhMxmKLqEEJIjFF1CCMkRii4hhOQIRZcQQnKEoksIITlC0SWEkByh6BJCSI5QdAkhJEcouoQQkiMUXUIIyRGKLiGESH78f/C7VOBg3ONYAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# get beam distribution on OTR screen\n", "info = model.get(\"OTRS:IN20:571:Image:ArrayData\")\n", @@ -2182,1093 +67,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "7c2b3ca0", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'SOLN:IN20:111:BCTRL': tensor(0.),\n", - " 'SOLN:IN20:111:BCTRL.DRVL': -100.0,\n", - " 'SOLN:IN20:111:BCTRL.DRVH': 100.0,\n", - " 'SOLN:IN20:111:BACT': tensor(0.),\n", - " 'SOLN:IN20:111:BDES': tensor(0.),\n", - " 'SOLN:IN20:111:BMIN': -100.0,\n", - " 'SOLN:IN20:111:BMAX': 100.0,\n", - " 'SOLN:IN20:111:STATCTRLSUB.T': 1.0,\n", - " 'SOLN:IN20:111:CTRL': 'Ready',\n", - " 'SOLN:IN20:121:BCTRL': tensor(0.),\n", - " 'SOLN:IN20:121:BCTRL.DRVL': -100.0,\n", - " 'SOLN:IN20:121:BCTRL.DRVH': 100.0,\n", - " 'SOLN:IN20:121:BACT': tensor(0.),\n", - " 'SOLN:IN20:121:BDES': tensor(0.),\n", - " 'SOLN:IN20:121:BMIN': -100.0,\n", - " 'SOLN:IN20:121:BMAX': 100.0,\n", - " 'SOLN:IN20:121:STATCTRLSUB.T': 1.0,\n", - " 'SOLN:IN20:121:CTRL': 'Ready',\n", - " 'XCOR:IN20:221:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:221:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:221:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:221:BACT': tensor(0.),\n", - " 'XCOR:IN20:221:BDES': tensor(0.),\n", - " 'XCOR:IN20:221:BMIN': -100.0,\n", - " 'XCOR:IN20:221:BMAX': 100.0,\n", - " 'XCOR:IN20:221:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:221:CTRL': 'Ready',\n", - " 'YCOR:IN20:222:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:222:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:222:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:222:BACT': tensor(0.),\n", - " 'YCOR:IN20:222:BDES': tensor(0.),\n", - " 'YCOR:IN20:222:BMIN': -100.0,\n", - " 'YCOR:IN20:222:BMAX': 100.0,\n", - " 'YCOR:IN20:222:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:222:CTRL': 'Ready',\n", - " 'BPMS:IN20:221:X': tensor(5.3644e-12),\n", - " 'BPMS:IN20:221:Y': tensor(9.0152e-12),\n", - " 'BPMS:IN20:221:TMIT': 1.0,\n", - " 'BPMS:IN20:235:X': tensor(5.1409e-12),\n", - " 'BPMS:IN20:235:Y': tensor(1.0058e-11),\n", - " 'BPMS:IN20:235:TMIT': 1.0,\n", - " 'QUAD:IN20:361:BCTRL': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:361:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:361:BACT': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BDES': tensor(-5.2671),\n", - " 'QUAD:IN20:361:BMAX': 100.0,\n", - " 'QUAD:IN20:361:BMIN': -100.0,\n", - " 'QUAD:IN20:361:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:361:CTRL': 'Ready',\n", - " 'QUAD:IN20:371:BCTRL': tensor(5.7451),\n", - " 'QUAD:IN20:371:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:371:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:371:BACT': tensor(5.7451),\n", - " 'QUAD:IN20:371:BDES': tensor(5.7451),\n", - " 'QUAD:IN20:371:BMAX': 100.0,\n", - " 'QUAD:IN20:371:BMIN': -100.0,\n", - " 'QUAD:IN20:371:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:371:CTRL': 'Ready',\n", - " 'QUAD:IN20:425:BCTRL': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:425:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:425:BACT': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BDES': tensor(-0.2164),\n", - " 'QUAD:IN20:425:BMAX': 100.0,\n", - " 'QUAD:IN20:425:BMIN': -100.0,\n", - " 'QUAD:IN20:425:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:425:CTRL': 'Ready',\n", - " 'QUAD:IN20:441:BCTRL': tensor(0.6177),\n", - " 'QUAD:IN20:441:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:441:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:441:BACT': tensor(0.6177),\n", - " 'QUAD:IN20:441:BDES': tensor(0.6177),\n", - " 'QUAD:IN20:441:BMAX': 100.0,\n", - " 'QUAD:IN20:441:BMIN': -100.0,\n", - " 'QUAD:IN20:441:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:441:CTRL': 'Ready',\n", - " 'OTRS:IN20:465:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:465:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:465:Image:ArraySize1_RBV': 1040,\n", - " 'OTRS:IN20:465:Image:ArraySize0_RBV': 1392,\n", - " 'OTRS:IN20:465:RESOLUTION': tensor(18.5900),\n", - " 'OTRS:IN20:465:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:465:N_OF_ROW': 1040,\n", - " 'OTRS:IN20:465:N_OF_COL': 1392,\n", - " 'OTRS:IN20:471:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:471:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:471:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:471:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:471:RESOLUTION': tensor(19.1600),\n", - " 'OTRS:IN20:471:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:471:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:471:N_OF_COL': 1040,\n", - " 'QUAD:IN20:511:BCTRL': tensor(9.1265),\n", - " 'QUAD:IN20:511:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:511:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:511:BACT': tensor(9.1265),\n", - " 'QUAD:IN20:511:BDES': tensor(9.1265),\n", - " 'QUAD:IN20:511:BMAX': 100.0,\n", - " 'QUAD:IN20:511:BMIN': -100.0,\n", - " 'QUAD:IN20:511:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:511:CTRL': 'Ready',\n", - " 'XCOR:IN20:521:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:521:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:521:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:521:BACT': tensor(0.),\n", - " 'XCOR:IN20:521:BDES': tensor(0.),\n", - " 'XCOR:IN20:521:BMIN': -100.0,\n", - " 'XCOR:IN20:521:BMAX': 100.0,\n", - " 'XCOR:IN20:521:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:521:CTRL': 'Ready',\n", - " 'YCOR:IN20:522:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:522:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:522:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:522:BACT': tensor(0.),\n", - " 'YCOR:IN20:522:BDES': tensor(0.),\n", - " 'YCOR:IN20:522:BMIN': -100.0,\n", - " 'YCOR:IN20:522:BMAX': 100.0,\n", - " 'YCOR:IN20:522:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:522:CTRL': 'Ready',\n", - " 'QUAD:IN20:525:BCTRL': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:525:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:525:BACT': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BDES': tensor(-5.3568),\n", - " 'QUAD:IN20:525:BMAX': 100.0,\n", - " 'QUAD:IN20:525:BMIN': -100.0,\n", - " 'QUAD:IN20:525:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:525:CTRL': 'Ready',\n", - " 'OTRS:IN20:541:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:541:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:541:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:541:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:541:RESOLUTION': tensor(12.6600),\n", - " 'OTRS:IN20:541:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:541:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:541:N_OF_COL': 1040,\n", - " 'OTRS:IN20:571:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:571:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:571:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:571:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:571:RESOLUTION': tensor(12.6600),\n", - " 'OTRS:IN20:571:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:571:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:571:N_OF_COL': 1040,\n", - " 'BPMS:IN20:581:X': tensor(2.7940e-12),\n", - " 'BPMS:IN20:581:Y': tensor(-9.0152e-12),\n", - " 'BPMS:IN20:581:TMIT': 1.0,\n", - " 'OTRS:IN20:621:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:621:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:621:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:621:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:621:RESOLUTION': tensor(12.1200),\n", - " 'OTRS:IN20:621:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:621:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:621:N_OF_COL': 1040,\n", - " 'QUAD:IN20:631:BCTRL': tensor(11.8995),\n", - " 'QUAD:IN20:631:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:631:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:631:BACT': tensor(11.8995),\n", - " 'QUAD:IN20:631:BDES': tensor(11.8995),\n", - " 'QUAD:IN20:631:BMAX': 100.0,\n", - " 'QUAD:IN20:631:BMIN': -100.0,\n", - " 'QUAD:IN20:631:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:631:CTRL': 'Ready',\n", - " 'XCOR:IN20:641:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:641:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:641:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:641:BACT': tensor(0.),\n", - " 'XCOR:IN20:641:BDES': tensor(0.),\n", - " 'XCOR:IN20:641:BMIN': -100.0,\n", - " 'XCOR:IN20:641:BMAX': 100.0,\n", - " 'XCOR:IN20:641:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:641:CTRL': 'Ready',\n", - " 'YCOR:IN20:642:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:642:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:642:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:642:BACT': tensor(0.),\n", - " 'YCOR:IN20:642:BDES': tensor(0.),\n", - " 'YCOR:IN20:642:BMIN': -100.0,\n", - " 'YCOR:IN20:642:BMAX': 100.0,\n", - " 'YCOR:IN20:642:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:642:CTRL': 'Ready',\n", - " 'QUAD:IN20:651:BCTRL': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:651:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:651:BACT': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BDES': tensor(-9.4431),\n", - " 'QUAD:IN20:651:BMAX': 100.0,\n", - " 'QUAD:IN20:651:BMIN': -100.0,\n", - " 'QUAD:IN20:651:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:651:CTRL': 'Ready',\n", - " 'OTRS:IN20:711:Image:ArrayData': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:711:PNEUMATIC': 1.0,\n", - " 'OTRS:IN20:711:Image:ArraySize1_RBV': 1392,\n", - " 'OTRS:IN20:711:Image:ArraySize0_RBV': 1040,\n", - " 'OTRS:IN20:711:RESOLUTION': tensor(17.0600),\n", - " 'OTRS:IN20:711:IMAGE': tensor([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]]),\n", - " 'OTRS:IN20:711:N_OF_ROW': 1392,\n", - " 'OTRS:IN20:711:N_OF_COL': 1040,\n", - " 'XCOR:IN20:721:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:721:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:721:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:721:BACT': tensor(0.),\n", - " 'XCOR:IN20:721:BDES': tensor(0.),\n", - " 'XCOR:IN20:721:BMIN': -100.0,\n", - " 'XCOR:IN20:721:BMAX': 100.0,\n", - " 'XCOR:IN20:721:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:721:CTRL': 'Ready',\n", - " 'YCOR:IN20:722:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:722:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:722:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:722:BACT': tensor(0.),\n", - " 'YCOR:IN20:722:BDES': tensor(0.),\n", - " 'YCOR:IN20:722:BMIN': -100.0,\n", - " 'YCOR:IN20:722:BMAX': 100.0,\n", - " 'YCOR:IN20:722:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:722:CTRL': 'Ready',\n", - " 'QUAD:IN20:731:BCTRL': tensor(17.2962),\n", - " 'QUAD:IN20:731:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:731:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:731:BACT': tensor(17.2962),\n", - " 'QUAD:IN20:731:BDES': tensor(17.2962),\n", - " 'QUAD:IN20:731:BMAX': 100.0,\n", - " 'QUAD:IN20:731:BMIN': -100.0,\n", - " 'QUAD:IN20:731:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:731:CTRL': 'Ready',\n", - " 'XCOR:IN20:761:BCTRL': tensor(0.),\n", - " 'XCOR:IN20:761:BCTRL.DRVL': -100.0,\n", - " 'XCOR:IN20:761:BCTRL.DRVH': 100.0,\n", - " 'XCOR:IN20:761:BACT': tensor(0.),\n", - " 'XCOR:IN20:761:BDES': tensor(0.),\n", - " 'XCOR:IN20:761:BMIN': -100.0,\n", - " 'XCOR:IN20:761:BMAX': 100.0,\n", - " 'XCOR:IN20:761:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:IN20:761:CTRL': 'Ready',\n", - " 'YCOR:IN20:762:BCTRL': tensor(0.),\n", - " 'YCOR:IN20:762:BCTRL.DRVL': -100.0,\n", - " 'YCOR:IN20:762:BCTRL.DRVH': 100.0,\n", - " 'YCOR:IN20:762:BACT': tensor(0.),\n", - " 'YCOR:IN20:762:BDES': tensor(0.),\n", - " 'YCOR:IN20:762:BMIN': -100.0,\n", - " 'YCOR:IN20:762:BMAX': 100.0,\n", - " 'YCOR:IN20:762:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:IN20:762:CTRL': 'Ready',\n", - " 'QUAD:IN20:771:BCTRL': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:771:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:771:BACT': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BDES': tensor(-6.5442),\n", - " 'QUAD:IN20:771:BMAX': 100.0,\n", - " 'QUAD:IN20:771:BMIN': -100.0,\n", - " 'QUAD:IN20:771:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:771:CTRL': 'Ready',\n", - " 'QUAD:IN20:781:BCTRL': tensor(10.5227),\n", - " 'QUAD:IN20:781:BCTRL.DRVL': -100.0,\n", - " 'QUAD:IN20:781:BCTRL.DRVH': 100.0,\n", - " 'QUAD:IN20:781:BACT': tensor(10.5227),\n", - " 'QUAD:IN20:781:BDES': tensor(10.5227),\n", - " 'QUAD:IN20:781:BMAX': 100.0,\n", - " 'QUAD:IN20:781:BMIN': -100.0,\n", - " 'QUAD:IN20:781:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:IN20:781:CTRL': 'Ready',\n", - " 'QUAD:LI21:131:BCTRL': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:131:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:131:BACT': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BDES': tensor(-3.5554),\n", - " 'QUAD:LI21:131:BMAX': 100.0,\n", - " 'QUAD:LI21:131:BMIN': -100.0,\n", - " 'QUAD:LI21:131:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:131:CTRL': 'Ready',\n", - " 'QUAD:LI21:161:BCTRL': tensor(1.9730),\n", - " 'QUAD:LI21:161:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:161:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:161:BACT': tensor(1.9730),\n", - " 'QUAD:LI21:161:BDES': tensor(1.9730),\n", - " 'QUAD:LI21:161:BMAX': 100.0,\n", - " 'QUAD:LI21:161:BMIN': -100.0,\n", - " 'QUAD:LI21:161:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:161:CTRL': 'Ready',\n", - " 'QUAD:LI21:201:BCTRL': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:201:BACT': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BDES': tensor(-10.1131),\n", - " 'QUAD:LI21:201:BMAX': 100.0,\n", - " 'QUAD:LI21:201:BMIN': -100.0,\n", - " 'QUAD:LI21:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:201:CTRL': 'Ready',\n", - " 'QUAD:LI21:211:BCTRL': tensor(8.7054),\n", - " 'QUAD:LI21:211:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:211:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:211:BACT': tensor(8.7054),\n", - " 'QUAD:LI21:211:BDES': tensor(8.7054),\n", - " 'QUAD:LI21:211:BMAX': 100.0,\n", - " 'QUAD:LI21:211:BMIN': -100.0,\n", - " 'QUAD:LI21:211:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:211:CTRL': 'Ready',\n", - " 'QUAD:LI21:221:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:221:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:221:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:221:BACT': tensor(0.),\n", - " 'QUAD:LI21:221:BDES': tensor(0.),\n", - " 'QUAD:LI21:221:BMAX': 100.0,\n", - " 'QUAD:LI21:221:BMIN': -100.0,\n", - " 'QUAD:LI21:221:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:221:CTRL': 'Ready',\n", - " 'BPMS:LI21:233:X': tensor(6.5923e-10),\n", - " 'BPMS:LI21:233:Y': tensor(-1.1474e-11),\n", - " 'BPMS:LI21:233:TMIT': 1.0,\n", - " 'QUAD:LI21:243:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:243:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:243:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:243:BACT': tensor(0.),\n", - " 'QUAD:LI21:243:BDES': tensor(0.),\n", - " 'QUAD:LI21:243:BMAX': 100.0,\n", - " 'QUAD:LI21:243:BMIN': -100.0,\n", - " 'QUAD:LI21:243:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:243:CTRL': 'Ready',\n", - " 'QUAD:LI21:251:BCTRL': tensor(0.),\n", - " 'QUAD:LI21:251:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:251:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:251:BACT': tensor(0.),\n", - " 'QUAD:LI21:251:BDES': tensor(0.),\n", - " 'QUAD:LI21:251:BMAX': 100.0,\n", - " 'QUAD:LI21:251:BMIN': -100.0,\n", - " 'QUAD:LI21:251:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:251:CTRL': 'Ready',\n", - " 'QUAD:LI21:271:BCTRL': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:271:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:271:BACT': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BDES': tensor(-9.1188),\n", - " 'QUAD:LI21:271:BMAX': 100.0,\n", - " 'QUAD:LI21:271:BMIN': -100.0,\n", - " 'QUAD:LI21:271:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:271:CTRL': 'Ready',\n", - " 'QUAD:LI21:278:BCTRL': tensor(10.8832),\n", - " 'QUAD:LI21:278:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:278:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:278:BACT': tensor(10.8832),\n", - " 'QUAD:LI21:278:BDES': tensor(10.8832),\n", - " 'QUAD:LI21:278:BMAX': 100.0,\n", - " 'QUAD:LI21:278:BMIN': -100.0,\n", - " 'QUAD:LI21:278:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:278:CTRL': 'Ready',\n", - " 'XCOR:LI21:275:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:275:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:275:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:275:BACT': tensor(0.),\n", - " 'XCOR:LI21:275:BDES': tensor(0.),\n", - " 'XCOR:LI21:275:BMIN': -100.0,\n", - " 'XCOR:LI21:275:BMAX': 100.0,\n", - " 'XCOR:LI21:275:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:275:CTRL': 'Ready',\n", - " 'YCOR:LI21:276:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:276:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:276:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:276:BACT': tensor(0.),\n", - " 'YCOR:LI21:276:BDES': tensor(0.),\n", - " 'YCOR:LI21:276:BMIN': -100.0,\n", - " 'YCOR:LI21:276:BMAX': 100.0,\n", - " 'YCOR:LI21:276:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:276:CTRL': 'Ready',\n", - " 'XCOR:LI21:302:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:302:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:302:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:302:BACT': tensor(0.),\n", - " 'XCOR:LI21:302:BDES': tensor(0.),\n", - " 'XCOR:LI21:302:BMIN': -100.0,\n", - " 'XCOR:LI21:302:BMAX': 100.0,\n", - " 'XCOR:LI21:302:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:302:CTRL': 'Ready',\n", - " 'YCOR:LI21:303:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:303:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:303:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:303:BACT': tensor(0.),\n", - " 'YCOR:LI21:303:BDES': tensor(0.),\n", - " 'YCOR:LI21:303:BMIN': -100.0,\n", - " 'YCOR:LI21:303:BMAX': 100.0,\n", - " 'YCOR:LI21:303:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:303:CTRL': 'Ready',\n", - " 'QUAD:LI21:301:BCTRL': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:301:BACT': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BDES': tensor(-0.1459),\n", - " 'QUAD:LI21:301:BMAX': 100.0,\n", - " 'QUAD:LI21:301:BMIN': -100.0,\n", - " 'QUAD:LI21:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:301:CTRL': 'Ready',\n", - " 'QUAD:LI21:315:BCTRL': tensor(7.7253),\n", - " 'QUAD:LI21:315:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:315:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:315:BACT': tensor(7.7253),\n", - " 'QUAD:LI21:315:BDES': tensor(7.7253),\n", - " 'QUAD:LI21:315:BMAX': 100.0,\n", - " 'QUAD:LI21:315:BMIN': -100.0,\n", - " 'QUAD:LI21:315:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:315:CTRL': 'Ready',\n", - " 'XCOR:LI21:325:BCTRL': tensor(0.),\n", - " 'XCOR:LI21:325:BCTRL.DRVL': -100.0,\n", - " 'XCOR:LI21:325:BCTRL.DRVH': 100.0,\n", - " 'XCOR:LI21:325:BACT': tensor(0.),\n", - " 'XCOR:LI21:325:BDES': tensor(0.),\n", - " 'XCOR:LI21:325:BMIN': -100.0,\n", - " 'XCOR:LI21:325:BMAX': 100.0,\n", - " 'XCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", - " 'XCOR:LI21:325:CTRL': 'Ready',\n", - " 'YCOR:LI21:325:BCTRL': tensor(0.),\n", - " 'YCOR:LI21:325:BCTRL.DRVL': -100.0,\n", - " 'YCOR:LI21:325:BCTRL.DRVH': 100.0,\n", - " 'YCOR:LI21:325:BACT': tensor(0.),\n", - " 'YCOR:LI21:325:BDES': tensor(0.),\n", - " 'YCOR:LI21:325:BMIN': -100.0,\n", - " 'YCOR:LI21:325:BMAX': 100.0,\n", - " 'YCOR:LI21:325:STATCTRLSUB.T': 1.0,\n", - " 'YCOR:LI21:325:CTRL': 'Ready',\n", - " 'QUAD:LI21:335:BCTRL': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:335:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:335:BACT': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BDES': tensor(-7.3627),\n", - " 'QUAD:LI21:335:BMAX': 100.0,\n", - " 'QUAD:LI21:335:BMIN': -100.0,\n", - " 'QUAD:LI21:335:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:335:CTRL': 'Ready',\n", - " 'QUAD:LI21:401:BCTRL': tensor(1.6531),\n", - " 'QUAD:LI21:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:401:BACT': tensor(1.6531),\n", - " 'QUAD:LI21:401:BDES': tensor(1.6531),\n", - " 'QUAD:LI21:401:BMAX': 100.0,\n", - " 'QUAD:LI21:401:BMIN': -100.0,\n", - " 'QUAD:LI21:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:401:CTRL': 'Ready',\n", - " 'QUAD:LI21:501:BCTRL': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:501:BACT': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BDES': tensor(-1.8189),\n", - " 'QUAD:LI21:501:BMAX': 100.0,\n", - " 'QUAD:LI21:501:BMIN': -100.0,\n", - " 'QUAD:LI21:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:501:CTRL': 'Ready',\n", - " 'QUAD:LI21:601:BCTRL': tensor(2.0186),\n", - " 'QUAD:LI21:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:601:BACT': tensor(2.0186),\n", - " 'QUAD:LI21:601:BDES': tensor(2.0186),\n", - " 'QUAD:LI21:601:BMAX': 100.0,\n", - " 'QUAD:LI21:601:BMIN': -100.0,\n", - " 'QUAD:LI21:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:601:CTRL': 'Ready',\n", - " 'QUAD:LI21:701:BCTRL': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:701:BACT': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BDES': tensor(-2.4272),\n", - " 'QUAD:LI21:701:BMAX': 100.0,\n", - " 'QUAD:LI21:701:BMIN': -100.0,\n", - " 'QUAD:LI21:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:701:CTRL': 'Ready',\n", - " 'QUAD:LI21:801:BCTRL': tensor(2.9797),\n", - " 'QUAD:LI21:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:801:BACT': tensor(2.9797),\n", - " 'QUAD:LI21:801:BDES': tensor(2.9797),\n", - " 'QUAD:LI21:801:BMAX': 100.0,\n", - " 'QUAD:LI21:801:BMIN': -100.0,\n", - " 'QUAD:LI21:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:801:CTRL': 'Ready',\n", - " 'QUAD:LI21:901:BCTRL': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI21:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI21:901:BACT': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BDES': tensor(-3.3480),\n", - " 'QUAD:LI21:901:BMAX': 100.0,\n", - " 'QUAD:LI21:901:BMIN': -100.0,\n", - " 'QUAD:LI21:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI21:901:CTRL': 'Ready',\n", - " 'QUAD:LI22:201:BCTRL': tensor(3.7680),\n", - " 'QUAD:LI22:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:201:BACT': tensor(3.7680),\n", - " 'QUAD:LI22:201:BDES': tensor(3.7680),\n", - " 'QUAD:LI22:201:BMAX': 100.0,\n", - " 'QUAD:LI22:201:BMIN': -100.0,\n", - " 'QUAD:LI22:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:201:CTRL': 'Ready',\n", - " 'QUAD:LI22:301:BCTRL': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:301:BACT': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BDES': tensor(-4.4849),\n", - " 'QUAD:LI22:301:BMAX': 100.0,\n", - " 'QUAD:LI22:301:BMIN': -100.0,\n", - " 'QUAD:LI22:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:301:CTRL': 'Ready',\n", - " 'QUAD:LI22:401:BCTRL': tensor(4.6014),\n", - " 'QUAD:LI22:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:401:BACT': tensor(4.6014),\n", - " 'QUAD:LI22:401:BDES': tensor(4.6014),\n", - " 'QUAD:LI22:401:BMAX': 100.0,\n", - " 'QUAD:LI22:401:BMIN': -100.0,\n", - " 'QUAD:LI22:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:401:CTRL': 'Ready',\n", - " 'QUAD:LI22:501:BCTRL': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:501:BACT': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BDES': tensor(-5.0345),\n", - " 'QUAD:LI22:501:BMAX': 100.0,\n", - " 'QUAD:LI22:501:BMIN': -100.0,\n", - " 'QUAD:LI22:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:501:CTRL': 'Ready',\n", - " 'QUAD:LI22:601:BCTRL': tensor(5.4676),\n", - " 'QUAD:LI22:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:601:BACT': tensor(5.4676),\n", - " 'QUAD:LI22:601:BDES': tensor(5.4676),\n", - " 'QUAD:LI22:601:BMAX': 100.0,\n", - " 'QUAD:LI22:601:BMIN': -100.0,\n", - " 'QUAD:LI22:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:601:CTRL': 'Ready',\n", - " 'QUAD:LI22:701:BCTRL': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:701:BACT': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BDES': tensor(-5.9007),\n", - " 'QUAD:LI22:701:BMAX': 100.0,\n", - " 'QUAD:LI22:701:BMIN': -100.0,\n", - " 'QUAD:LI22:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:701:CTRL': 'Ready',\n", - " 'QUAD:LI22:801:BCTRL': tensor(6.6840),\n", - " 'QUAD:LI22:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:801:BACT': tensor(6.6840),\n", - " 'QUAD:LI22:801:BDES': tensor(6.6840),\n", - " 'QUAD:LI22:801:BMAX': 100.0,\n", - " 'QUAD:LI22:801:BMIN': -100.0,\n", - " 'QUAD:LI22:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:801:CTRL': 'Ready',\n", - " 'QUAD:LI22:901:BCTRL': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI22:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI22:901:BACT': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BDES': tensor(-6.7820),\n", - " 'QUAD:LI22:901:BMAX': 100.0,\n", - " 'QUAD:LI22:901:BMIN': -100.0,\n", - " 'QUAD:LI22:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI22:901:CTRL': 'Ready',\n", - " 'QUAD:LI23:201:BCTRL': tensor(7.3259),\n", - " 'QUAD:LI23:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:201:BACT': tensor(7.3259),\n", - " 'QUAD:LI23:201:BDES': tensor(7.3259),\n", - " 'QUAD:LI23:201:BMAX': 100.0,\n", - " 'QUAD:LI23:201:BMIN': -100.0,\n", - " 'QUAD:LI23:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:201:CTRL': 'Ready',\n", - " 'QUAD:LI23:301:BCTRL': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:301:BACT': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BDES': tensor(-7.9935),\n", - " 'QUAD:LI23:301:BMAX': 100.0,\n", - " 'QUAD:LI23:301:BMIN': -100.0,\n", - " 'QUAD:LI23:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:301:CTRL': 'Ready',\n", - " 'QUAD:LI23:401:BCTRL': tensor(8.0660),\n", - " 'QUAD:LI23:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:401:BACT': tensor(8.0660),\n", - " 'QUAD:LI23:401:BDES': tensor(8.0660),\n", - " 'QUAD:LI23:401:BMAX': 100.0,\n", - " 'QUAD:LI23:401:BMIN': -100.0,\n", - " 'QUAD:LI23:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:401:CTRL': 'Ready',\n", - " 'QUAD:LI23:501:BCTRL': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:501:BACT': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BDES': tensor(-8.4991),\n", - " 'QUAD:LI23:501:BMAX': 100.0,\n", - " 'QUAD:LI23:501:BMIN': -100.0,\n", - " 'QUAD:LI23:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:501:CTRL': 'Ready',\n", - " 'QUAD:LI23:601:BCTRL': tensor(8.9322),\n", - " 'QUAD:LI23:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:601:BACT': tensor(8.9322),\n", - " 'QUAD:LI23:601:BDES': tensor(8.9322),\n", - " 'QUAD:LI23:601:BMAX': 100.0,\n", - " 'QUAD:LI23:601:BMIN': -100.0,\n", - " 'QUAD:LI23:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:601:CTRL': 'Ready',\n", - " 'QUAD:LI23:701:BCTRL': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:701:BACT': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BDES': tensor(-9.3653),\n", - " 'QUAD:LI23:701:BMAX': 100.0,\n", - " 'QUAD:LI23:701:BMIN': -100.0,\n", - " 'QUAD:LI23:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:701:CTRL': 'Ready',\n", - " 'QUAD:LI23:801:BCTRL': tensor(10.6598),\n", - " 'QUAD:LI23:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:801:BACT': tensor(10.6598),\n", - " 'QUAD:LI23:801:BDES': tensor(10.6598),\n", - " 'QUAD:LI23:801:BMAX': 100.0,\n", - " 'QUAD:LI23:801:BMIN': -100.0,\n", - " 'QUAD:LI23:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:801:CTRL': 'Ready',\n", - " 'QUAD:LI23:901:BCTRL': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI23:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI23:901:BACT': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BDES': tensor(-10.4981),\n", - " 'QUAD:LI23:901:BMAX': 100.0,\n", - " 'QUAD:LI23:901:BMIN': -100.0,\n", - " 'QUAD:LI23:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI23:901:CTRL': 'Ready',\n", - " 'QUAD:LI24:201:BCTRL': tensor(11.7319),\n", - " 'QUAD:LI24:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:201:BACT': tensor(11.7319),\n", - " 'QUAD:LI24:201:BDES': tensor(11.7319),\n", - " 'QUAD:LI24:201:BMAX': 100.0,\n", - " 'QUAD:LI24:201:BMIN': -100.0,\n", - " 'QUAD:LI24:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:201:CTRL': 'Ready',\n", - " 'QUAD:LI24:301:BCTRL': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:301:BACT': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BDES': tensor(-13.4178),\n", - " 'QUAD:LI24:301:BMAX': 100.0,\n", - " 'QUAD:LI24:301:BMIN': -100.0,\n", - " 'QUAD:LI24:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:301:CTRL': 'Ready',\n", - " 'QUAD:LI24:401:BCTRL': tensor(16.6813),\n", - " 'QUAD:LI24:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:401:BACT': tensor(16.6813),\n", - " 'QUAD:LI24:401:BDES': tensor(16.6813),\n", - " 'QUAD:LI24:401:BMAX': 100.0,\n", - " 'QUAD:LI24:401:BMIN': -100.0,\n", - " 'QUAD:LI24:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:401:CTRL': 'Ready',\n", - " 'QUAD:LI24:501:BCTRL': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:501:BACT': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BDES': tensor(-16.1118),\n", - " 'QUAD:LI24:501:BMAX': 100.0,\n", - " 'QUAD:LI24:501:BMIN': -100.0,\n", - " 'QUAD:LI24:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:501:CTRL': 'Ready',\n", - " 'QUAD:LI24:601:BCTRL': tensor(10.6424),\n", - " 'QUAD:LI24:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:601:BACT': tensor(10.6424),\n", - " 'QUAD:LI24:601:BDES': tensor(10.6424),\n", - " 'QUAD:LI24:601:BMAX': 100.0,\n", - " 'QUAD:LI24:601:BMIN': -100.0,\n", - " 'QUAD:LI24:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:601:CTRL': 'Ready',\n", - " 'QUAD:LI24:701:BCTRL': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:701:BACT': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BDES': tensor(-23.6738),\n", - " 'QUAD:LI24:701:BMAX': 100.0,\n", - " 'QUAD:LI24:701:BMIN': -100.0,\n", - " 'QUAD:LI24:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:701:CTRL': 'Ready',\n", - " 'QUAD:LI24:702:BCTRL': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:702:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:702:BACT': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BDES': tensor(-23.6738),\n", - " 'QUAD:LI24:702:BMAX': 100.0,\n", - " 'QUAD:LI24:702:BMIN': -100.0,\n", - " 'QUAD:LI24:702:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:702:CTRL': 'Ready',\n", - " 'QUAD:LI24:713:BCTRL': tensor(40.0117),\n", - " 'QUAD:LI24:713:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:713:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:713:BACT': tensor(40.0117),\n", - " 'QUAD:LI24:713:BDES': tensor(40.0117),\n", - " 'QUAD:LI24:713:BMAX': 100.0,\n", - " 'QUAD:LI24:713:BMIN': -100.0,\n", - " 'QUAD:LI24:713:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:713:CTRL': 'Ready',\n", - " 'QUAD:LI24:740:BCTRL': tensor(0.),\n", - " 'QUAD:LI24:740:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:740:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:740:BACT': tensor(0.),\n", - " 'QUAD:LI24:740:BDES': tensor(0.),\n", - " 'QUAD:LI24:740:BMAX': 100.0,\n", - " 'QUAD:LI24:740:BMIN': -100.0,\n", - " 'QUAD:LI24:740:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:740:CTRL': 'Ready',\n", - " 'BPMS:LI24:801:X': tensor(4.0082e-09),\n", - " 'BPMS:LI24:801:Y': tensor(8.8476e-13),\n", - " 'BPMS:LI24:801:TMIT': 1.0,\n", - " 'QUAD:LI24:860:BCTRL': tensor(0.),\n", - " 'QUAD:LI24:860:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:860:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:860:BACT': tensor(0.),\n", - " 'QUAD:LI24:860:BDES': tensor(0.),\n", - " 'QUAD:LI24:860:BMAX': 100.0,\n", - " 'QUAD:LI24:860:BMIN': -100.0,\n", - " 'QUAD:LI24:860:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:860:CTRL': 'Ready',\n", - " 'QUAD:LI24:892:BCTRL': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:892:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:892:BACT': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BDES': tensor(-46.0741),\n", - " 'QUAD:LI24:892:BMAX': 100.0,\n", - " 'QUAD:LI24:892:BMIN': -100.0,\n", - " 'QUAD:LI24:892:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:892:CTRL': 'Ready',\n", - " 'QUAD:LI24:901:BCTRL': tensor(19.5866),\n", - " 'QUAD:LI24:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:901:BACT': tensor(19.5866),\n", - " 'QUAD:LI24:901:BDES': tensor(19.5866),\n", - " 'QUAD:LI24:901:BMAX': 100.0,\n", - " 'QUAD:LI24:901:BMIN': -100.0,\n", - " 'QUAD:LI24:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:901:CTRL': 'Ready',\n", - " 'QUAD:LI24:902:BCTRL': tensor(19.5866),\n", - " 'QUAD:LI24:902:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI24:902:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI24:902:BACT': tensor(19.5866),\n", - " 'QUAD:LI24:902:BDES': tensor(19.5866),\n", - " 'QUAD:LI24:902:BMAX': 100.0,\n", - " 'QUAD:LI24:902:BMIN': -100.0,\n", - " 'QUAD:LI24:902:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI24:902:CTRL': 'Ready',\n", - " 'QUAD:LI25:201:BCTRL': tensor(13.0575),\n", - " 'QUAD:LI25:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:201:BACT': tensor(13.0575),\n", - " 'QUAD:LI25:201:BDES': tensor(13.0575),\n", - " 'QUAD:LI25:201:BMAX': 100.0,\n", - " 'QUAD:LI25:201:BMIN': -100.0,\n", - " 'QUAD:LI25:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:201:CTRL': 'Ready',\n", - " 'QUAD:LI25:301:BCTRL': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:301:BACT': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BDES': tensor(-9.2534),\n", - " 'QUAD:LI25:301:BMAX': 100.0,\n", - " 'QUAD:LI25:301:BMIN': -100.0,\n", - " 'QUAD:LI25:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:301:CTRL': 'Ready',\n", - " 'QUAD:LI25:401:BCTRL': tensor(8.5408),\n", - " 'QUAD:LI25:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:401:BACT': tensor(8.5408),\n", - " 'QUAD:LI25:401:BDES': tensor(8.5408),\n", - " 'QUAD:LI25:401:BMAX': 100.0,\n", - " 'QUAD:LI25:401:BMIN': -100.0,\n", - " 'QUAD:LI25:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:401:CTRL': 'Ready',\n", - " 'QUAD:LI25:501:BCTRL': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:501:BACT': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BDES': tensor(-8.2272),\n", - " 'QUAD:LI25:501:BMAX': 100.0,\n", - " 'QUAD:LI25:501:BMIN': -100.0,\n", - " 'QUAD:LI25:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:501:CTRL': 'Ready',\n", - " 'QUAD:LI25:601:BCTRL': tensor(8.4082),\n", - " 'QUAD:LI25:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:601:BACT': tensor(8.4082),\n", - " 'QUAD:LI25:601:BDES': tensor(8.4082),\n", - " 'QUAD:LI25:601:BMAX': 100.0,\n", - " 'QUAD:LI25:601:BMIN': -100.0,\n", - " 'QUAD:LI25:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:601:CTRL': 'Ready',\n", - " 'QUAD:LI25:701:BCTRL': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:701:BACT': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BDES': tensor(-8.6768),\n", - " 'QUAD:LI25:701:BMAX': 100.0,\n", - " 'QUAD:LI25:701:BMIN': -100.0,\n", - " 'QUAD:LI25:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:701:CTRL': 'Ready',\n", - " 'QUAD:LI25:801:BCTRL': tensor(9.2171),\n", - " 'QUAD:LI25:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:801:BACT': tensor(9.2171),\n", - " 'QUAD:LI25:801:BDES': tensor(9.2171),\n", - " 'QUAD:LI25:801:BMAX': 100.0,\n", - " 'QUAD:LI25:801:BMIN': -100.0,\n", - " 'QUAD:LI25:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:801:CTRL': 'Ready',\n", - " 'QUAD:LI25:901:BCTRL': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI25:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI25:901:BACT': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BDES': tensor(-9.0578),\n", - " 'QUAD:LI25:901:BMAX': 100.0,\n", - " 'QUAD:LI25:901:BMIN': -100.0,\n", - " 'QUAD:LI25:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI25:901:CTRL': 'Ready',\n", - " 'QUAD:LI26:201:BCTRL': tensor(9.3287),\n", - " 'QUAD:LI26:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:201:BACT': tensor(9.3287),\n", - " 'QUAD:LI26:201:BDES': tensor(9.3287),\n", - " 'QUAD:LI26:201:BMAX': 100.0,\n", - " 'QUAD:LI26:201:BMIN': -100.0,\n", - " 'QUAD:LI26:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:201:CTRL': 'Ready',\n", - " 'QUAD:LI26:301:BCTRL': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:301:BACT': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BDES': tensor(-10.0039),\n", - " 'QUAD:LI26:301:BMAX': 100.0,\n", - " 'QUAD:LI26:301:BMIN': -100.0,\n", - " 'QUAD:LI26:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:301:CTRL': 'Ready',\n", - " 'QUAD:LI26:401:BCTRL': tensor(10.0393),\n", - " 'QUAD:LI26:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:401:BACT': tensor(10.0393),\n", - " 'QUAD:LI26:401:BDES': tensor(10.0393),\n", - " 'QUAD:LI26:401:BMAX': 100.0,\n", - " 'QUAD:LI26:401:BMIN': -100.0,\n", - " 'QUAD:LI26:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:401:CTRL': 'Ready',\n", - " 'QUAD:LI26:501:BCTRL': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:501:BACT': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BDES': tensor(-10.3072),\n", - " 'QUAD:LI26:501:BMAX': 100.0,\n", - " 'QUAD:LI26:501:BMIN': -100.0,\n", - " 'QUAD:LI26:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:501:CTRL': 'Ready',\n", - " 'QUAD:LI26:601:BCTRL': tensor(10.5830),\n", - " 'QUAD:LI26:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:601:BACT': tensor(10.5830),\n", - " 'QUAD:LI26:601:BDES': tensor(10.5830),\n", - " 'QUAD:LI26:601:BMAX': 100.0,\n", - " 'QUAD:LI26:601:BMIN': -100.0,\n", - " 'QUAD:LI26:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:601:CTRL': 'Ready',\n", - " 'QUAD:LI26:701:BCTRL': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:701:BACT': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BDES': tensor(-10.8507),\n", - " 'QUAD:LI26:701:BMAX': 100.0,\n", - " 'QUAD:LI26:701:BMIN': -100.0,\n", - " 'QUAD:LI26:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:701:CTRL': 'Ready',\n", - " 'QUAD:LI26:801:BCTRL': tensor(11.4136),\n", - " 'QUAD:LI26:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:801:BACT': tensor(11.4136),\n", - " 'QUAD:LI26:801:BDES': tensor(11.4136),\n", - " 'QUAD:LI26:801:BMAX': 100.0,\n", - " 'QUAD:LI26:801:BMIN': -100.0,\n", - " 'QUAD:LI26:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:801:CTRL': 'Ready',\n", - " 'QUAD:LI26:901:BCTRL': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI26:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI26:901:BACT': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BDES': tensor(-11.1960),\n", - " 'QUAD:LI26:901:BMAX': 100.0,\n", - " 'QUAD:LI26:901:BMIN': -100.0,\n", - " 'QUAD:LI26:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI26:901:CTRL': 'Ready',\n", - " 'QUAD:LI27:201:BCTRL': tensor(11.2623),\n", - " 'QUAD:LI27:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:201:BACT': tensor(11.2623),\n", - " 'QUAD:LI27:201:BDES': tensor(11.2623),\n", - " 'QUAD:LI27:201:BMAX': 100.0,\n", - " 'QUAD:LI27:201:BMIN': -100.0,\n", - " 'QUAD:LI27:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:201:CTRL': 'Ready',\n", - " 'QUAD:LI27:301:BCTRL': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:301:BACT': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BDES': tensor(-11.7260),\n", - " 'QUAD:LI27:301:BMAX': 100.0,\n", - " 'QUAD:LI27:301:BMIN': -100.0,\n", - " 'QUAD:LI27:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:301:CTRL': 'Ready',\n", - " 'QUAD:LI27:401:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI27:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:401:BACT': tensor(11.3985),\n", - " 'QUAD:LI27:401:BDES': tensor(11.3985),\n", - " 'QUAD:LI27:401:BMAX': 100.0,\n", - " 'QUAD:LI27:401:BMIN': -100.0,\n", - " 'QUAD:LI27:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:401:CTRL': 'Ready',\n", - " 'QUAD:LI27:501:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:501:BACT': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BDES': tensor(-11.3942),\n", - " 'QUAD:LI27:501:BMAX': 100.0,\n", - " 'QUAD:LI27:501:BMIN': -100.0,\n", - " 'QUAD:LI27:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:501:CTRL': 'Ready',\n", - " 'QUAD:LI27:601:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI27:601:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:601:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:601:BACT': tensor(11.3985),\n", - " 'QUAD:LI27:601:BDES': tensor(11.3985),\n", - " 'QUAD:LI27:601:BMAX': 100.0,\n", - " 'QUAD:LI27:601:BMIN': -100.0,\n", - " 'QUAD:LI27:601:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:601:CTRL': 'Ready',\n", - " 'QUAD:LI27:701:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:701:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:701:BACT': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BDES': tensor(-11.3942),\n", - " 'QUAD:LI27:701:BMAX': 100.0,\n", - " 'QUAD:LI27:701:BMIN': -100.0,\n", - " 'QUAD:LI27:701:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:701:CTRL': 'Ready',\n", - " 'QUAD:LI27:801:BCTRL': tensor(11.7159),\n", - " 'QUAD:LI27:801:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:801:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:801:BACT': tensor(11.7159),\n", - " 'QUAD:LI27:801:BDES': tensor(11.7159),\n", - " 'QUAD:LI27:801:BMAX': 100.0,\n", - " 'QUAD:LI27:801:BMIN': -100.0,\n", - " 'QUAD:LI27:801:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:801:CTRL': 'Ready',\n", - " 'QUAD:LI27:901:BCTRL': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI27:901:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI27:901:BACT': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BDES': tensor(-11.2172),\n", - " 'QUAD:LI27:901:BMAX': 100.0,\n", - " 'QUAD:LI27:901:BMIN': -100.0,\n", - " 'QUAD:LI27:901:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI27:901:CTRL': 'Ready',\n", - " 'QUAD:LI28:201:BCTRL': tensor(11.2548),\n", - " 'QUAD:LI28:201:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:201:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:201:BACT': tensor(11.2548),\n", - " 'QUAD:LI28:201:BDES': tensor(11.2548),\n", - " 'QUAD:LI28:201:BMAX': 100.0,\n", - " 'QUAD:LI28:201:BMIN': -100.0,\n", - " 'QUAD:LI28:201:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:201:CTRL': 'Ready',\n", - " 'QUAD:LI28:301:BCTRL': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:301:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:301:BACT': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BDES': tensor(-11.7069),\n", - " 'QUAD:LI28:301:BMAX': 100.0,\n", - " 'QUAD:LI28:301:BMIN': -100.0,\n", - " 'QUAD:LI28:301:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:301:CTRL': 'Ready',\n", - " 'QUAD:LI28:401:BCTRL': tensor(11.3985),\n", - " 'QUAD:LI28:401:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:401:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:401:BACT': tensor(11.3985),\n", - " 'QUAD:LI28:401:BDES': tensor(11.3985),\n", - " 'QUAD:LI28:401:BMAX': 100.0,\n", - " 'QUAD:LI28:401:BMIN': -100.0,\n", - " 'QUAD:LI28:401:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:401:CTRL': 'Ready',\n", - " 'QUAD:LI28:501:BCTRL': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BCTRL.DRVL': -100.0,\n", - " 'QUAD:LI28:501:BCTRL.DRVH': 100.0,\n", - " 'QUAD:LI28:501:BACT': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BDES': tensor(-11.3942),\n", - " 'QUAD:LI28:501:BMAX': 100.0,\n", - " 'QUAD:LI28:501:BMIN': -100.0,\n", - " 'QUAD:LI28:501:STATCTRLSUB.T': 1.0,\n", - " 'QUAD:LI28:501:CTRL': 'Ready',\n", - " 'QUAD:LI28:601:BCTRL': tensor(11.3985),\n", - " ...}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Reset model and verify variables when back to init values\n", "model.reset()\n", From 4be929781effedd948de8c9858b5b77efaa936a3 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 09:53:37 -0500 Subject: [PATCH 11/16] Update pyproject.toml --- pyproject.toml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 538c39a..25dd995 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,12 +37,12 @@ Documentation = "https://github.com/slaclab/virtual-accelerator" [project.optional-dependencies] bmad = [ - "lume-bmad @ git+https://github.com/lume-science/lume-bmad", + "lume-bmad", ] cheetah = [ "torch", - "lume-cheetah @ git+https://github.com/lume-science/lume-cheetah", - "lume-torch @ git+https://github.com/lume-science/lume-torch", + "lume-cheetah", + "lume-torch", ] impact = [ "lume-impact @ git+https://github.com/ChristopherMayes/lume-impact" @@ -52,20 +52,20 @@ pva = [ ] surrogate = [ "torch", - "lume-torch @ git+https://github.com/lume-science/lume-torch", - "lume-cheetah @ git+https://github.com/lume-science/lume-cheetah", - "distgen @ git+https://github.com/ColwynGulliford/distgen", + "lume-torch", + "lume-cheetah", + "distgen", "facet2-inj-ml-model @ git+https://github.com/slaclab/facet2_inj_ml_model", "lcls-cu-inj-model @ git+https://github.com/slaclab/lcls_cu_injector_ml_model.git", ] all = [ "torch", - "lume-bmad @ git+https://github.com/lume-science/lume-bmad", - "lume-cheetah @ git+https://github.com/lume-science/lume-cheetah", + "lume-bmad", + "lume-cheetah", "lume-impact @ git+https://github.com/ChristopherMayes/lume-impact", - "lume-torch @ git+https://github.com/lume-science/lume-torch", + "lume-torch", "lume-pva @ git+https://github.com/lume-science/lume-pva", - "distgen @ git+https://github.com/ColwynGulliford/distgen", + "distgen", "facet2-inj-ml-model @ git+https://github.com/slaclab/facet2_inj_ml_model", "lcls-cu-inj-model @ git+https://github.com/slaclab/lcls_cu_injector_ml_model.git", ] From e7c1018910fea06f7a19ea59067338708d40cea4 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 09:55:34 -0500 Subject: [PATCH 12/16] add dummy enum Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- virtual_accelerator/cheetah/actions.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index 8eebe24..1418059 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -179,6 +179,16 @@ class ControlStateVariable(EnumVariable, _ReadOnlyActionMixin): def _get(self, simulator): return "Ready" +class DummyEnumVariable(EnumVariable, _ReadOnlyActionMixin): + """Read-only placeholder enum used for PVs that exist for interface parity.""" + + element_name: str + + options: list[str] = ["0", "1"] + default_value: str = "0" + + def _get(self, simulator): + return "0" class BPMXVariable(CheetahReadOnlyScalarVariable): """Read-only BPM X readout in millimeters.""" From 4a9877988c32c64c476fca9b2e08930e4edfddcd Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 10:06:57 -0500 Subject: [PATCH 13/16] Update test_cu_hxr.py --- virtual_accelerator/tests/test_cu_hxr.py | 35 ++++++------------------ 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/virtual_accelerator/tests/test_cu_hxr.py b/virtual_accelerator/tests/test_cu_hxr.py index 714cd26..050c73f 100644 --- a/virtual_accelerator/tests/test_cu_hxr.py +++ b/virtual_accelerator/tests/test_cu_hxr.py @@ -10,6 +10,10 @@ HAS_CHEETAH_DEPS, HAS_LCLS_LATTICE, ) +from virtual_accelerator.models.cu_hxr import ( + get_cu_hxr_bmad_model, + get_cu_hxr_cheetah_model, +) from virtual_accelerator.tests._bmad_model_test_utils import ( TEST_BEAM_PATH, assert_bpm_pvs_match_tao_lattice, @@ -26,38 +30,15 @@ ) -def _resolve_runtime_getter(has_optional_deps: bool, getter_name: str): - if not (has_optional_deps and HAS_LCLS_LATTICE): - return False, None - - try: - from virtual_accelerator.models import cu_hxr as cu_hxr_models - - return True, getattr(cu_hxr_models, getter_name) - except Exception: - return False, None - - def _load_cu_hxr_screen_config(): with CU_HXR_PROFMON_CONFIG_PATH.open("r", encoding="utf-8") as config_file: return yaml.safe_load(config_file) -HAS_BMAD_RUNTIME, get_cu_hxr_bmad_model = _resolve_runtime_getter( - HAS_BMAD_DEPS, - "get_cu_hxr_bmad_model", -) - -HAS_CHEETAH_RUNTIME, get_cu_hxr_cheetah_model = _resolve_runtime_getter( - HAS_CHEETAH_DEPS, - "get_cu_hxr_cheetah_model", -) - - @pytest.mark.requires_bmad @pytest.mark.requires_lcls_lattice @pytest.mark.skipif( - not HAS_BMAD_RUNTIME, + not HAS_BMAD_DEPS or not HAS_LCLS_LATTICE, reason="requires bmad optional dependencies and LCLS_LATTICE", ) class TestCUHXRBmad: @@ -153,11 +134,11 @@ def test_cu_hxr_lcavity(self): @pytest.mark.parametrize("element_type", ["Quadrupole", "HKicker", "VKicker"]) def test_magnet_pvs_match_tao_lattice(self, element_type): - model = get_cu_hxr_bmad_model() + model = get_cu_hxr_bmad_model(custom_beam_path=TEST_BEAM_PATH) assert_magnet_pvs_match_tao_lattice(model, element_type) def test_bpm_pvs_match_tao_lattice(self): - model = get_cu_hxr_bmad_model() + model = get_cu_hxr_bmad_model(custom_beam_path=TEST_BEAM_PATH) assert_bpm_pvs_match_tao_lattice(model) def test_roundtrip_pv_get_set(self): @@ -172,7 +153,7 @@ class TestCUHXRCheetah: pytest.mark.requires_cheetah, pytest.mark.requires_lcls_lattice, pytest.mark.skipif( - not HAS_CHEETAH_RUNTIME, + not HAS_CHEETAH_DEPS or not HAS_LCLS_LATTICE, reason="requires cheetah optional dependencies and LCLS_LATTICE", ), ] From b2dc596c32e0f478e7a7a014f4ae493e9c49fc58 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 10:09:25 -0500 Subject: [PATCH 14/16] linting --- virtual_accelerator/cheetah/actions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/virtual_accelerator/cheetah/actions.py b/virtual_accelerator/cheetah/actions.py index 1418059..ac6808f 100644 --- a/virtual_accelerator/cheetah/actions.py +++ b/virtual_accelerator/cheetah/actions.py @@ -179,6 +179,7 @@ class ControlStateVariable(EnumVariable, _ReadOnlyActionMixin): def _get(self, simulator): return "Ready" + class DummyEnumVariable(EnumVariable, _ReadOnlyActionMixin): """Read-only placeholder enum used for PVs that exist for interface parity.""" @@ -190,6 +191,7 @@ class DummyEnumVariable(EnumVariable, _ReadOnlyActionMixin): def _get(self, simulator): return "0" + class BPMXVariable(CheetahReadOnlyScalarVariable): """Read-only BPM X readout in millimeters.""" From 5bfc45ccfb35157f24fa2006243698d9cbdcf8b4 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 11:25:37 -0500 Subject: [PATCH 15/16] update testing utils to handle both bmad and cheetah models --- virtual_accelerator/cheetah/variables.py | 9 - .../tests/_bmad_model_test_utils.py | 546 ++++++++++++++---- virtual_accelerator/tests/test_cu_hxr.py | 57 +- 3 files changed, 462 insertions(+), 150 deletions(-) diff --git a/virtual_accelerator/cheetah/variables.py b/virtual_accelerator/cheetah/variables.py index 54ca5ac..24dfb59 100644 --- a/virtual_accelerator/cheetah/variables.py +++ b/virtual_accelerator/cheetah/variables.py @@ -23,13 +23,6 @@ "Aperture", } -# Some helper correctors in the CU HXR Cheetah lattice are intentionally -# unmapped to controls and should be silently skipped when no device mapping exists. -SKIPPED_UNMAPPED_ELEMENT_TYPES = { - "HorizontalCorrector", - "VerticalCorrector", -} - # Element-type aliases bridge Cheetah runtime names to SLAC config keys. ELEMENT_TYPE_ALIASES = { "TransverseDeflectingCavity": "Crab_Cavity", @@ -206,8 +199,6 @@ def get_variables_from_segment( control_name = _resolve_control_name(element.name, device_mapping) if control_name is None: - if element_type in SKIPPED_UNMAPPED_ELEMENT_TYPES: - continue warnings.warn(f"Element {element.name} not found in device mapping") continue diff --git a/virtual_accelerator/tests/_bmad_model_test_utils.py b/virtual_accelerator/tests/_bmad_model_test_utils.py index 6ec7f12..2c1c1f2 100644 --- a/virtual_accelerator/tests/_bmad_model_test_utils.py +++ b/virtual_accelerator/tests/_bmad_model_test_utils.py @@ -1,17 +1,211 @@ import math import os +from collections.abc import Iterable, Sequence from numbers import Real +from lume_bmad.model import LUMEBmadModel +from lume_cheetah import LUMECheetahModel from pathlib import Path +from lume_cheetah import LUMECheetahModel from virtual_accelerator.utils.variables import get_pvs_by_element_name TEST_BEAM_PATH = os.path.join(Path(__file__).parent, "../bmad", "test_beam") +def _normalize_element_name(element_name: str) -> str: + """Return an element name without any split-index suffix. + + Parameters + ---------- + element_name : str + Raw element name from lattice metadata (for example ``Q1#2``). + + Returns + ------- + str + Base element name with any ``#...`` suffix removed. + """ + return element_name.split("#", 1)[0] + + +def _collect_elements_by_type( + element_names: Sequence[str], + element_types: Sequence[str], + requested_type: str, +) -> set[str]: + """Collect normalized lattice element names for a specific element type. + + Parameters + ---------- + element_names : Sequence[str] + Element names from a lattice/segment description. + element_types : Sequence[str] + Element type identifiers aligned positionally with ``element_names``. + requested_type : str + Element type to select. + + Returns + ------- + set[str] + Unique normalized element names for entries whose type matches + ``requested_type``. + + Raises + ------ + AssertionError + If ``element_names`` and ``element_types`` are not the same length. + """ + assert len(element_names) == len(element_types), ( + "Element-name and element-type sequences must have the same length." + ) + + return { + _normalize_element_name(element_name) + for element_name, element_type in zip(element_names, element_types) + if element_name not in ("BEGINNING", "END") and element_type == requested_type + } + + +def _assert_elements_have_pv_mapping_and_attrs( + model, + element_names: Iterable[str], + required_attrs: tuple[str, ...], + element_group_label: str, +) -> None: + """Assert PV mapping completeness and required suffixes for elements. + + Parameters + ---------- + model : LUMEModel + Model exposing ``supported_variables``. + element_names : Iterable[str] + Element names to validate. Split-element names are normalized. + required_attrs : tuple[str, ...] + PV suffixes that must exist for each element. + element_group_label : str + Label used in assertion messages to identify the validated element group. + + Raises + ------ + AssertionError + If any element is missing from element-name mapping metadata or if one + or more required PV suffixes are missing for any element. + """ + normalized_elements = sorted( + { + _normalize_element_name(element_name) + for element_name in element_names + if element_name not in ("BEGINNING", "END") + } + ) + + if not normalized_elements: + return + + pvs_by_element = get_pvs_by_element_name(model) + + missing_mapping = sorted( + element_name + for element_name in normalized_elements + if element_name not in pvs_by_element + ) + assert not missing_mapping, ( + f"{element_group_label} elements missing variables with element_name mapping: " + + ", ".join(missing_mapping) + ) + + missing_pvs = {} + for element_name in normalized_elements: + element_pvs = pvs_by_element[element_name] + absent_attrs = sorted( + attr + for attr in required_attrs + if not any(pv_name.endswith(f":{attr}") for pv_name in element_pvs) + ) + if absent_attrs: + missing_pvs[element_name] = absent_attrs + + assert not missing_pvs, ( + f"{element_group_label} PV attrs missing from model.supported_variables: " + + "; ".join( + f"{element}: {', '.join(attrs)}" for element, attrs in missing_pvs.items() + ) + ) + + +def _get_tao_lattice_element_metadata(model: LUMEBmadModel) -> tuple[list[str], list[str]]: + """Get element names and keys from a Tao lattice. + + Parameters + ---------- + model : LUMEBmadModel + Model exposing a Tao interface at ``model.tao``. + + Returns + ------- + tuple[list[str], list[str]] + Pair of lists ``(element_names, element_keys)`` from ``tao.lat_list``. + """ + return model.tao.lat_list("*", "ele.name"), model.tao.lat_list("*", "ele.key") + + +def _get_cheetah_segment_element_metadata(model: LUMECheetahModel) -> tuple[list[str], list[str]]: + """Get element names and runtime class names from a Cheetah segment. + + Parameters + ---------- + model : LUMECheetahModel + Model exposing ``model.simulator.segment.elements``. + + Returns + ------- + tuple[list[str], list[str]] + Pair ``(element_names, element_types)`` where ``element_types`` are + class names such as ``Quadrupole`` or ``Screen``. + + Raises + ------ + AssertionError + If required simulator/segment metadata is not available or an element + has an invalid ``name`` attribute. + """ + + elements = model.simulator.segment.elements + + element_names: list[str] = [] + element_types: list[str] = [] + + for element in elements: + element_name = getattr(element, "name", None) + assert isinstance(element_name, str) and element_name, ( + f"Cheetah segment element {element!r} does not expose a valid name." + ) + element_names.append(element_name) + element_types.append(type(element).__name__) + + return element_names, element_types + + def assert_bmad_model_initialization( get_model, required_control_variable: str | None = None, ) -> None: + """Assert that a BMAD model initializes and exposes writable controls. + + Parameters + ---------- + get_model : Callable[..., LUMEBmadModel] + Factory used to build the model under test. The helper passes + ``custom_beam_path=TEST_BEAM_PATH``. + required_control_variable : str | None, optional + If provided, this PV must be writable in ``model.supported_variables``. + + Raises + ------ + AssertionError + If no writable controls are found or if ``required_control_variable`` is + not writable. + """ model = get_model(custom_beam_path=TEST_BEAM_PATH) writable_control_variables = { @@ -26,6 +220,19 @@ def assert_bmad_model_initialization( def assert_bmad_model_twiss_outputs(get_model) -> None: + """Assert basic Twiss/readback output integrity for a BMAD model. + + Parameters + ---------- + get_model : Callable[..., LUMEBmadModel] + Factory used to build the model under test. + + Raises + ------ + AssertionError + If Twiss output lengths do not match lattice length or if expected + endpoint names are not present. + """ model = get_model(custom_beam_path=TEST_BEAM_PATH) outputs = model.get(["a.beta", "b.beta", "name"]) @@ -36,6 +243,18 @@ def assert_bmad_model_twiss_outputs(get_model) -> None: def assert_bmad_model_track_beam_custom_path(get_model) -> None: + """Assert that a BMAD model can initialize with ``track_beam=True``. + + Parameters + ---------- + get_model : Callable[..., LUMEBmadModel] + Factory used to build the model under test. + + Raises + ------ + AssertionError + If the returned model instance is ``None``. + """ # This test ensures shared track_beam setup works when custom_beam_path is given. model = get_model(track_beam=True, custom_beam_path=TEST_BEAM_PATH) assert model is not None @@ -44,6 +263,7 @@ def assert_bmad_model_track_beam_custom_path(get_model) -> None: def assert_magnet_pvs_match_tao_lattice( model, element_key: str, + excluded_elements: Iterable[str] = (), element_attrs: tuple[str, ...] = ( "BCTRL", "BACT", @@ -54,72 +274,126 @@ def assert_magnet_pvs_match_tao_lattice( "CTRL", ), ) -> None: + """Assert magnet PV coverage for a Tao-backed model. + + Parameters + ---------- + model : LUMEBmadModel + BMAD model exposing Tao lattice metadata. + element_key : str + Tao element key to validate (for example ``Quadrupole``). + excluded_elements : Iterable[str], optional + Element names to skip from validation. + element_attrs : tuple[str, ...], optional + PV suffixes that must exist for each validated element. """ - Verify that all lattice elements of a given type have corresponding PV mappings. + element_names, element_keys = _get_tao_lattice_element_metadata(model) + assert_magnet_pvs_match_lattice_elements( + model=model, + element_key=element_key, + element_names=element_names, + element_keys=element_keys, + excluded_elements=excluded_elements, + element_attrs=element_attrs, + ) - This utility checks: - 1. All elements of the specified type have PV prefix mappings. - 2. All expected PV attributes for those elements exist in model.supported_variables. + +def assert_magnet_pvs_match_cheetah_segment( + model, + element_key: str, + excluded_elements: Iterable[str] = (), + element_attrs: tuple[str, ...] = ( + "BCTRL", + "BACT", + "BDES", + "BMIN", + "BMAX", + "STATCTRLSUB.T", + "CTRL", + ), +) -> None: + """Assert magnet PV coverage for a Cheetah-backed model. + + Parameters + ---------- + model : LUMECheetahModel + Cheetah model exposing segment metadata. + element_key : str + Cheetah element class name to validate (for example ``Quadrupole``). + excluded_elements : Iterable[str], optional + Element names to skip from validation. + element_attrs : tuple[str, ...], optional + PV suffixes that must exist for each validated element. + """ + element_names, element_keys = _get_cheetah_segment_element_metadata(model) + assert_magnet_pvs_match_lattice_elements( + model=model, + element_key=element_key, + element_names=element_names, + element_keys=element_keys, + excluded_elements=excluded_elements, + element_attrs=element_attrs, + ) + + +def assert_magnet_pvs_match_lattice_elements( + model, + element_key: str, + element_names: Sequence[str], + element_keys: Sequence[str], + excluded_elements: Iterable[str] = (), + element_attrs: tuple[str, ...] = ( + "BCTRL", + "BACT", + "BDES", + "BMIN", + "BMAX", + "STATCTRLSUB.T", + "CTRL", + ), +) -> None: + """Assert magnet PV coverage from explicit lattice metadata sequences. Parameters ---------- model : LUMEModel - The LUME BMAD model instance to check. + Model exposing ``supported_variables``. element_key : str - The element type key to match (e.g., "Quadrupole", "HKicker", "VKicker"). - element_attrs : tuple[str, ...] - The PV attributes to check for each element (e.g., "BCTRL", "BACT", etc.). + Element type/class identifier to match. + element_names : Sequence[str] + Element names aligned positionally with ``element_keys``. + element_keys : Sequence[str] + Element type identifiers aligned positionally with ``element_names``. + excluded_elements : Iterable[str], optional + Element names to skip from validation after normalization. + element_attrs : tuple[str, ...], optional + PV suffixes required for each validated element. Raises ------ AssertionError - If any elements lack mappings or expected PVs are missing. + If metadata lengths do not match, if required element mappings are + missing, or if required PV suffixes are missing. """ - element_names = model.tao.lat_list("*", "ele.name") - element_keys = model.tao.lat_list("*", "ele.key") - - # Collect all unique element names of the specified type - matching_elements = { - element_name.split("#")[0] - for element_name, key in zip(element_names, element_keys) - if element_name not in ("BEGINNING", "END") and key == element_key + matching_elements = _collect_elements_by_type( + element_names=element_names, + element_types=element_keys, + requested_type=element_key, + ) + excluded_elements_normalized = { + _normalize_element_name(element_name) for element_name in excluded_elements } - - if not matching_elements: - # No elements of this type, test passes vacuously - return - - pvs_by_element = get_pvs_by_element_name(model) - - # Check that all elements have PV mappings - missing_mapping = sorted( + matching_elements = { element_name for element_name in matching_elements - if element_name not in pvs_by_element - ) - assert not missing_mapping, ( - f"{element_key} elements missing variables with element_name mapping: " - + ", ".join(missing_mapping) - ) - - # Check that all expected PV attributes exist in supported_variables - missing_pvs = {} - - for element_name in sorted(matching_elements): - element_pvs = pvs_by_element[element_name] - absent_pvs = sorted( - attr - for attr in element_attrs - if not any(pv_name.endswith(f":{attr}") for pv_name in element_pvs) - ) - if absent_pvs: - missing_pvs[element_name] = absent_pvs + if element_name not in excluded_elements_normalized + } - assert not missing_pvs, ( - f"{element_key} PV attrs missing from model.supported_variables: " - + "; ".join( - f"{element}: {', '.join(pvs)}" for element, pvs in missing_pvs.items() - ) + _assert_elements_have_pv_mapping_and_attrs( + model=model, + element_names=matching_elements, + required_attrs=element_attrs, + element_group_label=element_key, ) @@ -139,7 +413,7 @@ def assert_screen_image_pvs_in_supported_variables( Parameters ---------- model : LUMEModel - The LUME BMAD model instance to check. + Model exposing ``supported_variables``. screen_elements : tuple[str, ...] | list[str] | None Optional explicit list of lattice screen element names. If omitted, uses ``model.dump_locations``. @@ -155,38 +429,67 @@ def assert_screen_image_pvs_in_supported_variables( if screen_elements is None: screen_elements = tuple(getattr(model, "dump_locations", ()) or ()) - if not screen_elements: - return + _assert_elements_have_pv_mapping_and_attrs( + model=model, + element_names=screen_elements, + required_attrs=screen_attrs, + element_group_label="Screen", + ) - pvs_by_element = get_pvs_by_element_name(model) - missing_mapping = sorted( - element_name - for element_name in screen_elements - if element_name not in pvs_by_element - ) - assert not missing_mapping, ( - "Screen elements missing variables with element_name mapping: " - + ", ".join(missing_mapping) +def assert_screen_image_pvs_match_tao_dump_locations( + model, + screen_attrs: tuple[str, ...] = ( + "Image:ArrayData", + "Image:ArraySize1_RBV", + "Image:ArraySize0_RBV", + "RESOLUTION", + ), +) -> None: + """Assert screen image PV coverage using Tao ``dump_locations``. + + Parameters + ---------- + model : LUMEBmadModel + BMAD model that provides ``dump_locations``. + screen_attrs : tuple[str, ...], optional + PV suffixes required for each screen element. + """ + assert_screen_image_pvs_in_supported_variables( + model=model, + screen_elements=tuple(getattr(model, "dump_locations", ()) or ()), + screen_attrs=screen_attrs, ) - missing_image_pvs = {} - for element_name in screen_elements: - element_pvs = pvs_by_element[element_name] - absent_attrs = sorted( - attr - for attr in screen_attrs - if not any(pv_name.endswith(f":{attr}") for pv_name in element_pvs) - ) - if absent_attrs: - missing_image_pvs[element_name] = absent_attrs - assert not missing_image_pvs, ( - "Screen image PV attrs missing from model.supported_variables: " - + "; ".join( - f"{element}: {', '.join(attrs)}" - for element, attrs in missing_image_pvs.items() - ) +def assert_screen_image_pvs_match_cheetah_segment( + model, + screen_attrs: tuple[str, ...] = ( + "Image:ArrayData", + "Image:ArraySize1_RBV", + "Image:ArraySize0_RBV", + "RESOLUTION", + ), +) -> None: + """Assert screen image PV coverage for screen elements in a Cheetah segment. + + Parameters + ---------- + model : LUMECheetahModel + Cheetah model exposing segment elements. + screen_attrs : tuple[str, ...], optional + PV suffixes required for each screen element. + """ + element_names, element_types = _get_cheetah_segment_element_metadata(model) + screen_elements = _collect_elements_by_type( + element_names=element_names, + element_types=element_types, + requested_type="Screen", + ) + assert_screen_image_pvs_in_supported_variables( + model=model, + screen_elements=tuple(sorted(screen_elements)), + screen_attrs=screen_attrs, ) @@ -210,46 +513,70 @@ def assert_bpm_pvs_match_tao_lattice( If BPM lattice elements are missing PV prefix mappings, or if expected BPM PVs are missing from ``model.supported_variables``. """ - element_names = model.tao.lat_list("*", "ele.name") + element_names, _ = _get_tao_lattice_element_metadata(model) bpm_elements = { - element_name.split("#")[0] + _normalize_element_name(element_name) for element_name in element_names if element_name not in ("BEGINNING", "END") - and "BPM" in element_name.split("#")[0] + and "BPM" in _normalize_element_name(element_name) } - if not bpm_elements: - return + assert_bpm_pvs_match_elements( + model=model, + bpm_elements=bpm_elements, + bpm_attrs=bpm_attrs, + ) - pvs_by_element = get_pvs_by_element_name(model) - missing_mapping = sorted( - element_name - for element_name in bpm_elements - if element_name not in pvs_by_element +def assert_bpm_pvs_match_cheetah_segment( + model, + bpm_attrs: tuple[str, ...] = ("X", "Y", "TMIT"), +) -> None: + """Assert BPM PV coverage for BPM elements in a Cheetah segment. + + Parameters + ---------- + model : LUMECheetahModel + Cheetah model exposing segment elements. + bpm_attrs : tuple[str, ...], optional + PV suffixes required for each BPM element. + """ + element_names, element_types = _get_cheetah_segment_element_metadata(model) + bpm_elements = _collect_elements_by_type( + element_names=element_names, + element_types=element_types, + requested_type="BPM", ) - assert not missing_mapping, ( - "BPM elements missing variables with element_name mapping: " - + ", ".join(missing_mapping) + + assert_bpm_pvs_match_elements( + model=model, + bpm_elements=bpm_elements, + bpm_attrs=bpm_attrs, ) - missing_bpm_pvs = {} - for element_name in sorted(bpm_elements): - element_pvs = pvs_by_element[element_name] - absent_pvs = sorted( - attr - for attr in bpm_attrs - if not any(pv_name.endswith(f":{attr}") for pv_name in element_pvs) - ) - if absent_pvs: - missing_bpm_pvs[element_name] = absent_pvs +def assert_bpm_pvs_match_elements( + model, + bpm_elements: Iterable[str], + bpm_attrs: tuple[str, ...] = ("X", "Y", "TMIT"), +) -> None: + """Assert BPM PV coverage for an explicit BPM element name collection. - assert not missing_bpm_pvs, ( - "BPM PV attrs missing from model.supported_variables: " - + "; ".join( - f"{element}: {', '.join(pvs)}" for element, pvs in missing_bpm_pvs.items() - ) + Parameters + ---------- + model : LUMEModel + Model exposing ``supported_variables``. + bpm_elements : Iterable[str] + BPM element names to validate. + bpm_attrs : tuple[str, ...], optional + PV suffixes required for each BPM element. + """ + + _assert_elements_have_pv_mapping_and_attrs( + model=model, + element_names=bpm_elements, + required_attrs=bpm_attrs, + element_group_label="BPM", ) @@ -263,9 +590,16 @@ def assert_roundtrip_pv_get_set( ---------- model : LUMEModel The model instance under test. + + Notes + ----- + - Only writable scalar-like controls are exercised. + - ``track_type`` is excluded because it has model-level semantics that do + not fit this generic scalar roundtrip check. """ def assert_value_equal(pv_name, expected_value, actual_value) -> None: + """Assert equality with support for numeric tolerance and array values.""" if ( isinstance(expected_value, Real) and isinstance(actual_value, Real) diff --git a/virtual_accelerator/tests/test_cu_hxr.py b/virtual_accelerator/tests/test_cu_hxr.py index 050c73f..f66e488 100644 --- a/virtual_accelerator/tests/test_cu_hxr.py +++ b/virtual_accelerator/tests/test_cu_hxr.py @@ -15,11 +15,14 @@ get_cu_hxr_cheetah_model, ) from virtual_accelerator.tests._bmad_model_test_utils import ( + assert_bpm_pvs_match_cheetah_segment, + assert_screen_image_pvs_match_cheetah_segment, TEST_BEAM_PATH, assert_bpm_pvs_match_tao_lattice, assert_bmad_model_initialization, assert_bmad_model_twiss_outputs, assert_bmad_model_track_beam_custom_path, + assert_magnet_pvs_match_cheetah_segment, assert_magnet_pvs_match_tao_lattice, assert_roundtrip_pv_get_set, assert_screen_image_pvs_in_supported_variables, @@ -226,46 +229,30 @@ def test_cu_hxr_screen_resolution_matches_yaml_and_expected_range(self): assert np.isclose(resolution, expected_resolution) assert 5.0 < resolution < 30.0 - def test_quadrupole_pvs_have_expected_suffixes(self): + def test_screen_pvs_match_cheetah_segment(self): model = get_cu_hxr_cheetah_model() - - expected_suffixes = { - "BCTRL", - "BACT", - "BDES", - "BMIN", - "BMAX", - "STATCTRLSUB.T", - "CTRL", - } - - quadrupole_control_pvs = [ - name - for name in model.supported_variables - if name.startswith("QUAD:") and name.endswith(":BCTRL") - ] - assert quadrupole_control_pvs - - for control_pv in quadrupole_control_pvs: - base_pv = control_pv.rsplit(":", 1)[0] - for suffix in expected_suffixes: - assert f"{base_pv}:{suffix}" in model.supported_variables + assert_screen_image_pvs_match_cheetah_segment(model) def test_bpm_pvs_have_expected_suffixes(self): model = get_cu_hxr_cheetah_model() - - bpm_x_pvs = [ - name - for name in model.supported_variables - if name.startswith("BPMS:") and name.endswith(":X") - ] - assert bpm_x_pvs - - for x_pv in bpm_x_pvs: - base_pv = x_pv.rsplit(":", 1)[0] - assert f"{base_pv}:Y" in model.supported_variables - assert f"{base_pv}:TMIT" in model.supported_variables + assert_bpm_pvs_match_cheetah_segment(model) def test_roundtrip_pv_get_set(self): model = get_cu_hxr_cheetah_model() assert_roundtrip_pv_get_set(model) + + @pytest.mark.parametrize( + ("element_type", "excluded_elements"), + [ + ("Quadrupole", ()), + ("HorizontalCorrector", ("xcapm2",)), + ("VerticalCorrector", ("ycapm2",)), + ], + ) + def test_magnet_pvs_match_cheetah_segment(self, element_type, excluded_elements): + model = get_cu_hxr_cheetah_model() + assert_magnet_pvs_match_cheetah_segment( + model, + element_type, + excluded_elements=excluded_elements, + ) From b73288ca4c28b7a86246d98cc0b3ddf1ff4a7e38 Mon Sep 17 00:00:00 2001 From: Ryan Roussel Date: Tue, 14 Jul 2026 12:01:13 -0500 Subject: [PATCH 16/16] Update _bmad_model_test_utils.py --- virtual_accelerator/tests/_bmad_model_test_utils.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/virtual_accelerator/tests/_bmad_model_test_utils.py b/virtual_accelerator/tests/_bmad_model_test_utils.py index 2c1c1f2..feff8b3 100644 --- a/virtual_accelerator/tests/_bmad_model_test_utils.py +++ b/virtual_accelerator/tests/_bmad_model_test_utils.py @@ -2,10 +2,7 @@ import os from collections.abc import Iterable, Sequence from numbers import Real -from lume_bmad.model import LUMEBmadModel -from lume_cheetah import LUMECheetahModel from pathlib import Path -from lume_cheetah import LUMECheetahModel from virtual_accelerator.utils.variables import get_pvs_by_element_name @@ -133,7 +130,7 @@ def _assert_elements_have_pv_mapping_and_attrs( ) -def _get_tao_lattice_element_metadata(model: LUMEBmadModel) -> tuple[list[str], list[str]]: +def _get_tao_lattice_element_metadata(model) -> tuple[list[str], list[str]]: """Get element names and keys from a Tao lattice. Parameters @@ -149,7 +146,7 @@ def _get_tao_lattice_element_metadata(model: LUMEBmadModel) -> tuple[list[str], return model.tao.lat_list("*", "ele.name"), model.tao.lat_list("*", "ele.key") -def _get_cheetah_segment_element_metadata(model: LUMECheetahModel) -> tuple[list[str], list[str]]: +def _get_cheetah_segment_element_metadata(model) -> tuple[list[str], list[str]]: """Get element names and runtime class names from a Cheetah segment. Parameters