Skip Ribbon Commands
Skip to main content
Navigate Up
Sign In

An Office of Science User Facility

Matter in Extreme Conditions (MEC)

VISAR Data Analysis at MEC

​​​​​​​A. Hashim, S. Brown, and B. Nagler
*Contact List:,,


Line-imaging VISAR (Velocity Interferometer System for Any Reflector) is a useful diagnostic for measuring shock wave velocity of matter in extreme conditions and is used in many laboratories as a tool to study high pressure, shock, and Z-pinch physics. MEC uses VISAR analysis to study shock waves propagating through materials subject to laser-driven plasma-induced shocks and is capable of measuring shock velocities on a nanosecond timescale. Here we describe MEC's experimental setup dedicated to studying VISAR data and our in-house data analysis code which allows users to analyze their data in-situ.

An overview of the theory and mathematical formalism of VISAR analysis can be viewed in the following document:

A presentation about the principles of VISAR analysis can be viewed in the following document:

Experimental Setup

The MEC experimental endstation can be seen in Fig. 1. An illustratio​​n of the original design of the VISAR setup as a part of the experimental endstation can be seen in Fig. 2. The current setup has been modified from its previous design such that the optics and streak cameras are now contained within a two-level enclosure.

 Fig.1 MEC experimental endstation.

Fig.2 Original design of the MEC VISAR setup as part of the experimental endstation. In the current setup, the VISAR optics and streak cameras are contained within a two level enclosure in order to save space on the endtable.

A schematic diagram of the basic optical arrangement of needed for making a VISAR arrangement can be seen in Fig. 3. Following the arrows provides a flow-chart for how a VISAR measurement is made, starting from the fiber-coupled single-mode laser.

Fig.3 Basic optical arrangement for a VISAR measurement.

As portrayed in the above diagram, as a shock front collides with the object of interest, causing it to propagate forward, light emanating from the fiber-coupled single-mode laser is reflected off of the moving surface. The Doppler-shifted light of wavelength lambda is then directed toward an interferometer, where it is split into two separate beams. One of the beams is temporally delayed by the insertion of an etalon in its beam path, and then the two beams are recombined, resulting in a fringe pattern which is recorded by a streak camera. A shift in the fringe pattern corresponds to a phase shift, which can be used to calculate the breakout velocity of the object of interest.


The VISAR laser is an Nd:YAG injection-seeded laser with pulse shaping capabilities. It is driven at a wavelength of 532 nm with a pulse width of 100 ns and a pulse repetition frequency (PRF) of 10 Hz. The total possible output energy of the laser is 30 mJ, however usually no more than ~5 mJ is used so as to not damage the optical fiber that is used for transport. The output of the laser is fiber-optically coupled to the VISAR endstation, since the laser itself does not sit next to the setup (see Fig. 4). The multimode fiberguide used has a core diamater of 1 mm.

Fig.4 VISAR laser location at MEC. The VISAR laser is isolated within the split-mode laser enclosure. It is fiber-optically coupled to the VISAR experimental setup.

The fiber output at the MEC endstation is then directed toward the sample in the ​​​​​​​​target chamber (TC), and the reflected light is then redirected back to the VISAR test setup where it is sent through an interferometer and recorded by the streak cameras. A schematic of this can be seen in the following diagram in Fig. 5.

Fig.5 Schematic diagram of the VISAR endstatation. The output of the fiber-coupled laser is directed to the right toward the TC. The light that is reflected off of the sample is then re-directed back to the left and passed through a serieres of interferometers before reaching the streak cameras.

A basic example of the setup inside the TC needed to make a VISAR measurement can be seen below in Fig 6. This also includes the long pulse laser used to drive the material and the FEL X-ray used to probe the material, as well as the forward and backward X-ray Thompson Scattering Spectrometers (XRTS) used to measure the scattered X-rays.

Fig.6 Basic setup needed to make a VISAR measurement in the TC.

The long pulse laser used to induce a shock in the material of interest is incident from the left. The VISAR laser generally enters the TC in parallel with the FEL X-ray (purple, incident from the top of the diagram) and is redirected to the backside of the material by a series of optics and mirrors. The reflected light is then passed back out of the TC to the VISAR endstation. The forward and backward XRTS are used to measure the reflected X-ray beams.

