Skip to content
RDS_CPT2_lolo.py 30.2 KiB
Newer Older
Marcelo Luda's avatar
Marcelo Luda committed
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



from glob import glob

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#%% Carga de datos experimentales 


#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/20230804_RotationalDopplerShift_v2/Data')


os.chdir('Data')



"""
en este codigo ploteo espectros CPT de resonancias D-D para configuracion colineal (insensible a velocidad perpendicular)
y configuracion desplazada (sensible).
Primero una gaussiana variando la potencia (power_files).
Luego, variando compensacion con electrodo DCA y con electrodo OVEN.
"""

def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return idx

# Levanto carpetas / archivos de datos por experimento
POWER_FILES     = sorted(glob('VaryingPower/*'))
EXTRA_FILES     = sorted(glob('Extra/*')) 
COMP_COL_FILES  = sorted(glob('VaryingComp/Col/*')) 
COMP_DESP_FILES = sorted(glob('VaryingComp/Desp/*')) 


# Función para verificar lectura de archivos
def SeeKeys(files):
    for i, fname in enumerate(files):
        data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
        print(fname)
        print(list(data['datasets'].keys()))

# Veamos si está bien...
print(SeeKeys(POWER_FILES))


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

PowerCounts = []
PowerIR1_Freqs = []

for i, fname in enumerate(POWER_FILES):
    print(f"{i:02d} - {fname}")
    data = h5py.File(fname, 'r')
    #Amplitudes.append(np.array(data['datasets']['amplitudes']))
    PowerCounts.append(np.array(data['datasets']['counts_spectrum']))
    PowerIR1_Freqs.append(np.array(data['datasets']['IR1_Frequencies']))

ExtraCounts = []
ExtraIR1_Freqs = []

for i, fname in enumerate(EXTRA_FILES):
    print(f"{i:02d} - {fname}")
    data = h5py.File(fname, 'r')
    #Amplitudes.append(np.array(data['datasets']['amplitudes']))
    ExtraCounts.append(np.array(data['datasets']['counts_spectrum']))
    ExtraIR1_Freqs.append(np.array(data['datasets']['IR1_Frequencies']))
    
CompColCounts = []
CompColIR1_Freqs = []

for i, fname in enumerate(COMP_COL_FILES):
    print(f"{i:02d} - {fname}")
    data = h5py.File(fname, 'r')
    #Amplitudes.append(np.array(data['datasets']['amplitudes']))
    CompColCounts.append(np.array(data['datasets']['counts_spectrum']))
    CompColIR1_Freqs.append(np.array(data['datasets']['IR1_Frequencies']))
    
CompDespCounts = []
CompDespIR1_Freqs = []

for i, fname in enumerate(COMP_DESP_FILES):
    print(f"{i:02d} - {fname}")
    data = h5py.File(fname, 'r')
    #Amplitudes.append(np.array(data['datasets']['amplitudes']))
    CompDespCounts.append(np.array(data['datasets']['counts_spectrum']))
    CompDespIR1_Freqs.append(np.array(data['datasets']['IR1_Frequencies']))

#%%

"""
Resonancias DD variando la potencia del IR2
"""

powermedvec = [3,4,0,1,2]

AmpsVecs = [0.05, 0.08, 0.12, 0.17, 0.22]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

jj=0
for med in powermedvec:
    plt.plot([2*f*1e-6 for f in PowerIR1_Freqs[med][1:]], [c for c in PowerCounts[med][1:]], '-o', markersize=2, label=f'amp:{AmpsVecs[jj]}')
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.grid()
plt.legend()
plt.title('Variando potencia de IR2 para potencia de IR1 fija')


#%%

"""
Resonancias DD en config colineal, haces OAM, lindas con algunos parametros (ver cuaderno)
"""

extramedvec = [1]

#AmpsVecs = [0.05, 0.08, 0.12, 0.17, 0.22]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

