Skip to content
UV_spectrums2.py 1.98 KiB
Newer Older
import h5py
import matplotlib.pyplot as plt
import numpy as np
import sys
import re
import ast
from scipy.optimize import curve_fit
import os
from scipy import interpolate

# Solo levanto algunos experimentos
Calib_Files = """000007324-UV_Scan_withcalib_Haeffner
""" 



#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220503_EspectrosUVnuevos\Data

def SeeKeys(files):
    for i, fname in enumerate(files.split()):
        data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
        print(fname)
        print(list(data['datasets'].keys()))

#%%    

Amps = []
Freqs = []
Counts = []

for i, fname in enumerate(Calib_Files.split()):
    print(SeeKeys(Calib_Files))
    print(i)
    print(fname)
    data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
    print(list(data['datasets'].keys()))
    Amps.append(np.array(data['datasets']['UV_Amplitudes']))
    Freqs.append(np.array(data['datasets']['UV_Frequencies']))
    Counts.append(np.array(data['datasets']['counts_spectrum']))


#def GetBackground(countsper100ms, )



#%%

def Lorentzian(f, A, gamma, x0):
    return (A/np.pi)*0.5*gamma/(((f-x0)**2)+((0.5*gamma)**2)) + 10 #40 es el piso de ruido estimado

j = 0 #UV_cooling en 90 MHz

FreqsChosen = [2*f*1e-6 for f in Freqs[j]]
CountsChosen = Counts[j]

portion = 0.

popt, pcov = curve_fit(Lorentzian, FreqsChosen[int(portion*len(FreqsChosen)):], CountsChosen[int(portion*len(FreqsChosen)):])

freqslong = np.arange(min(FreqsChosen)-10, max(FreqsChosen)+10, (FreqsChosen[1]-FreqsChosen[0])*0.01)

plt.figure()
plt.plot(FreqsChosen, CountsChosen, 'o', label='4 uW')
plt.plot(freqslong, Lorentzian(freqslong, *popt), label=f'FWHM {round(popt[1])} MHz')
plt.axvline(popt[2]-22.1, linestyle='--', linewidth=1)
plt.axvline(popt[2]+22.1, linestyle='--', linewidth=1)
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('Cuentas')
plt.legend()

print(f'Ancho medido: {round(popt[1])} MHz')