Class EnvelopeTracker
- All Implemented Interfaces:
Remote
,IAlgorithm
,IArchive
,IContextAware
- Direct Known Subclasses:
ElsTracker
,EnvelopeTrackerPmq
,EnvelopeTrackerPmqDipole
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:
-
Nested Class Summary
Nested classes/interfaces inherited from class xal.model.alg.EnvelopeTrackerBase
EnvelopeTrackerBase.EmitGrowthModel, EnvelopeTrackerBase.PhasePlane
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Class<EnvelopeProbe>
probe type recognized by this algorithmstatic final String
string type identifier for algorithmstatic final int
current algorithm versionFields inherited from class xal.model.alg.EnvelopeTrackerBase
ATTR_EMITGROWTH, ATTR_SCHEFF, ATTR_STEPSIZE, ATTR_USEDCBEAM, ATTR_USESPACECHARGE, LABEL_OPTIONS, TBL_LBL_ENVBASETRACKER
Fields inherited from class xal.model.alg.Tracker
ATTRTAG_DEBUG, ATTRTAG_RFGAP_PHASE, ATTRTAG_TYPE, ATTRTAG_UPDATE, ATTRTAG_VER, NODETAG_ALG, NODETAG_TRACKER, TBL_LBL_ALGORITHM, TBL_PRIM_KEY_NAME, UPDATE_ALWAYS, UPDATE_CUSTOM, UPDATE_ENTRANCE, UPDATE_ENTRANCEANDEXIT, UPDATE_EXIT
-
Constructor Summary
ConstructorsModifierConstructorDescriptionCreates a new instance of EnvelopeTrackerprotected
EnvelopeTracker
(String strType, int intVersion, Class<? extends IProbe> clsProbeType) Creates a new, empty, instance of EnvelopeTracker.protected
EnvelopeTracker
(EnvelopeTracker sourceTracker) Copy constructor for EnvelopeTracker -
Method Summary
Modifier and TypeMethodDescriptionprotected void
advanceState
(IProbe ifcProbe, IElement iElem, double dblLen) Advances the probe state through a subsection of the element with the specified length.copy()
Creates a deep copy of EnvelopeTrackervoid
doPropagation
(IProbe probe, IElement elem) Propagates the probe through the element.Methods inherited from class xal.model.alg.EnvelopeTrackerBase
compEmitGrowthFunction, compLongFourierTransform, compScheffMatrix, compTransFourierTransform, correctLongSigmaPhaseSpread, correctSigmaPhaseSpread, correctTransFocusingPhaseSpread, correctTransSigmaPhaseSpread, effPhaseSpread, fourierLong1dGaussian, fourierLong1dUniform, fourierLong3dGaussian, fourierLong3dUniform, fourierLongTrace3d, fourierTrans1dGaussian, fourierTrans1dUniform, fourierTrans3dGaussian, fourierTrans3dUniform, fourierTransTrace3d, getEmitGrowthModel, getEmittanceGrowth, getEmittanceGrowthFlag, getSpaceChargeFlag, getStepSize, getUseDCBeam, getUseSpacecharge, load, load, modTransferMatrixForEmitGrowth, phaseSpread, save, setEmitGrowthModel, setEmittanceGrowth, setStepSize, setUseDCBeam, setUseSpacecharge
Methods inherited from class xal.model.alg.Tracker
advanceProbe, getDebugMode, getElemPosition, getProbeType, getProbeUpdatePolicy, getRfGapPhaseCalculation, getStartElementId, getStopElementId, getType, getVersion, initialize, isStopElementIncluded, newFromEditContext, newFromEditContext, newInstance, propagate, registerProbeType, retractProbe, setDebugMode, setElemPosition, setIncludeStopElement, setProbeUpdatePolicy, setRfGapPhaseCalculation, setStartElementId, setStopElementId, unsetStartElementId, unsetStopElementId, validElement, validProbe
-
Field Details
-
TYPE_ID
string type identifier for algorithm -
VERSION
public static final int VERSIONcurrent algorithm version- See Also:
-
CLS_PROBE_TYPE
probe type recognized by this algorithm
-
-
Constructor Details
-
EnvelopeTracker
public EnvelopeTracker()Creates a new instance of EnvelopeTracker -
EnvelopeTracker
Creates a new, empty, instance of EnvelopeTracker. This method is a protected constructor meant only for child classes.- Parameters:
strType
- string type identifier of algorithmintVersion
- version of algorithmclsProbeType
- class object for probe handled by this algorithm.
-
EnvelopeTracker
Copy constructor for EnvelopeTracker- Parameters:
sourceTracker
- Tracker that is being copied
-
-
Method Details
-
copy
Creates a deep copy of EnvelopeTracker -
doPropagation
Propagates the probe through the element.- Specified by:
doPropagation
in classTracker
- Parameters:
probe
- probe to propagateelem
- element acting on probe- Throws:
ModelException
- invalid probe type or error in advancing probe- See Also:
-
advanceState
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 elementifcProbe
- interface to the probedblLen
- length of element subsection to advance- Throws:
ModelException
- bad element transfer matrix/corrupt probe state
-