jj=0
for med in extramedvec:
    plt.plot([2*f*1e-6 for f in ExtraIR1_Freqs[med][1:]], [c for c in ExtraCounts[med][1:]], '-o', markersize=2)
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.xlim(433.5, 438)
plt.ylim(1100,3200)
plt.axvline(freqDR)
plt.axvline(freqDR+0.8,color='red',linestyle='dashed',zorder=0,alpha=0.5)
plt.axvline(freqDR-0.8,color='red',linestyle='dashed',zorder=0,alpha=0.5)
plt.axvline(freqDR+0.9,color='red',linestyle='dashed',zorder=0,alpha=0.5)
plt.axvline(freqDR-0.9,color='red',linestyle='dashed',zorder=0,alpha=0.5)
plt.axvline(freqDR+1.65,color='green',linestyle='dashed',zorder=0,alpha=0.5)
plt.axvline(freqDR-1.65,color='green',linestyle='dashed',zorder=0,alpha=0.5)
plt.grid()
plt.legend()
plt.title('Variando potencia de IR2 para potencia de IR1 fija')


#%%

"""
Comparo resonancias DD con haces OAM en config colineal con desplazada
"""

extramedvec = [1,2]

#AmpsVecs = [0.05, 0.08, 0.12, 0.17, 0.22]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

secular=False    


plt.plot([2*f*1e-6 for f in ExtraIR1_Freqs[1][1:]], [c for c in ExtraCounts[1][1:]], '-o', markersize=2, label='Colineales')
plt.plot([2*f*1e-6 for f in ExtraIR1_Freqs[2][1:]], [c for c in ExtraCounts[2][1:]], '-o', markersize=2, label='Desplazadas')

plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.xlim(425, 455)
plt.ylim(1100,3200)

if secular:
    plt.axvline(freqDR)
    plt.axvline(freqDR+0.8,color='red',linestyle='dashed',zorder=0,alpha=0.5)
    plt.axvline(freqDR-0.8,color='red',linestyle='dashed',zorder=0,alpha=0.5)
    plt.axvline(freqDR+0.9,color='red',linestyle='dashed',zorder=0,alpha=0.5)
    plt.axvline(freqDR-0.9,color='red',linestyle='dashed',zorder=0,alpha=0.5)
    plt.axvline(freqDR+1.65,color='green',linestyle='dashed',zorder=0,alpha=0.5)
    plt.axvline(freqDR-1.65,color='green',linestyle='dashed',zorder=0,alpha=0.5)
plt.grid()
plt.legend()
plt.title('Comparacion de config colineal (insensible) con desplazada (sensible)')


#%%

"""
Resonancias DD config colineal OAM variando compensacion dcA
"""

import seaborn as sns
paleta = sns.color_palette("tab10")

compcolmedvec = [5,0,1,2,3,4]

CompsDCA = [-100, -150, -200, -250, -300, -350]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

idx1 = find_nearest([2*f*1e-6 for f in CompColIR1_Freqs[compcolmedvec[0]][1:]], DR1)
idx2 = find_nearest([2*f*1e-6 for f in CompColIR1_Freqs[compcolmedvec[0]][1:]], DR2)

MinimosFluos_Col = []
ErrorMinimosFluos_Col = []

MinimosFluos_Col_Relativos = []


jj=0
for med in compcolmedvec:
    plt.plot([2*f*1e-6 for f in CompColIR1_Freqs[med][1:]], [c for c in CompColCounts[med][1:]], '-o', markersize=2)
    plt.plot([DR1, DR2], [c for c in [CompColCounts[med][idx1+1],CompColCounts[med][idx2+1]]] , 'o', color=paleta[jj], markersize=15)
    MinimosFluos_Col.append([-c+np.mean(CompColCounts[med][1:20]) for c in [CompColCounts[med][idx1+1],CompColCounts[med][idx2+1]]])
    ErrorMinimosFluos_Col.append([np.sqrt(CompColCounts[med][idx1+1]), np.sqrt(CompColCounts[med][idx2+1])])
    MinimosFluos_Col_Relativos.append([1-(c-30)/(np.mean(CompColCounts[med][0:20])-30) for c in [CompColCounts[med][idx1+1],CompColCounts[med][idx2+1]]])

    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
#plt.xlim(433.5, 438)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compesnacion dcA config colineal OAM')

#%%

"""
Resonancias DD config desplazada OAM variando compensacion dcA
"""
import seaborn as sns
paleta = sns.color_palette("tab10")

compdespmedvec = [0,2,3,4,5,6]

CompsDCA = [-100, -100, -150, -200, -250, -300, -350]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

