Source code for pyaml.arrays.element
from ..common.element_holder import ElementHolder
from .array import ArrayConfig, ArrayConfigModel
# Define the main class name for this module
PYAMLCLASS = "Element"
[docs]
class ConfigModel(ArrayConfigModel):
"""Configuration model for :py:class:`.ElementArray`."""
[docs]
class Element(ArrayConfig):
"""
:py:class:`.ElementArray` configuration.
Example
-------
An element array configuration can also be created by code using
the following example:
.. code-block:: python
from pyaml.arrays.element import Element,ConfigModel as ElementArrayConfigModel
elt_cfg = Element(
ElementArrayConfigModel(name="MyArray", elements=["BPM_C04-01","SH1A-C04-H"])
)
"""
def __init__(self, cfg: ArrayConfigModel):
super().__init__(cfg)
[docs]
def fill_array(self, holder: ElementHolder):
"""
Fill the :py:class:`.ElementArray` using element holder
(:py:class:`~pyaml.lattice.simulator.Simulator`
or :py:class:`~pyaml.control.controlsystem.ControlSystem`)
and add the array to the holder. This method is called when an
:py:class:`~pyaml.accelerator.Accelerator` is loaded but can be
used to create arrays by code as shown bellow:
.. code-block:: python
>>> elt_cfg.fill_array(sr.design)
>>> names = sr.design.get_elements("MyArray").names()
>>> print(names)
['BPM_C04-01', 'SH1A-C04-H']
Parameters
----------
holder : ElementHolder
The element holder to populate with element array
"""
holder.fill_element_array(self._cfg.name, self._cfg.elements)