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 Stringstatic final Stringstatic final Stringstatic final Stringall thick elements have length - CKAstatic final Stringstatic final Stringstring type identifier for all ThickDipole objectsFields inherited from class xal.model.elem.ThickElectromagnet
dblField, enmOrientFields inherited from class xal.model.elem.Element
dblNodeLen, dblNodePosFields inherited from interface xal.model.elem.sync.IElectromagnet
ORIENT_HOR, ORIENT_NONE, ORIENT_VERFields 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 TypeMethodDescriptiondoubleelapsedTime(IProbe probe, double dblLen) Returns the time taken for the probe to drift through part of the element.doubleenergyGain(IProbe probe, double dblLen) Return the energy gain imparted to a particular probe.doubleGet the horizontal misalignmentdoubleGet the vertical misalignmentdoubleGet the longitudinal misalignmentdoubledoubleGets the entrance angle of the beam into the dipole.doubleGets the exit angle of the beam into the dipole.doublegetFieldIndex(IProbe probe) get field index nQdoubledoublegetKQuad()Gets the quad. field index term = 1/B-rho * d B_y/dxdoublevoidprint(PrintWriter os) Dump current state and content to output stream.voidsetAlignX(double x) Set the horizontal misalignmentvoidsetAlignY(double y) Set the vertical misalignmentvoidsetAlignZ(double z) Set the longitudinal misalignmentvoidsetBendAngle(double ba) voidsetEntranceAngle(double dblAng) Sets the entrance angle of the beam into the dipole.voidsetExitAngle(double dblAng) Sets the entrance angle of the beam into the dipole.voidsetFieldIntegral(double fint) set the fringe field integral factorvoidsetFieldPathFlag(double ba) voidsetGapHeight(double gap) set the gap heightvoidsetKQuad(double k) Sets the quad. field index termvoidsetPathLength(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, setOrientationMethods inherited from class xal.model.elem.ThickElement
applyErrors, getLength, isFirstSubslice, isLastSubslice, longitudinalPhaseAdvance, setLengthMethods 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:ElementSet the horizontal misalignment -
setAlignY
public void setAlignY(double y) Description copied from class:ElementSet the vertical misalignment -
setAlignZ
public void setAlignZ(double z) Description copied from class:ElementSet the longitudinal misalignment -
getAlignX
public double getAlignX()Description copied from class:ElementGet the horizontal misalignment -
getAlignY
public double getAlignY()Description copied from class:ElementGet the vertical misalignment -
getAlignZ
public double getAlignZ()Description copied from class:ElementGet 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:
elapsedTimein interfaceIElement- Specified by:
elapsedTimein 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:
energyGainin interfaceIElement- Specified by:
energyGainin 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 quadrupoledblLenmeters in length.- Specified by:
transferMapin interfaceIElement- Specified by:
transferMapin 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.
-