Package xal.model.elem
Class ThickDipole
java.lang.Object
xal.model.elem.Element
xal.model.elem.ThickElement
xal.model.elem.ThickElectromagnet
xal.model.elem.ThickDipole
- All Implemented Interfaces:
IElectromagnet
,IComponent
,IElement
Represents a thick magnetic dipole magnet for a beam transport/accelerator
system.
NOTE: - !!! Bending is assumed to be horizontal for now !!!!
It has provisions for a general wedge magnet, with arbitrary entrance / exit
angles. The MAD convention for sector magnets is followed for coordinates,
signs, and lengths. The formulation from D. Carey's Optics book + Transport
manual are used.
TODO - Add "tilt" angle of the dipole, and add charge of the probe to get the
right bend radius.
- Author:
- jdg
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
all thick elements have length - CKAstatic final String
static final String
string type identifier for all ThickDipole objectsFields inherited from class xal.model.elem.ThickElectromagnet
dblField, enmOrient
Fields inherited from class xal.model.elem.Element
dblNodeLen, dblNodePos
Fields inherited from interface xal.model.elem.sync.IElectromagnet
ORIENT_HOR, ORIENT_NONE, ORIENT_VER
Fields inherited from interface xal.model.IElement
LIGHT_SPEED, PERMEABILITY, PERMITTIVITY, UNIT_CHARGE
-
Constructor Summary
ConstructorsConstructorDescriptionJavaBean constructor - creates a new uninitialized instance of ThickDipole * This is the constructor called in automatic lattice generation.ThickDipole
(String strId, double fld, double len, double entAng, double exitAng, double gap, double fInt) Creates a new instance of ThickDipole -
Method Summary
Modifier and TypeMethodDescriptiondouble
elapsedTime
(IProbe probe, double dblLen) Returns the time taken for the probe to drift through part of the element.double
energyGain
(IProbe probe, double dblLen) Return the energy gain imparted to a particular probe.double
Get the horizontal misalignmentdouble
Get the vertical misalignmentdouble
Get the longitudinal misalignmentdouble
double
Gets the entrance angle of the beam into the dipole.double
Gets the exit angle of the beam into the dipole.double
getFieldIndex
(IProbe probe) get field index nQdouble
double
getKQuad()
Gets the quad. field index term = 1/B-rho * d B_y/dxdouble
void
print
(PrintWriter os) Dump current state and content to output stream.void
setAlignX
(double x) Set the horizontal misalignmentvoid
setAlignY
(double y) Set the vertical misalignmentvoid
setAlignZ
(double z) Set the longitudinal misalignmentvoid
setBendAngle
(double ba) void
setEntranceAngle
(double dblAng) Sets the entrance angle of the beam into the dipole.void
setExitAngle
(double dblAng) Sets the entrance angle of the beam into the dipole.void
setFieldIntegral
(double fint) set the fringe field integral factorvoid
setFieldPathFlag
(double ba) void
setGapHeight
(double gap) set the gap heightvoid
setKQuad
(double k) Sets the quad. field index termvoid
setPathLength
(double pl) transferMap
(IProbe probe, double dL) Compute the partial transfer map of an ideal quadrupole for the particular probe.Methods inherited from class xal.model.elem.ThickElectromagnet
getMagField, getOrientation, initializeFrom, setMagField, setOrientation
Methods inherited from class xal.model.elem.ThickElement
applyErrors, getLength, isFirstSubslice, isLastSubslice, longitudinalPhaseAdvance, setLength
Methods inherited from class xal.model.elem.Element
addCloseElements, backPropagate, backPropagate, compDriftingTime, compProbeLocation, getCloseElements, getHardwareNodeId, getId, getLatticePosition, getNodeLen, getNodePos, getParent, getPhiX, getPhiY, getPhiZ, getPosition, getType, getUID, propagate, propagate, setAlign, setHardwareNodeId, setId, setParent, setPhiX, setPhiY, setPhiZ, setPosition, toString
-
Field Details
-
TYPE
string type identifier for all ThickDipole objects- See Also:
-
PATH_LENGTH
all thick elements have length - CKA- See Also:
-
FIELD
- See Also:
-
ENTRANCE_ANGLE
- See Also:
-
EXIT_ANGLE
- See Also:
-
QUAD_COMPONENT
- See Also:
-
-
Constructor Details
-
ThickDipole
public ThickDipole(String strId, double fld, double len, double entAng, double exitAng, double gap, double fInt) Creates a new instance of ThickDipole- Parameters:
strId
- identifier for this ThickDipole objectfld
- field gradient strength (in Tesla)len
- pathLength of the dipole (in m)entAng
- entrance angle of the dipole (in rad)exitAng
- exit angle of the dipole (in rad)gap
- full pole gap of the dipole (in m)fInt
- The dimensionless integral term for the extended fringe field focsing, Should be = 1/6 for linear drop off, ~ 0.4 for clamped Rogowski coil, or 0.7 for an unclamped Rogowski coil. (dimensionless)
-
ThickDipole
public ThickDipole()JavaBean constructor - creates a new uninitialized instance of ThickDipole * This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction. BE CAREFUL
-
-
Method Details
-
setAlignX
public void setAlignX(double x) Description copied from class:Element
Set the horizontal misalignment -
setAlignY
public void setAlignY(double y) Description copied from class:Element
Set the vertical misalignment -
setAlignZ
public void setAlignZ(double z) Description copied from class:Element
Set the longitudinal misalignment -
getAlignX
public double getAlignX()Description copied from class:Element
Get the horizontal misalignment -
getAlignY
public double getAlignY()Description copied from class:Element
Get the vertical misalignment -
getAlignZ
public double getAlignZ()Description copied from class:Element
Get the longitudinal misalignment -
setPathLength
public void setPathLength(double pl) -
setBendAngle
public void setBendAngle(double ba) -
setFieldPathFlag
public void setFieldPathFlag(double ba) -
getPathLength
public double getPathLength() -
getBendAngle
public double getBendAngle() -
getFieldPathFlag
public double getFieldPathFlag() -
setEntranceAngle
public void setEntranceAngle(double dblAng) Sets the entrance angle of the beam into the dipole.- Parameters:
dblAng
- entrance angle in radians
-
getEntranceAngle
public double getEntranceAngle()Gets the entrance angle of the beam into the dipole. -
setExitAngle
public void setExitAngle(double dblAng) Sets the entrance angle of the beam into the dipole.- Parameters:
dblAng
- exit angle in radians
-
getExitAngle
public double getExitAngle()Gets the exit angle of the beam into the dipole. -
setKQuad
public void setKQuad(double k) Sets the quad. field index term- Parameters:
k
- = 1/B-rho) * d B_y/dx
-
getKQuad
public double getKQuad()Gets the quad. field index term = 1/B-rho * d B_y/dx -
elapsedTime
Returns the time taken for the probe to drift through part of the element.- Specified by:
elapsedTime
in interfaceIElement
- Specified by:
elapsedTime
in classThickElement
- Parameters:
probe
- propagating probedblLen
- length of subsection to propagate through meters- Returns:
- the elapsed time through sectionUnits: seconds
-
energyGain
Return the energy gain imparted to a particular probe. For an ideal quadrupole magnet this value is always zero.- Specified by:
energyGain
in interfaceIElement
- Specified by:
energyGain
in classThickElement
- Parameters:
dblLen
- dummy argumentprobe
- dummy argument- Returns:
- returns a zero value
-
setFieldIntegral
public void setFieldIntegral(double fint) set the fringe field integral factor- Parameters:
fint
- the field integral a la MAD = 1/6 for linear drop off = 0.4 for clamped Rogowski coil = 0.7 for unclamped Rogowski coil = 0.45 for square edge - non saturating magnet
-
setGapHeight
public void setGapHeight(double gap) set the gap height- Parameters:
gap
- = full gap height (m)
-
getFieldIndex
get field index nQ -
transferMap
Compute the partial transfer map of an ideal quadrupole for the particular probe. Computes transfer map for a section of quadrupoledblLen
meters in length.- Specified by:
transferMap
in interfaceIElement
- Specified by:
transferMap
in classThickElement
- Parameters:
dL
- compute transfer matrix for section of this path lengthprobe
- uses the rest and kinetic energy parameters from the probe- Returns:
- transfer map of ideal quadrupole for particular probe
- Throws:
ModelException
- unknown quadrupole orientation- See Also:
-
print
Dump current state and content to output stream.
-