Place and slide parts on a breadboard, walk the beam through two post-holder targets, retro-reflect the cavity mirrors, mode-match, and watch the modes flash on a noisy bench
In short: An optical cavity is two curved mirrors facing each other. Light builds up between them only if the laser beam lines up with the cavity almost perfectly. This trainer lets you build one on a virtual optics table, step by step, the way it is done in a real lab. You use two targets with tiny holes to set a straight beam, turn the mirror adjusters, send light back on itself, and watch the transmitted light flash on an oscilloscope. Sloppy alignment shows up as extra, oddly shaped beams, and a noisy bench makes the signal flicker.
Click a part to select it. Drag it to slide it on the table (Shift-drag turns its base). Arrow keys nudge the selected part by 0.5 mm (Shift: 5 mm, Alt: 0.1 mm); [ and ] turn it by 0.5° (Shift: 0.1°). Turn a mirror adjuster by dragging its black knob up or down (Shift: fine) or with the mouse wheel over it (1/64 turn per notch); the white tick shows the knob angle. Faint circles mark good spots. Orange dashes: light reflected back by a cavity mirror. The beam profiler is a virtual scanning head: drag the blue head along the beam or use its slider. To turn a part on its post, select it and drag the blue ring around its base, or use the base-angle buttons. To open or close an iris, drag the small brass lever on its rim or use the aperture slider.
Before you steer with a kinematic mount, set it up so the beam already goes where you want with the front and back plates parallel. Then both adjusters sit at mid-travel and you keep full range in both directions for the fine alignment later. The two irises, at beam height on one hole row, define the line the beam should follow.
Kinematic adjusters (about 8 mrad per turn)
Bench and cavity
Alignment targets (view along the beam, ±4 mm)
The oscilloscope sits in the bottom-right corner of the 3D view. Each peak is a mode family resonating. TEM00 is labelled 00; N = m + n for HGmn. Misalignment (offset or tilt) feeds N = 1 (HG01, HG10); a wrong beam size or waist position feeds N = 2 (a bullseye-shaped LG10). With the PZT held, the trace becomes power versus time.
The beam profiler shows the intensity across the beam at the chosen point, looking along the beam (false colour), with its D4σ diameters, wavefront radius and power. Inside the cavity it shows the circulating field. With a messy laser the pattern changes shape as it travels, because each mode order picks up a different Gouy phase, and no amount of alignment puts much more than a third of the light into TEM00: a spatial filter (lens + pinhole) or a single-mode fibre would clean it up.
The irises are a second pair of alignment apertures. Close them down to centre the beam, open or slide them out once the cavity transmits.
The camera view of the transmitted mode sits in the 3D view, next to the oscilloscope.
Two points define a line. The two targets have holes at exactly the beam height, so a beam through both holes is level and on a known line. Two mirrors give the four adjustments (two angles each) needed to put the beam's position and direction anywhere: that is "walking the beam".
Retro-reflection aligns the cavity to the beam. A curved mirror sends light straight back only when the beam hits it along a line through its centre of curvature. When M2 and then M1 both return the beam through the first target, the cavity's own axis (the line through both centres of curvature) lies on the input beam.
The transmission tells you what is left. Light that does not match the cavity's TEM00 mode excites higher-order modes, which resonate at different PZT positions because of the Gouy phase. Offsets and tilts excite HG01 and HG10; a wrong waist size or position excites the bullseye mode. Make TEM00 tall and the others small.
Noise. A cavity with finesse 300 has a resonance only about 1 nm wide in mirror position. Footsteps, air currents and building vibration move the mirrors by more than that, so the transmission flickers unless the length is locked (see the PDH lock experiment).
A hands-on trainer for the standard procedure for aligning a two-mirror Fabry–Perot cavity. It is built around two post holders with a small hole at a fixed beam height, which serve as alignment targets: 1. Level the laser through both targets. 2. Walk the beam onto the cavity line with two steering mirrors. 3. Retro-reflect the far mirror, then the input mirror, through the first target. 4. Detect the transmission while ramping the cavity length. 5. Mode-match with a lens. 6. Remove the targets and fine-tune by watching the higher-order modes.
Poor technique produces a poorly aligned cavity, and a noisy bench makes the resonances flicker.
The goal is a beam through both iris centres (within 0.2 mm) with the mount's plates parallel, so both adjusters keep full travel. It is timed.
Show the solution plays the correct motions one per second: zero both knobs, coarse yaw with the base, then translate (near iris) and rotate (far iris) until both are within 0.02 mm. Each move is planned with the same ray trace, and a numbered list shows how far off each iris was before the move. - Mounts on posts: every mount sits on its own post, post holder and base. The KM100 post is under the fixed back plate, and the post turns with the mount when you rotate it (drag the blue ring around the selected part, Shift-drag, [ ], or the ±0.1°/±1° buttons). - Detectors block the beam: the light leaving M2 splits at the 50:50 pick-off; half goes to the camera, half to the photodiode, and each detector stops it. The photodiode only sees light that lands on its 3.6 mm sensor, so a badly placed detector shows nothing. - Sweep: either the cavity length (PZT on M2, 1.2 FSR) or the laser frequency (−0.1 to 1.1 FSR, axis in MHz, with the FSR = c/2L bracket between the two TEM00 peaks). A real HeNe cannot be tuned this far; use a tunable diode laser for a frequency sweep. - Full solution: one button places every part at its ideal spot, one move per second, and ends with a perfectly aligned cavity flashing TEM00 on the scope. - Two irises (Ø0.7–5 mm) on posts: slide them into or out of the beam, set the aperture (drag the brass lever on the rim, or use a slider), and read how far the beam is from their centre. - Targets: - live views along the beam show where the beam hits and where the reflected beam returns; - each target can be lifted out of the beam; - the Ø1 mm holes clip the beam while the targets are in place; a spot that is slightly off a near hole still reaches the far target, only dimmer. - Laser: 405, 450, 488, 514.5, 532, 543.5, 561, 594.1, 632.8, 650 or 1064 nm (1064 nm is drawn in violet, as seen on an IR viewer card). Beam quality: a clean TEM00 Gaussian, or a messy beam with higher-order mode content (about 36 % TEM00). - Beam profiler: a virtual scanning head (it does not block the beam). Drag it along the beam in 3D, use its slider, or jump to a part. It shows the intensity across the beam, D4σ diameters, the TEM00 radius, wavefront curvature and power: along the input path, inside the cavity (circulating power), and after M2. - Cavity: mirror curvature (flat, 100–1000 mm), reflectivity (98 %, 99 %, 99.5 %) and any spacing. It is stable only if the mirrors face each other, the axis hits both mirrors, and 0 < g₁g₂ < 1. - Detection: - PZT ramp, with an oscilloscope trace of transmitted power showing each mode family (the scope sits in the bottom-right corner of the 3D view); - PZT hold, giving a time trace and a live camera image that flickers with bench noise; - a bar chart of the HG-mode content of the input beam; - the TEM00 coupling score. - Mode-matching calculator: searches the catalogue lenses and positions using the actual traced beam. - Step-by-step instructions with live check marks; a cheat button snaps a part to its ideal spot.
1. Central ray through the parts. Each part is a plane through its centre with a normal set by its base angle and its adjusters:
n = (cos(φ + yaw) cos(pitch), sin(φ + yaw) cos(pitch), sin(pitch)).
Handled: exact 3D vector geometry.
2. Gaussian beam. The complex beam parameter q starts at the laser waist (w₀ = 0.32 mm) and changes as q → q + z in free space and 1/q → 1/q − 1/f at a lens. The input mirror's plano-concave substrate acts as a lens with f = −R/(n − 1). Along the way the Gouy phase is accumulated: Ψ grows by the change in atan(Re q / Im q) over each free-space stretch.
A messy laser is the sum Σ a_jk HG_jk(x, y; q), each order picking up e^{i(j+k)Ψ}. That is why its pattern changes shape as it travels.
3. Cavity eigenmode. The optical axis is the line through the two centres of curvature, Cᵢ = Vᵢ + Rᵢnᵢ (a flat mirror's axis is its normal). The quantities computed are: - the axis hit points on the mirrors and the length L; - gᵢ = 1 − L/Rᵢ; - the waist w₀² = (λL/π)·√(g₁g₂(1 − g₁g₂))/|g₁ + g₂ − 2g₁g₂|, at z₁ = L g₂(1 − g₁)/(g₁ + g₂ − 2g₁g₂) from M1; - the one-way Gouy phase ψ = arccos(±√(g₁g₂)).
Handled: exact (paraxial).
4. Coupling. At the cavity waist plane, the input beam's transverse offset (Δx, Δy), tilt (θx, θy) and q are found. The input field factorizes into x and y parts:
e(x) = exp(−ik(x − Δ)²/2q + ikθx).
It is projected onto the 1D Hermite–Gauss functions of the cavity waist: c_m = ⟨u_m|e⟩/√(⟨u_m|u_m⟩⟨e|e⟩). Then c_mn = c_m^x c_n^y. For a messy laser each input mode HG_jk is projected the same way (with H_j in e(x)) and c_mn = Σ a_jk e^{i(j+k)Ψ} c_{jm}^x c_{kn}^y.
Handled: numerical overlap integrals (700 points) up to order 8.
5. Transmission. Each mode has t_mn = T e^{iφ/2}/(1 − R e^{iφ}), with φ = 2kδ − 2(m + n)ψ, and P_t = Σ|c_mn|²|t_mn|²·(clip). The camera image is the coherent sum Σ c_mn t_mn HG_m(x)HG_n(y) when the PZT is held. When it ramps, the time average sums mode orders incoherently, with modes of the same order added coherently.
6. Beam profiler. At a point s along the beam it evaluates the mode sum at the local q: - intensity |Σ c_mn HG_m(√2x/w)HG_n(√2y/w)|²; - D4σ = 4 × the second-moment radius; - R = 1/Re(1/q).
Inside the cavity it uses the cavity mode (q = z + iz_R from the waist) weighted by c_mn t_mn/√T (circulating). After M2 it uses the transmitted field through the M2 substrate lens.
7. Bench noise. First-order (Ornstein–Uhlenbeck) noise: - on the cavity length, with an ≈ 4 ms correlation time, sampled along each 50 ms scope sweep; - on each mount's angles, ≈ 80 ms.
The trace and the camera are recomputed every 50 ms.
src/cv_model.js: vector geometry, ray and q tracing, cavity eigenmode, HG overlaps, Airy transmission, field images, clipping, mode-matching helper. Pure functions; runs in Node.src/cv_app.js: three.js breadboard and parts (KM100 mounts, post stacks, post-holder targets, lens, PZT, detectors), drag and slide, adjusters, step checks, targets, oscilloscope, camera and mode bars, noise loop.src/cv_shell.html + src/build.py: page; python build.py makes cavity_alignment.html.| Parameter | Value | Source |
|---|---|---|
| Laser | 405–1064 nm (default HeNe 632.8 nm), 2 mW, w₀ = 0.32 mm | catalogue class (verify) |
| Irises | Ø0.7–5 mm (ID5/M class) | Thorlabs (verify) |
| Beam height | 100 mm | design choice |
| Targets | post holders with a Ø1 mm hole at beam height | user's lab practice |
| Adjusters | ≈ 8 mrad per turn (KM100-class) | Thorlabs spec (approx.) |
| Cavity | 2 × ROC 250 mm, R = 99 %, L = 150 mm (F ≈ 310, FSR ≈ 1 GHz, linewidth ≈ 3 MHz) | design choice |
| Substrate | fused silica, n = 1.457 | standard |
| Bench noise | 0.6 / 6 / 25 nm rms length; 0.15 / 1.5 / 6 µrad rms angle | ASSUMED (quiet table / lab bench / noisy) |