Class BunchProbe<S extends BunchProbeState<S>>

java.lang.Object
xal.model.probe.Probe<S>
xal.model.probe.BunchProbe<S>
All Implemented Interfaces:
IProbe, IArchive
Direct Known Subclasses:
EnsembleProbe, EnvelopeProbe, SynchronousProbe, TwissProbe

public abstract class BunchProbe<S extends BunchProbeState<S>> extends Probe<S>

Abstract base class for all probes having beam properties. That is derived classes should represent probes with collective beam dynamics.

Note:

The bunch charge Q is computed from the beam current I and bunch frequency f as

    Q = I/f

Since:
Nov 2, 2002
Author:
Christopher K. Allen
  • Constructor Details

    • BunchProbe

      protected BunchProbe()
      Default constructor. Since BunchProbe is abstract constructor should only be calls by a derived class. Creates a new (empty) instance of BunchProbe.
    • BunchProbe

      protected BunchProbe(BunchProbe<S> probe)
      Copy constructor - clones the argument Since BunchProbe is abstract constructor should only be calls by a derived class.
      Parameters:
      probe - BunchProbe object to be cloned
  • Method Details

    • setBunchFrequency

      public void setBunchFrequency(double f)
      Set the bunch arrival time frequency.
      Parameters:
      f - new bunch frequency in Hz
    • setBeamCurrent

      public void setBeamCurrent(double i)
      Set the total beam current.
      Parameters:
      i - new beam current in Amperes
    • getBunchFrequency

      public double getBunchFrequency()
      Returns the bunch frequency, that is the frequency of the bunches need to create the beam current. The bunch frequency f is computed from the beam current I and bunch charge Q as f = I/Q
      Returns:
      bunch frequency in Hertz
    • getBeamCurrent

      public double getBeamCurrent()
      Returns the total beam current
      Returns:
      beam current in amps
    • bunchCharge

      public double bunchCharge()
      Computes and returns the charge in each beam bunch
      Returns:
      beam charge in coulombs
    • beamPerveance

      public double beamPerveance()

      Returns the generalized, three-dimensional beam perveance K. This value is defined to be

      K = (Q/4*pi*e0)*(1/gamma^3*beta^2)*(|q|/ER)

      where Q is the bunch charge, e0 is the permittivity of free space, gamma is the relativistic factor, beta is the normalized design velocity, q is the charge of the beam particles and ER is the rest energy of the beam particles.

      NOTES: - The value (1/4*pi*e0) is equal to 1e-7*c^2 where c is the speed of light.

      Returns:
      generalized beam perveance Units: radians^2/meter
    • beamDCPerveance

      public double beamDCPerveance()

      Returns the generalized, two-dimensional beam perveance K. This value is defined to be

      K = (I/pi*e0)*(1/gamma^3*beta^3*c)*(|q|/ER)

      where I is the current, e0 is the permittivity of free space, gamma is the relativitic factor, beta is the normalized design velocity, q is the charge of the beam particles and ER is the rest energy of the beam partiles.

      Returns:
      generalized DC beam perveance Units: radians^2/meter
    • createProbeState

      public abstract S createProbeState()
      Just restating Probe.createProbeState()
      Specified by:
      createProbeState in class Probe<S extends BunchProbeState<S>>
      Since:
      Nov 5, 2013
      See Also:
    • createEmptyProbeState

      public abstract S createEmptyProbeState()
      Just restating Probe.createEmptyProbeState().
      Specified by:
      createEmptyProbeState in class Probe<S extends BunchProbeState<S>>
      Returns:
      a new, blank ProbeState
      Since:
      Jul 1, 2014