In some tracking codes, there is a ``fiducial particle'' that is assumed to travel along the ideal trajectory or orbit, with the ideal momentum, and at the ideal phase. There is no fiducial particle in elegant. Instead, elements are fiducialized in elegant. Fiducializing an element means determining the momentum and arrival time (or phase) of the reference particle. This is particularly important in simulations of linacs.
If the reference momentum does not change and no time-dependent elements
are involved, then fiducialization is irrelevant. All elements are
fiducialized at the central momentum defined in run_setup
.
A number of commands have parameters for controlling fiducialization:
always_change_p0
parameter of run_setup
causes
elegant
to re-establish the central momentum after each
element when fiducializing. This may be more convenient than
setting the CHANGE_P0
parameter on the elements themselves.
However, it can have unexpected consequences, such as changing the
central momentum to match changes in beam momentum due to synchrotron
radiation.
run_control
has three parameters that affect fiducialization,
which come into play when multi-step runs are made. Typically, these
are runs that involve variation of elements, addition of errors,
or loading of multiple sets of parameters.
reset_rf_for_each_step
-- If nonzero, the rf phases are
re-established
for each beam tracked. If this is 1 (the default),
the time reference is discarded after each bunch is tracked.
This means that bunch-to-bunch phasing errors due to time-of-flight
differences would be lost.
first_is_fiducial
-- The first bunch seen is taken to
establish the fiducial phases and momentum profile. If one is simulating,
for example, successive beams in a fixed accelerator, this should be set
to 1. Otherwise, the momentum reference is discarded after each bunch
is tracked.
restrict_fiducialization
-- If nonzero, then momentum profile
fiducialization occurs only after elements that are known to possibily
change the momentum. It would not occur, for example, after a scraper that
changes the average beam momentum by removing a low-momentum tail.
bunched_beam
command has a first_is_fiducial
parameter
that is convenient for use with the first_is_fiducial
mode
established by run_control
. If nonzero, this parameter causes
elegant
to generate a first bunch with only one particle.
This is very useful if one wants to track with many particles but doesn't
want to waste time fidicializing with a many-particle bunch.