Skip to content
RDS_sidebands2.py 3.49 KiB
Newer Older
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto 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

#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/20230817_RotationalDopplerShift_v5/Data')


"""
en este codigo ploteo espectros CPT de resonancias D-D para configuracion +2/+2 y +2/-2 (usando pentaprisma)
"""

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


def Split(array,n):
    length=len(array)/n
    splitlist = []
    jj = 0
    while jj<length:
        partial = []
        ii = 0
        while ii < n:
            partial.append(array[jj*n+ii])
            ii = ii + 1
        splitlist.append(partial)
        jj = jj + 1
    return splitlist


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()))


PiezoVerCounts = []
PiezoVerFrequencies = []

PIEZOVER_FILES = [167,168,169]
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed

for i in PIEZOVER_FILES:
    #print(str(i) + ' - ' + fname)
    data = h5py.File(f'Sidebands/000015{i}-IR_Scan_withcal_optimized'+'.h5', 'r')
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
    PiezoVerCounts.append(np.array(data['datasets']['counts_spectrum']))
    PiezoVerFrequencies.append(np.array(data['datasets']['IR1_Frequencies']))



def ErrorDRdepth(p, f, b):
    ep = np.sqrt(p)
    ef = np.sqrt(f)
    eb = np.sqrt(b)
    derivadap = 1/((f-b)**2)
    derivadaf = ((p-b)/((f-b)**2))**2
    derivadab = ((p-f)/((f-b)**2))**2
    return 2*np.sqrt(derivadap*ep*ep + derivadaf*ef*ef + derivadab*eb*eb)

def Lorentzian( x, A, B, x0, gam ):
    return A * gam**2 / ( gam**2 + ( x - x0 )**2) + B

#%%
"""
Ahora voy a intentar ajustarlas con una lorentziana que es mejor
"""
import seaborn as sns
"""
Resonancias DD configuracion +2/-2 colineal variando la ubicacion del ion en los haces

Moviendo verticalmente el haz
"""



palette = sns.color_palette("tab10")

pmlocmedvec = np.arange(0,len(PIEZOVER_FILES),1)


pmlocmedvec = [2]
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed


plt.figure()

#bkg = np.min(PiezoVerCounts[5])
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed

pmdepthsdrver=[]
errorpmdepthsdrver=[]

Intensityver = []
errorIntensityver = []

jj=0
for med in pmlocmedvec:

    Freqs = [2*f*1e-6 for f in PiezoVerFrequencies[med][1:]]
    Counts = [c for c in PiezoVerCounts[med][1:]]
    
    if med==1:
        Counts[119]=2100
        Counts[240]=2050
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed

    if med==2:
        Counts[425]=1400
        Counts[469]=1300
        Counts[470]=1300
        Counts[471]=1300
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
        
    #popt, pcov = curve_fit(Lorentzian, Freqs, Counts, p0=(-200,2100,435.8,0.05), bounds=((-10000,0,435.5,0),(0,1e4, 436.1, 1)))
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed

    #pmdepthsdrver.append(1-(np.min(Lorentzian(Freqs,*popt))-bkg)/(popt[1]-bkg))
    #errorpmdepthsdrver.append(ErrorDRdepth(np.min(Lorentzian(Freqs,*popt)),popt[1], bkg))
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
        
    #Intens = popt[1]
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
    
    #Intensityver.append(Intens)
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
    # errorIntensity.append(2*np.sqrt(np.mean(Piezo1Counts[med][1:][0:20]))+np.sqrt(bkg))
        
    
    if med not in [800]:
        plt.plot(Freqs, Counts, '-o', markersize=2, alpha=0.7,color=paleta[med])
        #plt.plot(Freqs,Lorentzian(Freqs,*popt))
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
    
    jj=jj+1
plt.xlabel('Frequency (MHz)')
plt.ylabel('Counts')
#plt.ylim(300,2600)
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
plt.grid()
# plt.legend()
# #plt.title('Espectros para distintas geometrías')