Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added getPower Method to Calculate Laser Power for Resonantly Driven Atoms #169

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

francois-marie
Copy link

Description

This PR introduces a new method getPower to the ARC package.
The getPower method calculates the laser power required for resonantly driving a transition between two atomic states in the center of a TEM00 mode of a driving field.

Method Details

def getPower(
    self, n1, l1, j1, mj1, n2, l2, j2, mj2, q, rabiFrequency, laserWaist, s=0.5
):
    """
    Returns a laser power for resonantly driven atom in a
    center of TEM00 mode of a driving field

    Args:
        n1, l1, j1, mj1 : state from which we are driving transition
        n2, l2, j2, mj2 : state to which we are driving transition
        q : laser polarization (-1,0,1 correspond to :math:`\\sigma^-`,
            :math:`\\pi` and :math:`\\sigma^+` respectively)
        rabiFrequency : laser power in units of rad/s
        laserWaist : laser :math:`1/e^2` waist (radius) in units of m
        s (float): optional, total spin angular momentum of state.
            By default 0.5 for Alkali atoms.

    Returns:
        float:
            laserPower in units of W
    """
    if abs(mj2) - 0.1 > j2:
        return 0
    dipole = (
                self.getDipoleMatrixElement(
                    n1, l1, j1, mj1, n2, l2, j2, mj2, q, s=s
                )
                * C_e
                * physical_constants["Bohr radius"][0]
            )
    return pi/4 * C_c * epsilon_0 * (laserWaist * hbar * rabiFrequency / abs(dipole))**2

Parameters

  • n1, l1, j1, mj1: Quantum numbers of the initial state from which the transition is driven.
  • n2, l2, j2, mj2: Quantum numbers of the final state to which the transition is driven.
  • q: Laser polarization, where -1, 0, and 1 correspond to $\sigma^-$, $\pi$, and $\sigma^+$ polarizations, respectively.
  • rabiFrequency: Laser power in units of rad/s.
  • laserWaist: Laser $1/e^2$ waist (radius) in units of meters.
  • s (optional): Total spin angular momentum of the state, defaulting to 0.5 for Alkali atoms.

Returns

  • float: The calculated laser power in units of Watts (W).

Usage

This method can be used to determine the necessary laser power for experiments involving resonantly driven transitions in Alkali atoms. It takes into account the dipole matrix element and other physical constants to provide an accurate calculation.

Example

# Quantum numbers for the ground and excited states
ground_state = [5, 0, 0.5, 0.5]
excited_state = [6, 1, 1.5, 1.5]

# Desired Rabi frequency
target_rabi_freq = 2*pi*70e6  # in Hz

# Waist of the laser beam
waist = 200e-6  # in m

# Polarization of the laser
q = 1

laserPower = getPower(
    *ground_state, *excited_state, q, rabiFrequency=target_rabi_freq, laserWaist=waist
)
print(f"{laserPower*1e3=:.2f} mW")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants