herosdevices.hardware.menlo.beat_loop ===================================== .. py:module:: herosdevices.hardware.menlo.beat_loop .. autoapi-nested-parse:: Base class for a Menlo Systems OFC-stabilization beat-note loop (repetition rate, CEO). Module Contents --------------- .. py:class:: BeatLoop(ofc: herosdevices.hardware.menlo.ofc.OFC, base_path: str, observables: dict[str, dict[str, str]] | None = None) Bases: :py:obj:`herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule` Base for an OFC-stabilization loop that locks a beat note to a target frequency. Covers the `mainControls` shape shared by the OFC's repetition-rate and CEO loops (see :py:class:`~herosdevices.hardware.menlo.RepetitionRate` and :py:class:`~herosdevices.hardware.menlo.CEO`). Both loops also expose a `dds` sub-tree identical in shape to :py:class:`~herosdevices.hardware.menlo.DDS`'s, therefore concrete subclasses mix that in directly (`class RepetitionRate(DDS, BeatLoop)`). .. py:attribute:: DEFAULT_OBSERVABLES :type: dict[str, dict[str, str]] .. py:property:: locked :type: bool Whether the loop is currently locked. .. py:property:: fast_output_locked :type: bool Whether the loop's fast feedback branch is currently locked. Read-only status. .. py:property:: fast_output_monitor :type: float Monitor voltage of the loop's fast feedback branch. Read-only. .. py:property:: fast_output_setpoint :type: float Setpoint of the loop's fast feedback branch. .. py:property:: slow_output_locked :type: bool Whether the loop's slow feedback branch is currently locked. Read-only status. .. py:property:: slow_output_monitor :type: float Monitor voltage of the loop's slow feedback branch. Read-only. .. py:property:: slow_output_setpoint :type: float Setpoint of the loop's slow feedback branch. .. py:method:: unlock_here() -> None Unlock the loop and immediately re-engage it at the current beat frequency. Shared with :py:class:`~herosdevices.hardware.menlo.LaserLock`, which uses the same `mainControls.unlockHere` node name. Inferred from context (Menlo's own naming and the sibling `lock`/setpoint nodes) rather than verified against vendor documentation: releases the lock if engaged, then re-engages it using the beat note as it currently stands as the new setpoint, instead of servoing to a previously configured setpoint. .. py:attribute:: ofc .. py:attribute:: base_path .. py:attribute:: observables .. py:method:: get(relative_path: str) -> Any Read the current value of a node relative to this module's settings object. Use this for module properties not already exposed as a named attribute. See :py:meth:`~herosdevices.hardware.menlo.ofc.OFC.explore` to find the available relative paths, e.g. `ofc.explore(module.base_path, depth=2)`. :param relative_path: Dotted path relative to `base_path`. :returns: The current value of the node. .. py:method:: set(relative_path: str, value: Any) -> None Set the value of a node relative to this module's settings object. :param relative_path: Dotted path relative to `base_path`, see :py:meth:`get`. :param value: Value to set.