Source code for atomcalc.Laser

import numpy as np
import qutip
import matplotlib.pylab as plt
import scipy


[docs]class Laser: """ An object that describes values for a laser: Rabi frequency, frequency, and coupled states. One laser only affects the one specific transition that is defined in the couple parameter. Args: rabifreq (number): value for :attr:`rabifreq` detuning (number): value for :attr:`detuning` couple (list): value for :attr:`couple` pulse (None or function or list): value for :attr:`pulse` Attributes: rabifreq (number): Rabi frequency of the laser as angular frequency. frequency (number): The angular frequency of the laser. Represents the energy gap of the transition. detuning (number): The detuning of the laser. couple (list): A tupel of :class:`Level` objects that assigns the laser to this transition. pulse (None or function or list): A time dependent function of the Rabi frequency of the laser OR a list of numbers describing a Rabi frequency pulse. Example: >>> Laser(1, 100, [Level(0),Level(20)]) The transition between Level(20) and Level(0) is assigned a laser with Rabi frequency of 1 and a frequency of 100. Note: Level couples need to be sorted by energy in ascending order. """ def __init__(self, rabifreq, detuning, couple, polarization=None, pulse=None): self.rabi = rabifreq self.couple = couple self.detuning = detuning self.frequency = np.abs(couple[0].energy - couple[1].energy) + detuning self.polarization = polarization # Not yet included. A list of a normalized E-field vector in the laser coordinate system, a theta_k and a theta_p (in degrees) and a pair [m_i,m_f]. self.pulse = pulse