Summary:
The following elog describes the procedure followed for generating a sample simulation for a cavity scan, fitting an actual cavity scan and calculating the relevant paramaters using the cavity scan and fit data.
1. Cavity Scan Simulation:
- First, we define the sample cavity parameters, i.e., the reflectivitie,transmissivities of the mirrors, the RoCs of the mirrors and the absolute cavity length.
- We then define a frequency range using numpy.linspace function for which we want to take a scan.
- We then define a function that returns the tranmission power output of a Fabry-Perot cavity using the cavity equations as follows: where P_{t} is the transmission power ratio of the output power to input power, t_{1},t_{2},r_{1},r_{2} are the transmissivities and reflectivities of the two mirrors, L is the absolute cavity length, f is the frequency of the input laser, c is the speed of light, is the gouy phase shift with g_{1},g_{2} being the g-factors for the two cavity mirrors(g=1-L/R). 'n' and 'm' correspond to the TEM_{nm} higher order mode.
- We now obtain a cavity scan by giving the above defined function the cavity parameters and by adding the outputs for different higher order mode('n', 'm' values). Appropriate factors for the HOMs need to be chosen. The above function with appropriate coefficients can be used ti also add the modulated sidebands to the total transmission power.
- To this obtained total power we can add some random noise using numpy modules random.normal function. We need to normalise the data with respect to the max. power transmission ratio.
- We can now perform fitting on the above data using the procedure stated in the next section and then plot the two data sets using matplotlib module.
- A similar code to do the above is given here.
2. Fitting a Cavity Scan:
- The actual data for a cavity scan can be found in this elog entry or attached below in the zip folder.
- We read this data and separate the frequency data and the transmission data.
- Using the peakutils module's indexes function, we find the indices of the various peaks in the data set.
- These peaks are from the fundamental resonances, sideband resonances(both 11MHz and 55MHz) as well as a few HOMs.
- Each of these resonances follows the cavity equations and hence can be modelled as Lorentzian within small intervals around the peak frequencies. A detailed description of how this is possible is given here and is in the atached zip folder('Functionsused.pdf').
- We define a Lorentzian function which returns the follows: where 'a' is the peak transmission value, 'b' is the 'linewidth' of the Lorentzian and is the peak frequency about which the cavity equations behave like a lorentzian.
- We now, using the Lorentzian function, fit the various identified peaks using the curve_fit function of the scipy module. Remember to turn the 'absolute_sigma' parameter to 'True'.
- The parameters now obtained can be evaluated using the procedure given in the next section.
- The total transmission power is evaluated by feeding in the above obtained parameters back into the Lorentzian function and adding it for each peak.
- We can plot the actual data set and the data obtained using the fit of different peaks in a plot using matplotlib module. We can also plot the residuals for a better depiction of the fit quality.
- The code to analyse the above mentioned cavity scan data is given here and attached below in the zip folder.
3. Calculating Physically Relevant Parameters:
- The data obtained from the fitting the peaks in the previous section now needs to be analysed in order to obtain some physically relevant information such as the FSR value, the TMS value, the modulation depths of the sidebands and perhaps even the linear caliberation of the frequency.
- First we need to identify the fundamental, TEM_{00} resonances among all the peaks. This we do by using the numpy.where function. We find the peaks with transmission values more than 0.9(or any suitable value).
- Using these indices we will now calculate the FSR and the Finesse of the peaks. A description of the correlation between the Fit Parameters and the FSR and Finesse is given here.
- We define a Linear fitting function for fitting the frequency values of the fundamental resonances against the i^{th} fundamental resonance. The slope of this line gives us the value of FSR and the error in it.
- The Finesse can be calculated by fitting the linewidth with a constant function.
- The cavity length can be calculated using the FSR values as follows: .
- Now, the approximate positions of the sideband frequncies is given by 11*10^{6}%FSR and 55*10^{6}%FSR away from the fundamental, carrier resonances.
- The modulation depth, 'm', is given as where P_{c} is the carrier transmission power, Ps is the transmission power of the sideband and J_{v} is the Bessel Function of order 'v'.
- We define a function 'Bessel Ratio' using which we'll fit the transmission power ratio of the carrier to the sideband for the multiple sideband resonances.
- We also check for the Linearity in frequency data by plotting Fitting the frequencies corresponding to peaks in the actual data to ones obtained after fitting.
- After this we attempt to identify the other HOMs. For this we first determine a rough estimate for the value of TMS using the already known parameters of the mirrors,i.e., the RoC. We then look in small intervals (0.5 MHz) around frequencies where we would expect the HOMs to be, i.e., 1*TMS, 2*TMS, 3*TMS... away from the fundamental resonances. These positions are all modulo FSR.
- After identifying the HOMs, we take the difference from the fundamental resonance and then study these modulo the FSR.
- We perform a Linear Fit between these obtained values and (n+m). As 'n','m' are degenerate, we can simply perform the fit against some variable 'k' and obtain the value of TMS as the slope of the linear fit.
- The code to do the above stated analysis is given here.
Most of the above info and some smaller details can be found in the markdown readme file in this git repo. |