core.elements.factory module

Define a class to easily create Element objects.

class ElementFactory(default_field_map_folder: Path, freq_bunch_mhz: float, **factory_kw: Any)

Bases: object

An object to create Element objects.

__init__(default_field_map_folder: Path, freq_bunch_mhz: float, **factory_kw: Any) None

Create a factory for the field maps.

_personalized_name(line: list[str]) tuple[str | None, list[str]]

Extract the user-defined name of the element if there is one.

Todo

Make this robust.

run(line: list[str], dat_idx: int, **kwargs) Element

Call proper constructor.

_get_constructor(first_word: str) type

Get the proper constructor.

implemented_elements = {'APERTURE': <class 'core.elements.aperture.Aperture'>, 'BEND': <class 'core.elements.bend.Bend'>, 'DIAG_ACHROMAT': <class 'core.elements.diagnostic.DiagAchromat'>, 'DIAG_BETA': <class 'core.elements.diagnostic.DiagBeta'>, 'DIAG_CURRENT': <class 'core.elements.diagnostic.DiagCurrent'>, 'DIAG_DBETA': <class 'core.elements.diagnostic.DiagDBeta'>, 'DIAG_DCURRENT': <class 'core.elements.diagnostic.DiagDCurrent'>, 'DIAG_DDIVERGENCE': <class 'core.elements.diagnostic.DiagDDivergence'>, 'DIAG_DENERGY': <class 'core.elements.diagnostic.DiagDEnergy'>, 'DIAG_DIVERGENCE': <class 'core.elements.diagnostic.DiagDivergence'>, 'DIAG_DPHASE': <class 'core.elements.diagnostic.DiagDPhase'>, 'DIAG_DPOSITION': <class 'core.elements.diagnostic.DiagDPosition'>, 'DIAG_DPSIZE2': <class 'core.elements.diagnostic.DiagDPSize2'>, 'DIAG_DSIZE': <class 'core.elements.diagnostic.DiagDSize'>, 'DIAG_DSIZE2': <class 'core.elements.diagnostic.DiagDSize2'>, 'DIAG_DSIZE2_FWHM': <class 'core.elements.diagnostic.DiagDSize2FWHM'>, 'DIAG_DSIZE3': <class 'core.elements.diagnostic.DiagDSize3'>, 'DIAG_DSIZE4': <class 'core.elements.diagnostic.DiagDSize4'>, 'DIAG_DSIZE__FWHM': <class 'core.elements.diagnostic.DiagDSizeFWHM'>, 'DIAG_DTWISS': <class 'core.elements.diagnostic.DiagDTwiss'>, 'DIAG_DTWISS2': <class 'core.elements.diagnostic.DiagDTwiss2'>, 'DIAG_EMIT': <class 'core.elements.diagnostic.DiagEmit'>, 'DIAG_EMIT_99': <class 'core.elements.diagnostic.DiagEmit99'>, 'DIAG_ENERGY': <class 'core.elements.diagnostic.DiagEnergy'>, 'DIAG_HALO': <class 'core.elements.diagnostic.DiagHalo'>, 'DIAG_LUMINOSITY': <class 'core.elements.diagnostic.DiagLuminosity'>, 'DIAG_PHASE': <class 'core.elements.diagnostic.DiagPhase'>, 'DIAG_PHASE_ADV': <class 'core.elements.diagnostic.DiagPhaseAdv'>, 'DIAG_POSITION': <class 'core.elements.diagnostic.DiagPosition'>, 'DIAG_SEPARATION': <class 'core.elements.diagnostic.DiagSeparation'>, 'DIAG_SET_MATRIX': <class 'core.elements.diagnostic.DiagSetMatrix'>, 'DIAG_SIZE': <class 'core.elements.diagnostic.DiagSize'>, 'DIAG_SIZEP': <class 'core.elements.diagnostic.DiagSizeP'>, 'DIAG_SIZE_FWHM': <class 'core.elements.diagnostic.DiagSizeFWHM'>, 'DIAG_SIZE_MAX': <class 'core.elements.diagnostic.DiagSizeMax'>, 'DIAG_SIZE_MIN': <class 'core.elements.diagnostic.DiagSizeMin'>, 'DIAG_TWISS': <class 'core.elements.diagnostic.DiagTwiss'>, 'DIAG_WAIST': <class 'core.elements.diagnostic.DiagWaist'>, 'DRIFT': <class 'core.elements.drift.Drift'>, 'DUMMY_ELEMENT': <class 'core.elements.dummy.DummyElement'>, 'EDGE': <class 'core.elements.edge.Edge'>, 'FIELD_MAP': <class 'core.elements.field_maps.field_map.FieldMap'>, 'QUAD': <class 'core.elements.quad.Quad'>, 'SOLENOID': <class 'core.elements.solenoid.Solenoid'>, 'THIN_STEERING': <class 'core.elements.thin_steering.ThinSteering'>}