Package xal.model.alg

Class EnvelopeTracker

All Implemented Interfaces:
Remote, IAlgorithm, IArchive, IContextAware
Direct Known Subclasses:
ElsTracker, EnvelopeTrackerPmq, EnvelopeTrackerPmqDipole

public class EnvelopeTracker extends EnvelopeTrackerBase

Tracking algorithm for propagating EnvelopeProbe objects.

The EnvelopeProbe's state, which is a CovarianceMatrix object, is propagated using the linear optics portion for any beamline element (IElement exposing object) transfer map. The linear portion is represented as a matrix, thus, the state evolution is accomplished by transpose conjugation with this matrix.

The effects of space charge are also included in the dynamics calculations. Space charge effects are also represented with a matrix transpose conjugation, however, the matrix is computed using the values of the probe's correlation matrix. The result is a nonlinear effect. The space charge forces are computed using a linear fit to the fields generated by an ellipsoidal charge distribution with the same statistics described in the probe's correlation matrix. The linear fit is weighted by the beam distribution itself, so it is more accurate in regions of higher charged density. For a complete description see the reference below.

A defining feature of this algorithm object is that it uses a static step size when computing space charge kicks. Thus, the step size is bound from above by the lowest energy and greatest envelope excursion cases. The step size cannot be increased (say by an adaptive step sizing algorithm) to exploit reduced space charge effects after acceleration.

NOTES: CKA
· The default step size for space charge calculations is currently 4 mm. This may be overly conservative for most applications. Not only is this situation CPU intensive, but it creates a serious burden on memory resources with the amount of storage required by the probe trajectory object.

Author:
Christopher K. Allen, Craig McChesney
See Also:
  • Field Details

    • TYPE_ID

      public static final String TYPE_ID
      string type identifier for algorithm
    • VERSION

      public static final int VERSION
      current algorithm version
      See Also:
    • CLS_PROBE_TYPE

      public static final Class<EnvelopeProbe> CLS_PROBE_TYPE
      probe type recognized by this algorithm
  • Constructor Details

    • EnvelopeTracker

      public EnvelopeTracker()
      Creates a new instance of EnvelopeTracker
    • EnvelopeTracker

      protected EnvelopeTracker(String strType, int intVersion, Class<? extends IProbe> clsProbeType)
      Creates a new, empty, instance of EnvelopeTracker. This method is a protected constructor meant only for child classes.
      Parameters:
      strType - string type identifier of algorithm
      intVersion - version of algorithm
      clsProbeType - class object for probe handled by this algorithm.
    • EnvelopeTracker

      protected EnvelopeTracker(EnvelopeTracker sourceTracker)
      Copy constructor for EnvelopeTracker
      Parameters:
      sourceTracker - Tracker that is being copied
  • Method Details

    • copy

      public EnvelopeTracker copy()
      Creates a deep copy of EnvelopeTracker
    • doPropagation

      public void doPropagation(IProbe probe, IElement elem) throws ModelException
      Propagates the probe through the element.
      Specified by:
      doPropagation in class Tracker
      Parameters:
      probe - probe to propagate
      elem - element acting on probe
      Throws:
      ModelException - invalid probe type or error in advancing probe
      See Also:
    • advanceState

      protected void advanceState(IProbe ifcProbe, IElement iElem, double dblLen) throws ModelException
      Advances the probe state through a subsection of the element with the specified length. Applies a space charge kick at the end of the element subsection for any probe having nonzero beam current.
      Parameters:
      iElem - interface to the beam element
      ifcProbe - interface to the probe
      dblLen - length of element subsection to advance
      Throws:
      ModelException - bad element transfer matrix/corrupt probe state