Emittances¶
Emittance is HELIX's primary beam-quality metric. But "emittance" covers six different things in HELIX, each useful in a different regime. This page disambiguates and explains when to use which.
Six emittances at a glance¶
| Symbol | Field | Definition | Use case |
|---|---|---|---|
| ε_x | emit_x |
√(⟨x²⟩⟨x'²⟩ − ⟨xx'⟩²) | basic transverse RMS |
| ε_n,x | emit_nx |
β·γ·ε_x | invariant under acceleration |
| ε_z | emit_z |
longitudinal RMS in deg·MeV | native long. units |
| ε_z(mmmrad) | emit_z_mmmrad |
ε_z converted to mm·mrad | unified plotting |
| ε_4D | emit_4d |
√det(Σ_4D) | invariant under x-y coupling |
| ε_1, ε_2 | emit_n1, emit_n2 |
symplectic eigenvalues of J·Σ_4D | 4-D normal-mode |
| ε_E1, ε_E2, ε_E3 | emit_e1/e2/e3 |
Balandin trace invariants of Σ_6D | full 6-D |
When projected ε_x is enough¶
For an uncoupled lattice (no solenoids, no skew quads, no dispersion- energy coupling), the projected ε_x and ε_y are constant under linear symplectic transport. This is the textbook case and ε_x is all you need.
When projected ε_x lies — coupling¶
The moment a solenoid couples (x, x') with (y, y'), the projected ε_x and ε_y oscillate visibly through the lattice — even for an ideal beam with no real growth. Symptom: σ_x and σ_y wobble; ε_x, ε_y wobble; you'd swear the beam is heating up but actually nothing is wrong.
The 4-D invariant captures this:
It stays constant through any linear x-y coupling. And the 4-D normal-mode eigenemittances (ε₁, ε₂) are the genuine "transverse emittances" — what would σ_x and σ_y be if you diagonalised away the coupling.
For solenoid-rich LEBT analyses, always plot ε₁ and ε₂ instead of ε_x and ε_y.
When the 4-D isn't enough — 6-D coupling¶
Dispersion couples (x, x') with (Δφ, ΔW). In high-dispersion regions, even ε_4D oscillates while the full 6-D emittance is invariant.
The Balandin trace invariants (I₂, I₄, I₆) of Σ_6D give three constants:
These combine into a cubic equation whose roots are the squared eigenemittances ε_E1², ε_E2², ε_E3²:
(See linac_gen/diagnostics/eigenemittance.py:1 for the full
derivation.) HELIX records ε_E1 ≥ ε_E2 ≥ ε_E3 as
emit_e1, emit_e2, emit_e3.
In a fully uncoupled lattice, ε_E1 = ε_x, ε_E2 = ε_y, ε_E3 = ε_z. With coupling, the eigenemittances stay invariant while the projected ε_x/y/z visibly wobble.
Reference plots¶
For an example of all six emittances on the same plot — illustrating exactly when each is meaningful — see Worked example: Eigenemittance demo.
Implementation¶
linac_gen.diagnostics.eigenemittance.kinetic_invariants(sigma_6d)— computes (I₂, I₄, I₆).linac_gen.diagnostics.eigenemittance.eigenemittances(sigma_6d)— returns sorted (ε_E1, ε_E2, ε_E3).linac_gen.diagnostics.eigenemittance.eigenemittances_4d(sigma_4d)— 4-D version.linac_gen.diagnostics.eigenemittance.eigenemittances_series(...)— per-step over the full lattice.
Reference¶
- V. Balandin, W. Decking, N. Golubeva, "On the calculation of generalized four-dimensional and six-dimensional eigen-emittances", IPAC 2013 / arXiv:1305.1532.
- IMPACT-X documentation — same eigenemittance convention.
Cross-references¶
- Recorder fields
- Worked example: eigenemittance
linac_gen/diagnostics/eigenemittance.py:1(source).