idx1 = find_nearest([2*f*1e-6 for f in CompDespIR1_Freqs[compdespmedvec[0]][1:]], DR1)
idx2 = find_nearest([2*f*1e-6 for f in CompDespIR1_Freqs[compdespmedvec[0]][1:]], DR2)


freqDR=435.8

MinimosFluos_Desp = []
ErrorMinimosFluos_Desp = []

MinimosFluos_Desp_Relativos = []

jj=0
for med in compdespmedvec:
    plt.plot([2*f*1e-6 for f in CompDespIR1_Freqs[med][1:]], [c for c in CompDespCounts[med][1:]], '-o', markersize=2)
    plt.plot([DR1, DR2], [c for c in [CompDespCounts[med][idx1+1],CompDespCounts[med][idx2+1]]] , 'o', color=paleta[jj], markersize=15)
    MinimosFluos_Desp.append([-c+np.mean(CompDespCounts[med][1:20]) for c in [CompDespCounts[med][idx1+1],CompDespCounts[med][idx2+1]]])
    ErrorMinimosFluos_Desp.append([np.sqrt(CompDespCounts[med][idx1+1]), np.sqrt(CompDespCounts[med][idx2+1])])
    MinimosFluos_Desp_Relativos.append([1-(c-30)/(np.mean(CompDespCounts[med][0:20])-30) for c in [CompDespCounts[med][idx1+1],CompDespCounts[med][idx2+1]]])


    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.ylim(400, 1280)
#plt.ylim(0,100)
plt.grid()
plt.legend()
plt.title('Variando compesnacion dcA config desplazada OAM')





#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Marcelo Luda's avatar
Marcelo Luda committed
#%% Version Luda de los expectros al descompenzar  ###############################
Marcelo Luda's avatar
Marcelo Luda committed
from scipy.signal import savgol_filter as savgol

# Grafico con subplots
fig,axx = plt.subplots(2,2,figsize=(12,8), constrained_layout=True , sharey='row', sharex='row' )
fig.set_constrained_layout_pads(w_pad=1/72, h_pad=0, hspace=0, wspace=0)


# En la fila de arriba los espectros ..........................................

####################################
Marcelo Luda's avatar
Marcelo Luda committed
print("Colineal")
Marcelo Luda's avatar
Marcelo Luda committed
ax = axx[0][0]

compcolmedvec = [5,0,1,2,3,4]
CompsDCA_col = [-100, -150, -200, -250, -300, -350]

ftrap = 22.1
DR1 = 435.8
DR2 = 444.2
freqDR=435.8

rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,445])

I_base_fit = np.arange(0,50).tolist()+np.arange(230,280).tolist()+np.arange(450,490).tolist()
I_base_fit = np.array(I_base_fit)

picos = {0:[], 1:[]}

for med in compcolmedvec:

    frecuencia = CompColIR1_Freqs[med][1:]*2e-6
    cuentas    = CompColCounts[med][1:]
    
    if med==4:
        # FIX OUTLIER
        cuentas = cuentas.tolist()
        cuentas.pop(291); cuentas.pop(291); cuentas.pop(291); 
        cuentas = np.array(cuentas)
        
        frecuencia = frecuencia.tolist()
        frecuencia.pop(291); frecuencia.pop(291); frecuencia.pop(291); 
        frecuencia = np.array(frecuencia)
    
    
    cuentas_suave    = savgol(cuentas,13,2)
    
    ax.plot(frecuencia,cuentas, '.', alpha=0.5)
    ax.plot(frecuencia,cuentas_suave, '-', alpha=0.9, color=ax.get_lines()[-1].get_color())
    
    mm = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1)
    ax.plot( [420,460], np.polyval(mm,[420,460]) , '-',  color=ax.get_lines()[-1].get_color(), alpha=0.5)
    
    for jj,rango in enumerate([rango_dr1,rango_dr2]):
        I = np.arange(len(frecuencia))[(frecuencia>rango.min())&(frecuencia<rango.max())]
        idx = cuentas_suave[I].argmin() + I[0]
        
        ax.plot(frecuencia[idx],cuentas_suave[idx], 'o', ms=12, color=ax.get_lines()[-1].get_color(),zorder=10)
        
        base = np.polyval(mm,rango.mean())
        val_pico = cuentas_suave[I].min()
        picos[jj].append( (base-val_pico)/base )
