public class IdealMagSkewQuad3 extends ThickElectromagnet
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:
xal.model.elem
,
xal.model.elem
Modifier and Type | Field and Description |
---|---|
static double |
DBL_SKEW_ANGLE
The roll angle defining the skew (in radians)
|
static int |
INT_ORIENT
orientation of the internal
IdealMagQuad object |
static java.lang.String |
STR_TYPE_ID
string type identifier for all IdealMagSectorDipole objects
|
dblField, enmOrient
ORIENT_HOR, ORIENT_NONE, ORIENT_VER
LightSpeed, Permeability, Permittivity, UnitCharge
Constructor and Description |
---|
IdealMagSkewQuad3()
Create new, uninitialized
IdealMagSkewQuad3 object. |
IdealMagSkewQuad3(java.lang.String strId)
Create new, uninitialized
IdealMagSkewQuad3 object. |
IdealMagSkewQuad3(java.lang.String strId,
double dblFld,
double dblLen)
Creates a new, initialized instance of
IdealMagSkewQuad3 . |
Modifier and Type | Method and Description |
---|---|
double |
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 |
getOrientation()
Return the enumeration code specifying the focusing orientation of the
quadrupole.
|
double |
getSkewAngle()
Get the skew angle of the quadrupole magnet.
|
void |
print(java.io.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)
toBeamFrame
|
PhaseMap |
transferMap(IProbe probe,
double length)
Compute the partial transfer map of an ideal quadrupole for the particular probe.
|
getMagField, initializeFrom, setMagField
getLength, setLength
addCloseElements, applyAlignError, backPropagate, backPropagate, compDriftingTime, compProbeLocation, getAlignX, getAlignY, getAlignZ, getCloseElements, getHardwareNodeId, getId, getPosition, getType, getUID, propagate, propagate, setAlign, setAlignX, setAlignY, setAlignZ, setHardwareNodeId, setId, setPosition, toString
public static final java.lang.String STR_TYPE_ID
public static final double DBL_SKEW_ANGLE
public static final int INT_ORIENT
IdealMagQuad
objectpublic IdealMagSkewQuad3(java.lang.String strId, double dblFld, double dblLen)
IdealMagSkewQuad3
.
The length and field strength are set to the given values.strId
- string identifier for this elementdblFld
- field gradient strength (in Tesla/meter)dblLen
- length of the skew quadrupole bodypublic IdealMagSkewQuad3(java.lang.String strId)
IdealMagSkewQuad3
object.
Use this contructor with caution as the length of the magnet is
uninitialized.public IdealMagSkewQuad3()
IdealMagSkewQuad3
object.
Use this contructor with caution as the length of the magnet is
uninitialized.public static PhaseMatrix toBeamFrame(PhaseMatrix matQuad)
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.
matQuad
- linear transform in natural quadrupole magnet representationpublic 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
.
IdealMagSkewQuad3
,
DBL_SKEW_ANGLE
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
value IElectromagnet.ORIENT_NONE
NOTE:
The magnet orientation property has no effect upon the operation of the
modeling element. This method is needed to satisfy the
IElectromagnet
interface, which should be
re-designed because of this fact.
getOrientation
in interface IElectromagnet
getOrientation
in class ThickElectromagnet
IElectromagnet.ORIENT_NONE
public void setOrientation(int enmOrient)
NOTE:
This method has no effect. It is needed to satisfy the
IElectromagnet
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.
setOrientation
in interface IElectromagnet
setOrientation
in class ThickElectromagnet
enmOrient
- focusing orientation enumeration code (not used)getOrientation()
public double elapsedTime(IProbe probe, double dblLen)
elapsedTime
in interface IElement
elapsedTime
in class Element
probe
- propagating probedblLen
- length of subsection to propagate through metersElement.elapsedTime(xal.model.IProbe, double)
public double energyGain(IProbe probe, double dblLen)
energyGain
in interface IElement
energyGain
in class ThickElement
probe
- dummy argumentdblLen
- dummy argumentThickElement.energyGain(xal.model.IProbe, double)
public PhaseMap transferMap(IProbe probe, double length)
dblLen
meters in length.transferMap
in interface IElement
transferMap
in class ThickElement
probe
- supplies the charge, rest and kinetic energy parameterslength
- compute transfer matrix for section of this lengthThickElement.transferMap(xal.model.IProbe, double)