public abstract class ThickElement extends Element
Base class for all modeling elements having a finite length. As such, space charge will affect probes propagation through these elements.
The transfer matrix that is stored in the parent element is actually the incremental transfer matrix of the full element. Thus, derived classes should implement the method subTransferMatrix() that returns the nSecs root of the full transfer matrix. Deriving beamline elements from this class allows space charge kicks to be applied at nSecs equally spaced locations throughout the element.
LightSpeed, Permeability, Permittivity, UnitCharge
Constructor and Description |
---|
ThickElement(java.lang.String strType)
Default constructor to be used by automatic lattice generation.
|
ThickElement(java.lang.String strType,
java.lang.String strId)
Default constructor to be used by automatic lattice generation.
|
ThickElement(java.lang.String strType,
java.lang.String strId,
double dblLen)
Creates a new instance of ThickElement
|
Modifier and Type | Method and Description |
---|---|
abstract double |
energyGain(IProbe probe,
double dblLen)
Return the energy gain of the beamline element over a subsection of the
specified length.
|
double |
getLength()
Return the total length of this element
|
void |
initializeFrom(LatticeElement latticeElement)
Conversion method to be provided by the user
|
void |
setLength(double dblLen)
Set the length of the element.
|
abstract PhaseMap |
transferMap(IProbe probe,
double dblLen)
Compute the transfer map for a subsection of this element whose length
is dblLen.
|
addCloseElements, applyAlignError, backPropagate, backPropagate, compDriftingTime, compProbeLocation, elapsedTime, getAlignX, getAlignY, getAlignZ, getCloseElements, getHardwareNodeId, getId, getPosition, getType, getUID, print, propagate, propagate, setAlign, setAlignX, setAlignY, setAlignZ, setHardwareNodeId, setId, setPosition, toString
public ThickElement(java.lang.String strType)
strType
- the string type-identifier of the element typepublic ThickElement(java.lang.String strType, java.lang.String strId)
strType
- the string type-identifier of the element typestrId
- the string identifier of the element instancepublic ThickElement(java.lang.String strType, java.lang.String strId, double dblLen)
strType
- string type identifier for the elementstrId
- string instance identifier for this elementdblLen
- total length of the element (in meters)public void initializeFrom(LatticeElement latticeElement)
initializeFrom
in interface IComponent
initializeFrom
in class Element
latticeElement
- the SMF node to convertpublic void setLength(double dblLen)
dblLen
- lenght of element (in meters)public double getLength()
getLength
in interface IComponent
getLength
in class Element
public abstract double energyGain(IProbe probe, double dblLen)
energyGain
in interface IElement
energyGain
in class Element
probe
- probe for which energy gain is to be determineddblLen
- subsection length to calculate energyGain forpublic abstract PhaseMap transferMap(IProbe probe, double dblLen) throws ModelException
Compute the transfer map for a subsection of this element whose length is dblLen. If dblLen is greater than or equal to the element's length, return the transfer map for the full element. Note that this may not be very useful for an element with differential acceleration.
transferMap
in interface IElement
transferMap
in class Element
probe
- probe supplying parameters for the transfer matrix calculationdblLen
- length of element subsection to compute transfer map forModelException
- exception occurred in subTransferMap() methodIElement.transferMap(IProbe,double)