Marcelo Luda's avatar
Marcelo Luda committed
        print( (base-val_pico)/base , end="\t")
    print('')

Marcelo Luda's avatar
Marcelo Luda committed
        
    
    # ax.plot(cuentas)

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel(r'frecuencia [kHz]')
ax.set_ylabel(r'Cuentas')
ax.set_title("Colineal")

picos_col_dr1 = np.array(picos[0])
picos_col_dr2 = np.array(picos[1])



Marcelo Luda's avatar
Marcelo Luda committed
print("\n")
Marcelo Luda's avatar
Marcelo Luda committed







####################################
Marcelo Luda's avatar
Marcelo Luda committed
# Desplazado
print("Despazado")
Marcelo Luda's avatar
Marcelo Luda committed
ax = axx[0][1]

Marcelo Luda's avatar
Marcelo Luda committed
# compdespmedvec = [0,2,3,4,5,6]
compdespmedvec = [0,1,2,3,4,5]
Marcelo Luda's avatar
Marcelo Luda committed
CompsDCA_desp = [-100, -150, -200, -250, -300, -350]
ftrap = 22.1
# DR1 = 435.8
# DR2 = 444.2

rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,445])

picos = {0:[], 1:[]}


for med in compdespmedvec:

    frecuencia = CompDespIR1_Freqs[med][1:]*2e-6
    cuentas    = CompDespCounts[med][1:]
    
    if med==0:
        # FIX OUTLIER
        cuentas[207] = cuentas[206:208:2].mean()
    
Marcelo Luda's avatar
Marcelo Luda committed
    if med==1:
        # raise ValueError('lolo')
        cuentas = cuentas.tolist()
        frecuencia = frecuencia.tolist()
        for _ in range(4):
            cuentas.pop(27)
            frecuencia.pop(27)
        cuentas = np.array(cuentas)
        frecuencia = np.array(frecuencia)
        
Marcelo Luda's avatar
Marcelo Luda committed
    cuentas_suave    = savgol(cuentas,13,2)
    
    
    ax.plot(frecuencia,cuentas, '.', alpha=0.5)
    ax.plot(frecuencia,cuentas_suave, '-', alpha=0.9, color=ax.get_lines()[-1].get_color())
    
    mm = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1)
    ax.plot( [420,460], np.polyval(mm,[420,460]) , '-',  color=ax.get_lines()[-1].get_color(), alpha=0.5)

    for jj,rango in enumerate([rango_dr1,rango_dr2]):
        I = np.arange(len(frecuencia))[(frecuencia>rango.min())&(frecuencia<rango.max())]
        idx = cuentas_suave[I].argmin() + I[0]
        
        ax.plot(frecuencia[idx],cuentas_suave[idx], 'o', ms=12, color=ax.get_lines()[-1].get_color(),zorder=10)
        
        base = np.polyval(mm,rango.mean())
        val_pico = cuentas_suave[I].min()
        picos[jj].append( (base-val_pico)/base )    
Marcelo Luda's avatar
Marcelo Luda committed
        print( (base-val_pico)/base , end="\t")
    print('')
    
    # ax.plot(cuentas)

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel(r'frecuencia [kHz]')
# ax.set_ylabel(r'Cuentas')
ax.set_title("Desplazado")

picos_desp_dr1 = np.array(picos[0])
picos_desp_dr2 = np.array(picos[1])

ax.set_xlim(427,453)




# En la fila de abajo las profundidades .......................................



####################################
ax = axx[1][0]
ax.plot( CompsDCA_col , picos_col_dr1 , 'o--' , color='gray')
for comp,pic in zip(CompsDCA_col , picos_col_dr1):
    ax.plot(comp,pic,'o')
ax.set_prop_cycle(None)
ax.plot( CompsDCA_col , picos_col_dr2 , 'o-' , color='gray')
for comp,pic in zip(CompsDCA_col , picos_col_dr2):
    ax.plot(comp,pic,'o')

ax.grid(b=True,linestyle=':',color='lightgray')

ax.set_xlabel('Descompensación [mV]')
ax.set_ylabel('Profundidad relativa')

####################################
ax = axx[1][1]
ax.plot( CompsDCA_desp , picos_desp_dr1 , 'o--' , color='gray' )
for comp,pic in zip(CompsDCA_desp , picos_desp_dr1):
    ax.plot(comp,pic,'o')