Relay Imaging System

An example of a recent version of the relay imaging system (i.e. the sequence of optics) for the VISAR setup can be seen in Fig. 7.

Fig.7 VISAR relay imaging system as of December 2014.

While the above setup stays the same for the most part, some changes can be made (i.e. swapping out one lens for one with a different focal length) to conform to the users' specifications. These changes should be discussed with the MEC Point of Contact (POC) and/or instrument scientists for the experiment.

Mach-Zehnder Interferometers

MEC's VISAR analysis uses two Mach-Zehnder interferometers for the separate VISAR beds. Each bed has a an etalon of differing thickness, therefore the phase delay between the two beams in each interferometer will be slightly different, thus leading to differing fringe shifts. A 3D diagram of the Mach-Zehnder interferometers can be seen in Figs. 8 and 9.

Fig.8 Top-down view of the two Mach-Zehnder interferometers.

Fig.9 Side view of one of the Mach-Zehnder interferometers.

The Mach-Zehnder interferometers include etalons with lengths <15 cm on motorized linear stages that can travel ~5 cm. The end mirror sits on a motorized stage that can tip, tilt, and translate as needed. Furthermore, they include a white light alignment station with a sensitivity of <2 microns, as well as a flip-up beamblock for remote target imaging and a flip-up reticle for remote CCD alignment check.

By comparing the two different free-surface velocity profiles obtained by the separate VISAR beds, one can find the correct number of 2pi fringe jumps to correct for such that the two free-surface velocities match up.

Optical Streak Cameras

A diagram of the optical streak camera used in MEC's VISAR analysis can be seen below in Fig. 10.

Fig.10 Hamamastu C7700s optical streak camera setup.

The optical streak cameras used to record the VISAR data are Hamamastu C7700s. They have a high dynamic range of 1500:1 and a temporal resolution of <100 ps depending on the sweep range (sweep windows: 0.5 ns, 1 ns, 5 ns,..., 1 ms). They can capture images in a single shot mode or with repetition frequencies up to 1 kHz. They are connected to output optics and a CCD/CCD control unit.​​​

MEC VISAR Analysis

The MEC VISAR analysis package can be run as a standalone program or as part of the mecana data analysis toolkit.​ Instructions on how to run mecana using SLAC's computing network can be found here​.

1. Launch the mecanalysis GUI and enter the experiment name and run number(s). Under More analysis tasks... click on VISAR Analysis and select run. Clicking on the RUN button will launch a separate GUI dedicated to analyzing VISAR data at MEC.

2. In VISAR Analysis GUI, make sure the experiment name and run number(s) are entered. If this GUI was launched from the mecanalysis GUI, then these will autmatically be filled. If the VISAR analysis is run as a stand-alone program, these entries will need to be entered.

3. Enter the input parameters:
  • Etalon Thicknesses - these entries are required. If they are left blank the program will be unable to analyze the data and will not run.
  • ​Field of View (FOV) - this entry is only used for plotting purposes so that the axes are set according to the actual FOV of the VISAR shot. If the user does not know this value or if it is left blank, it will not affect the final FSV data. If it is left blank, the program will use a default value of 250 microns.
  • t0 (optional) - this entry is not required, as it does not affect the final data analysis. However, if the user knows the t0 times for both beds, these should be entered so that the final FSV line-outs are aligned according to their respective breakout times. If these are left blank, the program will use a default value of 0 for both entries.

