Skip to content

Heaters

pychilaslasers.laser_components.heaters

Heater components package for laser thermal control.

This package provides heater component classes for controlling thermal elements of the laser. Includes channel definitions and individual heater types.

Classes:

  • HeaterChannel

    Enum representing the different heater channels

  • TunableCoupler

    Tunable coupler section heater for wavelength fine-tuning

  • LargeRing

    Large ring section heater for coarse wavelength adjustment

  • SmallRing

    Small ring section heater for fine wavelength adjustment

  • PhaseSection

    Phase section heater for phase adjustment and mode control

Authors: SDU

Classes

Heater(laser: Laser)

Bases: LaserComponent

Base class for laser heater components.

Provides common functionality for all heater types including value setting and channel management.

Attributes:

Sets up the heater with its operating limits and units by querying the laser hardware.

Parameters:

  • laser (Laser) –

    The laser instance to control.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def __init__(self, laser: Laser) -> None:
    """Initialize the heater component.

    Sets up the heater with its operating limits and units by
    querying the laser hardware.

    Args:
        laser: The laser instance to control.

    """
    super().__init__(laser)
    self._min: float = float(self._comm.query(f"DRV:LIM:MIN? {self.channel.value}"))
    self._max: float = float(self._comm.query(f"DRV:LIM:MAX? {self.channel.value}"))
    self._unit: str = self._comm.query(f"DRV:UNIT? {self.channel.value}").strip()
Attributes
channel: HeaterChannel abstractmethod property

Get the heater channel identifier.

Must be implemented by subclasses to specify which heater channel this component controls.

Returns:

value: float property writable

Get the current heater drive value.

Returns:

  • float

    The current heater drive value.

Functions
get_value() -> float

Alias for the value property getter.

Returns:

  • float

    The current heater drive value.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
110
111
112
113
114
115
116
117
def get_value(self) -> float:
    """Alias for the `value` property getter.

    Returns:
        The current heater drive value.

    """
    return self.value
set_value(value: float) -> None

Alias for the value property setter.

Parameters:

  • value (float) –

    The heater drive value to set.

Raises:

  • ValueError

    If value is not a number or outside valid range.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
119
120
121
122
123
124
125
126
127
128
129
def set_value(self, value: float) -> None:
    """Alias for the `value` property setter.

    Args:
        value: The heater drive value to set.

    Raises:
        ValueError: If value is not a number or outside valid range.

    """
    self.value = value

LargeRing(laser: Laser)

Bases: Heater

Large ring heater component.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def __init__(self, laser: Laser) -> None:
    """Initialize the heater component.

    Sets up the heater with its operating limits and units by
    querying the laser hardware.

    Args:
        laser: The laser instance to control.

    """
    super().__init__(laser)
    self._min: float = float(self._comm.query(f"DRV:LIM:MIN? {self.channel.value}"))
    self._max: float = float(self._comm.query(f"DRV:LIM:MAX? {self.channel.value}"))
    self._unit: str = self._comm.query(f"DRV:UNIT? {self.channel.value}").strip()
Attributes
channel: HeaterChannel property

Get the large ring channel.

PhaseSection(laser: Laser)

Bases: Heater

Phase section heater component.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
162
163
164
165
166
167
168
169
def __init__(self, laser: Laser) -> None:
    """Initialize the phase section heater component."""
    super().__init__(laser)

    self._anti_hyst = True

    self._volts: None | list[float] = None
    self._time_steps: None | list[float] = None
Attributes
anti_hyst: bool property writable

Get the anti-hysteresis flag.

channel: HeaterChannel property

Get the phase section channel.

Functions

SmallRing(laser: Laser)

Bases: Heater

Small ring heater component.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def __init__(self, laser: Laser) -> None:
    """Initialize the heater component.

    Sets up the heater with its operating limits and units by
    querying the laser hardware.

    Args:
        laser: The laser instance to control.

    """
    super().__init__(laser)
    self._min: float = float(self._comm.query(f"DRV:LIM:MIN? {self.channel.value}"))
    self._max: float = float(self._comm.query(f"DRV:LIM:MAX? {self.channel.value}"))
    self._unit: str = self._comm.query(f"DRV:UNIT? {self.channel.value}").strip()
Attributes
channel: HeaterChannel property

Get the small ring channel.

TunableCoupler(laser: Laser)

Bases: Heater

Tunable coupler heater component.

Source code in src/pychilaslasers/laser_components/heaters/heaters.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def __init__(self, laser: Laser) -> None:
    """Initialize the heater component.

    Sets up the heater with its operating limits and units by
    querying the laser hardware.

    Args:
        laser: The laser instance to control.

    """
    super().__init__(laser)
    self._min: float = float(self._comm.query(f"DRV:LIM:MIN? {self.channel.value}"))
    self._max: float = float(self._comm.query(f"DRV:LIM:MAX? {self.channel.value}"))
    self._unit: str = self._comm.query(f"DRV:UNIT? {self.channel.value}").strip()
Attributes
channel: HeaterChannel property

Get the tunable coupler channel.

pychilaslasers.laser_components.heaters.HeaterChannel

Bases: Enum