ax.set_prop_cycle(None)
ax.plot( CompsDCA_desp , picos_desp_dr2 , 'o-'  , color='gray')
for comp,pic in zip(CompsDCA_desp , picos_desp_dr2):
    ax.plot(comp,pic,'o')

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel('Descompensación [mV]')

ax.semilogy()
ax.set_ylim(0.09,1.05)


for ax in axx[1]:
    ax.grid(b=True,linestyle=':',color='lightgray', which='minor', axis='y')

from matplotlib.ticker import FormatStrFormatter
ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))

for ax in axx[0]:
    ax.axvline(DR1, ls='--', color='gray')
    ax.axvline(DR2, ls='-', color='gray')




# fig.savefig('profundidad_vs_descompensacion_abs.png')




#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#%% Rehago pero en picos normalizados  ###############################
from scipy.signal import savgol_filter as savgol

# Grafico con subplots
fig,axx = plt.subplots(2,2,figsize=(12,8), constrained_layout=True , sharey='row', sharex='row' )
fig.set_constrained_layout_pads(w_pad=1/72, h_pad=0, hspace=0, wspace=0)


# En la fila de arriba los espectros ..........................................

####################################
print("Colineal")
ax = axx[0][0]

compcolmedvec = [5,0,1,2,3,4]
CompsDCA_col = [-100, -150, -200, -250, -300, -350]

ftrap = 22.1
DR1 = 435.8
DR2 = 444.2
freqDR=435.8

rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,445])

I_base_fit = np.arange(0,50).tolist()+np.arange(230,280).tolist()+np.arange(450,490).tolist()
I_base_fit = np.array(I_base_fit)

picos = {0:[], 1:[]}

for med in compcolmedvec:

    frecuencia = CompColIR1_Freqs[med][1:]*2e-6
    cuentas    = CompColCounts[med][1:]
    
    if med==4:
        # FIX OUTLIER
        cuentas = cuentas.tolist()
        cuentas.pop(291); cuentas.pop(291); cuentas.pop(291); 
        cuentas = np.array(cuentas)
        
        frecuencia = frecuencia.tolist()
        frecuencia.pop(291); frecuencia.pop(291); frecuencia.pop(291); 
        frecuencia = np.array(frecuencia)
    
    mm = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1)
    # ax.plot( [420,460], np.polyval(mm,[420,460]) , '-',  color=ax.get_lines()[-1].get_color(), alpha=0.5)
    cuentas = cuentas / np.polyval(mm,frecuencia)
    
    cuentas_suave    = savgol(cuentas,13,2)
    
    
    ax.plot(frecuencia,cuentas, '.', alpha=0.1)
    ax.plot(frecuencia,cuentas_suave, '-', alpha=0.9, color=ax.get_lines()[-1].get_color())
    
    
    for jj,rango in enumerate([rango_dr1,rango_dr2]):
        I = np.arange(len(frecuencia))[(frecuencia>rango.min())&(frecuencia<rango.max())]
        idx = cuentas_suave[I].argmin() + I[0]
        
        ax.plot(frecuencia[idx],cuentas_suave[idx], 'o', ms=12, color=ax.get_lines()[-1].get_color(),zorder=10)
        
        base = 1
        val_pico = cuentas_suave[I].min()
        picos[jj].append( (base-val_pico)/base )
        print( (base-val_pico)/base , end="\t")
    print('')

        
    
    # ax.plot(cuentas)

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel(r'frecuencia [kHz]')
ax.set_ylabel(r'Cuentas normalizadas')
ax.set_title("Colineal")

picos_col_dr1 = np.array(picos[0])
picos_col_dr2 = np.array(picos[1])



print("\n")







####################################
# Desplazado
print("Despazado")
ax = axx[0][1]

# compdespmedvec = [0,2,3,4,5,6]
compdespmedvec = [0,1,2,3,4,5]
CompsDCA_desp = [-100, -150, -200, -250, -300, -350]
ftrap = 22.1
# DR1 = 435.8
# DR2 = 444.2

rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,445])

picos = {0:[], 1:[]}


