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.
EnvelopeTrackerBase.EmitGrowthModel, EnvelopeTrackerBase.PhasePlane
Modifier and Type | Field and Description |
---|---|
static java.lang.Class<EnvelopeProbe> |
s_clsProbeType
probe type recognized by this algorithm
|
static int |
s_intVersion
current algorithm version
|
static java.lang.String |
s_strTypeId
string type identifier for algorithm
|
ATTR_EMITGROWTH, ATTR_SCHEFF, ATTR_STEPSIZE, ATTR_USESPACECHARGE, LABEL_OPTIONS, TBL_LBL_ENVBASETRACKER
ATTRTAG_DEBUG, ATTRTAG_RFGAP_PHASE, ATTRTAG_TYPE, ATTRTAG_UPDATE, ATTRTAG_VER, NODETAG_ALG, NODETAG_TRACKER, TBL_PRIM_KEY_NAME, UPDATE_ALWAYS, UPDATE_CUSTOM, UPDATE_ENTRANCE, UPDATE_ENTRANCEANDEXIT, UPDATE_EXIT
Modifier | Constructor and Description |
---|---|
|
EnvelopeTracker()
Creates a new instance of EnvelopeTracker
|
protected |
EnvelopeTracker(EnvelopeTracker sourceTracker)
Copy constructor for EnvelopeTracker
|
protected |
EnvelopeTracker(java.lang.String strType,
int intVersion,
java.lang.Class<? extends IProbe> clsProbeType)
Creates a new, empty, instance of EnvelopeTracker.
|
Modifier and Type | Method and Description |
---|---|
protected void |
advanceState(IProbe ifcProbe,
IElement iElem,
double dblLen)
Advances the probe state through a subsection of the element with the
specified length.
|
EnvelopeTracker |
copy()
Creates a deep copy of EnvelopeTracker
|
void |
doPropagation(IProbe probe,
IElement elem)
Propagates the probe through the element.
|
compEmitGrowthFunction, compLongFourierTransform, compScheffMatrix, compTransFourierTransform, correctLongSigmaPhaseSpread, correctSigmaPhaseSpread, correctTransFocusingPhaseSpread, correctTransSigmaPhaseSpread, effPhaseSpread, fourierLong1dGaussian, fourierLong1dUniform, fourierLong3dGaussian, fourierLong3dUniform, fourierLongTrace3d, fourierTrans1dGaussian, fourierTrans1dUniform, fourierTrans3dGaussian, fourierTrans3dUniform, fourierTransTrace3d, getEmitGrowthModel, getEmittanceGrowthFlag, getSpaceChargeFlag, getStepSize, load, load, modTransferMatrixForDisplError, modTransferMatrixForEmitGrowth, phaseSpread, save, setEmitGrowthModel, setEmittanceGrowth, setStepSize, setUseSpacecharge
advanceProbe, getDebugMode, getElemPosition, getProbeType, getProbeUpdatePolicy, getStartElementId, getStopElementId, getType, getVersion, initialize, isStopElementIncluded, newFromEditContext, newFromEditContext, newInstance, propagate, registerProbeType, retractProbe, setDebugMode, setElemPosition, setIncludeStopElement, setProbeUpdatePolicy, setRfGapPhaseCalculation, setStartElementId, setStopElementId, unsetStartElementId, unsetStopElementId, useRfGapPhaseCalculation, validElement, validProbe
public static final java.lang.String s_strTypeId
public static final int s_intVersion
public static final java.lang.Class<EnvelopeProbe> s_clsProbeType
public EnvelopeTracker()
protected EnvelopeTracker(java.lang.String strType, int intVersion, java.lang.Class<? extends IProbe> clsProbeType)
strType
- string type identifier of algorithmintVersion
- version of algorithmclsProbeType
- class object for probe handled by this algorithm.protected EnvelopeTracker(EnvelopeTracker sourceTracker)
sourceTracker
- Tracker that is being copiedpublic EnvelopeTracker copy()
public void doPropagation(IProbe probe, IElement elem) throws ModelException
doPropagation
in class Tracker
probe
- probe to propagateelem
- element acting on probeModelException
- invalid probe type or error in advancing probeTracker.validProbe(IProbe)
protected void advanceState(IProbe ifcProbe, IElement iElem, double dblLen) throws ModelException
iElem
- interface to the beam elementifcProbe
- interface to the probedblLen
- length of element subsection to advanceModelException
- bad element transfer matrix/corrupt probe state