Kicker
This module describes the PASS kicker element Kicker, used to simulate the motion of charged particles in a pulsed dipole magnet. A kicker is a fast-acting transverse deflection element that changes the beam direction by applying an angular deflection. It is widely used in beam injection, extraction, orbit correction, and fast beam manipulation.
The PASS kicker supports both thick element (length > 0) and thin lens (length = 0) modes. The thick element uses the exact drift-kick-drift (DKD-exact) symplectic integration scheme, supporting both uniform (2nd-order) and yoshida4 (4th-order) symplectic integrators. Physically, a kicker is equivalent to an order-0 multipole (dipole), with kick formulas \(\Delta p_x = \text{hkick}\) and \(\Delta p_y = \text{vkick}\).
Runtime registry name:
kickerKey features:
Supports thin lens mode (
length = 0, applies only a dipole kick)Supports thick lens mode (
length > 0, DKD-exact symplectic integration)Supports uniform (2nd-order leapfrog) and yoshida4 (4th-order Yoshida composition) integrators
Horizontal kick (
hkick) and vertical kick (vkick) set independentlySupports unidirectional kick (only
hkickor onlyvkick) and bidirectional kick (both nonzero)Supports a single-turn kick or consecutive kicks within a configured turn window
Mask-based kick application, no per-particle branching
Zero kick: thin lens degenerates to a marker, thick lens degenerates to a pure drift
Supports aperture check
The fields below configure PASS.para.schema.elements.KickerItem.
The key in Sequence.add(name, item) supplies the element name; it is not a configuration-model field.
Interface Parameters
Python configuration field |
JSON key |
Type |
Unit |
Default |
Description |
|---|---|---|---|---|---|
|
|
|
m |
|
Longitudinal position of the element exit or zero-length action point. |
|
|
|
m |
|
Magnet length, \(= 0\) for thin lens, \(> 0\) for thick lens |
|
|
|
1 |
|
Horizontal normalized momentum increment; an angle in radians only in the small-angle limit. |
|
|
|
1 |
|
Vertical normalized momentum increment; an angle in radians only in the small-angle limit. |
|
|
|
1 |
|
Inclusive starting turn, numbered from zero; must be nonnegative. |
|
|
|
1 |
|
Exclusive ending turn; when provided, must exceed |
|
|
|
1 |
|
Number of slices for thick lens |
|
|
|
— |
|
Integrator, options: |
|
|
|
— |
|
Aperture type |
|
|
|
m / rad |
|
Aperture parameter values |
Note
Both hkick and vkick are optional parameters with default value 0. They are set independently:
Only
hkicknonzero: unidirectional horizontal kickerOnly
vkicknonzero: unidirectional vertical kickerBoth nonzero: bidirectional kicker
Both zero: thin lens degenerates to a marker, thick lens degenerates to a pure drift
The JSON Command field should be set to Kicker.
Turn Window
When end_turn is provided, the magnetic kick is enabled when
start_turn <= turn < end_turn. The starting turn is included and the
ending turn is excluded, as for
Exciter and Bunch-by-bunch transverse feedback. Turn numbering starts at zero.
The default start_turn=0, end_turn=None preserves the every-turn behavior.
Both bounds require strict integers: booleans, strings and floating-point
values are rejected. Only end_turn accepts None (JSON null).
Requested behavior |
|
|
|---|---|---|
One kick on the first tracking turn |
|
|
One kick per turn for the first 100 turns |
|
|
One kick per turn for turn indices 20 through 29 |
|
|
One kick per turn from turn index 20 to the end of the run |
|
|
Every live particle in every bunch of the configured beam receives the configured integrated kick on an active turn. All integration slices share the same turn window and distribute that full kick over the element length. The window is fixed to simulation turn indices: an empty turn does not defer the kick until particles are injected, and particles injected after the window receive no kick from this element.
Outside the window, both nominal kicks and the attached absolute field errors
are disabled. Tracking stays in the design frame without applying the
magnetic alignment coordinate transformations. The element still transports
particles through its length,
advances bunch.t0, checks apertures and executes any internal space-charge
nodes. With no internal space charge, an inactive thick kicker is a drift;
an inactive thin kicker still checks its aperture.
This is an ideal turn-based gate with constant configured kick amplitudes inside the window. It does not model a pulse duration or sample a waveform at individual particle arrival times; use Bump for a prescribed time-dependent injection waveform.
Usage Examples
Single-Turn Kicker
This kicker acts only on the first tracking turn, at turn index 0:
{
"HK_ONCE": {
"S (m)": 10.0,
"Command": "Kicker",
"HKICK": 0.0015,
"Start turn": 0,
"End turn": 1
}
}
Set End turn to 100 to apply the same kick on each of turn indices
0 through 99. Equal bounds such as 1, 1 are invalid; a single kick at
turn index n uses Start turn=n, End turn=n+1.
Thin Lens Horizontal Kicker
The following example places a thin lens horizontal kicker at \(s = 10.0\) m with normalized momentum increment \(1.5 \times 10^{-3}\):
{
"HK1": {
"S (m)": 10.0,
"Command": "Kicker",
"HKICK": 0.0015,
"VKICK": 0.0
}
}
Only a horizontal kick is applied; the vertical direction is unaffected. Suitable for horizontal orbit correction or horizontal injection.
Thin Lens Vertical Kicker
The following example places a thin lens vertical kicker at \(s = 20.0\) m with normalized momentum increment \(-2.3 \times 10^{-3}\):
{
"VK1": {
"S (m)": 20.0,
"Command": "Kicker",
"HKICK": 0.0,
"VKICK": -0.0023
}
}
Only a vertical kick is applied; the horizontal direction is unaffected. The negative sign indicates a downward kick direction.
Thick Lens Bidirectional Kicker
The following example places a thick lens bidirectional kicker at \(s = 15.0\) m with 4 slices and a uniform integrator:
{
"BK1": {
"S (m)": 15.0,
"Command": "Kicker",
"Length (m)": 0.3,
"HKICK": 0.003,
"VKICK": -0.0015,
"Num slices": 4,
"Integrator": "uniform",
"Aperture type": "circle",
"Aperture value": [0.05]
}
}
Both horizontal and vertical kicks are applied simultaneously, with length 0.3 m, 4-slice DKD-exact symplectic integration, and a circular aperture check (radius 0.05 m).
Thick Lens with yoshida4 Integrator
The following example uses a 4th-order Yoshida integrator, suitable for scenarios requiring high precision:
{
"BK2": {
"S (m)": 25.0,
"Command": "Kicker",
"Length (m)": 0.5,
"HKICK": 0.002,
"VKICK": 0.0,
"Num slices": 2,
"Integrator": "yoshida4"
}
}
2 slices, each performing 3 DKD steps (Yoshida composition), with truncation error \(O(\Delta s^4)\).
Zero-Kick Kicker
The following example places a zero-kick kicker at \(s = 30.0\) m:
{
"K0": {
"S (m)": 30.0,
"Command": "Kicker",
"HKICK": 0.0,
"VKICK": 0.0
}
}
When both kicks are zero and the length is zero, the kicker degenerates to a marker, leaving all particle coordinates unchanged. This can reserve a location for a later configuration change. Magnetic ramping fields are reserved; this element does not evaluate a time-dependent waveform.
Coordinate Convention
Use the continuous longitudinal coordinate in Longitudinal coordinate and reference time. \(T_b\) is the ideal reference particle passage time at this position, not a measured bunch-centroid time. The local-map symbols \(\beta_0\) and \(P_0\) refer to the current bunch reference. \(p_x=P_x/P_0\) is normalized momentum, not a trajectory slope.
PASS uses normalized curvilinear coordinates. The six-dimensional phase-space variables are \((x, p_x, y, p_y, z, \delta)\):
Variable |
Symbol |
Definition |
|---|---|---|
|
\(x\) |
Horizontal offset (relative to the reference orbit) |
|
\(p_x\) |
Normalized horizontal momentum, \(p_x = P_x / P_0\) |
|
\(y\) |
Vertical offset |
|
\(p_y\) |
Normalized vertical momentum, \(p_y = P_y / P_0\) |
|
\(\zeta\) |
Longitudinal coordinate, \(z=\zeta=\beta_b c(T_b-t_i)\) |
|
\(\delta\) |
Relative momentum deviation, \(\delta = P / P_0 - 1\) |
where \(P_0\) is the reference particle momentum, \(\beta_0 = v_0 / c\) is the reference particle normalized velocity, \(s\) is the arc length along the reference orbit, and \(t\) is time.
Physical Derivation
Physical Nature of the Kicker
A kicker is physically a pulsed dipole magnet that produces a uniform magnetic field \(B_0\) within a brief time window, applying a transverse deflection to particles passing through it. For a reference particle in the small-angle limit, the magnitude of the deflection from a uniform field of length \(L\) is:
where \(B\rho=P_0/q\) is the magnetic rigidity. The signed fields hkick and vkick specify normalized transverse momentum increments, as defined below. Their signs follow the desired horizontal and vertical momentum changes; they are not interchangeable with a normal multipole coefficient without checking its sign convention.
Dipole Kick
The kicker kick formulas are:
For thin lens mode, hkick and vkick are applied directly as integrated strengths. For thick lens DKD mode, the per-slice kick is \(\text{hkick}_{\text{eff}} = \text{hk} \cdot \Delta s\), where \(\text{hk} = \text{hkick} / L\) is the per-unit-length strength.
Note
hkick and vkick directly specify dimensionless normalized momentum increments.
They represent deflection angles in radians only in the small-angle approximation.
Overall Tracking Flow
Depending on the magnet length, the kicker has two tracking modes:
Thin lens mode (\(L = 0\))
====== Thin lens (length = 0) ======
Single dipole kick Kick(hkick, vkick)
[Position unchanged, momentum jump only]
Thick lens mode (\(L > 0\))
====== Thick lens (length > 0) ======
Slice 1 → Slice 2 → ... → Slice N
(Each slice: Drift(ds/2) → Kick(ds) → Drift(ds/2))
where ds = L / N
hkick_eff = hk * ds, vkick_eff = vk * ds
If hkick=0 and vkick=0: degenerates to a single exact drift Drift(L)
The complete map is:
Thin lens:
Thick lens (N slices):
where the DKD map for each slice is:
Note
Thin lens mode does not change the particle position coordinates \((x, y, z)\), only applies momentum kicks
Chromaticity and other effects in thick lens mode are naturally introduced through the \(p_z\) expression in exact drift
When both
hkickandvkickare zero, the thick lens degenerates to a pure drift, avoiding meaningless empty kick loops
Exact Drift Map
The drift part uses the exact drift (Table 1.1, map D, Eq. 1.86-1.88), identical to that of the quadrupole/sextupole/octupole/multipole:
where:
The exact drift preserves the full nonlinearity of \(p_z\), naturally introducing chromaticity, higher-order dispersion, and path-length effects.
For numerical stability, the longitudinal drift is evaluated in an algebraically rationalized form. Both CPU and GPU use \(1/\gamma_0^2\) from the reference gamma directly, avoiding cancellation in \(1-\beta_0^2\) when the reference speed is close to the speed of light.
Symplectic Integrators
Uniform (2nd-order leapfrog)
Each slice performs Drift-Kick-Drift:
This is a 2nd-order symplectic integrator with truncation error \(O(\Delta s^2)\).
Yoshida4 (4th-order composition)
Three DKD steps are combined into a 4th-order symplectic integrator:
where the Yoshida coefficients are:
Truncation error \(O(\Delta s^4)\).
Absolute normal/skew field errors and static DX/DY/DPSI alignment use the common Element errors interface. Alignment moves only the magnetic field; apertures and SC boundaries remain in the design frame.
Application Scenarios
Beam injection: Place kickers in the injection section to deflect the injected beam to match the main ring closed orbit, achieving beam injection
Beam extraction: Place kickers at the extraction point to rapidly deflect the beam into the extraction channel, for fast extraction
Orbit correction: Place kickers at key beamline positions to correct orbit deviations or create local orbit bumps
The Kicker model applies constant configured strengths within its turn window. For a prescribed injection waveform, see Bump; for transverse excitation, see Exciter. A pickup-feedback controller is not included in this element. For a delayed bunch-centroid FIR loop, use the dedicated nodes in Bunch-by-bunch transverse feedback.
References
MAD-X User’s Guide, “Kicker” section (hkick / vkick definitions)
Xsuite source code:
xtrack/mad_loader.py(convert_kicker,_make_kicker_multipole)Yoshida, H., “Construction of higher order symplectic integrators”, Phys. Lett. A 150 (1990)
Wiedemann, H., “Particle Accelerator Physics”, Ch. 4 (dipole magnets and deflection)
Internal Space Charge
A positive-length element may set space_charge (JSON Space charge)
to an ElementSpaceCharge object. Num slices controls external transport,
while Space charge.Num kicks controls SC integration. See Element Slicing and Internal Space Charge
for scheduling, shared resources, supported backends and examples.