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, validProbe
public 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 Tracker
probe
- 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 IContextAware
load
in class Tracker
strPrimKeyVal
- 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 IArchive
load
in class Tracker
daptArchive
- 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 IArchive
save
in class Tracker
daptArchive
- 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