Class IdealMagSkewQuad3
- All Implemented Interfaces:
IElectromagnet
,IComponent
,IElement
Represents a "skewed" ideal quadrupole magnet. Such a device is a quadrupole
magnet which is rolled about the beam axis by 45°. It is a corrective
device which is meant to be driven with a bipolar supply. Thus, the sign of
the magnetic field parameter (see
ThickElectromagnet.setMagField(double)
) can be either positive or
negative
Looking down the beam axis toward a "skew quadrupole", a positive "skew" angle means the element is rotated clockwise by 45°. (This convention is consistent with the Tait-Bryan angles of aerospace engineering.)
Note that the action of a rotated element on phase space is also a rotation
of the beam coordinates, but in the opposing direction.
Thus, if this element is to be represented simply as a rotated
IdealMagQuad
element, then the coordinate rotation angles should
negative that of the elements rotation angles.
With respect to the IdealMagQuad
class, this class has one less
parameter, the setOrientation()
parameter. This condition
results from the fact that skew quadrupole hardware objects can be driven in
either direction (i.e., they have bipolar power supplies). Thus, the skew
angle for any IdealMagSkewQuad3
object is always the same.
Driving the device with a negative supply (see
ThickElectromagnet.setMagField(double)
) in effect changes its
"orientation."
Specifically,
- A (+45°) skew quadrupole driven with a positive field focuses in the 2nd and 4th quadrants. |
- A (+45°) skew quadrupole driven with a negative field focuses in the 1st and 3rd quadrants. |
NOTES:
- Since:
- Mar 13, 2008
- Author:
- Christopher K. Allen
- See Also:
-
xal.model.elem#IdealMagQuad
xal.model.elem#CoordinateRotation
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final double
The roll angle defining the skew (in radians)static final int
orientation of the internalIdealMagQuad
objectstatic final String
string type identifier for all IdealMagSectorDipole 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
ConstructorsConstructorDescriptionCreate new, uninitializedIdealMagSkewQuad3
object.IdealMagSkewQuad3
(String strId) Create new, uninitializedIdealMagSkewQuad3
object.IdealMagSkewQuad3
(String strId, double dblFld, double dblLen) Creates a new, initialized instance ofIdealMagSkewQuad3
. -
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.int
Return the enumeration code specifying the focusing orientation of the quadrupole.double
Get the skew angle of the quadrupole magnet.void
print
(PrintWriter os) Dump current state and content to output stream.void
setOrientation
(int enmOrient) NOTE:
This method has no effect.static PhaseMatrix
toBeamFrame
(PhaseMatrix matQuad) toBeamFrametransferMap
(IProbe probe, double length) Compute the partial transfer map of an ideal quadrupole for the particular probe.Methods inherited from class xal.model.elem.ThickElectromagnet
getMagField, initializeFrom, setMagField
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, 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
-
STR_TYPE_ID
string type identifier for all IdealMagSectorDipole objects- See Also:
-
DBL_SKEW_ANGLE
public static final double DBL_SKEW_ANGLEThe roll angle defining the skew (in radians)- See Also:
-
INT_ORIENT
public static final int INT_ORIENTorientation of the internalIdealMagQuad
object- See Also:
-
-
Constructor Details
-
IdealMagSkewQuad3
Creates a new, initialized instance ofIdealMagSkewQuad3
. The length and field strength are set to the given values.- Parameters:
strId
- string identifier for this elementdblFld
- field gradient strength (in Tesla/meter)dblLen
- length of the skew quadrupole body- Since:
- Mar 14, 2008
-
IdealMagSkewQuad3
Create new, uninitializedIdealMagSkewQuad3
object. Use this constructor with caution as the length of the magnet is uninitialized.- Since:
- Mar 14, 2008
-
IdealMagSkewQuad3
public IdealMagSkewQuad3()Create new, uninitializedIdealMagSkewQuad3
object. Use this constructor with caution as the length of the magnet is uninitialized.- Since:
- Mar 14, 2008
-
-
Method Details
-
toBeamFrame
toBeamFrame
Converts a linear transform (represented as a
PhaseMatrix
object) from its representation in the magnet coordinates to its representation in the beam frame phase coordinates.- Parameters:
matQuad
- linear transform in natural quadrupole magnet representation- Returns:
- linear transform in beam frame phase coordinates representation
- Since:
- Mar 13, 2008
-
getSkewAngle
public double getSkewAngle()Get the skew angle of the quadrupole magnet. For a description of this parameter see
IdealMagSkewQuad3
.Note that this parameter is fixed to the value of
DBL_SKEW_ANGLE
.- Returns:
- skew angle about the beam axis (in radians)
- See Also:
-
getOrientation
public int getOrientation()Return the enumeration code specifying the focusing orientation of the quadrupole. Note that the orientation of an
IdealMagSkewQuad3
object cannot change. Thus, this method will always return the valueIElectromagnet.ORIENT_NONE
NOTE:
The magnet orientation property has no effect upon the operation of the modeling element. This method is needed to satisfy theIElectromagnet
interface, which should be re-designed because of this fact.- Specified by:
getOrientation
in interfaceIElectromagnet
- Overrides:
getOrientation
in classThickElectromagnet
- Returns:
- the value
IElectromagnet.ORIENT_NONE
-
setOrientation
public void setOrientation(int enmOrient) NOTE:
This method has no effect. It is needed to satisfy theIElectromagnet
interface, which should be re-designed because of this fact.Normally this method sets the quadrupole magnet focusing orientation, as required by the
IElectromagnet
interface.- Specified by:
setOrientation
in interfaceIElectromagnet
- Overrides:
setOrientation
in classThickElectromagnet
- Parameters:
enmOrient
- focusing orientation enumeration code (not used)- See Also:
-
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
- Since:
- Mar 13, 2008
- See Also:
-
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:
probe
- dummy argumentdblLen
- dummy argument- Returns:
- returns a zero value
- Since:
- Mar 13, 2008
- See Also:
-
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:
probe
- supplies the charge, rest and kinetic energy parameterslength
- compute transfer matrix for section of this length- Returns:
- transfer map of ideal quadrupole for particular probe
- Since:
- Mar 13, 2008
- See Also:
-
print
Dump current state and content to output stream.
-