Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

All XTCAV analysis is a three step process involving "dark", "lasing off", and "lasing on" runs. The first two are references; the last is how we commonly refer to runs that contain data of interest. Simple scripts are provided as part of the psana python environment for processing each.

The XTCAV data consists of the elecontr

Dark Runs

Dark runs are used to simply make pedestals for the XTCAV camera and other diagnostics. These runs without any electrons going through the accelerator. We take the average of a series of dark run images to get the general pixel values of the camera background. We can then subtract this "average image" from the lasing on and off runs to get a closer approximation of the actual energy of the electron bunches.

LCLS provides an "xtcavDark" script that automatically populates the experiment calib dir with dark images that are picked up in subsequent analysis. Just provide an experiment and run number, and optionally the maximum number of shots to process:

Code Block
languagepython
xtcavDark amox23616 104 --max_shots 400

...

Code Block
languagepython
dark background reference
  Experiment: amox23616
  Run: 104
  Valid shots to process: 400
100.0 % done, 400 / 400
Maximum number of images processed


Lasing Off Runs

We then process the lasing Lasing off runs , which are images of electron bunches without any lasing. We take a series of these images, subtract the average background (from previous step), and zero-out all noise around the region of interest. From this cleaned up image, we can calculate the electron current, the energy dispersion and center of mass, and other physical properties of the electron bunch. We then cluster provide a reference of what the electron beam would have looked like if it did not lose any energy to generate x-rays. To provide this reference, a "lasing off" run is generated that has electons but no x-rays. These electron bunches are captured on the XTCAV camera. The standard analysis clusters together these lasing off images into an (optimally automatically or manually chosen) number of groups based of of the electron current. The properties of these profiles are then averaged to create an aggregate lasing off profile. Each cluster of lasing off images is averaged to reduce noise, and then compared to "lasing on" bunches (next step, below). Clustering and subsequent matching to lasing on bunches is done by comparing the electron current as a function of time (projection of the XTCAV image onto the x-axis, the time axis), which is physically expected to be invariant, whether lasing occurred or not.

A script to generate lasing off references is provided with an interface very similar to the one for dark runs. It has quite a few options and should handle nearly all use cases.

Code Block
languagepython
xtcavLasingOff amox23616 131 --max_shots 200

...

Code Block
languagepython
Lasing off reference
	 Experiment: amox23616
	 Runs: 131
	 Number of bunches: 1
	 Valid shots to process: 200
	 Dark reference run: None
100.0 % done, 200 / 200
Averaging lasing off profiles into  12  groups.

 

Lasing On Runs

For the lasing on runs, we process each image individually in a similar manner to the lasing off images. Once we calculate the physical propertiesRuns with data of interest are commonly referred to as "lasing on". For each shot, we choose an aggregated lasing off profile with the most similar electron current. Then, using either the energy loss or energy spread methods, we can calculate the power of the electron bunch. . That reference is used to compute the energy that was lost to x-rays. There are two methods by which one can perform that calculation (physical details below): one can either compare the "energy loss" directly – ie subtract the mean electron energy in the lasing off run from the lasing on run -- or look at the increased energy spread in lasing on run vs. lasing off. Both are motivated by FEL theory.

We provide a third simple script that can be used to test these methods:

Code Block
languagepython
xtcavLasingOn amox23616 137 --max_shots 5

...

Code Block
languagepython
Using file 104-end.data for dark reference
Using file 131-end.data for lasing off reference
Agreement: 91.4276%; Maximum power: 6.64857; GW Pulse Delay: 18.512 
Agreement: 91.1052%; Maximum power: 5.82139; GW Pulse Delay: 20.6758 
Agreement: 93.136%; Maximum power: 4.88641; GW Pulse Delay: 18.0389 
Agreement: 93.136%94.1173%; Maximum power: 6.76523; GW Pulse Delay: 16.2321 
Agreement: 92.9344%; Maximum power: 47.8864114828; GW Pulse Delay: 1811.03892065 
Agreement: 94.1173%; Maximum power: 6.76523; GW Pulse Delay: 16.2321 
Agreement: 92.9344%; Maximum power: 7.14828; GW Pulse Delay: 11.2065 



 

For real analysis, however, you likely want to incorporate some python code into whatever analysis masterpiece you are composing.

 

Code Block
languagepy
titlepsana
from xtcav2.LasingOnCharacterization import LasingOnCharacterization
XTCAVRetrieval = LasingOnCharacterization() 


for evt in ds.events():
	XTCAVRetrieval.processEvent(evt)
	t, power = XTCAVRetrieval.xRayPower()

 

Theory


The LCLS X-band Transverse deflecting mode CAVity (XTCAV) diagnostic system is shown in Fig. 1. There are two key elements to the system: the XTCAV and the final dipole magnet.

As shown in Fig. 1, immediately after the undulator is the XTCAV. This generates an effective RF (11.424 GHz) electromag- netic force pointing in the horizontal direction with an amplitude varying sinusoidally in time. Then, as illustrated in Fig. 2a, the electron bunch travels through the cavity with this RF wave at roughly the speed of light. The bunch time of arrival is set so its center coincides with when the amplitude of the RF field is zero. Then the net deflection of the bunch will also be zero.

However, the bunch has a finite length, some-thousand times shorter than the wavelength of the RF. As shown in Fig. 2a, the head sees a small, positive electric field while trailing electrons see a small, negative transverse electric field. The effect is a linearly-varying force for different slices of the bunch. The head (tail) gets a transverse momentum kick to the left (right), shearing the bunch into a horizontal streak.

...