4. Select the desired optional analysis tools:
  • Noise Reduction - this option should be used if there is a small signal to noise ratio. Situations in which noise may affect the analysis include the phase unwrapping algorithm and the breakout time algorithm. If the user wishes to analyze the entire VISAR image (as opposed to selecting a Region of Interest), then the phase unwrapping algorithm may have trouble resolving the data after the breakout time, as this portion of the image tends to be extremely noisy due to any secondary or restoring shock fronts propagating through the material. The other situation in which the noise reduction tool may come in handy is if the large noise spikes are causing the program to find the wrong breakout time. This tool will help smooth over the data such that the breakout time can be properly extracted for each location in space.
  • Gaussian Filter - this option will apply a Gaussian filter to the image, which will cause the processed image to blurr slightly, effectively reducing the pixel-to-pixel variations that are caused by noise. The higher this number is, the larger the noise reduction. However, the user should be careful not to set this value too high, as doing so may smooth over important features, such as the breakout time. If the Noise Reduction box is checked but no value is entered, the program will use a default value of 5 for the standard deviation.
  • Hanning Window - this option controls the width of the Hanning Window that is used to select the positive frequency peak during the Fourier Transform (FFT) portion of the data analysis. If the width is too wide, it may also select some smaller unintended frequency peaks in Fourier space, which equate to noise after the inverse Fourier Transform (IFFT) is take on the process image. Reducing this number may help reduce the noise in the image as well. If left empty, the program will use a default value, which depends on the dimensions of the image. However, a good starting point is to assume that the default value is ~20, so entering 10 in this entry would cut the width of the Hanning Window in half.
  • Implement a Region of Interest (ROI) - this option allows the user to select only the portion of the processed image that they want to be analyzed. This is useful if the user only cares about a specific region of the VISAR data (e.g. around the breakout time) or if some portions of the processed image are noisy and are causing errors in the data analysis. If selected, the a plot of the raw fringe image will pop up and the user will be asked to select the ROI using the matplotlib zoom tool. NOTE: it is very important that the user select the ROI windown by dragging from the top left corner of the window to the bottom right corner of the window. This is because the algorithm stores these corners based on the click-event and the release-event of the mouse, and these two need to correspond to to the top left and bottom right corners of the ROI window, respectively. Once the ROIs have been selected, the user should close both plot windows. However, the program will be hanging and needs to be prompted to resume, so the user must click in the terminal and press ENTER in order for the program to continue with the data analysis. In interactive mode, the user will simply need to drag/resize the ROI boxes already provided by the code, close the single window, and press ENTER in the terminal as well. Note: there is an import incompatibility between PyQtGraph and matplotlib. Therefore, if the ROI has previously been selected using the interactive mode option with PyQtGraph, and the user wants to subsequently select an ROI with the non-interactive/default option (i.e. matplotlib), it will be necessary to restart the VISAR analysis GUI. Otherwise the user will be unable to drag an ROI box when prompted.
  • Implement an ROI just for the breakout time - this ​option allows the user to place an ROI just around the breakout time in the image, but still analyze the entire image. This is useful if the algorithm is failing to find the correct breakout time in the whole image. This can also be used in conjunction with the entire image ROI option. The same instructions apply here for selecting the breakout time ROI in both interactive mode and non-interactive mode.
  • Specify the direction of the FSV calibration - this option allows the user to modify the relative sign of the FSV calibration. In other words, since the FSV should go from a low number (~0) to a positive number (representing the breakout velocity), the user can ensure that the FSV is extracted with the correct sign if, for some reason, the breakout velocity is not a positive jump. With the current setup there is no need to use this option. However, if the optics of future variations of the VISAR setup are aligned in such a way that the sign of the FSV is flipped, this will give the users the flexibility to account for this change.
  • Manually specify the fringe jump correction for each bed - this option allows the user to manually specify the number of fringe jumps that both beds need to be corrected for in order for their FSVs to match each other. If left unchecked, the analysis program will attempt to find the best match between the FSV line-outs of the two beds by minimizing the chi-square values calculated for different integer values of fringe jumps. This automatic algorithm may fail if the user is attempting to analyze an entire processed imaged that contains lots of noise. If this is the case, the user can either select an ROI and re-run the algorithm, or attempt to manually specify the number of fringe jumps -- 'm' and 'n' -- for bed 1 and bed 2, respectively. NOTE: if selecting an ROI, the user should attempt to keep the size of the ROI roughly the same for both beds. The automatic algorithm is more likely to fail if the size of the ROIs are drastically different.

