Trebino-Group Code

Code for Retrieving a Pulse Intensity and Phase from Its FROG Trace

The FROG (iterative) algorithm is what makes FROG the powerful technique that it is.  It takes a measured trace and retrieves the pulse intensity and phase vs. time and frequency.  Further, it computes a "retrieved trace," from the retrieved pulse. This is important because, if the measured and retrieved traces agree, then the measurement is a good one, free of pulse-train instability and systematic error.  This confirmation of a measurement is unique to FROG, and other techniques without it have often been found to yield wildly incorrect measurements.

FROG code is available commercially from various companies. It is fast, reliable, powerful, and easy to use.

The Trebino group also has FROG code written in MATLAB, which it uses for research into new variations of FROG, such as one that measures two pulses at the same time (see the News pages).  We make it available to you also. Just click the icon to the left.

Temporal Propagation Code for Ultrashort Pulse Intensity and Phase

There are some nice things you can do when you measure the full temporal pulse intensity and phase—things you can’t do with just an autocorrelation. For example, you can propagate the pulse theoretically through any optical components to see how dispersion affects the pulse. This is particularly useful if, in your apparatus, the pulse must propagate through optics on the way to your FROG or if your FROG has some glass in it (before the nonlinear-optical medium), and you’d like to know the pulse before it met any of these distorting elements. You can then “back-propagate” the pulse through these optics to see what it looked like before them. Or if your pulse must propagate through some optics on its way to another experiment, you can “forward-propagate” the pulse to see what it will look like at that experiment.

As a result, we supply code you can use to do this forward- or back-propagation. It’s initially set up for the original commercial GRENOUILLE Model 8-50 (which had a lens telescope, a cylindrical lens, and a Fresnel biprism before the BBO crystal in it), so you can use this code (unchanged) to find the actual pulse at the entrance to that GRENOUILLE. Again, you only need to run this code if you have this GRENOUILLE (other versions have a reflective telescope instead and do not require any corrections if the pulse is within the device specs, e.g., longer than 50 fs and with less than 20 nm of bandwidth). But you can use it to perform any propagation of any pulse, as long as you know its intensity and phase and the optics.

Coherent-Artifact Code

While it's obvious that any interferometric technique measures only the coherent artifact (the nonrandom component), and not the entire pulse (which often includes a much longer random component), many people have been using the SPIDER technique for many years as if it measured the entire pulse and so have been reporting erroneously short pulse lengths.  As a result, to help everyone understand this important fact, we make available our code for computing SPIDER traces of trains of different, randomly varying pulses.  It's very simple, and we encourage you to try it for cases of interest to you. For more details about this issue, see the News section.