Class Trace3dTracker
- All Implemented Interfaces:
Remote
,IAlgorithm
,IArchive
,IContextAware
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.
NOTES:
· Completed: Replace EllipsoidalCharge
with
BeamEllipsoid
.
· The default value for step size is 0.01 meters (1 cm).
- Author:
- Christopher K. Allen, Craig McChesney
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
label for maximum step size *static final Class<EnvelopeProbe>
probe type recognized by this algorithmstatic final String
data node label for EnvelopeTracker settingsstatic final String
string type identifier for algorithmstatic final int
current algorithm versionFields 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
ConstructorsConstructorDescriptionCreates a new instance of EnvelopeTrackerTrace3dTracker
(Trace3dTracker copy) Copy constructor for Trace3dTracker -
Method Summary
Modifier and TypeMethodDescriptionprotected void
advanceState
(IProbe ifcProbe, IElement ifcElem, double dblLen) Advances the probe state through a subsection of the element with the specified length.copy()
Creates a deep copy of Trace3dTrackervoid
doPropagation
(IProbe probe, IElement elem) Propagates the probe through the element.double
Returns the maximum element subsection length (in meters) that the probe may be advanced before applying a space charge kick.void
load
(String strPrimKeyVal, EditContext ecTableData) Load the parameters of thisIAlgorithm
object from the table data in the givenEditContext
.void
load
(DataAdaptor daptArchive) Load the parameters of the algorithm from a data source exposing theIArchive
interface.void
save
(DataAdaptor daptArchive) Save the state and settings of this algorithm to a data source exposing theDataAdaptor
interface.void
setStepSize
(double dblStepSize) Sets the value of the integration step size to the given value.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
-
LABEL_OPTIONS
data node label for EnvelopeTracker settings- See Also:
-
ATTR_STEPSIZE
label for maximum step size *- See Also:
-
TYPE_ID
string type identifier for algorithm- See Also:
-
VERSION
public static final int VERSIONcurrent algorithm version- See Also:
-
CLS_PROBE_TYPE
probe type recognized by this algorithm
-
-
Constructor Details
-
Trace3dTracker
public Trace3dTracker()Creates a new instance of EnvelopeTracker -
Trace3dTracker
Copy constructor for Trace3dTracker- Parameters:
copy
- Tracker that is being copied
-
-
Method Details
-
copy
Creates a deep copy of Trace3dTracker -
setStepSize
public void setStepSize(double dblStepSize) Sets the value of the integration step size to the given value.- Parameters:
dblStepSize
- new step length for propagating probes- Since:
- Oct 25, 2012
-
getStepSize
public double getStepSize()Returns the maximum element subsection length (in meters) that the probe may be advanced before applying a space charge kick.- Returns:
- maximum step size for numerical integration
-
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:
-
load
Load the parameters of thisIAlgorithm
object from the table data in the givenEditContext
. 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.- Specified by:
load
in interfaceIContextAware
- Overrides:
load
in classTracker
- Parameters:
strPrimKeyVal
- primary key value specifying the name of the data recordecTableData
- EditContext containing table data- Throws:
DataFormatException
- bad data format - error in reading- See Also:
-
load
Load the parameters of the algorithm from a data source exposing theIArchive
interface. The superclassload
method is called first, then the properties particular toEnvTrackerAdapt
are loaded. -
save
Save the state and settings of this algorithm to a data source exposing theDataAdaptor
interface. Subclasses should override this method to store the data particular to there own operation. -
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:
ifcElem
- interface to the beam elementifcProbe
- interface to the probedblLen
- length of element subsection to advance through- Throws:
ModelException
- bad element transfer matrix/corrupt probe state
-