for med in compdespmedvec:

    frecuencia = CompDespIR1_Freqs[med][1:]*2e-6
    cuentas    = CompDespCounts[med][1:]
    
    if med==0:
        # FIX OUTLIER
        cuentas[207] = cuentas[206:208:2].mean()
    
    if med==1:
        # raise ValueError('lolo')
        cuentas = cuentas.tolist()
        frecuencia = frecuencia.tolist()
        for _ in range(4):
            cuentas.pop(27)
            frecuencia.pop(27)
        cuentas = np.array(cuentas)
        frecuencia = np.array(frecuencia)
    
    mm = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1)
    # ax.plot( [420,460], np.polyval(mm,[420,460]) , '-',  color=ax.get_lines()[-1].get_color(), alpha=0.5)
    cuentas = cuentas / np.polyval(mm,frecuencia)
    
    
    cuentas_suave    = savgol(cuentas,13,2)
    
    
    ax.plot(frecuencia,cuentas, '.', alpha=0.1)
    ax.plot(frecuencia,cuentas_suave, '-', alpha=0.9, color=ax.get_lines()[-1].get_color())

    for jj,rango in enumerate([rango_dr1,rango_dr2]):
        I = np.arange(len(frecuencia))[(frecuencia>rango.min())&(frecuencia<rango.max())]
        idx = cuentas_suave[I].argmin() + I[0]
        
        ax.plot(frecuencia[idx],cuentas_suave[idx], 'o', ms=12, color=ax.get_lines()[-1].get_color(),zorder=10)
        
        base = 1
        val_pico = cuentas_suave[I].min()
        picos[jj].append( (base-val_pico)/base )    
        print( (base-val_pico)/base , end="\t")
    print('')
Marcelo Luda's avatar
Marcelo Luda committed
    
    # ax.plot(cuentas)

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel(r'frecuencia [kHz]')
# ax.set_ylabel(r'Cuentas')
ax.set_title("Desplazado")

picos_desp_dr1 = np.array(picos[0])
picos_desp_dr2 = np.array(picos[1])

ax.set_xlim(427,453)




# En la fila de abajo las profundidades .......................................



####################################
ax = axx[1][0]
ax.plot( CompsDCA_col , picos_col_dr1 , 'o--' , color='gray')
for comp,pic in zip(CompsDCA_col , picos_col_dr1):
    ax.plot(comp,pic,'o')
ax.set_prop_cycle(None)
ax.plot( CompsDCA_col , picos_col_dr2 , 'o-' , color='gray')
for comp,pic in zip(CompsDCA_col , picos_col_dr2):
    ax.plot(comp,pic,'o')

ax.grid(b=True,linestyle=':',color='lightgray')

ax.set_xlabel('Descompensación [mV]')
ax.set_ylabel('Profundidad relativa')

####################################
ax = axx[1][1]
ax.plot( CompsDCA_desp , picos_desp_dr1 , 'o--' , color='gray' )
for comp,pic in zip(CompsDCA_desp , picos_desp_dr1):
    ax.plot(comp,pic,'o')
ax.set_prop_cycle(None)
ax.plot( CompsDCA_desp , picos_desp_dr2 , 'o-'  , color='gray')
for comp,pic in zip(CompsDCA_desp , picos_desp_dr2):
    ax.plot(comp,pic,'o')

ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlabel('Descompensación [mV]')

ax.semilogy()
ax.set_ylim(0.09,1.05)


for ax in axx[1]:
    ax.grid(b=True,linestyle=':',color='lightgray', which='minor', axis='y')

from matplotlib.ticker import FormatStrFormatter
ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))

for ax in axx[0]:
    ax.axvline(DR1, ls='--', color='gray')
    ax.axvline(DR2, ls='-', color='gray')




Marcelo Luda's avatar
Marcelo Luda committed
# fig.savefig('profundidad_vs_descompensacion_normalizado.png')



Marcelo Luda's avatar
Marcelo Luda committed

#%%

"""
Ahora grafico el valor de los minimos en funcion de la descompensacion dcA
"""

CompsDCAcol = [-100, -150, -200, -250, -300, -350]
CompsDCAdesp = [-100, -150, -200, -250, -300, -350]

MinimosFluos_Col_DR1 = np.transpose(np.array(MinimosFluos_Col))[0]
MinimosFluos_Col_DR2 = np.transpose(np.array(MinimosFluos_Col))[1]

