Skip to content

AaHaHaa/FROG_retrieval

Repository files navigation

FROG retrieval

This is the shared MATLAB GUI package to retrieve a second-harmonic-generation (SHG) frequency-resolved optical gating (FROG) trace and obtain the retrieved field. It currently reads the raw file exported by VideoFROG from Mesaphotonics, but, in principle, users can easily extend its capability by modifying readRawFROG.m function.

It is based on Pavel's "Ptychographic reconstruction algorithm" [1].

Note

If your group uses other commercial FROG softwares and would like this code to load it, rather than modifying it yourself, feel free to send me your FROG trace (the raw data one) and let me know which company you're using. I'm happy to extend its capabilities. Our group has only the Mesaphotonics one. It's cool to make this software be super comprehensive including all FROG companies outputs in the world. I hope that it can help everyone in the world who uses a FROG.

In principle, I can do the same for loading indepenedently-measured spectrum, but there are too many possiblities of spectrometer/OSA companies and products, and thus too many formats. It's better to use the customized function in this code and write your own loading function. I cannot cover all of them. In contrast, there are a limited number of FROG companies and products I think.

Motivation

Most of the time, outputs from the commercial VideoFROG are good enough. However, due to VideoFROG's inherent constraint of limited sampling points in retrieval, it cannot retrieve a highly-chirped broadband pulse when it requires both huge time and frequency windows. Limited sampling points during retrieval mean that a larger frequency window is accompanied by a smaller time window. The measured FROG trace still contains all information. I was forced to write my own code to do the retrieval when I was attempting to measure the chirped pulse from a Mamyshev oscillator, which covers an ultrabroadband 1000-1150 nm with a long ~5-ps duration.

Additionally, VideoFROG's retrieved pulse doesn't center its pulse in frequency according to the measured FROG trace that should have all information, but to the user-defined center wavelength that a user can arbitrarily set (it has a box for this input). This makes no sense to me, so I made this code to correct this mistake. Furthermore, I added an extra capability such that it can load an independently-measured spectrum for extra calibration to check FROG's accuracy, in case there is misalignment or "omission to align at the correct time center" (this happens a lot to newbies).

Capabilities:

  1. Retrieve FROG trace with user-defined personalized controls, free from commercial softwares.
  2. It's able to load the independently-measured spectrum for
    • having a very good initial guess for the retrieval algorithm.
    • comparison with the FROG-retrieved spectrum to verify the accuracy of the FROG retrieval.
    • Users can write their own loading function to load their spectrum beyond currently-supported Agilent, OceanOptics, and Thorlabs capabilities.
  3. It's able to compute the delay and frequency marginals from the retrieved field and the FROG trace, as well as from the measured spectrum [2]. This is also important to verify the accuracy of FROG retrieval. Delay marginal is also known as (temporal) autocorrelation. Frequency marginal is the spectral counterpart of autocorrelation but is applied to the spectrum (it's like the autocorrelation of the spectrum).
  4. It computes all the important information of the retrieved pulse, such as Strehl ratio (dechirped over transform-limited peak powers), retrieved pulse duration, and transform-limited duration.
  5. The number of sampling points required for retrieval is automatically determined from the user-defined time window for the retrieved pulse and the bandwidth information obtained from the FROG trace.
  6. FROG trace is automatically re-sampled with different numbers of sampling points in frequency and delay (my initial motivation to make this code to measure a chirped pulse, mentioned above).
  7. Export with MATLAB's mat file.

References (papers):

  1. Ptychography
  2. FROG practical issues
  3. Mamyshev oscillator

Demonstrations:

  • PLKM-compressed pulse
    The pulse from a commercial laser, PHAROS, LightConversion, is nonlinearly compressed by a periodically-layered Kerr medium (PLKM).
    Source: "Examples/PLKM compressed pulse"
PLKM.mp4
  • Mamyshev oscillator
    The chirped pulse directly from a Mamyshev oscillator [3]. This is beyond the capability of the commercial VideoFROG.
    Source: "Examples/linear Mamyshev oscillator"
MO.mp4
  • ANDi
    This is the dechirped pulse of an all-normal-dispersion (ANDi) laser I measured in my early stage of PhD, so the pulse quality isn't awesome with 0.66 Strehl ratio. Since delay marginal is autocorrelation, it's a good demonstration here to show that pulses with a decently-low Strehl ratio can still have a very sharp autocorrelation, which depends on how the pedestal coexists with the main pulse. If the pedestal spreads out picosecond long, the autocorrelation still looks good, but the Strehl ratio is pretty bad. After I learned this, I realized that FROG is crucial in pulse measurement, and autocorrelation is misleading. Therefore, be careful when reading papers with autocorrelations; some of them claimed that they had a good pulse, but after thinking carefully, their process should have strong uncompensated higher-order phases for example. 0.6 Strehl ratio is sometimes considered OK, but lower than 0.5 is unacceptable, which we cannot realize by a simple autocorrelation measurement. Again, FROG measurement is crucial!
    Source: "Examples/ANDi"
ANDi.mp4

Notes:

I have written Instruction.doc. Please find details of how to use this package in it.

About

This is the shared MATLAB GUI package to retrieve a frequency-resolved optical gating (FROG) trace and obtain the retrieved field.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages