diff --git a/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py b/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py index ff76205c408f6a73577d18a3c5b6a693dc0ecfe1..7c9319d4bfc461a162ebaea714ea5431004a4acd 100644 --- a/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py +++ b/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py @@ -905,7 +905,7 @@ De la 1 a la 11 ajustan bien """ -#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels +from EITfit.lolo_modelo_full_8niveles import PerformExperiment_8levels_MM from scipy.optimize import curve_fit import time @@ -1008,8 +1008,9 @@ for selectedcurve in SelectedCurveVec: do_fit = True if do_fit: - popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[430, -25, 0.9, 6.2, 3e4, 1.34e3, 2, (np.pi**2)*1e-3, 32e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 25e6), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3, 40e6))) - + print(1) + popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[430, -25, 0.9, 6.2, 3e4, 1.34e3, 2, (np.pi**2)*1e-3, 32e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 31e6), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3, 34e6))) + print(2) popt_SA_vec.append(popt_3_SA) pcov_SA_vec.append(pcov_3_SA) @@ -1052,7 +1053,7 @@ Grafico distintas variables que salieron del SUper ajuste import seaborn as sns paleta = sns.color_palette("rocket") -medfin = 12 +medfin = 11 voltages_dcA = Voltages[0][1:medfin] @@ -1066,9 +1067,9 @@ def hiperbola(x,a,b,c,x0): hiperbola_or_linear = True if hiperbola_or_linear: - popthip,pcovhip = curve_fit(hiperbola,voltages_dcA,Betas_vec[:medfin-1],p0=(100,0.1,1,-0.15)) + popthip,pcovhip = curve_fit(hiperbola,voltages_dcA[0:9],Betas_vec[0:9],p0=(100,0.1,1,-0.15)) - xhip = np.linspace(-0.23,0.005,200) + xhip = np.linspace(-0.23,0.055,200) plt.figure() plt.errorbar(voltages_dcA,Betas_vec[0:medfin-1],yerr=ErrorBetas_vec[:medfin-1],fmt='o',capsize=5,markersize=5,color=paleta[1]) @@ -1103,6 +1104,7 @@ plt.figure() plt.errorbar(voltages_dcA,[t*1e3 for t in Temp_vec[:medfin-1]],yerr=[t*1e3 for t in ErrorTemp_vec[:medfin-1]],fmt='o',capsize=5,markersize=5,color=paleta[3]) #plt.axvline(minimum_voltage,linestyle='dashed',color='grey') plt.axhline(0.538) +plt.yscale('log') plt.xlabel('Endcap voltage (V)') plt.ylabel('Temperature (mK)') plt.grid() @@ -1117,15 +1119,20 @@ sino que esta a una distancia d def hiperbola(x,a,b,c,x0): return a*np.sqrt(((x-x0)**2+c**2))+b -popthip,pcovhip = curve_fit(hiperbola,voltages_dcA,Betas_vec[:10],p0=(100,0.1,1,-0.15)) +medfin = 11 +voltages_dcA = Voltages[0][1:medfin] -xhip = np.linspace(-0.23,0.005,200) + +popthip,pcovhip = curve_fit(hiperbola,voltages_dcA[:10],Betas_vec[:10],p0=(100,0.1,1,-0.15)) + +xhip = np.linspace(-0.23,0.055,200) plt.figure() -plt.errorbar(voltages_dcA,Betas_vec[:10],yerr=ErrorBetas_vec[:10],fmt='o',capsize=5,markersize=5,color=paleta[1]) +plt.errorbar(voltages_dcA,Betas_vec[:medfin-1],yerr=ErrorBetas_vec[:medfin-1],fmt='o',capsize=5,markersize=5,color=paleta[1]) plt.plot(xhip,hiperbola(xhip,*popthip)) plt.xlabel('Endcap voltage (V)') plt.ylabel('Modulation factor') +#plt.yscale('log') plt.grid() @@ -1155,49 +1162,100 @@ def InverseMicromotionSpectra(beta, A, det, x0, gamma, B): return 1/(A*P+B) -def InverseMicromotionSpectra_raw(beta, A, det, B): +def MicromotionSpectra(beta,det, gamma): + ftrap=22.1 + #gamma=23 + P = (jv(0, beta)**2)/(((det)**2)+(0.5*gamma)**2) + i = 1 + #print(P) + while i <= 2: + P = P + ((jv(i, beta))**2)/((((det)+i*ftrap)**2)+(0.5*gamma)**2) + ((jv(-i, beta))**2)/((((det)-i*ftrap)**2)+(0.5*gamma)**2) + i = i + 1 + #print(P) + return P + + +def InverseDerivMicromotionSpectra(beta, det, gamma): ftrap=22.1 - gamma=21 + #gamma=23 + #det = -gamma/2 P = ((jv(0, beta)**2)/((((det)**2)+(0.5*gamma)**2)**2))*(-2*(det)) i = 1 #print(P) - while i <= 3: + while i <= 2: P = P + (-2*(det))*((jv(i, beta))**2)/(((((det)+i*ftrap)**2)+(0.5*gamma)**2)**2) + (-2*(det))*(((jv(-i, beta))**2)/((((det)-i*ftrap)**2)+(0.5*gamma)**2)**2) i = i + 1 #print(P) - return A/P+B + return 1/P + + +def FinalTemp(beta,det, C,D): + gamma = 22 + #det=-11 + #D=-0.8 + #C = 1.68656122e-03 + #D = 6.64227010e-02 + #C=0 + + #print(MicromotionSpectra(beta,det,gamma)) + return (C*MicromotionSpectra(beta,det,gamma)+D*beta**2)*InverseDerivMicromotionSpectra(beta, det, gamma) + #return (C*MicromotionSpectra(beta,det,gamma))*InverseDerivMicromotionSpectra(beta, det, gamma) -""" -Temperatura vs beta con un ajuste exponencial -""" -popt_exp, pcov_exp = curve_fit(expo,Betas_vec[:10],[t*1e3 for t in Temp_vec[:10]]) -popt_quad, pcov_quad = curve_fit(cuadratica,Betas_vec[:10],[t*1e3 for t in Temp_vec[:10]],p0=(1,10)) +popt_exp, pcov_exp = curve_fit(expo,Betas_vec[:9],[t*1e3 for t in Temp_vec[:9]]) +#popt_quad, pcov_quad = curve_fit(cuadratica,Betas_vec[:11],[t*1e3 for t in Temp_vec[:11]],p0=(1,10)) #popt_rho22, pcov_rho22 = curve_fit(InverseMicromotionSpectra,Betas_vec,[t*1e3 for t in Temp_vec],p0=(10,10,-10,1,20)) #esto ajusta muy bien #popt_rho22, pcov_rho22 = curve_fit(InverseMicromotionSpectra,Betas_vec, [t*1e3 for t in Temp_vec],p0=(-10,-10,10,1,20)) #esto ajusta muy bien -popt_rho22_raw, pcov_rho22_raw = curve_fit(InverseMicromotionSpectra_raw,Betas_vec[:10], [t*1e3 for t in Temp_vec[:10]],p0=(-10, -10, 1)) #esto ajusta muy bien +#popt_rho22_raw, pcov_rho22_raw = curve_fit(InverseMicromotionSpectra_raw,Betas_vec[:7], [t*1e3 for t in Temp_vec[:7]],p0=(-0.1, -10, 1)) #esto ajusta muy bien +popt_rho22_balance, pcov_rho22_balance = curve_fit(FinalTemp,Betas_vec[:9], [t*1e3 for t in Temp_vec[:9]],p0=(-10, 10,1)) #esto ajusta muy bien +print(popt_rho22_balance) -print(popt_rho22_raw) +betaslong = np.arange(0,2.8,0.01) -betaslong = np.arange(0,2*2.7,0.01) +print(f'Min temp predicted: {FinalTemp(betaslong,*popt_rho22_balance)[0]}') -print(f'Min temp predicted: {InverseMicromotionSpectra_raw(betaslong,*popt_rho22_raw)[100]}') +print(f'Detuning: {popt_rho22_balance[0]} MHz') +print(f'rho22 coeff: {popt_rho22_balance[1]}') +print(f'betasquared coeff: {popt_rho22_balance[2]}') + +print(f'cociente de los coeff: {popt_rho22_balance[2]/popt_rho22_balance[1]}') + +k_plot = 9 plt.figure() -plt.errorbar(Betas_vec[:10],[t*1e3 for t in Temp_vec[:10]],xerr=ErrorBetas_vec[:10], yerr=[t*1e3 for t in ErrorTemp_vec[:10]],fmt='o',capsize=5,markersize=5,color=paleta[3]) +plt.errorbar(Betas_vec[:k_plot],[t*1e3 for t in Temp_vec[:k_plot]],xerr=ErrorBetas_vec[:k_plot], yerr=[t*1e3 for t in ErrorTemp_vec[:k_plot]],fmt='o',capsize=5,markersize=5,color=paleta[3]) #plt.plot(betaslong,expo(betaslong,*popt_exp),label='Ajuste exponencial') #plt.plot(betaslong,cuadratica(betaslong,*popt_quad),label='Ajuste cuadratico') #plt.plot(betaslong,InverseMicromotionSpectra(betaslong,*popt_rho22),label='Ajuste cuadratico') -plt.plot(betaslong,InverseMicromotionSpectra_raw(betaslong,*popt_rho22_raw),label='Ajuste cuadratico') +plt.plot(betaslong,FinalTemp(betaslong,popt_rho22_balance[0],popt_rho22_balance[1],popt_rho22_balance[2]*1),label='Ajuste con espectro modulado') +# plt.xlim(-0.1,1.1) +#plt.ylim(0,1) #plt.axvline(minimum_voltage,linestyle='dashed',color='grey') #plt.axhline(0.538) plt.xlabel('Modulation factor') plt.ylabel('Temperature (mK)') +plt.legend() plt.grid() +#%% + +hbar=1.05e-34 +gammita = 22.1e6 +kx = 2*np.pi/(0.397e-6) +kb = 1.38e-23 +masita = 6.6e-26 + +coeff = gammita*hbar*hbar*kx*kx/(6*kb*masita) +print(coeff) + +rfheatrate = coeff*popt_rho22_balance[2]/popt_rho22_balance[1] + +print(f'heating rate due to rf heating: {rfheatrate*1e3} mK/s') + + #%% """ diff --git a/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/lolo_modelo_full_8niveles.py b/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/lolo_modelo_full_8niveles.py index bc6a446bbd1ac5ec994dae9e5f844a25cedfa3a7..9d233b5f7c9d665b3a867971a5f90dffb94138e3 100644 --- a/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/lolo_modelo_full_8niveles.py +++ b/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/lolo_modelo_full_8niveles.py @@ -355,7 +355,7 @@ def dopplerBroadening(wlg, wlp, alpha, T, mcalcio = 6.655e-23*1e-3): kboltzmann = 1.38e-23 #J/K - gammaD = (2*np.pi)*np.sqrt((1/(wlg*wlg)) + (1/(wlp*wlp)) - 2*(1/(wlg*wlp))*np.cos(alpha))*np.sqrt(kboltzmann*T/(2*mcalcio)) + gammaD = (2*np.pi)*np.sqrt((1/(wlg*wlg)) + (1/(wlp*wlp)) - 2*(1/(wlg*wlp))*np.cos(alpha))*np.sqrt(kboltzmann*T/(1*mcalcio)) return gammaD @@ -372,8 +372,8 @@ def FullL_MM(rabG, rabP, gPS = 0, gPD = 0, Detg = 0, Detp = 0, u = 0, lwg = 0, l db = dopplerBroadening(0.397e-6, 0.866e-6, alpha, T) - lwg = np.sqrt(lwg**2 + db**2) - lwp = np.sqrt(lwp**2 + db**2) + lwg = np.sqrt(lwg**2 + (0.83*db)**2) + lwp = np.sqrt(lwp**2 + (0.17*db)**2) CC = EffectiveL(gPS, gPD, lwg, lwp)