Commit d9c594b7 authored by Nicolas Nunez Barreto's avatar Nicolas Nunez Barreto

cosas de la compu de nico

parent b4d176b0
......@@ -53,7 +53,7 @@ import scipy.fftpack
BINW = 1e-2
T0 = -0.4e-6
files = [20322]
files = [20583]
SP_Heigths = []
SP_Bins = []
......@@ -81,45 +81,6 @@ for k in range(len(counts)):
#%%
from scipy.optimize import curve_fit
refe = len(SP_Bins[0])
prop = 1
RefBins = [t for t in SP_Bins[0][:int(prop*refe)]]
# plt.figure()
# plt.plot(RefBins[:-1], SP_Heigths[0][:int(prop*refe)],'-o')
x = RefBins[:-1]
y = SP_Heigths[0][:int(prop*refe)]
cc = np.ones(len(counts))
fluo = np.cumsum(cc) - np.polyval(np.polyfit(counts,np.cumsum(cc),1),counts)
plt.figure()
plt.plot(counts,fluo)
plt.xlabel('Tiempo (s)')
plt.ylabel('Cumsum photons')
y = np.array([f for f in fluo])
dt = np.mean(np.diff(np.array(counts)))
print(dt)
plt.figure()
# plt.plot(x, y, label='Señal original')
plt.magnitude_spectrum(y*np.hanning(len(y)),Fs=1/dt)
plt.xlabel('Frecuencia (Hz)')
plt.ylabel('Amplitud')
# plt.xlim(-10,200)
plt.grid(True)
# plt.legend()
#%%
"""
Esto binea fotones asumienod que la cantidad de fotones que llegan en un intervalo tau
esta modulada por una funcion periodica. Entonces a los tiempos de llegada entre
......@@ -189,24 +150,9 @@ Esto deberia hacerse asi para ver la oscilacion a la RF (micromocion)
BINW = 1e-2
T0 = -0.4e-6
files = [20476] #el 19613 es el que muestra el pico en 48.5 Hz
#files = [20577,20578,20579,20580,20581] #el 19613 es el que muestra el pico en 48.5 Hz
SP_Heigths = []
SP_Bins = []
for i, fname in enumerate(files):
#print(i)
#print(fname)
data = h5py.File('0000'+str(fname)+'-CRB.h5', 'r')
counts = np.array(data['datasets']['counts'])
bines = np.arange(counts.min(), counts.max()+BINW, BINW)
heigs, binsf = np.histogram(counts, bines[bines>T0])
SP_Heigths.append(heigs)
SP_Bins.append(binsf)
files = [20587] #el 19613 es el que muestra el pico en 48.5 Hz
def bin_time_arrivals(arrival_times, tau):
"""
......@@ -221,41 +167,66 @@ def bin_time_arrivals(arrival_times, tau):
"""
return arrival_times - tau * (arrival_times // tau)
"""
Amplitud en funcion de la frecuencia de bineo de la rf
"""
freqrf = 7.2618e6
SP_Heigths = []
SP_Bins = []
freqrfvec = np.arange(7262561,7262972,0.1)
amps = []
plt.figure()
for freqrf in freqrfvec:
taurf = 1/freqrf
for i, fname in enumerate(files):
#print(i)
#print(fname)
data = h5py.File('0000'+str(fname)+'-CRB.h5', 'r')
counts = np.array(data['datasets']['counts'])
bines = np.arange(counts.min(), counts.max()+BINW, BINW)
heigs, binsf = np.histogram(counts, bines[bines>T0])
SP_Heigths.append(heigs)
SP_Bins.append(binsf)
tiemposarreglados = bin_time_arrivals(counts, taurf)
b = taurf/50 # Ancho de bineo
bins = np.arange(0, taurf, b)
hist, bin_edges = np.histogram(tiemposarreglados, bins=bins)
"""
Amplitud en funcion de la frecuencia de bineo de la rf
"""
colors = ['b', 'g', 'r'] # Colores para cada repetición
freqrf = 7.2618e6
x_extended = np.concatenate([bin_edges[:-1] + i * taurf for i in range(3)])
y_extended = np.tile(hist, 3)
freqrfvec = np.arange(7262765,7262767,0.01)
def sinusoidal(x, A, C, D):
return A * np.sin(2*np.pi*freqrf * x + C) + D
amps = []
x_extended_dense = np.arange(np.min(x_extended),np.max(x_extended),0.1*(x_extended[1]-x_extended[0]))
params, _ = curve_fit(sinusoidal, x_extended, y_extended, p0=[max(y_extended), 0, np.mean(y_extended)])
amps.append(np.abs(params[0]))
for freqrf in freqrfvec:
taurf = 1/freqrf
tiemposarreglados = bin_time_arrivals(counts, taurf)
b = taurf/50 # Ancho de bineo
bins = np.arange(0, taurf, b)
hist, bin_edges = np.histogram(tiemposarreglados, bins=bins)
colors = ['b', 'g', 'r'] # Colores para cada repetición
x_extended = np.concatenate([bin_edges[:-1] + i * taurf for i in range(3)])
y_extended = np.tile(hist, 3)
def sinusoidal(x, A, C, D):
return A * np.sin(2*np.pi*freqrf * x + C) + D
x_extended_dense = np.arange(np.min(x_extended),np.max(x_extended),0.1*(x_extended[1]-x_extended[0]))
params, _ = curve_fit(sinusoidal, x_extended, y_extended, p0=[max(y_extended), 0, np.mean(y_extended)])
amps.append(np.abs(params[0]))
plt.plot(freqrfvec,amps,'o')
plt.plot([f*1e-6 for f in freqrfvec],amps,'o')
plt.xlabel('Frecuencia RF (MHz)')
plt.ylabel('Amplitud oscilacion')
#%%
"""
......@@ -263,7 +234,7 @@ Grafico temporal replicado 3 veces a la frecuencia dada
"""
freqrf = 7262766
freqrf = 7262766.1
taurf = 1/freqrf
......@@ -281,6 +252,9 @@ y_extended = np.tile(hist, 3)
def sinusoidal(x, A, C, D):
return A * np.sin(2*np.pi*freqrf * x + C) + D
def sinusoidal2(x,A,b,C,D,E):
return A*((C**2)/(C**2 + (D-b*np.sin(2*np.pi*freqrf*x))**2))+E
x_extended_dense = np.arange(np.min(x_extended),np.max(x_extended),0.1*(x_extended[1]-x_extended[0]))
params, _ = curve_fit(sinusoidal, x_extended, y_extended, p0=[max(y_extended), 0, np.mean(y_extended)])
......@@ -297,7 +271,8 @@ for i in range(3):
plt.xlabel("Tiempo bineado (repetido 3 veces)")
plt.ylabel("Frecuencia")
plt.title("Distribución de tiempos bineados con ajuste sinusoidal")
plt.ylim(0,np.max(hist)*1.2)
#plt.ylim(0,np.max(hist)*1.2)
plt.ylim(0,400)
plt.legend()
plt.show()
......
......@@ -9,17 +9,15 @@ import os
from scipy import interpolate
# Solo levanto algunos experimentos
Calib_Files = """000012744-UV_Scan_withcalib_Haeffner
000012745-UV_Scan_withcalib_Haeffner
000012749-UV_Scan_withcalib_Haeffner
000012750-UV_Scan_withcalib_Haeffner
000012751-UV_Scan_withcalib_Haeffner
000012752-UV_Scan_withcalib_Haeffner
000012753-UV_Scan_withcalib_Haeffner
000012754-UV_Scan_withcalib_Haeffner
000012755-UV_Scan_withcalib_Haeffner"""
os.chdir('C://Users//nicon//Doctorado//artiq_experiments//analisis//plots//20230616_newUVspectra//Data')
Files = """000020496-UV_Scan_withcalib_Haeffner
000020498-UV_Scan_withcalib_Haeffner
000020508-UV_Scan_withcalib_Haeffner
000020565-UV_Scan_withcalib_Haeffner
000020555-UV_Scan_withcalib_Haeffner
000020546-UV_Scan_withcalib_Haeffner
"""
os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20250403_UVspectra_bladetrap/Data/')
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220503_EspectrosUVnuevos\Data
......@@ -37,8 +35,8 @@ Freqs = []
Counts = []
T_readouts = []
for i, fname in enumerate(Calib_Files.split()):
print(SeeKeys(Calib_Files))
for i, fname in enumerate(Files.split()):
print(SeeKeys(Files))
print(i)
print(fname)
data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
......@@ -64,7 +62,7 @@ def Lorentzian(f, A, x0, gamma, offset):
#primero muestro las meds 0 y 1 que son dos mediciones con potencia UV quizas un poco
#alta pero en la segunda el ion esta un poquito mejor compensado y se ve cómo se afina el espectro
jvec = [6,7,8]
jvec = [5]
plt.figure()
......@@ -75,13 +73,13 @@ for j in jvec:
portion = 0.
#popt, pcov = curve_fit(Lorentzian, FreqsChosen[int(portion*len(FreqsChosen)):], CountsChosen[int(portion*len(FreqsChosen)):], p0=[12000, 208, 30, 30])
popt, pcov = curve_fit(Lorentzian, FreqsChosen[int(portion*len(FreqsChosen)):], CountsChosen[int(portion*len(FreqsChosen)):], p0=[12000, 208, 30, 30])
freqslong = np.arange(min(FreqsChosen)-10, max(FreqsChosen)+10, (FreqsChosen[1]-FreqsChosen[0])*0.01)
plt.errorbar(FreqsChosen, CountsChosen, yerr=np.sqrt(np.array(CountsChosen)), fmt='o', capsize=5, markersize=5)
#plt.plot(freqslong, Lorentzian(freqslong, popt[0], popt[1], popt[2]), label=f'FWHM {round(popt[1])} MHz')
#plt.plot(freqslong, Lorentzian(freqslong, popt[0], popt[1], popt[2], popt[3]), label=f'FWHM {round(popt[2],1)} MHz')
# plt.plot(freqslong, Lorentzian(freqslong, popt[0], popt[1], popt[2]), label=f'FWHM {round(popt[1])} MHz')
plt.plot(freqslong, Lorentzian(freqslong, popt[0], popt[1], popt[2], popt[3]), label=f'FWHM {round(popt[2],1)} MHz')
#plt.axvline(popt[2]-22.1, linestyle='--', linewidth=1)
#plt.axvline(popt[2]+22.1, linestyle='--', linewidth=1)
plt.xlabel('Frecuencia (MHz)')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment