Class IdealMagDipoleFace

All Implemented Interfaces:
IElectromagnet, IComponent, IElement

public class IdealMagDipoleFace extends ThinElectromagnet

Represents the action of a rotated dipole face as a thin lens effect. Note that there is always an associated dipole magnet for any IdealMagDipoleFace. The two objects should provide the same values for the IElectromagnet interface. Note that a dipole face rotation has the same effect both on beam entering the dipole or exiting the dipole.

The model for the pole face effect is taken from D.C. Carey's book.

D.C. Carey, The Optics of Charged Particle Beams (Harwood, 1987)

Author:
Christopher K. Allen
  • Field Details

    • TYPE

      public static final String TYPE
      the string type identifier for all IdealMagSteeringDipole's
      See Also:
    • PARAM_LEN_EFF

      public static final String PARAM_LEN_EFF
      Tags for parameters in the XML configuration file
      See Also:
    • PARAM_ORIENT

      public static final String PARAM_ORIENT
      Tags for parameters in the XML configuration file
      See Also:
    • PARAM_FIELD

      public static final String PARAM_FIELD
      Tags for parameters in the XML configuration file
      See Also:
  • Constructor Details

    • IdealMagDipoleFace

      public IdealMagDipoleFace()
      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.
    • IdealMagDipoleFace

      public IdealMagDipoleFace(String strId)
      Constructor providing the instance identifier for the element.
      Parameters:
      strId - string identifier for element
  • Method Details

    • setPoleFaceAngle

      public void setPoleFaceAngle(double dblAngPole)
      Set the angle between the pole face normal vector and the design trajectory. This can be either at the magnet entrance or exit, the effect is the same.
      Parameters:
      dblAngPole - pole face angle in radians
    • setGapHeight

      public void setGapHeight(double dblGap)
      Set the gap height between the magnet poles.
      Parameters:
      dblGap - gap size in meters
    • setFringeIntegral

      public void setFringeIntegral(double dblFringeInt)
      Set the second-order moment integral of the dipole fringe field as described by D.C. Carey. The integral determines the amount of defocusing caused by the fringe field. Denoting the integral I2 it has the definition I2 := Integral{ B(z)[B0 - B(z)]/(g B0^2) }dz where g is the gap height, B0 is the hard edge value for the magnetic field, and B(z) is the true magnetic field along the design trajectory with path length parameter z. The integral taken from a location z0 within the magnet where B(z0)=B0 out to z = infinity. Some examples values are the following: I2 = 0.1666 linear drop off I2 = 0.4 clamped Rogowski coil I2 = 0.7 unclamped Rogoski coil
      Parameters:
      dblFringeInt - field moment I2 (dimensionless)
    • setFringeIntegral2

      public void setFringeIntegral2(double dblFringeInt2)
    • setFieldPathFlag

      public void setFieldPathFlag(double ba)
      sako to set field path flag
      Parameters:
      ba -
    • 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)
    • 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
    • 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
    • getGapHeight

      public double getGapHeight()
      Return distance between dipole magnet poles.
      Returns:
      gap height in meters
    • getPoleFaceAngle

      public double getPoleFaceAngle()
      Return the angle between the pole face normal vector and the design trajectory. This can be either at the magnet entrance or exit, the effect is the same.
      Returns:
      pole face angle in radians
    • getFringeIntegral

      public double getFringeIntegral()
      Set the second-order moment integral of the dipole fringe field as described by D.C. Carey. The integral determines the amount of defocusing caused by the fringe field.
      Returns:
      second-order integral of fringe field (dimensionless)
      See Also:
    • getFringeIntegral2

      public double getFringeIntegral2()
    • getFieldPathFlag

      public double getFieldPathFlag()
      Return the field path flag.
      Returns:
      field path flag = 1 (use design field) or 0 (use bField parameter)
    • 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)
    • compDesignCurvature

      public double compDesignCurvature()
      Compute and return the curvature of the design orbit through the magnet. Note that this value is the inverse of the design curvature radius R0.
      Returns:
      the design curvature 1/R0 (in 1/meters)
      See Also:
      • IdealMagSectorDipole2#compDesignBendingRadius()
    • elapsedTime

      public double elapsedTime(IProbe probe)
      Returns the time taken for the probe to propagate through element.
      Specified by:
      elapsedTime in class ThinElement
      Parameters:
      probe - propagating probe
      Returns:
      value of zero
    • energyGain

      public double energyGain(IProbe probe)
      Return the energy gain for this Element.
      Specified by:
      energyGain in class ThinElement
      Parameters:
      probe - propagating probe
      Returns:
      value of zero
    • transferMap

      protected PhaseMap transferMap(IProbe probe) throws ModelException
      Compute and return the transfer map for this dipole magnet pole face element.
      Specified by:
      transferMap in class ThinElement
      Parameters:
      probe -
      Returns:
      Throws:
      ModelException
      See Also:
      • xal.sim.slg.sns.xal.model.elem.ThinElement#transferMap(gov.sns.xal.model.IProbe)