Skip to main content

LaserModulator Class

The LaserModulator class is a subclass of PhysProc that simulates the energy modulation of a particle beam in an undulator. It provides methods to calculate laser wavelength, undulator transport matrix element begin:math:textbegin:math:text R_56 end:math:textend:math:text, and apply laser modulation to the beam.

Class Definition

class LaserModulator(PhysProc):
def __init__(self, step=1):
"""
Initialize the LaserModulator with default parameters or user-defined values.

Parameters
----------
step : int, optional
Step size used by the PhysProc base class, default is 1.
"""

Parameters

  • step (int): The step size used by the PhysProc base class (default is 1).

Attributes

  • dE (float): Amplitude of the energy modulation on-axis in [GeV] (default is 12500e-9).
  • Ku (float): The undulator parameter (default is 1.294).
  • Lu (float): The undulator length in meters (default is 0.8).
  • lperiod (float): The undulator period length in meters (default is 0.074).
  • sigma_l (float): The laser pulse length (longitudinal Gaussian sigma) in meters (default is 300e-6).
  • sigma_x (float): The transverse beam size in the x-direction in meters (default is equal to sigma_l).
  • sigma_y (float): The transverse beam size in the y-direction in meters (default is equal to sigma_l).
  • x_mean (float): The transverse beam offset in the x-direction in meters (default is 0).
  • y_mean (float): The transverse beam offset in the y-direction in meters (default is 0).
  • z_waist (float or None): The shift of the laser waist position in meters. If None, a simple Gaussian beam model is used.
  • include_r56 (bool): Flag to include the R56 effect in the modulation. Default is False.
  • laser_peak_pos (float): The offset of the laser peak position relative to the mean of the particle array's tau values. Default is 0.

Methods

lambda_ph(self, energy)

Calculate the wavelength of the laser pulse.

Parameters

  • energy (float): The beam energy in [GeV].

Returns

  • float: The laser wavelength in [m].

Notes

This method computes the laser wavelength based on the undulator period (lperiod), the undulator parameter (Ku), and the beam's gamma factor (calculated from the given energy).


r56(self, energy)

Calculate the R56R_{56} for the undulator.

Parameters

  • energy (float): The beam energy in [GeV].

Returns

  • float: The value of R56R_{56} in [m].

Notes

This method computes the dispersion-like term introduced by the undulator, dependent on the beam's Lorentz factor (gamma) and undulator parameter (Ku).


apply(self, p_array, dz)

Apply the laser modulation to the particle array over a distance dz.

Parameters

  • p_array (ParticleArray): The particle array object containing phase space variables.
  • dz (float): The integration step length for applying the modulation.

Returns

  • None

Notes

  • Verifies the effective undulator length L and checks if it matches the undulator length Lu. If the lengths do not match, a warning is issued.
  • Calculates the laser wavelength lambda_ph and wave number k_ph.
  • Computes the energy modulation amplitude A and applies the modulation based on transverse offsets (x, y), longitudinal offset (tau), and a Gaussian profile.
  • If include_r56 is True, the R56R_{56} effect is included.
  • If a laser waist shift (z_waist) is provided, a more complex model with curvature is used for the modulation.