herosdevices.hardware.menlo.laser_lock

HERO driver for a laser-lock module (DDS + closed lock loop) of a Menlo Systems frequency comb.

Module Contents

class herosdevices.hardware.menlo.laser_lock.LaserLock(ofc: herosdevices.hardware.menlo.ofc.OFC, funclayer_identifier: str, frequency_distribution_node: str = 'frequencyDistribution', amp_node: str | None = None, observables: dict[str, dict[str, str]] | None = None)[source]

Bases: herosdevices.hardware.menlo.dds.DDS

Driver for a laser-lock module of a Menlo Systems frequency comb.

Extends DDS with the closed feedback loop (a beat-note PLL) that locks the DDS to a reference. Use DDS directly for a module that only exposes a bare DDS output with no lock loop.

Parameters:
  • ofc – The OFC HERO this laser-lock module belongs to.

  • funclayer_identifier – Identifier of the module’s functional-layer settings object, e.g. “cw1112_1” for the sub-tree at functionalLayer.cw1112_1Settings. Use ofc.explore(“functionalLayer”) to find the identifier for a given module.

  • frequency_distribution_node – Relative node name of this module’s frequency-distribution block. Defaults to “frequencyDistribution”, the plain CW-channel node name. Dual-wavelength channels (see DualLaserLock) use a wavelength-suffixed name instead, since they have two such blocks.

  • amp_node – Relative node name of this module’s laser-diode current-control block (amp*), if it has one - not every CW channel does (e.g. cw578vexlumSettings has none). None (the default) leaves current_control unset.

  • observables – Additional observables to poll, merged on top of DEFAULT_OBSERVABLES, see FunctionalLayerModule.

DEFAULT_OBSERVABLES: dict[str, dict[str, str]]
locked
fast_output_setpoint
fast_output_locked
fast_output_monitor
unlock_here
frequency_control
frequency_distribution
select_monitor
current_control
property amplifier_enabled: bool

Whether the loop’s actuator amplifier (e.g. piezo/current driver) is enabled.

property slow_branch_setpoint: float

Setpoint of the loop’s slow feedback branch.

property slow_branch_locked: bool

Whether the loop’s slow feedback branch is currently locked. Read-only status.

property slow_branch_monitor: float

Monitor voltage of the loop’s slow feedback branch. Read-only.

amp_max: float = 1.0
amp_min: float = 0.0
freq_max: float = 100000000.0
freq_min: float = 0.0
property output_enabled: bool

Whether the DDS output is enabled.

ofc
base_path
observables
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 explore() to find the available relative paths, e.g. ofc.explore(module.base_path, depth=2).

Parameters:

relative_path – Dotted path relative to base_path.

Returns:

The current value of the node.

set(relative_path: str, value: Any) None

Set the value of a node relative to this module’s settings object.

Parameters:
  • relative_path – Dotted path relative to base_path, see get().

  • value – Value to set.

frequency: float = 1000000.0
amplitude: float = 0.1
phase: float = 0.0
default_ramp_steps: int = 30
blind: bool = False