Steerer¶
A thin steering corrector — a small dipole magnet that nudges the beam centroid back to the design orbit. Used in pairs (one horizontal, one vertical) at every BPM location for closed-orbit correction.
TL;DR¶
| TraceWin | HELIX | |
|---|---|---|
| Keyword | THIN_STEERING bx_l by_l aperture [elec] or STEERER ... |
Steerer(name, bx_l, by_l, elec=False) |
bx_l |
integrated B_x · L (T·m) — kicks in y | same (elec=1: ∫E_x·dl in volts — kicks in x) |
by_l |
integrated B_y · L (T·m) — kicks in x | same (elec=1: ∫E_y·dl in volts — kicks in y) |
elec |
0 = magnetic (default), 1 = electric | honoured (2026-07): electric kick via the electric rigidity Eρ = βc·Bρ |
The thin kick — magnetic (crossed planes): Δx' = +sign(q)·by_l / Bρ, Δy' = +sign(q)·bx_l / Bρ; electric (same-plane, volts): Δx' = +sign(q)·bx_l / (βc·Bρ), Δy' = +sign(q)·by_l / (βc·Bρ) — in radians. (The TraceWin manual writes the magnetic x'-kick with the opposite sign; a corrector's polarity is a knob-sign convention absorbed by orbit correction.)
Tutorial¶
A steerer is a one-shot kick to redirect the beam centroid. Closed- orbit correction loops:
- Read BPM positions (centroid x, y at each BPM).
- Solve
M·k = -x_BPMfor steerer strengthsk(M is the response matrix from each steerer to each BPM). - Apply the steerers; verify the orbit is corrected.
HELIX ships an orbit-correction driver
(linac_gen.errors.correction.run_correction_from_lattice) that
walks the lattice for ADJUST_STEERER / ADJUST_STEERER_BX /
ADJUST_STEERER_BY cards, resolves each diag_n to the N-th
DIAG_POSITION (BPM) marker, and applies the corresponding
one-to-one or SVD correction. See
Errors → Orbit correction for
the full workflow.
6×6 transfer matrix¶
A steerer is a thin element with affine kicks — the linear 6×6 part is the identity, but the kick adds a constant to x' and y':
where bx_l = ∫B_x dl (T·m) gives the y kick, and by_l = ∫B_y dl
gives the x kick — both with a plus sign. Positive by_l
deflects positive charges in the +x direction; the sign flips
automatically for negative species (H⁻).
| Block | Effect |
|---|---|
| (x, x', y, y') 4×4 linear | identity (no focusing) |
| (Δφ, ΔW) 2×2 linear | identity (no longitudinal effect) |
| Affine offset on x', y' | constant kicks scaled by 1/p |
Because the kicks are independent of (x, y), envelope tracking sees a steerer as the identity matrix — the kicks shift the centroid but leave σ unchanged.
Example¶
from linac_gen.elements.steerer import Steerer
st_x = Steerer(name="ST_H1", bx_l=0.0, by_l=1.0e-3) # 1 mT·m → kick in x
API reference¶
linac_gen.elements.steerer.Steerer(
name: str,
bx_l: float = 0.0, # T·m, kicks y
by_l: float = 0.0, # T·m, kicks x
)
| Parameter | Default | Units | Notes |
|---|---|---|---|
name |
(required) | — | identifier |
bx_l |
0.0 | T·m (elec: V) | integrated B_x; deflects in y (Δy' = +sign(q)·bx_l/Bρ) — elec: ∫E_x·dl, deflects in x |
by_l |
0.0 | T·m (elec: V) | integrated B_y; deflects in x (Δx' = +sign(q)·by_l/Bρ) — elec: ∫E_y·dl, deflects in y |
elec |
False | — | electric flavour: same-plane kick / (βc·Bρ) |
That is the entire constructor — a Steerer has no aperture and
neither error-injection mixin. The STEERER card's aperture field is
parsed and then dropped; elec round-trips through the writer.
Note for orbit correction: the vmax T·m clip applies to whatever
the knob's units are — volts for an electric steerer.
Source¶
linac_gen/elements/steerer.py:1
See also¶
- Errors → Orbit correction — the TraceWin-card-driven correction workflow that uses these steerers.
- Errors → Beam errors — input- centroid jitter that steerers correct.