MinimosFluos_Desp_DR1 = np.transpose(np.array(MinimosFluos_Desp))[0]
MinimosFluos_Desp_DR2 = np.transpose(np.array(MinimosFluos_Desp))[1]

ErrorMinimosFluos_Col_DR1 = np.transpose(np.array(ErrorMinimosFluos_Col))[0]
ErrorMinimosFluos_Col_DR2 = np.transpose(np.array(ErrorMinimosFluos_Col))[1]

ErrorMinimosFluos_Desp_DR1 = np.transpose(np.array(ErrorMinimosFluos_Desp))[0]
ErrorMinimosFluos_Desp_DR2 = np.transpose(np.array(ErrorMinimosFluos_Desp))[1]

#DR1
plt.figure()
plt.errorbar(CompsDCAcol[:],MinimosFluos_Col_DR1[:],yerr=[2*i for i in list(ErrorMinimosFluos_Col_DR1)[:]],fmt='o', capsize=2,  markersize=12, label='Colineal')
plt.errorbar(CompsDCAdesp[:],MinimosFluos_Desp_DR1[:],yerr=[2*i for i in list(ErrorMinimosFluos_Desp_DR2)[:]],fmt='o', capsize=2,  markersize=12, label='Desplazada')
plt.legend()
plt.title('DR1')
plt.grid()
plt.xlabel('Endcap voltage (mV)')
plt.ylabel('DR1 counts - mean')
#DR2
plt.figure()
plt.errorbar(CompsDCAcol[:],MinimosFluos_Col_DR2[:],yerr=[2*i for i in list(ErrorMinimosFluos_Col_DR1)[:]],fmt='o', capsize=2,  markersize=12, label='Colineal')
plt.errorbar(CompsDCAdesp[:],MinimosFluos_Desp_DR2[:],yerr=[2*i for i in list(ErrorMinimosFluos_Desp_DR1)[:]],fmt='o', capsize=2,  markersize=12, label='Desplazada')
plt.legend()
plt.title('DR2')
plt.grid()
plt.xlabel('Endcap voltage (mV)')
plt.ylabel('DR2 counts - mean')

#%%

"""
Ahora veo los valores relativos a la fluorescencia al principio del espectro
"""

MinimosFluos_Col_Relativos_DR1 = np.transpose(np.array(MinimosFluos_Col_Relativos))[0]
MinimosFluos_Col_Relativos_DR2 = np.transpose(np.array(MinimosFluos_Col_Relativos))[1]

MinimosFluos_Desp_Relativos_DR1 = np.transpose(np.array(MinimosFluos_Desp_Relativos))[0]
MinimosFluos_Desp_Relativos_DR2 = np.transpose(np.array(MinimosFluos_Desp_Relativos))[1]

plt.figure()
plt.semilogy(CompsDCAcol, MinimosFluos_Col_Relativos_DR1, 'o', markersize=12, label='Colineal')
plt.semilogy(CompsDCAdesp, MinimosFluos_Desp_Relativos_DR1, 'o', markersize=12, label='Desplazada')
plt.title('DR1')
plt.grid()
plt.xlabel('Endcap voltage (mV)')
plt.ylabel('DR1 counts relatives')
plt.legend()

plt.figure()
plt.semilogy(CompsDCAcol, MinimosFluos_Col_Relativos_DR2, 'o', markersize=12, label='Colineal')
plt.semilogy(CompsDCAdesp, MinimosFluos_Desp_Relativos_DR2, 'o', markersize=12, label='Desplazada')
plt.title('DR2')
plt.grid()
plt.xlabel('Endcap voltage (mV)')
plt.ylabel('DR2 counts relatives')
plt.legend()

#hasta aca

#%%
"""
Resonancias DD config colineal OAM variando compensacion OVEN
"""

import seaborn as sns

compcolmedvec = [6,7,8,9,10,11,12,13,14]

CompsOVENcol = [6.1, 5.9, 5.7, 5.5, 5.3, 5.1, 4.9, 4.7, 4.5]


plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

jj=0
for med in compcolmedvec:
    plt.plot([2*f*1e-6 for f in CompColIR1_Freqs[med][1:]], [c for c in CompColCounts[med][1:]], '-o', markersize=2)
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
#plt.xlim(433.5, 438)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compesnacion dcA config colineal OAM')


""" Le resto el fondo a ver como se ven"""

