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

actualizo analisis

parent c75a3b9a
......@@ -134,14 +134,14 @@ plt.legend()
#60 uW de IR
jvec = [10, 9, 11, 12, 13, 14, 15, 16]
Bvec = [2, 0, -1, -1.2, -1.5, -1.75, -2, -2.2]
Ibobinavec = [2, 0, -1, -1.2, -1.5, -1.75, -2, -2.2]
jsel = [9,11,12,13,14,15,16]
plt.figure()
i = 0
for j in jvec:
if j in jsel:
plt.errorbar([2*f*1e-6 for f in Freqs[j]], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', label=f'I={Bvec[i]} A', capsize=2, markersize=2)
plt.errorbar([2*f*1e-6 for f in Freqs[j]], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', label=f'I={Ibobinavec[i]} A', capsize=2, markersize=2)
#plt.plot([2*f*1e-6 for f in Freqs[j]], Counts[j], 'o-', label=f'Amp Tisa: {AmpTisa[i]}', mb arkersize=3)
i = i + 1
#plt.grid()
......@@ -583,7 +583,7 @@ plt.ylabel('Normalized fluorescence', fontsize=11)
plt.grid()
plt.tight_layout()
plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/CPT_exp.png',dpi=500)
#plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/CPT_exp.png',dpi=500)
#%%
from scipy.optimize import curve_fit
......
......@@ -106,7 +106,7 @@ fig1, ax1 = plt.subplots()
offsetx = 464
ax1.plot([f-offsetx for f in FreqsDR], CountsDR, 'o')
#ax1.plot([f-offsetx for f in FreqsDR], CountsDR, 'o')
run = True
......
......@@ -80,6 +80,7 @@ plt.ylabel('Cuentas')
#%%
from scipy.signal import savgol_filter as sf
import seaborn as sns
plt.style.use('seaborn-ticks')
......@@ -95,9 +96,11 @@ for j in jselected:
bkgr2 = np.min([FluovsBshort[0][1],FluovsBshort[1][1],FluovsBshort[2][1],FluovsBshort[3][1]])
#bkgrposta = np.min()
plt.figure(figsize=(3.5, 3))
for j in range(len(jselected)):
rawcuentas = [f-bkgr for f in FluovsBshort[j]]
rawcuentas = [f-bkgr2 for f in FluovsBshort[j]]
cuentas = np.array(rawcuentas[0:3]+list(sf(rawcuentas[3:],7,3)))
plt.plot(PotenciasIR[1:], cuentas[1:], 'o', color=colorsselected[j], markersize=3.5)
plt.fill_between(PotenciasIR[1:], cuentas[1:]-np.sqrt(cuentas)[1:], cuentas[1:]+np.sqrt(cuentas)[1:], color=colorsselected[j], alpha=0.4)
......@@ -108,7 +111,7 @@ plt.grid()
plt.xlabel(r'Repump power ($\mu$W)', fontsize=11)
plt.ylabel('Counts', fontsize=11)
plt.tight_layout()
plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/Barriendopotencia_exp.png',dpi=500)
#plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/Barriendopotencia_exp.png',dpi=500)
#%%
# en funcion del campo magnetico ahora
......@@ -197,39 +200,120 @@ plt.grid()
"""
#longBvec = np.arange(np.min(Bvec), np.max(Bvec), 0.1*Bvec[1]-0.1*Bvec[0])
longBvec = np.arange(0.005, 0.033, 0.01*Bvec[1]-0.01*Bvec[0])
longBvec = np.arange(-0.005, 0.033, 0.01*Bvec[1]-0.01*Bvec[0])
def LinearFitPotvsB(b, pendiente, ordenada):
return pendiente*b + ordenada
def LinearFitPotvsB(b, pendiente):
#ordenada=0
return pendiente*b
#popt_expvspot, pcov_expvspot = curve_fit(LinearFitPotvsB, np.array([0]+Bvec), np.array([0]+MaxsPotsExp))
popt_expvspot, pcov_expvspot = curve_fit(LinearFitPotvsB, np.array(Bvec), np.array(MaxsPotsExp))
yerr0=4
print(popt_expvspot)
print(f'Ordenada al origen: {round(popt_expvspot[1],1)} +- {round(np.sqrt(pcov_expvspot[1,1]),1)} mW/G')
#print(f'Ordenada al origen: {round(popt_expvspot[1],1)} +- {round(np.sqrt(pcov_expvspot[1,1]),1)} mW/G')
#%%
'''
Figura paper. Umbral vs campo magnetico con la calibracion
Figura paper. Umbral vs campo magnetico con la calibracion y la teoria superpuesta (la teoria sale de threeLevel_2repumps_CPTPlotter.py de Figura CPT Teorica)
'''
propor = LinearFitPotvsB(longBvec, *popt_expvspot)[-1]/RabiVector[0][-1] #esto viene del threeLevel_2repumps_CPTPlotter.py de Figura CPT Teorica
#colores=sns.color_palette("mako")
colores=sns.color_palette("rocket")
plt.figure(figsize=(3.5, 3))
plt.errorbar([b*1e3 for b in Bvec], MaxsPotsExp, xerr=1e3*MeanError/(2*np.pi)/c, yerr=4, color='purple', fmt="o", markersize=5)
plt.errorbar([b*1e3 for b in Bvec], MaxsPotsExp/propor, xerr=1e3*MeanError/(2*np.pi)/c, yerr=yerr0/propor, color=colores[0], fmt="o", markersize=4, zorder=3, elinewidth=1)
#plt.plot([0],[0],'o', markersize=5)
plt.plot([b*1e3 for b in longBvec], LinearFitPotvsB(longBvec, *popt_expvspot), linewidth=2, color='orangered')
plt.xlabel('Magnetic field (mG)', fontsize=11)
plt.ylabel('Threshold power (mW)', fontsize=11)
plt.xlim(6,32)
plt.ylim(17,81)
#plt.plot([b*1e3 for b in longBvec], LinearFitPotvsB(longBvec, *popt_expvspot), linewidth=1., color=colores[3])
plt.plot(CamposVector[0], RabiVector[0], linewidth=1., color=colores[3]) #esto viene del threeLevel_2repumps_CPTPlotter.py de Figura CPT Teorica
plt.xlabel('Magnetic field (mG)', fontsize=12, fontname='STIXGeneral')
#plt.ylabel('Threshold power (mW)', fontsize=11, fontname='STIXGeneral')
plt.ylabel(r'$\left(\Omega_{DP}/\Gamma_{\mathrm{DP}}\right)^2$', fontsize=12, fontname='STIXGeneral')
plt.xticks([0,5,10,15,20,25,30], fontsize=12, fontname='STIXGeneral')
plt.yticks([0.,0.5,1.,1.5,2.], fontsize=12, fontname='STIXGeneral')
plt.xlim(0,32)
#plt.ylim(0,81)
plt.grid()
plt.tight_layout()
plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/umbralvsB_exp.png',dpi=500)
#plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Work/2022 B vs k race/Figuras/Figuras jpg trabajadas/umbralvsB_exp.png',dpi=500)
plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Papers/2022 B vs K eigenbasis/Figuras_finales/thresholdvsB_exp.pdf')
#%%
'''
Figura paper. Curvas de fluorescencia vs potencia del IR
'''
def find_nearest(array, value):
array = np.asarray(array)
idx = (np.abs(array - value)).argmin()
return idx
from scipy.signal import savgol_filter as sf
import seaborn as sns
plt.style.use('seaborn-ticks')
colors=sns.color_palette("rocket", 10)
colorsselected=[colors[0],colors[3],colors[5],colors[8]]
FluovsBshort = []
#jselected = [0, 1, 4, 8]
jselected = [8, 2, 1, 0]
Bcampos = [b*1e3 for b in Bvec]
Bfields = [Bcampos[6], Bcampos[2], Bcampos[1], Bcampos[0]]
for j in jselected:
FluovsBshort.append(IR_fluorescence_vec[j])
#bkgr2 = np.min([FluovsBshort[0][1],FluovsBshort[1][1],FluovsBshort[2][1],FluovsBshort[3][1]])
#bkgrposta = np.min()
PotenciasMaximos_parcial = MaxsPotsExp/propor
PotenciasMaximos = [PotenciasMaximos_parcial[6],PotenciasMaximos_parcial[2],PotenciasMaximos_parcial[1],PotenciasMaximos_parcial[0]]
smoothen_order = [3,3,3,1]
err = [2,1,1,1]
orden=5
plt.figure(figsize=(3.5, 3))
for j in range(len(jselected)):
print(j)
rawcuentas = [f-bkgr for f in FluovsBshort[j]]
#cuentas = np.array(rawcuentas[0:3]+list(sf(rawcuentas[3:],7,3))) #este va bien
cuentas = np.array(rawcuentas[0:3]+list(sf(rawcuentas[3:],13,smoothen_order[j]))) #este va bien
#maximumfluo_index = np.array(cuentas[1:-1]).argmax()
maximumfluo_index = find_nearest(PotenciasIR[1:-1]/propor, PotenciasMaximos[j])
plt.plot(PotenciasIR[1:-1]/propor, cuentas[1:-1]/1000, 'o', color=colorsselected[j], markersize=3.5, label=f"$B={int(round(Bfields[j],0))}({err[j]})$ mG",zorder=orden)
plt.vlines(x=(1/propor)*PotenciasIR[1:-1][maximumfluo_index],ymin=0,ymax=cuentas[1:-1][maximumfluo_index]/1000,color=colorsselected[j],zorder=1,linewidth=2)
plt.fill_between(PotenciasIR[1:-1]/propor, (cuentas[1:-1]-1*np.sqrt(cuentas)[1:-1])/1000, (cuentas[1:-1]+1*np.sqrt(cuentas)[1:-1])/1000, color=colorsselected[j], alpha=0.4, zorder=orden)
orden=orden-1
#plt.errorbar(PotenciasIR, cuentas, yerr=1*np.sqrt(cuentas), color='r', fmt='o', capsize=2, markersize=4)
#plt.xlim(0, 90)
#plt.ylim(-100,3500)
#for pot in MaxsPotsExp/propor:
# plt.axvline(pot)
plt.grid()
plt.xlabel(r'Laser intensity $\left(\Omega_{\mathrm{DP}}/\Gamma_{\mathrm{DP}}\right)^2$', fontsize=12, fontname='STIXGeneral')
#plt.xlabel(r'$\Gamma$', fontsize=12, fontname='STIXGeneral')
plt.ylabel('Fluorescence (kcounts/s)', fontsize=12, fontname='STIXGeneral')
plt.xticks([0.,0.5,1.,1.5,2.], fontsize=12, fontname='STIXGeneral')
plt.yticks([0,1,2,3], fontsize=12, fontname='STIXGeneral')
plt.ylim(0,3.7)
plt.tight_layout()
plt.legend(loc='upper left', frameon=True, fontsize=7, handletextpad=0.1)
plt.savefig('/home/nico/Nextcloud/G_liaf/Publicaciones/Papers/2022 B vs K eigenbasis/Figuras_finales/Measurement_thresholds_v2.pdf')
......
......@@ -92,6 +92,106 @@ for i in ivec:
aspectratio = (np.array(FrequencyVec[i])[pics[0]][-1]*1e-6)/(np.array(FrequencyVec[i])[pics[0]][0]*1e-6)
print(aspectratio**(-1))
#%%
"""
Nuevas mediciones: dan mejor
"""
os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20230510_MotionalSpectrum/DataRawElectric/')
Data = []
for ii in range(1,10):
Data.append(f"s0{ii}.dat")
for ii in range(10,14):
Data.append(f"s{ii}.dat")
#for ii in range(40,49):
# Data.append(f"ss{ii}.dat")
os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20230510_MotionalSpectrum/DataRawElectric2/')
for ii in range(1,10):
Data.append(f"s0{ii}.dat")
for ii in range(10,24):
Data.append(f"s{ii}.dat")
#for ii in range(40,49):
# Data.append(f"ss{ii}.dat")
FrequencyVec = []
FluoVec = []
for dd in Data:
data = np.genfromtxt(dd,
skip_header=1,
names=True,
dtype=None,
delimiter=' ')
FrequencyVec.append([data[i][1] for i in range(len(data))])
FluoVec.append([data[i][2] for i in range(len(data))])
#%%
"""
Miro modo radial con roi chiquita, una en el medio del ion y otra en donde el ion se estira en el costadito
"""
ivec = [33]
plt.figure()
for i in ivec:
plt.plot([f*1e-6 for f in FrequencyVec[i]], FluoVec[i],'-o')
#plt.xlim(0.3,0.6)
#%%
"""
Modos radiales
"""
ivec = [23]
plt.figure()
for i in ivec:
plt.plot([f*1e-6 for f in FrequencyVec[i]], FluoVec[i],'o')
#plt.xlim(0.3,0.6)
#%%
"""
Todos los modos de una
"""
ivec = [33]
ki=3500
kf=-1500
plt.figure()
plt.plot([f*1e-6 for f in FrequencyVec[23]], FluoVec[23],'ro')
plt.plot([f*1e-6 for f in FrequencyVec[33]][ki:kf], FluoVec[33][ki:kf],'ro')
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('Cuentas')
plt.xlim(1.5,1.6)
#%%
"""
Miro modo radial con roi chiquita, una en el medio del ion y otra en donde el ion se estira en el costadito
"""
ivec = [0,1]
plt.figure()
plt.plot([f*1e-6 for f in FrequencyVec[0]], FluoVec[0],'o')
plt.plot([f*1e-6+0.003 for f in FrequencyVec[1]], FluoVec[1],'o')
#plt.xlim(0.3,0.6)
#%%
"""
Encuentro el primer modo relativo que es el breathing por ser sqrt(3)*wx
"""
ivec = [7]
plt.figure()
for i in ivec:
plt.plot([f*1e-6 for f in FrequencyVec[i]], FluoVec[i],'o')
plt.xlim(1.32,1.42)
plt.ylim(104.5,108.5)
......@@ -88,7 +88,8 @@ RefBins = [t*1e6 for t in SP_Bins[0][:-1]]
plt.figure()
for Height in [SP_Heigths[3]]:
plt.plot(RefBins, Height)
print(Height)
plt.plot(RefBins, Height,'o')
plt.xlim(0.15, 0.5)
......
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
#Mediciones barriendo angulo del TISA y viendo kicking de resonancias oscuras
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data
os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20230609_LocalizedSaturationInCrystal/Data/')
MOTIONAL_FILES = """000012579-MeltingExperiment
000012580-MeltingExperiment
000012581-MeltingExperiment
000012582-MeltingExperiment
000012583-MeltingExperiment
000012584-MeltingExperiment
000012585-MeltingExperiment
000012586-MeltingExperiment
000012587-MeltingExperiment
000012588-MeltingExperiment
000012597-MeltingExperiment
000012603-MeltingExperiment
000012604-MeltingExperiment
000012605-MeltingExperiment
000012606-MeltingExperiment
000012607-MeltingExperiment
000012608-MeltingExperiment
000012609-MeltingExperiment
000012611-MeltingExperiment
000012612-MeltingExperiment
000012613-MeltingExperiment
000012614-MeltingExperiment
000012615-MeltingExperiment
000012617-MeltingExperiment
000012619-MeltingExperiment
000012630-MeltingExperiment
000012631-MeltingExperiment
000012632-MeltingExperiment
000012633-MeltingExperiment
000012634-MeltingExperiment
"""
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()))
print(SeeKeys(MOTIONAL_FILES))
#%%
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211101_CPT_DosLaseres_v03\Data
CountsRoi1 = []
CountsRoi2 = []
Amplitudes = []
UV_amps = []
IR_amps = []
for i, fname in enumerate(MOTIONAL_FILES.split()):
print(str(i) + ' - ' + fname)
data = h5py.File(fname+'.h5', 'r')
Amplitudes.append(np.array(data['datasets']['amplitudes']))
CountsRoi1.append(np.array(data['datasets']['counts_roi1']))
CountsRoi2.append(np.array(data['datasets']['counts_roi2']))
UV_amps.append(np.array(data['datasets']['UV_measurement_amp']))
IR_amps.append(np.array(data['datasets']['IR1_measurement_amp']))
#%%
"""
Vemos transiciones de fase en un cristal de 7 iones midiendo luz en un ion y en un sitio entre dos iones
variando la potencia del laser UV
"""
#19 y 20: rois en dos iones. 19: uno a la derecha y otro externo del cetro. 20: uno a la derecha y otro al a izquierda
#21 para abajo: 7 iones
#22, 23, 24: son 6 iones con 5 deslocalizados afuera y 1 adentro
jvec = [9,8,7,6]
plt.figure()
i = 0
for j in jvec:
#plt.errorbar(Amplitudes[j], CountsRoi1[j], yerr=np.sqrt(CountsRoi1[j]), color='red', fmt='-o', capsize=2, markersize=2)
#plt.plot(Amplitudes[j][1:], CountsRoi1[j][1:], 'o',color='red', markersize=2,label=f'UVamp: {UV_amps[j]}')
plt.plot(Amplitudes[j][1:], CountsRoi2[j][1:], 'o', markersize=2,label=f'UVamp: {UV_amps[j]}')
print(f'UVamp: {UV_amps[j]}')
i = i + 1
plt.xlabel('Amplitud Artiq')
plt.ylabel('Cuentas ROI')
plt.xlim(0.05,0.23)
plt.ylim(7800,8550)
plt.grid()
plt.legend()
#%%
"""
Vemos saturacion en pares de iones distintos de un cristal
"""
#19 y 20: rois en dos iones. 19: uno a la derecha y otro externo del cetro. 20: uno a la derecha y otro al a izquierda
#21 para abajo: 7 iones
#22, 23, 24: son 6 iones con 5 deslocalizados afuera y 1 adentro
jvec = [20]
plt.figure()
i = 0
for j in jvec:
#plt.errorbar(Amplitudes[j], CountsRoi1[j], yerr=np.sqrt(CountsRoi1[j]), color='red', fmt='-o', capsize=2, markersize=2)
plt.plot(Amplitudes[j][1:], CountsRoi1[j][1:], 'o',color='red', markersize=2, label='Ion derecha arriba')
plt.plot(Amplitudes[j][1:], [c*1.004 for c in CountsRoi2[j][1:]], 'o',color='blue', markersize=2, label='Ion izquierda arriba')
i = i + 1
plt.xlabel('Amplitud Artiq')
plt.ylabel('Cuentas ROI')
#plt.xlim(851,856)
#plt.ylim(600,1700)
plt.grid()
plt.legend()
#%%
"""
saturacion de cristal de dos iones, una roi por cada ion. se ven muy parecidas
"""
#19 y 20: rois en dos iones. 19: uno a la derecha y otro externo del cetro. 20: uno a la derecha y otro al a izquierda
#21 para abajo: 7 iones
#22, 23, 24: son 6 iones con 5 deslocalizados afuera y 1 adentro
jvec = [25]
off = 8020
kte=2.4
plt.figure()
i = 0
for j in jvec:
#plt.errorbar(Amplitudes[j], CountsRoi1[j], yerr=np.sqrt(CountsRoi1[j]), color='red', fmt='-o', capsize=2, markersize=2)
plt.plot(Amplitudes[j][1:], [c-off for c in CountsRoi1[j][1:]], 'o',color='red', markersize=2, label='Ion derecha')
plt.plot(Amplitudes[j][1:], [(c-off)*kte for c in CountsRoi2[j][1:]], 'o',color='blue', markersize=2, label='Ion izquierda')
i = i + 1
plt.xlabel('Amplitud Artiq')
plt.ylabel('Cuentas ROI')
#plt.xlim(851,856)
#plt.ylim(600,1700)
plt.grid()
plt.legend()
#%%
"""
saturacion de cristal de dos iones, una roi por cada ion. se ven muy parecidas
"""
#19 y 20: rois en dos iones. 19: uno a la derecha y otro externo del cetro. 20: uno a la derecha y otro al a izquierda
#21 para abajo: 7 iones
#22, 23, 24: son 6 iones con 5 deslocalizados afuera y 1 adentro
jvec = [26,27,28,29]
off = 8020
kte=2.4
plt.figure()
i = 0
for j in jvec:
#plt.errorbar(Amplitudes[j], CountsRoi1[j], yerr=np.sqrt(CountsRoi1[j]), color='red', fmt='-o', capsize=2, markersize=2)
#plt.plot(Amplitudes[j][1:], [c-off for c in CountsRoi1[j][1:]], 'o',color='red', markersize=2, label='Ion derecha')
plt.plot(Amplitudes[j][1:], [(c-off)*kte for c in CountsRoi2[j][1:]], 'o',color='blue', markersize=2, label='Ion izquierda')
i = i + 1
plt.xlabel('Amplitud Artiq')
plt.ylabel('Cuentas ROI')
#plt.xlim(851,856)
#plt.ylim(600,1700)
plt.grid()
plt.legend()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 1 17:58:39 2020
@author: oem
"""
import os
import numpy as np
#os.chdir('/home/oem/Nextcloud/G_liaf/liaf-TrampaAnular/Código General/EIT-CPT/Buenos Aires/Experiment Simulations/CPT scripts/Eight Level 2 repumps')
from threeLevel_2repumps_AnalysisFunctions import CalculoTeoricoDarkResonances_8levels, GetMinimaInfo, GetPlotsofFluovsAngle_8levels, PerformExperiment_8levels, FindDRFrequencies, FindRelativeFluorescencesOfDR, GenerateNoisyCPT, SmoothNoisyCPT, GetFinalMaps, GenerateNoisyCPT_fixedRabi, GenerateNoisyCPT_fit
import matplotlib.pyplot as plt
import time
from threeLevel_2repumps_AnalysisFunctions import MeasureRelativeFluorescenceFromCPT, IdentifyPolarizationCoincidences, RetrieveAbsoluteCoincidencesBetweenMaps, GetClosestIndex
#C:\Users\Usuario\Nextcloud\G_liaf\liaf-TrampaAnular\Código General\EIT-CPT\Buenos Aires\Experiment Simulations\CPT scripts\Eight Level 2 repumps
ub = 9.27e-24
h = 6.63e-34
c = (ub/h)*1e-4 #en unidades de MHz/G
#u = 1e6
u = 33.5e6
B = (u/(2*np.pi))/c
#sg, sp = 0.6, 5 #parámetros de control, saturación del doppler y repump
#rabG, rabP = sg*gPS, sp*gPD #frecuencias de rabi
gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 #anchos de linea de las transiciones
lw = 0.1
DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
DetDoppler = -36 #42
DetRepumpVec = [DetDoppler+29.6]
Tvec = [0.7] #temperatura en mK
alpha = 0*(np.pi/180) #angulo entre los láseres
phidoppler, titadoppler = 0, 90
phirepump, titarepump = 0, 0
phiprobe = 0
titaprobe = 90
#Calculo las resonancias oscuras teóricas
#ResonanciasTeoricas, DRPositivas = CalculoTeoricoDarkResonances_8levels(u/(2*np.pi*1e6), titadoppler, DetDoppler, DetRepump)
#Parametros de la simulacion cpt
center = -45
span = 80
freqMin = center-span*0.5
freqMax = center+span*0.5
""" parametros para tener espectros coherentes
freqMin = -56
freqMax = 14
"""
freqStep = 1e-1
noiseamplitude = 0
RelMinMedido0Vector = []
RelMinMedido1Vector = []
RelMinMedido2Vector = []
RelMinMedido3Vector = []
RelMinMedido4Vector = []
#Sr = np.arange(0, 10, 0.2)
#Sg = np.arange(0.01, 1, 0.05)
#Sp = np.arange(0.1, 6.1, 1)
#Sg = [0.6**2]
#Sp = [2.3**2]
Sg = [1.4]
Sp = [6]
Sr = [11]
i = 0
save = False
showFigures = True
if not showFigures:
plt.ioff()
else:
plt.ion()
fig1, ax1 = plt.subplots()
offsetx = 464
ax1.plot([f-offsetx for f in FreqsDR], CountsDR, 'o')
run = True
Scale = 730
Offset = 600 #600 para 20k cuentas aprox
MaxCoherenceValue = []
for sg in Sg:
for sp in Sp:
rabG, rabP = sg*gPS, sp*gPD
for Ti in Tvec:
T = Ti*1e-3
for DetRepump in DetRepumpVec:
print(T)
for sr in Sr:
rabR = sr*gPD
#MeasuredFreq, MeasuredFluo = GenerateNoisyCPT(rabG, rabR, rabP, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqMin, freqMax, freqStep, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
if run:
MeasuredFreq4, MeasuredFluo4 = GenerateNoisyCPT_fixedRabi(sg, sr, sp, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqMin, freqMax, freqStep, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
#SmoothFluo = SmoothNoisyCPT(MeasuredFluo, window=9, poly=2)
SmoothFluo4 = MeasuredFluo4
#Scale = max(BestC)/max([100*s for s in SmoothFluo4])
ax1.plot(MeasuredFreq4, [Scale*100*f + Offset for f in SmoothFluo4], label=f'Sr = {sr}')
ax1.axvline(DetDoppler, linestyle='--', linewidth=1)
#if sr != 0:
#ax1.axvline(DetRepump, linestyle='--', linewidth=1)
MaxCoherenceValue.append(np.max(SmoothFluo4))
#print(titaprobe)
ax1.set_xlabel('Detuning Rebombeo (MHz)')
ax1.set_ylabel('Fluorescencia (AU)')
ax1.set_title(f'B: {round(B, 2)} G, Sdop: {round(sg, 2)}, Sp: {round(sp, 2)}, Sr: {round(sr, 2)}, lw: {lw} MHz, T: {Ti} mK')
#ax1.set_ylim(0, 8)
#ax1.axvline(DetDoppler, linestyle='dashed', color='red', linewidth=1)
#ax1.axvline(DetRepump, linestyle='dashed', color='black', linewidth=1)
#ax1.set_title('Pol Doppler y Repump: Sigma+ Sigma-, Pol Probe: PI')
#ax1.legend()
ax1.grid()
print (f'{i+1}/{len(Sg)*len(Sp)}')
i = i + 1
if save:
plt.savefig(f'Mapa_plots_100k_1mk/CPT_SMSM_sdop{round(sg, 2)}_sp{round(sp, 2)}_sr{round(sr, 2)}.jpg')
ax1.legend()
"""
plt.figure()
plt.plot(Sr, MaxCoherenceValue, 'o')
plt.xlabel('Sr')
plt.ylabel('Coherence')
"""
"""
plt.figure()
plt.plot(MeasuredFreq, [100*f for f in SmoothFluo], color='darkred')
plt.xlabel('Desintonía 866 (MHz)')
plt.ylabel('Fluorescencia (A.U.)')
plt.axvline(-30, color='darkblue', linewidth=1.2, linestyle='--')
plt.yticks(np.arange(0.4, 1.8, 0.2))
plt.ylim(0.5, 1.6)
plt.grid()
plt.figure()
plt.plot(MeasuredFreq4, [100*f for f in SmoothFluo4], color='darkred')
plt.xlabel('Desintonía 866 (MHz)')
plt.ylabel('Fluorescencia (A.U.)')
plt.axvline(-30, color='darkblue', linewidth=1.2, linestyle='--')
plt.yticks(np.arange(0.8, 2.4, 0.4))
plt.grid()
"""
#%%
from scipy.optimize import curve_fit
T = 0.5e-3
sg = 0.7
sp = 6
sr = 0
DetDoppler = -14
DetRepump = 0
FitsSp = []
FitsOffset = []
Sg = [0.87]
def FitEIT(freqs, SP, offset):
MeasuredFreq, MeasuredFluo = GenerateNoisyCPT_fit(0.87, sr, SP, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqs, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
FinalFluo = [f*43000 + 2685 for f in MeasuredFluo]
return FinalFluo
freqs = [f-offsetx+32 for f in FreqsDR]
freqslong = np.arange(min(freqs), max(freqs)+freqs[1]-freqs[0], 0.1*(freqs[1]-freqs[0]))
popt, pcov = curve_fit(FitEIT, freqs, CountsDR, p0=[5, 700], bounds=(0, [10, 1e6]))
FitsSp.append(popt[0])
FitsOffset.append(popt[1])
print(popt)
FittedEIT = FitEIT(freqslong, *popt)
plt.figure()
plt.errorbar(freqs, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', capsize=2, markersize=2)
plt.plot(freqslong, FitEIT(freqslong, *popt))
plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {T*1e3} mK, detDop: {DetDoppler} MHz')
np.savetxt('CPT_measured.txt', np.transpose([freqs, CountsDR]))
np.savetxt('CPT_fitted.txt', np.transpose([freqslong, FittedEIT]))
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 = """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"""
#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 = []
T_readouts = []
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']))
T_readouts.append(np.array(data['datasets']['t_readout']))
#def GetBackground(countsper100ms, )
#%%
from scipy.special import jv
def Lorentzian(f, A, x0, gamma, offset):
return (A/np.pi)*0.5*gamma/(((f-x0)**2)+((0.5*gamma)**2)) + offset #40 es el piso de ruido estimado
#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 = [0,1]
plt.figure()
for j in jvec:
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)):], 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.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[2])} MHz')
#%%
from scipy.special import jv
from scipy.optimize import curve_fit
def Lorentzian(f, A, gamma, x0):
return (A/np.pi)*0.5*gamma/(((f-x0)**2)+((0.5*gamma)**2))
def MicromotionSpectra(det, A, beta, x0):
ftrap=22.1
gamma=37
P = A*(jv(0, beta)**2)/(((det-x0)**2)+(0.5*gamma)**2)+100
i = 1
#print(P)
while i <= 2:
P = P + A*((jv(i, beta))**2)/((((det-x0)+i*ftrap)**2)+(0.5*gamma)**2) + A*((jv(-i, beta))**2)/((((det-x0)-i*ftrap)**2)+(0.5*gamma)**2)
i = i + 1
#print(P)
return P
jvec = [1] #UV_cooling en 90 MHz
plt.figure()
for j in jvec:
FreqsChosen = [2*f*1e-6 for f in Freqs[j]]
CountsChosen = Counts[j]
portion = 0.
popt, pcov = curve_fit(MicromotionSpectra, FreqsChosen[int(portion*len(FreqsChosen)):], CountsChosen[int(portion*len(FreqsChosen)):],p0=[100000,0.1,215], bounds=((0,0,0),(10000000,10,300)))
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, MicromotionSpectra(freqslong, *popt), label=f'FWHM 30 MHz')
#plt.axvline(popt[2]+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'Beta: {round(popt[1],2)}')
#%%
from scipy.special import jv
def Lorentzian(f, A, x0, gamma, offset):
return (A/np.pi)*0.5*gamma/(((f-x0)**2)+((0.5*gamma)**2)) + offset #40 es el piso de ruido estimado
#para tres potencias distintas del UV:
jvec = [2,3,4,5]
plt.figure()
for j in jvec:
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)):], 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.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[2])} MHz')
#%%
from scipy.special import jv
from scipy.optimize import curve_fit
def Lorentzian(f, A, gamma, x0):
return (A/np.pi)*0.5*gamma/(((f-x0)**2)+((0.5*gamma)**2))
def MicromotionSpectra(det, A, beta, x0, gamma):
ftrap=22.1
#gamma=30
P = A*(jv(0, beta)**2)/(((det-x0)**2)+(0.5*gamma)**2)+100
i = 1
#print(P)
while i <= 2:
P = P + A*((jv(i, beta))**2)/((((det-x0)+i*ftrap)**2)+(0.5*gamma)**2) + A*((jv(-i, beta))**2)/((((det-x0)-i*ftrap)**2)+(0.5*gamma)**2)
i = i + 1
#print(P)
return P
jvec = [6, 7] #6, 7, 8: tres compensaciones distintas. la 8 en realidad el ion se fue un pcoo del pinhole entonces se ve mas chica
plt.figure()
for j in jvec:
FreqsChosen = [2*f*1e-6 for f in Freqs[j]]
CountsChosen = Counts[j]
portion = 0.
popt, pcov = curve_fit(MicromotionSpectra, FreqsChosen[int(portion*len(FreqsChosen)):], CountsChosen[int(portion*len(FreqsChosen)):],p0=[100000,0.1,215, 30], bounds=((0,0,0,0),(10000000,10,300,100)))
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, label=f'Beta: {round(popt[1],2)}, Gamma: {round(popt[3],1)}')
#plt.plot(freqslong, Lorentzian(freqslong, popt[0], popt[1], popt[2]), label=f'FWHM {round(popt[1])} MHz')
plt.plot(freqslong, MicromotionSpectra(freqslong, *popt))
#plt.axvline(popt[2]+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'Beta: {round(popt[1],2)}')
\ No newline at end of file
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 1 17:58:39 2020
@author: oem
"""
import os
import numpy as np
#os.chdir('/home/oem/Nextcloud/G_liaf/liaf-TrampaAnular/Código General/EIT-CPT/Buenos Aires/Experiment Simulations/CPT scripts/Eight Level 2 repumps')
from threeLevel_2repumps_AnalysisFunctions import CalculoTeoricoDarkResonances_8levels, GetMinimaInfo, GetPlotsofFluovsAngle_8levels, PerformExperiment_8levels, FindDRFrequencies, FindRelativeFluorescencesOfDR, GenerateNoisyCPT, SmoothNoisyCPT, GetFinalMaps, GenerateNoisyCPT_fixedRabi, GenerateNoisyCPT_fit
import matplotlib.pyplot as plt
import time
from threeLevel_2repumps_AnalysisFunctions import MeasureRelativeFluorescenceFromCPT, IdentifyPolarizationCoincidences, RetrieveAbsoluteCoincidencesBetweenMaps, GetClosestIndex
#C:\Users\Usuario\Nextcloud\G_liaf\liaf-TrampaAnular\Código General\EIT-CPT\Buenos Aires\Experiment Simulations\CPT scripts\Eight Level 2 repumps
ub = 9.27e-24
h = 6.63e-34
c = (ub/h)*1e-4 #en unidades de MHz/G
#u = 1e6
u = 33.5e6
B = (u/(2*np.pi))/c
#sg, sp = 0.6, 5 #parámetros de control, saturación del doppler y repump
#rabG, rabP = sg*gPS, sp*gPD #frecuencias de rabi
gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 #anchos de linea de las transiciones
lw = 0.1
DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
DetDoppler = -36 #42
DetRepumpVec = [DetDoppler+29.6]
Tvec = [0.7] #temperatura en mK
alpha = 0*(np.pi/180) #angulo entre los láseres
phidoppler, titadoppler = 0, 90
phirepump, titarepump = 0, 0
phiprobe = 0
titaprobe = 90
#Calculo las resonancias oscuras teóricas
#ResonanciasTeoricas, DRPositivas = CalculoTeoricoDarkResonances_8levels(u/(2*np.pi*1e6), titadoppler, DetDoppler, DetRepump)
#Parametros de la simulacion cpt
center = -45
span = 80
freqMin = center-span*0.5
freqMax = center+span*0.5
""" parametros para tener espectros coherentes
freqMin = -56
freqMax = 14
"""
freqStep = 1e-1
noiseamplitude = 0
RelMinMedido0Vector = []
RelMinMedido1Vector = []
RelMinMedido2Vector = []
RelMinMedido3Vector = []
RelMinMedido4Vector = []
#Sr = np.arange(0, 10, 0.2)
#Sg = np.arange(0.01, 1, 0.05)
#Sp = np.arange(0.1, 6.1, 1)
#Sg = [0.6**2]
#Sp = [2.3**2]
Sg = [1.4]
Sp = [6]
Sr = [11]
i = 0
save = False
showFigures = True
if not showFigures:
plt.ioff()
else:
plt.ion()
fig1, ax1 = plt.subplots()
offsetx = 464
ax1.plot([f-offsetx for f in FreqsDR], CountsDR, 'o')
run = True
Scale = 730
Offset = 600 #600 para 20k cuentas aprox
MaxCoherenceValue = []
for sg in Sg:
for sp in Sp:
rabG, rabP = sg*gPS, sp*gPD
for Ti in Tvec:
T = Ti*1e-3
for DetRepump in DetRepumpVec:
print(T)
for sr in Sr:
rabR = sr*gPD
#MeasuredFreq, MeasuredFluo = GenerateNoisyCPT(rabG, rabR, rabP, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqMin, freqMax, freqStep, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
if run:
MeasuredFreq4, MeasuredFluo4 = GenerateNoisyCPT_fixedRabi(sg, sr, sp, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqMin, freqMax, freqStep, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
#SmoothFluo = SmoothNoisyCPT(MeasuredFluo, window=9, poly=2)
SmoothFluo4 = MeasuredFluo4
#Scale = max(BestC)/max([100*s for s in SmoothFluo4])
ax1.plot(MeasuredFreq4, [Scale*100*f + Offset for f in SmoothFluo4], label=f'Sr = {sr}')
ax1.axvline(DetDoppler, linestyle='--', linewidth=1)
#if sr != 0:
#ax1.axvline(DetRepump, linestyle='--', linewidth=1)
MaxCoherenceValue.append(np.max(SmoothFluo4))
#print(titaprobe)
ax1.set_xlabel('Detuning Rebombeo (MHz)')
ax1.set_ylabel('Fluorescencia (AU)')
ax1.set_title(f'B: {round(B, 2)} G, Sdop: {round(sg, 2)}, Sp: {round(sp, 2)}, Sr: {round(sr, 2)}, lw: {lw} MHz, T: {Ti} mK')
#ax1.set_ylim(0, 8)
#ax1.axvline(DetDoppler, linestyle='dashed', color='red', linewidth=1)
#ax1.axvline(DetRepump, linestyle='dashed', color='black', linewidth=1)
#ax1.set_title('Pol Doppler y Repump: Sigma+ Sigma-, Pol Probe: PI')
#ax1.legend()
ax1.grid()
print (f'{i+1}/{len(Sg)*len(Sp)}')
i = i + 1
if save:
plt.savefig(f'Mapa_plots_100k_1mk/CPT_SMSM_sdop{round(sg, 2)}_sp{round(sp, 2)}_sr{round(sr, 2)}.jpg')
ax1.legend()
"""
plt.figure()
plt.plot(Sr, MaxCoherenceValue, 'o')
plt.xlabel('Sr')
plt.ylabel('Coherence')
"""
"""
plt.figure()
plt.plot(MeasuredFreq, [100*f for f in SmoothFluo], color='darkred')
plt.xlabel('Desintonía 866 (MHz)')
plt.ylabel('Fluorescencia (A.U.)')
plt.axvline(-30, color='darkblue', linewidth=1.2, linestyle='--')
plt.yticks(np.arange(0.4, 1.8, 0.2))
plt.ylim(0.5, 1.6)
plt.grid()
plt.figure()
plt.plot(MeasuredFreq4, [100*f for f in SmoothFluo4], color='darkred')
plt.xlabel('Desintonía 866 (MHz)')
plt.ylabel('Fluorescencia (A.U.)')
plt.axvline(-30, color='darkblue', linewidth=1.2, linestyle='--')
plt.yticks(np.arange(0.8, 2.4, 0.4))
plt.grid()
"""
#%%
from scipy.optimize import curve_fit
T = 0.5e-3
sg = 0.7
sp = 6
sr = 0
DetDoppler = -14
DetRepump = 0
FitsSp = []
FitsOffset = []
Sg = [0.87]
def FitEIT(freqs, SP, offset):
MeasuredFreq, MeasuredFluo = GenerateNoisyCPT_fit(0.87, sr, SP, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqs, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
FinalFluo = [f*43000 + 2685 for f in MeasuredFluo]
return FinalFluo
freqs = [f-offsetx+32 for f in FreqsDR]
freqslong = np.arange(min(freqs), max(freqs)+freqs[1]-freqs[0], 0.1*(freqs[1]-freqs[0]))
popt, pcov = curve_fit(FitEIT, freqs, CountsDR, p0=[5, 700], bounds=(0, [10, 1e6]))
FitsSp.append(popt[0])
FitsOffset.append(popt[1])
print(popt)
FittedEIT = FitEIT(freqslong, *popt)
plt.figure()
plt.errorbar(freqs, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', capsize=2, markersize=2)
plt.plot(freqslong, FitEIT(freqslong, *popt))
plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {T*1e3} mK, detDop: {DetDoppler} MHz')
np.savetxt('CPT_measured.txt', np.transpose([freqs, CountsDR]))
np.savetxt('CPT_fitted.txt', np.transpose([freqslong, FittedEIT]))
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
#Mediciones barriendo angulo del TISA y viendo kicking de resonancias oscuras
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data
os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20230707_MotionalSpectrum_v2/Data/')
MOTIONAL_FILES = """
000013002-AD9910RAM_andor
000013003-AD9910RAM_andor
000013004-AD9910RAM_andor
"""
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()))
print(SeeKeys(MOTIONAL_FILES))
#%%
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211101_CPT_DosLaseres_v03\Data
Counts_roi1 = []
Counts_roi2 = []
RealFreqs = []
IR1_amp_vec = []
for i, fname in enumerate(MOTIONAL_FILES.split()):
print(str(i) + ' - ' + fname)
data = h5py.File(fname+'.h5', 'r')
RealFreqs.append(np.array(data['datasets']['real_freq']))
Counts_roi1.append(np.array(data['datasets']['counts_roi1']))
Counts_roi2.append(np.array(data['datasets']['counts_roi2']))
IR1_amp_vec.append(np.array(data['datasets']['IR1_amp']))
#%%
"""
Ploteo una curva para buscar su minimo
"""
jvec = [0,1,2]
plt.figure()
i = 0
kmin = 106
for j in jvec:
plt.errorbar([1*f*1e-3 for f in RealFreqs[j]], Counts_roi1[j], yerr=np.sqrt(Counts[j]), fmt='o', capsize=2, markersize=2, label=f'IR1_amp: {IR1_amp[j]}')
#plt.plot([1*f*1e-3 for f in RealFreqs[j]][kmin], Counts[j][kmin], 'o', markersize=15)
i = i + 1
plt.xlabel('Frecuencia (kHz)')
plt.ylabel('counts')
#plt.xlim(782,787)
#plt.ylim(2000,5000)
plt.grid()
plt.legend(loc='upper left')
#%%
"""
Ploteo las curvas de referencia
"""
jvec = [0, 1, 2, 3, 8]
plt.figure()
i = 0
for j in jvec:
plt.errorbar([1*f*1e-3 for f in RealFreqs[j]], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', capsize=2, markersize=2, label=f"Pot: {Potencias[j]} uW")
i = i + 1
plt.xlabel('Frecuencia (kHz)')
plt.ylabel('counts')
#plt.xlim(782,787)
plt.ylim(2000,5000)
plt.grid()
plt.legend(loc='upper left')
#%%
"""
Busco el cociente entre el minimo y el maximo
"""
kmins = [106, 106, 106, 106, 110, 110, 110, 112, 108]
minabs = np.min(Counts[2])
MinimosFluos = []
MaximosFluos = []
CocientesFluos = []
ErrorCocientesFluos = []
for m in range(9):
mini = Counts[m][kmins[m]]-minabs
maxi = Counts[m][0]-minabs
MinimosFluos.append(mini)
MaximosFluos.append(maxi)
CocientesFluos.append(mini/maxi)
ErrorCocientesFluos.append((mini/maxi)*(np.sqrt(mini)/mini + np.sqrt(maxi)/maxi))
plt.figure()
plt.errorbar(PotenciasUsadas, CocientesFluos, yerr=ErrorCocientesFluos, fmt='o', capsize=5, markersize=15)
plt.axhline(1)
plt.xlabel('Potencia IR (uW)')
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