atomiq.components.lock ====================== .. py:module:: atomiq.components.lock Classes ------- .. autoapisummary:: atomiq.components.lock.Lock atomiq.components.lock.DetunableLock atomiq.components.lock.SpectroscopyLock atomiq.components.lock.SidebandLock atomiq.components.lock.OFCLock atomiq.components.lock.OffsetLock Module Contents --------------- .. py:class:: Lock(reference_frequency, lock_offset = 0.0, harmonic = 1, *args, **kwargs) Bases: :py:obj:`atomiq.components.primitives.Component` This is a very generic class to describe a laser lock. It is characterized by some means of a reference frequency and an offset to that frequency at which the lock tries to stabilize. Most likely you want to use a more specific class inherited from this one. :param reference_frequency: The frequency in Hz that the lock references to :param lock_offset: The frequency offset in Hz at which the lock stabilizes :param harmonic: Use this option if the laser is frequency converted but locked to the fundamental. Use 1 for no conversion, 2 for SHG, 4 for FHG ,... (default 1) .. py:attribute:: kernel_invariants .. py:attribute:: _lock_offset :value: 0.0 .. py:attribute:: reference_frequency .. py:attribute:: harmonic :value: 1 .. py:method:: get_frequency() .. py:class:: DetunableLock(settle_time = 0, blind = False, *args, **kwargs) Bases: :py:obj:`Lock`, :py:obj:`atomiq.components.primitives.Parametrizable` This is a very generic class to describe a laser lock where the lock offset can be changed. It is characterized by some means of a reference frequency and a detunable offset to that frequency at which the lock tries to stabilize. Most likely you want to use a more specific class inherited from this one. :param settle_time: Time in s the lock needs to settle after a detuning of the lock point :param blind: Wether the lock is set to its default values during each prerun phase. If `True`, the lock is unchanged in the prerun phase. Defaults to `False`. .. py:attribute:: kernel_invariants .. py:attribute:: settle_time :value: 0 .. py:method:: _prerun() Specify here what should be done for this component before the run starts. In contrast to the _build() method, the _prerun() routine is executed on the core device before the actual experiment starts. .. py:method:: _set_lock_frequency(detuning) :abstractmethod: .. py:method:: set_frequency(frequency) Set the absolute frequency of the locked line :param frequency: The absoulte frequency at which the system should lock .. py:method:: set_detuning(offset_frequency) Set the frequency relative to the reference frequency, i.e. set the lock offset. :param offset_frequency: new lock offset in Hz .. py:class:: SpectroscopyLock(reference_frequency, lock_offset = 0.0, harmonic = 1, *args, **kwargs) Bases: :py:obj:`Lock` This is a very generic class to describe a laser lock. It is characterized by some means of a reference frequency and an offset to that frequency at which the lock tries to stabilize. Most likely you want to use a more specific class inherited from this one. :param reference_frequency: The frequency in Hz that the lock references to :param lock_offset: The frequency offset in Hz at which the lock stabilizes :param harmonic: Use this option if the laser is frequency converted but locked to the fundamental. Use 1 for no conversion, 2 for SHG, 4 for FHG ,... (default 1) .. py:class:: SidebandLock(rf_source, sideband_order = 1, *args, **kwargs) Bases: :py:obj:`DetunableLock` Lock on a sideband modulated onto the laser This kind of lock is frequently used when locking on tunable sideband to the transmission signal of a stable cavity. The offset frequency for the sideband is generated by an RF source and can be changed at runtime. Thus the lock point can be detuned. :param rf_source: RF source that determines the sideband frequency. :param sideband_order: Order of the sideband the laser is locked to [.., -2, -1, 1, 2, ...] (default 1) .. py:attribute:: kernel_invariants .. py:attribute:: rf_source .. py:attribute:: sideband_order :value: 1 .. py:method:: _set_lock_frequency(frequency) .. py:class:: OFCLock(rf_source, lock_direction = 1, tooth_number = -1, rep_rate = float('nan'), ceo = float('nan'), *args, **kwargs) Bases: :py:obj:`DetunableLock` Lock on an optical frequency comb This is used to lock the laser on a beat note with an optical frequency comb. It is characterized by the frequency of the closest comb tooth and the offset frequency. The offset frequency is generated by an RF source and can be changed at runtime. Thus the lock point can be detuned. :param rfsource: RF source that generates the reference beat frequency (i.e. the offset frequency) to which the laser beat note is stabilized. :param reference_frequency: The frequency in Hz of the comb tooth. Instead ``ceo``, ``rep_rate`` and ``tooth_number``) can be passed to automatically calculate the reference frequency. ``reference_frequency`` is ignored in this case. :param lock_offset: The default frequency offset to the comb tooth in Hz at which the lock stabilizes :param settle_time: Time in s the lock needs to settle after a detuning of the lock point :param lock_direction: Whether the laser is locked to the positive (+1) or negative (-1) beat note (default 1) :param tooth_number: Number of the comb tooth, the laser is beaten with (default -1) :param rep_rate: Repetition frequency of the comb in Hz (default ``nan``) :param ceo: Ceo frequency of the comb in Hz (default ``nan``) .. py:attribute:: kernel_invariants .. py:attribute:: rf_source .. py:attribute:: lock_direction :value: 1 .. py:method:: _set_lock_frequency(frequency) .. py:class:: OffsetLock(reference_laser, *args, **kwargs) Bases: :py:obj:`SidebandLock` Lock on a reference laser via beating signal :param reference_laser: laser that is used to generate the beat note. It's frequency serves as the reference frequency for this lock .. py:attribute:: kernel_invariants .. py:attribute:: reference_laser .. py:method:: get_frequency() .. py:method:: set_frequency(frequency) Set the absolute frequency of the locked line :param frequency: The absoulte frequency at which the system should lock