public class Trace3dTracker extends Tracker
Tracking algorithm for EnvelopeProbe's. The EnvelopeProbe's
state, which is a CovarianceMatrix object, is advanced using the linear
dynamics portion of any beamline element (IElement exposing object) transfer
map. The linear portion is represented as a matrix, thus, the state advance is accomplished
with a 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 computation 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.
This is a basic algorithm for envelope propagation, almost exact to that used in Trace3D.
There is no emittance growth mechanism for RF gaps, however. It was used for direct comparison
of results from Trace3D and the XAL online model. All the functionality of this class
is contained in EnvelopeTracker so it is no longer supported. However, I am not
deprecated this class since it can be used as a light-weight substitute.
EllipsoidalCharge with BeamEllipsoid.
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
ATTR_STEPSIZE
label for maximum step size
|
static java.lang.String |
LABEL_OPTIONS
data node label for EnvelopeTracker settings
|
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
|
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| Constructor and Description |
|---|
Trace3dTracker()
Creates a new instance of EnvelopeTracker
|
Trace3dTracker(Trace3dTracker copy)
Copy constructor for Trace3dTracker
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
advanceState(IProbe ifcProbe,
IElement ifcElem,
double dblLen)
Advances the probe state through a subsection of the element with the
specified length.
|
Trace3dTracker |
copy()
Creates a deep copy of Trace3dTracker
|
void |
doPropagation(IProbe probe,
IElement elem)
Propagates the probe through the element.
|
double |
getStepSize()
Returns the maximum element subsection length (in meters) that the probe
may be advanced before applying a space charge kick.
|
void |
load(DataAdaptor daptArchive)
Load the parameters of the algorithm from a data source exposing the
IArchive interface. |
void |
load(java.lang.String strPrimKeyVal,
EditContext ecTableData)
Load the parameters of this
IAlgorithm object from the
table data in the given EditContext. |
void |
save(DataAdaptor daptArchive)
Save the state and settings of this algorithm to a data source
exposing the
DataAdaptor interface. |
void |
setStepSize(double dblStepSize)
Sets the value of the integration step size to the given value.
|
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, validProbepublic static final java.lang.String LABEL_OPTIONS
public static final java.lang.String ATTR_STEPSIZE
public static final java.lang.String s_strTypeId
public static final int s_intVersion
public static final java.lang.Class<EnvelopeProbe> s_clsProbeType
public Trace3dTracker()
public Trace3dTracker(Trace3dTracker copy)
sourceTracker - Tracker that is being copiedpublic Trace3dTracker copy()
public void setStepSize(double dblStepSize)
dblStepSize - new step length for propagating probespublic double getStepSize()
public void doPropagation(IProbe probe, IElement elem) throws ModelException
doPropagation in class Trackerprobe - probe to propagateelem - element acting on probeModelException - invalid probe type or error in advancing probeTracker.validProbe(IProbe)public void load(java.lang.String strPrimKeyVal,
EditContext ecTableData)
throws DataFormatException
IAlgorithm object from the
table data in the given EditContext.
Here we load only the parameters specific to the base class. It is expected
that Subclasses should override this method to recover the data particular
to there own operation.load in interface IContextAwareload in class TrackerstrPrimKeyVal - primary key value specifying the name of the data recordecTableData - EditContext containing table dataDataFormatException - bad data format - error in readingIContextAware.load(String, xal.tools.data.EditContext)public void load(DataAdaptor daptArchive)
IArchive interface.
The superclass load method is called first, then the properties
particular to EnvTrackerAdapt are loaded.load in interface IArchiveload in class TrackerdaptArchive - data source containing algorithm configurationIArchive.load(xal.tools.data.DataAdaptor)public void save(DataAdaptor daptArchive)
DataAdaptor interface. Subclasses should
override this method to store the data particular to there own
operation.save in interface IArchivesave in class TrackerdaptArchive - data source to receive algorithm configurationIArchive.save(xal.tools.data.DataAdaptor)protected void advanceState(IProbe ifcProbe, IElement ifcElem, double dblLen) throws ModelException
ifcElem - interface to the beam elementifcProbe - interface to the probedblLen - length of element subsection to advance throughModelException - bad element transfer matrix/corrupt probe state