Optically trapped ion
Overview
This example uses the experiment class OpticalTrappingIon to demonstrate purely optical trapping
of a single ion in an optical dipole trap. The radio-frequency trap (rf) can optionally be switched
off in order to measure the performance of the pure optical trap, and optical trapping can also be
performed in an adjustable magnetic field; together with ion laser cooling, spin preparation and
product-state detection, the ion can also be moved into and out of the trap via the axial electrodes.
Main devices
| Category | Device (excerpt) | Purpose |
|---|---|---|
| Ba lasers | ba_493_aom(_ttl), ba_493_vert_aom, ba_650_aom(_ttl), ba_493_res_shut, ba_493_det_shut, ba_615_shut | cooling, pumping (S1/2↔P1/2, D3/2, etc.), shutters |
| Optical dipole trap | odt_power / odt_aom / odt_shut | power and on/off of the optical trapping beam |
| RF trap | rf, rf_off | radio-frequency Paul trap confinement (can be switched off for a pure optical trap) |
| Axial movement | trap_ax, trap_ax_pc, trap_ax_wall, trap_ax_offs | axial shuttling of the ion |
| Magnetic field | b_homogen, shim | quantisation field for pre-cooling/trapping |
| Detection | trigger_cam | trigger for radial ion fluorescence/state detection |
Parameters (excerpt of setattr_argument in build)
trapping_time, odtpower, rf_init and
rf_ramp_duration, opt_ramp_duration, repumpers_on, pump_d32,
ba_spin_prep, b_field_precooling(_applied) / b_field_opt_trap(_applied),
shuttle_ion / shift_voltage, shutter_time, detect_ba_product_state and others.
Timing stages
Initialisation
→ ion spin preparation
→ magnetic-field switching (optional high-field probing)
→ (optional) shuttle the ion out and back
→ linear ramp-up of the optical trapping beam power → switch off the RF confinement (pure optical trapping)
→ switch off the optical trap (release) and the magnetic field
→ product-state/fluorescence detection
Key code (excerpt)
from quatm.experiment import * # Experiment, NumberValue, BoolValue, delay, realtime ...
class OpticalTrappingIon(Experiment):
def build(self):
self.setattr_device("ba_493_aom")
self.setattr_device("odt_power")
self.setattr_device("rf")
self.setattr_argument("trapping_time", NumberValue(ndecimals=0, step=10,
value=100, unit="µs"))
# ... remaining parameters omitted
def run(self):
with realtime():
# ramp up the optical trapping beam and switch off the RF confinement for pure optical trapping
self.odt_power = self.odtpower
self.rf_trap_off = True
# ... timing omitted
Running
Once the script is placed in experiments, opening it in the experiment browser (Browser) generates
the parameter panel; adjusting odtpower and trapping_time scans the power and duration of the
optical trapping, while detect_ba_product_state reads out the ionic product state.