Skip to content
CPT_plotter_20220520.py 4.75 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

#Mediciones de CPT para campo magnetico bajo y terrestre

#/home/nico/Documents/artiq_experiments/analisis/plots/20220520_CPTvariandoB/data

ALL_FILES = """000007500-IR_Scan_withcal_optimized
000007499-IR_Scan_withcal_optimized
000007504-IR_Scan_withcal_optimized
000007505-IR_Scan_withcal_optimized
000007498-IR_Scan_withcal_optimized
""" 


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(ALL_FILES))
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211101_CPT_DosLaseres_v03\Data

Counts = []
Freqs = []

AmpTisa = []
UVCPTAmp = []
No_measures = []

for i, fname in enumerate(ALL_FILES.split()):
    print(str(i) + ' - ' + fname)
    #print(fname)
    data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'

    # Aca hago algo repugnante para poder levantar los strings que dejamos
    # que además tenian un error de tipeo al final. Esto no deberá ser necesario
    # cuando se solucione el error este del guardado.
    Freqs.append(np.array(data['datasets']['IR_Frequencies']))
    Counts.append(np.array(data['datasets']['counts_spectrum']))
    AmpTisa.append(np.array(data['datasets']['TISA_CPT_amp']))
    UVCPTAmp.append(np.array(data['datasets']['UV_CPT_amp']))
    No_measures.append(np.array(data['datasets']['no_measures']))

Counts_B = []
Freqs_B = []


for i, fname in enumerate(ALL_FILES.split()):
    print(str(i) + ' - ' + fname)
    #print(fname)
    data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'

    # Aca hago algo repugnante para poder levantar los strings que dejamos
    # que además tenian un error de tipeo al final. Esto no deberá ser necesario
    # cuando se solucione el error este del guardado.
    Freqs_B.append(np.array(data['datasets']['IR_Frequencies']))
    Counts_B.append(np.array(data['datasets']['counts_spectrum']))



#%%

#Barriendo angulo del IR con tisa apagado

jvec = [0, 1, 2, 3]
Bvec = [-2, -1.7, -1, -0.3]

plt.figure()
i = 0
for j in jvec:
    plt.errorbar([2*f*1e-6 for f in Freqs[j]], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', label=f'B: {Bvec[i]}', 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()
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('counts')
#plt.legend()

#%%

#Barriendo angulo del IR con tisa apagado

jvec = [4]

plt.figure()
i = 0
for j in jvec:
    plt.errorbar([2*f*1e-6 for f in Freqs[j]], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', 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()
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('counts')
#plt.legend()

#%%

phidoppler, titadoppler = 0, 90
phirepump, titarepump = 0,  0
phiprobe = 0
titaprobe = 90

T = 0.6e-3

sg = 0.4
sp = 7.75
sr = 0
DetRepump = 0


lw = 0.1
DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres


u = 33.5e6

#B = (u/(2*np.pi))/c

correccion = 4 #con 8 fitea bien

offsetxpi = 440+1+correccion
DetDoppler = -5.5-correccion

FreqsDRpi_3 = [2*f*1e-6-offsetxpi+14 for f in Freqs[4]]
CountsDRpi_3 = Counts[4]

freqslongpi_3 = np.arange(min(FreqsDRpi_3), max(FreqsDRpi_3)+FreqsDRpi_3[1]-FreqsDRpi_3[0], 0.1*(FreqsDRpi_3[1]-FreqsDRpi_3[0]))

#[1.71811842e+04 3.34325038e-17]

def FitEITpi(freqs, SG, SP, TITADOPPLER, DETDOPPLER, uguess):
    TITAPROBE=TITADOPPLER
    temp = 2e-3
    MeasuredFreq, MeasuredFluo = GenerateNoisyCPT_fit(SG, sr, SP, gPS, gPD, DETDOPPLER, DetRepump, uguess, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, temp, alpha, phidoppler, TITADOPPLER, phiprobe, [TITAPROBE], phirepump, titarepump, freqs, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
    FinalFluo = [f*1.16e5 + 1.18e3 for f in MeasuredFluo]
    return FinalFluo

popt, pcov = curve_fit(FitEITpi, FreqsDRpi_3, CountsDRpi_3, p0=[0.5, 4.5, 60, -10, 20e6], bounds=((0, 0, 0, -100, 0e6), (2, 20, 90, 0, 40e6)))

print(popt)

Sat_3 = popt[0]
Det_3 = popt[1]

FittedEITpi_3 = FitEITpi(freqslongpi_3, *popt)

plt.figure()
plt.errorbar(FreqsDRpi_3, CountsDRpi_3, yerr=2*np.sqrt(CountsDRpi_3), fmt='o', capsize=2, markersize=2)
plt.plot(freqslongpi_3, FittedEITpi_3)
#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')