Driver for a turn-by-turn feedback loop
Parallel capable? : yes
GPU capable? : no
Back-tracking capable? : no
Parameter Name | Units | Type | Default | Description |
ID | STRING | NULL | System identifier |
|
STRENGTH | double | 0.0 | Strength factor |
|
KICK_LIMIT | double | 0.0 | Limit on applied kick; in radians for transverse plane or fraction of momentum in longitudinal plane. |
|
FREQUENCY | Hz | double | 0.0 | Resonant frequency of the unloaded kicker cavity. |
DRIVE_FREQUENCY | Hz | double | 0.0 | Drive frequency. If zero, defaults to resonant frequency of the loaded cavity. |
CLOCK_FREQUENCY | Hz | double | 0.0 | Clock frequency used for timing of the changes to generator current. Typically the rf or bunch frequency is used. |
CLOCK_OFFSET | s | double | 0.0 | Offset of the generator current change relative to clock tick. Clock tick is nominally aligned to the bunch center. |
PHASE | Deg | double | 0.0 | Phase of the applied voltage relative to the bunch center, with 0 being on-crest. |
RAOVERQ | Ohm | double | 0.0 | Shunt impedance, Ra/Q=V/(P*Q). |
QLOADED | double | 0.0 | Loaded Q of the cavity. |
|
OUTPUT_FILE | STRING | NULL | File for logging filter output and driver output |
|
GAIN_FACTOR_FILE | STRING | NULL | File providing gain factors for individual bunches. |
|
GAIN_FACTOR_COLUMN | STRING | NULL | Column from GAIN_FACTOR_FILE containing gain factors. |
|
DELAY | long | 0 | Delay (in turns) |
|
A0 | double | 1 | Filter coefficient |
|
A1 | double | 0.0 | Filter coefficient |
|
TFBDRIVER continued
Driver for a turn-by-turn feedback loop
Parameter Name | Units | Type | Default | Description |
A2 | double | 0.0 | Filter coefficient | |
A3 | double | 0.0 | Filter coefficient |
|
A4 | double | 0.0 | Filter coefficient | |
A5 | double | 0.0 | Filter coefficient |
|
A6 | double | 0.0 | Filter coefficient | |
A7 | double | 0.0 | Filter coefficient |
|
A8 | double | 0.0 | Filter coefficient | |
A9 | double | 0.0 | Filter coefficient |
|
A10 | double | 0.0 | Filter coefficient | |
A11 | double | 0.0 | Filter coefficient |
|
A12 | double | 0.0 | Filter coefficient | |
A13 | double | 0.0 | Filter coefficient |
|
A14 | double | 0.0 | Filter coefficient | |
A15 | double | 0.0 | Filter coefficient |
|
A16 | double | 0.0 | Filter coefficient | |
A17 | double | 0.0 | Filter coefficient |
|
A18 | double | 0.0 | Filter coefficient | |
A19 | double | 0.0 | Filter coefficient |
|
A20 | double | 0.0 | Filter coefficient | |
A21 | double | 0.0 | Filter coefficient |
|
A22 | double | 0.0 | Filter coefficient |
|
A23 | double | 0.0 | Filter coefficient |
|
A24 | double | 0.0 | Filter coefficient |
|
A25 | double | 0.0 | Filter coefficient |
|
A26 | double | 0.0 | Filter coefficient |
|
A27 | double | 0.0 | Filter coefficient |
|
A28 | double | 0.0 | Filter coefficient |
|
A29 | double | 0.0 | Filter coefficient |
|
UPDATE_INTERVAL | long | 0 | Interval in units of pickup update interval for sampling pickup data and updating filter output. |
|
OUTPUT_INTERVAL | long | 1024 | Number of samples to buffer between writing output file updates. |
|
START_PASS | long | -1 | If positive, first pass on which to drive beam. |
|
TFBDRIVER continued
Driver for a turn-by-turn feedback loop
Parameter Name | Units | Type | Default | Description |
END_PASS | long | -1 | If positive, last pass on which to drive beam. |
|
LONGITUDINAL | short | 0 | If non-zero, kick is in the longituidinal plane. KICK_LIMIT is in fractional momentum deviation. |
|
BUNCHED_BEAM_MODE | short | 1 | If non-zero, run in bunched beam mode. |
|
GROUP | string | NULL | Optionally used to assign an element to a group, with a user-defined name. Group names will appear in the parameter output file in the column ElementGroup |
|
This element is used together with the TFBPICKUP element to simulate a digital turn-by-turn feedback system. Each TFBDRIVER element must have a unique identification string assigned to it using the ID parameter. The same identifier must be used on a TFBPICKUP element. This is the pickup from which the driver gets its signal. Each pickup may feed more than one driver, but a driver can use only one pickup.
A 30-term FIR filter can be defined using the A0 through A29 parameters. The output of the filter is simply ∑ i=029aiPi, where Pi is the pickup filter output from i * U turns ago, where U is the UPDATE_INTERVAL value specified for the pickup. The output of the filter is optionally delayed by the number of update intervals given by the DELAY parameter.
To some extent, the DELAY is redundant. For example, the filter a0 = 0,a1 = 1 with a delay of 0 is equivalent to a0 = 1,a1 = 0 with a delay of 1. However, for long delays or delays combined with many-term filters, the DELAY feature must be used.
The output of the filter is multiplied by the STRENGTH parameter to get the kick to apply to the beam. The KICK_LIMIT parameter provides a very basic way to simulate saturation of the kicker output.
The plane that the TFBDRIVER kicks is determined by the PLANE parameter on the corresponding TFBPICKUP element, and additionally by the LONGITUDINAL parameter, as described in Table 3
TFBPICKUP | TFBDRIVER | coordinate | note |
PLANE | LONGITUDINAL | kicked | |
x | 0 | x′ | |
x | 1 | δ | pickup should have η x≠0 |
y | 0 | y′ | |
y | 1 | δ | pickup should have ηy≠0 |
delta | 0 | - | invalid |
delta | 1 | δ | |
Note: The OUTPUT_FILE will produce a file with missing data at the end of the buffer if the OUTPUT_INTERVAL parameter is not a divisor of the number of passes.
The FREQUENCY and PHASE parameters may be used to specify the resonant frequency of the driving cavity and its phase relative to the center of the bunch. If the frequency is not specified, the kicker is assumed to kick all particles in a bunch by the same amount.
For longitudinal feedback only, a more sophicated approach is available using a circuit model developed by T. Berenc (APS) may be employed to simulate driving the cavity resonance. To invoke this, the user must provide the loaded Q of the cavity using the QLOADED parameter, the (Ra∕Q) using RAOVERQ, and the resonant frequency of the unloaded cavity using FREQUENCY. Optionally, the drive frequency may be specified using DRIVE_FREQUENCY; it defaults to the unloaded resonant frequency.
Typically one should choose the resonant frequency to be (n±)fb, where fb is the bunch frequency and n is an integer. This will ensure that the kick to one bunch from the residual voltage from the previous bunch (both beam-loading and generator terms), is approximately minimized. Checking the ResidualVoltage column in the output file to confirm this is advised.
In addition to the resonant and drive frequencies, one must specify a clock frequency with CLOCK_FREQUENCY and a clock offset with CLOCK_OFFSET. The clock used used to determine when the drive current changes, which happens at regular intervals. The clock offset is used to ensure that the change does not occur during passage of the bunch. If the clock offset is too small and the bunch length too long, this will happen and results in an error. The phase shift that results from the clock offset is automatically compensated.
Beam loading is not included in the model, but can be superimposed by inserting an RFMODE element with matching parameters.
See Section 7.2.14 of Handbook of Accelerator Physics and Engineering (Chao and Tigner, eds.) for a discussion of feedback systems.
TFBPICKUP