5. Select the desired plotting options:
  • Enable interactive plotting (requires PyQtGraph) - this option allows the user to plot any/all of the following plotting options in interactive mode, which includes the ability to zoom/change scales, change the colorbar, adjust ROIs by dragging the mouse, and save the plots as image and/or as .csv file. As stated above, this option requires the PyQtGraph Python library. Running the VISAR analysis code within psana includes PyQtGraph by default, but if this code is run on a separate computer, the user will either need to install PyQtGraph and all of its dependencies, or the code will default to matplotlib. Note: when plotting in interactive mode, each of the graphs will pause the analysis code due to the interactive nature of the library, therefore it is not possible to run the length of the code while still keeping an interactive plot open. Therefore, in order to finish the code, the user will need to close down all interactive plotting windows. Alternatively, the user could open up two instances of the VISAR analysis code and use one for plotting and the other for calculation the desired values.
  • View the raw fringe images of both beds - this will plot the raw fringe images of both beds, as well as an intensity line-out taken horiztonally at a single point in time for each raw fringe image.
  • View the intensity/frequency before/after the FFT - this will plot the same raw fringe intensity line-outs as displayed in the previous plot, as well as the Fourier Transform peaks produced by the FFT algorithm.
  • View the results of the IFFT - this will plot the intensity (absolute value) and phase of the complex image array produced by the inverse Fourier Transform (IFFT) algorithm, as well a vertical line-out of the phase of both beds taken at a single point in space.
  • View the results of the phase unwrapping - this will plot the intensity, phase, and phase line-outs for the processed images after the phase unwrapping algorithm has been applied. NOTE: viewing this step may help in determining whether or not the noise reduction option will be useful in the overall data analysis.
  • View the breakout time of both beds - this will plot the breakout time superimposed on the phase of the processed image for both beds. This allows the user to view the calculated breakout time and ensure that it corresponds with the breakout time on the image. It is important that the two match up because the breakout time is used to apply the fringe jump correction -- when needed -- to the correct point in the FSV profile. The breakout time for each point in space is taken as the inflection point of the fringe jump. If the calculated breakout time does not match the visual breakout time in the processed image, it may be necessary to use an ROI to focus the algorithm around the visual breakout time time in the image.
  • View the final amplitude and FSV profile - this will plot the intensity, phase, and phase line-outs for the processed images after the entire analysis has finished.
  • View the final FSV line-out - this will plot the FSV line-outs taken as the average of the center 1% of the of the final FSV profiles for both beds. These two FSV line-outs will be plotted on the same graph. If the correct t0 point was entered for both beds, then the breakout times of the two FSV line-outs should approximately overlap with each other. This plot is crucial in ensuring that the appropriate fringe jump correction was applied to both beds such that the jump in the two FSV line-outs (i.e. the magnitude of the breakout velocities) are approximately the same.
  • View the entire analysis -  this will plot the result of the processed image at every single stage of the analysis. This option is really only necessary if the user is attempting to track down an error in the analysis process and at which stage this error occurs.
  • Save the breakout time of both beds to a .csv file - this will save the breakout time to a .csv file as displayed in the breakout time plots for both beds. The names of the files and the directory in which they are saved will be printed to the terminal if this option is selected.
  • Save the final FSV line-out of both beds to a .csv file - this will save the FSV line-outs to a .csv file as displayed in the final FSV line-out plot for both beds. The names of the files and the directory in which they are saved will be printed to the terminal if this option is selected.​​

6. Pressing Analyze will run the VISAR analysis algorithm and plot/save any of the options that were selected. For example, if the user chooses to select an ROI and plot the final FSV line-outs, a graph similar to the following should be displayed:

None of the non-interactive graphs will pause the analysis code (aside from the ROI selection plots); the code will continue to run in the background until the analysis has finished. This process can be re-run as many times as desired. The user is encouraged to read all of the warnings and flags printed to the terminal during the analysis process, as these may help determine if a an error has occurred or if some input parameter was missed. The user can save any of the figures and/or graphs that are plotted during the analysis process by using the matplotlib save icon.

In interactive mode, the following will be displayed at the end of the analysis:

As can be seen in the above image, with interactive plotting option gives the user the ability to zoom in/out on the graphs, change the min/max values on the colorbar, adjust the ROIs in the VISAR images and immediately see the result in the FSV plot (note, the FSV line-outs are taken as the average over the width of the ROIs), see the FSV values via the crosshairs in the bottom graph, and save any/all of the plots independently. This is a very powerful tool for optimizing the end of the VISAR analysis and deciding where to take the final line-outs.

SLAC SLAC National Accelerator Laboratory, Menlo Park, CA
Operated by Stanford University for the U.S. Dept. of Energy