paleta = sns.color_palette("tab10")

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.25

idx1 = find_nearest([2*f*1e-6 for f in CompColIR1_Freqs[compcolmedvec[0]][1:]], DR1)
idx2 = find_nearest([2*f*1e-6 for f in CompColIR1_Freqs[compcolmedvec[0]][1:]], DR2)

MinimosFluos_Col = []
ErrorMinimosFluos_Col = []


freqDR=435.8

jj=0
for med in compcolmedvec:
    plt.plot([2*f*1e-6 for f in CompColIR1_Freqs[med][1:]], [c-np.mean(CompColCounts[med][1:20]) for c in CompColCounts[med][1:]], '-o', markersize=2)
    plt.plot([DR1, DR2], [c-np.mean(CompColCounts[med][1:20]) for c in [CompColCounts[med][idx1+1],CompColCounts[med][idx2+1]]] , 'o', color=paleta[jj], markersize=15)
    MinimosFluos_Col.append([-c+np.mean(CompColCounts[med][1:20]) for c in [CompColCounts[med][idx1+1],CompColCounts[med][idx2+1]]])
    ErrorMinimosFluos_Col.append([np.sqrt(CompColCounts[med][idx1+1]), np.sqrt(CompColCounts[med][idx2+1])])
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
#plt.xlim(443, 445)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compesnacion dcA config colineal OAM')


""" Estas son dos curvas con mas estadistica """
compcolmedvec = [15, 16]

CompsOVEN = [5.9,4.3]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

jj=0
for med in compcolmedvec:
    plt.plot([2*f*1e-6 for f in CompColIR1_Freqs[med][1:]], [c for c in CompColCounts[med][1:]], '-o', markersize=2)
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
#plt.ylim(300, 1000)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compensacion OVEN config colineal OAM mas estadistica')



#%%
import seaborn as sns

"""
Resonancias DD config desplazada OAM variando compensacion OVEN
"""

compdespmedvec = [7,8,9,10,11,12,13,14,15,16]

CompsOVENdesp = [5.9, 5.7, 5.5, 5.3, 5.1, 4.9, 4.7, 4.5, 4.3, 4.1]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

freqDR=435.8

jj=0
for med in compdespmedvec:
    plt.plot([2*f*1e-6 for f in CompDespIR1_Freqs[med][1:]], [c for c in CompDespCounts[med][1:]], '-o', markersize=2)
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.ylim(300, 1000)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compensacion OVEN config desplazada OAM')


""" Le resto el fondo a ver como se ven y ploteo sus valores de DR"""

paleta = sns.color_palette("tab10")

compdespmedvec = [7,8,9,10,11,12,13,14,15,16]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

idx1 = find_nearest([2*f*1e-6 for f in CompDespIR1_Freqs[compcolmedvec[0]][1:]], DR1)
idx2 = find_nearest([2*f*1e-6 for f in CompDespIR1_Freqs[compcolmedvec[0]][1:]], DR2)

freqDR=435.8

MinimosFluos_Desp = []
ErrorMinimosFluos_Desp = []

jj=0
for med in compdespmedvec:
    plt.plot([2*f*1e-6 for f in CompDespIR1_Freqs[med][1:]], [c-np.mean(CompDespCounts[med][1:20]) for c in CompDespCounts[med][1:]], '-o', color=paleta[jj], markersize=2, zorder=0)
    plt.plot([DR1, DR2], [c-np.mean(CompDespCounts[med][1:20]) for c in [CompDespCounts[med][idx1+1],CompDespCounts[med][idx2+1]]] , 'o', color=paleta[jj], markersize=15)
    MinimosFluos_Desp.append([-c+np.mean(CompDespCounts[med][1:20]) for c in [CompDespCounts[med][idx1+1],CompDespCounts[med][idx2+1]]])
    ErrorMinimosFluos_Desp.append(([np.sqrt(CompDespCounts[med][idx1+1]), np.sqrt(CompDespCounts[med][idx2+1])]))
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
#plt.ylim(300, 1000)
#plt.ylim(1100,3200)
plt.grid()
plt.legend()
plt.title('Variando compensacion OVEN config desplazada OAM')



""" Estas son dos curvas con mas estadistica """
compdespmedvec = [17, 18]

CompsOVEN = [5.9,4.3]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2