Class IdealMagSectorDipole
- All Implemented Interfaces:
IElectromagnet,IComponent,IElement
Represents a bending magnetic dipole magnet for a beam in a sector configuration. Thus, there are no edge effects as the beam enters the magnet orthogonally.
The MAD convention for sector magnets is followed for coordinates, signs, and lengths. The formulation from D. Carey's Optics book, Transport manual, and H. Wiedemann's books are used.
NOTES:
Both the dipole effects and the quadrupole (focusing) effects vary off the
design values with differing magnetic field strengths. This situation is in
contrast with the previous version of this class where only the quadrupole
effects varied, and in contract with the class ThickDipole where
only the dipole effects varied.
References
[1] D.C. Carey, The Optics of Charged Particle Beams (Harwood, 1987)[2] H. Wiedemann, Particle Accelerator Physics I, 2nd Ed. (Springer, 1999)
- Author:
- John D. Galambos, Jeff Holmes, Christopher K. Allen
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringTag for parameters in the XML configuration filestatic final StringTag for parameters in the XML configuration filestatic final StringTag for parameters in the XML configuration filestatic final Stringall thick elements have length - CKAstatic final StringTag for parameters in the XML configuration filestatic final Stringstring type identifier for all IdealMagSectorDipole 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
ConstructorsConstructorDescriptionDefault constructor - creates a new uninitialized instance of IdealMagSectorDipole.IdealMagSectorDipole(String strId) Default constructor - creates a new uninitialized instance of IdealMagSectorDipole.IdealMagSectorDipole(String strId, double dblLen, int enmOrient, double dblFld, double dblGap, double dblFldInd) Creates a new instance of IdealMagSectorDipole -
Method Summary
Modifier and TypeMethodDescriptiondoubleCompute and return the bending radius of the design orbit throught the magnet.doublecompProbeCurvature(IProbe probe) Compute the path curvature within the dipole for the given probe.doubleelapsedTime(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.doubleReturn the bending angle of the magnet's design trajectory.doubleReturn the path length of the design trajectory through the magnet.doubleReturn the magnetic field index of the magnet evaluated at the design orbit.doubleReturn the field path flag.doubleReturn the gap size between the dipole magnet poles.doublegetK0()This is the design bending curvature h = 1/R0 where R0 is the design bending radius.doubleReturns the quadrupole field component of the bending magnet.voidprint(PrintWriter os) Dump current state and content to output stream.voidsetDesignBendAngle(double dblBendAng) Set the bending angle of the reference (design) orbit.voidsetDesignPathLength(double dblPathLen) Set the reference (design) orbit path-length through the magnet.voidsetFieldIndex(double dblFldInd) Set the magnetic field index of the magnet evaluated at the design orbit.voidsetFieldPathFlag(double ba) sako to set field path flagvoidsetGapHeight(double dblGap) Set the gap size between the dipole magnet poles.voidsetK0(double dbl) Set the design curvature h of the bending magnet.voidsetQuadComponent(double dbl) quad K1 component defined in SAD (=normal k1 * L)transferMap(IProbe probe, double dblLen) Compute the partial transfer map of an ideal sector magnet 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, getAlignX, getAlignY, getAlignZ, getCloseElements, getHardwareNodeId, getId, getLatticePosition, getNodeLen, getNodePos, getParent, getPhiX, getPhiY, getPhiZ, getPosition, getType, getUID, propagate, propagate, setAlign, setAlignX, setAlignY, setAlignZ, setHardwareNodeId, setId, setParent, setPhiX, setPhiY, setPhiZ, setPosition, toString
-
Field Details
-
TYPE
string type identifier for all IdealMagSectorDipole objects- See Also:
-
PATH_LENGTH
all thick elements have length - CKA- See Also:
-
FIELD
Tag for parameters in the XML configuration file- See Also:
-
ENTRANCE_ANGLE
Tag for parameters in the XML configuration file- See Also:
-
EXIT_ANGLE
Tag for parameters in the XML configuration file- See Also:
-
QUAD_COMPONENT
Tag for parameters in the XML configuration file- See Also:
-
-
Constructor Details
-
IdealMagSectorDipole
public IdealMagSectorDipole()Default constructor - creates a new uninitialized instance of IdealMagSectorDipole. This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction. -
IdealMagSectorDipole
Default constructor - creates a new uninitialized instance of IdealMagSectorDipole. This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction.- Parameters:
strId-
-
IdealMagSectorDipole
public IdealMagSectorDipole(String strId, double dblLen, int enmOrient, double dblFld, double dblGap, double dblFldInd) Creates a new instance of IdealMagSectorDipole- Parameters:
strId- identifier for this IdealMagSectorDipole objectdblFld- field gradient strength (in Tesla)enmOrient-dblLen- pathLength of the dipole (in m)dblGap- full pole gap of the dipole (in m)dblFldInd- The dimensionless integral term for the extended fringe field focusing, Should be = 1/6 for linear drop off, ~ 0.4 for clamped Rogowski coil, or 0.7 for an unclamped Rogowski coil. (dimensionless)
-
-
Method Details
-
getK0
public double getK0()This is the design bending curvature h = 1/R0 where R0 is the design bending radius.- Returns:
- the design curvature of the bending magnet
- Since:
- Apr 19, 2011
-
setK0
public void setK0(double dbl) Set the design curvature h of the bending magnet.- Parameters:
dbl- design curvature h = 1/R0 where R0 is the design path radius.- Since:
- Apr 19, 2011
-
setFieldIndex
public void setFieldIndex(double dblFldInd) Set the magnetic field index of the magnet evaluated at the design orbit. The field index is defined as n := -(R0/B0)(dB/dR) where R0 is the radius of the design orbit, B0 is the field at the design orbit (@see IdealMagSectorDipole#getField), and dB/dR is the derivative of the field with respect to the path deflection - evaluated at the design radius R0.- Parameters:
dblFldInd- field index of the magnet (unitless)
-
setQuadComponent
public void setQuadComponent(double dbl) quad K1 component defined in SAD (=normal k1 * L)- Parameters:
dbl-
-
setGapHeight
public void setGapHeight(double dblGap) Set the gap size between the dipole magnet poles.- Parameters:
dblGap- gap size in meters
-
setDesignPathLength
public void setDesignPathLength(double dblPathLen) Set the reference (design) orbit path-length through the magnet.- Parameters:
dblPathLen- path length of design trajectory (meters)
-
setDesignBendAngle
public void setDesignBendAngle(double dblBendAng) Set the bending angle of the reference (design) orbit.- Parameters:
dblBendAng- design trajectory bending angle (radians)
-
setFieldPathFlag
public void setFieldPathFlag(double ba) sako to set field path flag- Parameters:
ba-
-
getFieldIndex
public double getFieldIndex()Return the magnetic field index of the magnet evaluated at the design orbit. The field index is defined as n := -(R0/B0)(dB/dR) where R0 is the radius of the design orbit, B0 is the field at the design orbit (@see IdealMagSectorDipole#getField), and dB/dR is the derivative of the field with respect to the path deflection - evaluated at the design radius R0.- Returns:
- field index of the magnet at the design orbit (unitless)
-
getQuadComponent
public double getQuadComponent()Returns the quadrupole field component of the bending magnet.- Returns:
- quadrupole field component of this magnet
-
getGapHeight
public double getGapHeight()Return the gap size between the dipole magnet poles.- Returns:
- gap size in meters
-
getDesignPathLength
public double getDesignPathLength()Return the path length of the design trajectory through the magnet.- Returns:
- design trajectory path length (in meters)
-
getDesignBendingAngle
public double getDesignBendingAngle()Return the bending angle of the magnet's design trajectory.- Returns:
- design trajectory bending angle (in radians)
-
getFieldPathFlag
public double getFieldPathFlag()Return the field path flag.- Returns:
- field path flag = 1 (use design field) or 0 (use bField parameter)
-
compDesignBendingRadius
public double compDesignBendingRadius()Compute and return the bending radius of the design orbit throught the magnet. Note that this value is the inverse of design curvature h0.- Returns:
- the design bending radius R0 (in meters)
- See Also:
-
IdealMagSectorDipole#compDesignCurvature()
-
compProbeCurvature
Compute the path curvature within the dipole for the given probe. The path curvature is 1/R where R is the bending radius of the dipole (radius of curvature). Note that for zero fields the radius of curvature is infinite while the path curvature is zero.- Parameters:
probe- probe object to be deflected- Returns:
- dipole path curvature for given probe (in 1/meters)
-
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 section
Units: 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
-
transferMap
Compute the partial transfer map of an ideal sector magnet for the particular probe. Computes transfer map for a section of magnet
NOTEhmeters in length.The arc length dL of the probe will probably be larger than the physical step length h. This is because the path length of the design trajectory is generally larger than the physical length (otherwise no bending would occur).
- Specified by:
transferMapin interfaceIElement- Specified by:
transferMapin classThickElement- Parameters:
dblLen- physical step length (meters)probe- uses the rest and kinetic energy parameters from the probe- Returns:
- transfer map of ideal sector magnet for particular probe
- Throws:
ModelException- unknown quadrupole orientation- See Also:
-
print
Dump current state and content to output stream.
-