diff --git a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
index 28457ff3d0661ec59fb448a745787f8bf0d34d34..03fe1fc644a49d1775d703669d332922f6d3b402 100644
--- a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
+++ b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
@@ -18,6 +18,16 @@ from scipy.optimize import curve_fit
 import random
 from scipy.signal import savgol_filter as sf
 from scipy.stats import norm
+                             
+
+def prob_energia(E,T):
+    kboltz = 1.380649e-23
+    mcalcio = 6.655e-23*1e-3
+    prob =  np.exp(-E/(kboltz*T)) #*E**2 
+    return prob
+
+
+
 
 def PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag, betap, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False, solvemode=1, detpvec=None, dephasing  = False, boltzmann = False):
     """
@@ -37,8 +47,9 @@ def PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinew
         
         velvec = np.linspace(-4*sigmaT,4*sigmaT,100)
         MBprobVec = norm.pdf(velvec,loc = 0, scale = sigmaT)
+        MBprobVec = MBprobVec/np.trapz(MBprobVec,velvec)
         for i in range(len(velvec)):
-            detVel = (detpvec - kp*velvec[i])/(2*np.pi*1e6)
+            detVel = detpvec - kp*velvec[i]/(2*np.pi*1e6)
             _, Fluorescence = CPTspectrum8levels( sg, sp, gPS, gPD, DetDoppler-kg*velvec[i]/(2*np.pi*1e6),u, DopplerLaserLinewidth, ProbeLaserLinewidth, 0,alpha, phidoppler, titadoppler, phiprobe, titaprobe,circularityprobe, betag, betap, drivefreq, freqMin=freqMin, freqMax=freqMax, freqStep=freqStep, plot=False,detpvec=detVel)
             
             FluorescencesVel.append(Fluorescence)    
@@ -54,21 +65,29 @@ def PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinew
         
 
     else:
-        drivefreq =2*np.pi* 1e3
+        drivefreq =2*np.pi* 0.6e6
         FluorescencesVel = []
         sigmaT = np.sqrt(T*kboltz/m)
         velvec = np.linspace(-4*sigmaT,4*sigmaT,100)
         MBprobVec = norm.pdf(velvec,loc = 0, scale = sigmaT)
+        
+        Evec = np.linspace(0,8*kboltz*T,100)
+        velvec = np.zeros(2*len(Evec)) 
+        velvec= np.sqrt(2 * Evec/m)
+        
+        MBprobVec = prob_energia(Evec, T)
+        MBprobVec = MBprobVec/np.trapz(MBprobVec,Evec)
+        
         betagVec = velvec*kg/drivefreq
         betapVec = velvec*kp/drivefreq
         for i in range(len(betagVec)): 
             betag,betap = betagVec[i],betapVec[i]
                                                          
-            Frequencies, Fluorescence = CPTspectrum8levels( sg, sp, gPS, gPD, DetDoppler,u, DopplerLaserLinewidth, ProbeLaserLinewidth, 0,alpha, phidoppler, titadoppler, phiprobe, titaprobe,circularityprobe, betag, betap, drivefreq, freqMin=freqMin, freqMax=freqMax, freqStep=freqStep, plot=False,detpvec=None)
+            Frequencies, Fluorescence = CPTspectrum8levels( sg, sp, gPS, gPD, DetDoppler,u, DopplerLaserLinewidth, ProbeLaserLinewidth, 0,alpha, phidoppler, titadoppler, phiprobe, titaprobe,circularityprobe, betag, betap, drivefreq, freqMin=freqMin, freqMax=freqMax, freqStep=freqStep, plot=False,detpvec=detpvec)
             FluorescencesVel.append(Fluorescence)
         FluorescencesVel = np.array(FluorescencesVel)
         MBprobMat = np.tile(MBprobVec,(FluorescencesVel.shape[1],1)).T
-        Fluorescence = np.trapz(FluorescencesVel*MBprobMat,velvec,axis = 0)
+        Fluorescence = np.trapz(FluorescencesVel*MBprobMat,Evec,axis = 0)
         ProbeDetuningVectorL = Frequencies
     
     #print('Done, Total time: ', round((tfinal-tinicial), 2), "s")   
@@ -106,15 +125,25 @@ def SmoothNoisyCPT(Fluo, window=11, poly=3):
 
 
 
-def fitCPT_8levels(Freq,Fluo,sg,sp,gPS,gPD,DetDoppler,u,DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe,beta, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False,dephasing = False, boltzmann = False ):
-
-    def SpectrumForFit(Freq,sg,sp,T,DetDoppler):
-        freq,spectra = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, beta, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False, solvemode=1, detpvec=Freq)
-        return spectra
+def fitCPT_8levels(Freq,Fluo,sg,sp,gPS,gPD,DetDoppler,u,DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe,betag,betar, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False,dephasing = False, boltzmann = False ):
+    
+    def SpectrumForFit(Freq,sg,sp,T,DetDoppler,A,bgnd,f0):
+        Freq = Freq - f0
+        freq,spectra = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag,betar, drivefreq, freqMin, freqMax, freqStep,circularityprobe=1, plot=False, detpvec=Freq, dephasing  = dephasing, boltzmann = boltzmann)
+        return spectra*A + bgnd
 
     
-    popt,pcov = curve_fit(SpectrumForFit,Freq,Fluo,p0 = [sg,sp,T,DetDoppler],bounds = ([0.01,0.01,0.00001,-50e6],[1,20,1,30e6]))
+    popt,pcov = curve_fit(SpectrumForFit,Freq,Fluo,p0 = [sg,sp,T,DetDoppler,20000,800,432],bounds = ([0.1,1,0.5e-3,-30,10000,0,420],[0.8,10,10e-3,0,100000,1000,500]))
     fitted_spectra = SpectrumForFit(Freq,*popt)
     return Freq, fitted_spectra,popt,pcov
 
 
+def try_fitCPT_8levels(A,bgnd,f0,Freq,Fluo,sg,sp,gPS,gPD,DetDoppler,u,DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe,betag,betar, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False,dephasing = False, boltzmann = False ):
+    def SpectrumForFit(Freq,sg,sp,T,DetDoppler,A,bgnd,f0):
+        Freq = Freq - f0
+        freq,spectra = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag,betar, drivefreq, freqMin, freqMax, freqStep,circularityprobe=1, plot=False, detpvec=Freq, dephasing  = dephasing, boltzmann = boltzmann)
+        return spectra*A + bgnd
+    return SpectrumForFit(Freq, sg, sp, T, DetDoppler, A, bgnd, f0)
+    
+    
+    
\ No newline at end of file
diff --git a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_CPTPlotter.py b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_CPTPlotter.py
index 22ee5b763d3a2f3882c6e4249de5c90d8a40070b..19d1c291228e5f0ffdb3edd8f6b01aac875bceea 100644
--- a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_CPTPlotter.py
+++ b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_CPTPlotter.py
@@ -10,24 +10,106 @@ Created on Tue Sep  1 17:58:39 2020
 
 import os
 import numpy as np
-from MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels, GenerateNoisyCPT_vel, SmoothNoisyCPT, PerformExperiment_8levels_vel
+from MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels, GenerateNoisyCPT_vel, SmoothNoisyCPT, PerformExperiment_8levels_vel,fitCPT_8levels,try_fitCPT_8levels
 import matplotlib.pyplot as plt
 import time
 import h5py
 
-def MB_prob(vel,T):
-    return (m/(2*np.pi*kboltz*T))**(3/2)*2* vel**2 *np.exp(-vel**2 * m/(2*kboltz*T))
+os.chdir('/home/muri/nubeDF/Documents/codigos/artiq_experiments/analisis/plots/20231218_CPT_muri/Data')
+
+CPT_FILES = """000016262-IR_Scan_withcal_optimized
+000016239-IR_Scan_withcal_optimized
+000016240-IR_Scan_withcal_optimized
+000016241-IR_Scan_withcal_optimized
+000016244-IR_Scan_withcal_optimized
+000016255-IR_Scan_withcal_optimized
+000016256-IR_Scan_withcal_optimized
+000016257-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(CPT_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 = []
+Voltages = []
+
+for i, fname in enumerate(CPT_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']['IR1_Frequencies']))
+    Counts.append(np.array(data['datasets']['data_array']))
+    #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']))
+    Voltages.append(np.array(data['datasets']['scanning_voltages']))
+
+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
 
 
+CountsSplit = []
+CountsSplit.append(Split(Counts[0],len(Freqs[0])))
 
-def MB_prob_1d(vel,T):
-    return np.sqrt(m/(2*np.pi*kboltz*T))*np.exp(-vel**2 * m/(2*kboltz*T))
 
-#plt.rcParams.update({
-#    "text.usetex": True,
-#    "font.family": "CM Roman"
-#})
+CountsSplit_2ions = []
+CountsSplit_2ions.append(Split(Counts[4],len(Freqs[4])))
 
+#%%
+
+"""
+Para distintos valores de j hay curvas CPT variando compensación.
+Las que valen la pena son de la 1 a la 9.
+En particular, la 4 tiene poca micromoción: 
+"""
+
+jvec = [4] # de la 1 a la 9 vale la pena, despues no
+
+drive=22.1
+
+Frequencies = Freqs[0]
+
+plt.figure()
+i = 0
+for j in jvec:
+    #plt.errorbar([2*f*1e-6-419-13 for f in Frequencies], CountsSplit[0][j], yerr=np.sqrt(CountsSplit[0][j]), fmt='o', capsize=2, markersize=2)
+    i = i + 1
+plt.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+#for dr in drs:
+#    plt.axvline(dr)
+    #plt.axvline(dr+drive)
+plt.legend()
 
 
 plt.rcParams["axes.prop_cycle"] = plt.cycler('color', ['#DBAD1F', '#C213DB', '#DB4F2A', '#0500DB', '#09DB9B', '#B4001B', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
@@ -46,10 +128,10 @@ B = (u/(2*np.pi))/c
 
 gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 #anchos de linea de las transiciones
 
-lw = 0.1 #ancho de linea de los laseres en MHz
+lw = 0.5 #ancho de linea de los laseres en MHz
 DopplerLaserLinewidth, ProbeLaserLinewidth = lw, lw #ancho de linea de los laseres
 
-DetDoppler = -15 #detuning doppler en MHz
+DetDoppler = -24.5 #detuning doppler en MHz
 
 T = 0.1e-3 #temperatura en K
 alpha = 0 #angulo entre los láseres
@@ -64,18 +146,18 @@ CircPr = 1
 
 #Parametros de la simulacion cpt todo en MHz
 center = -15
-span = 30
+span = 80
 freqMin = center-span*0.5
 freqMax = center+span*0.5
-freqStep = 0.5
+freqStep = 0.25
 
 print(freqMin,freqMax,freqStep)
 
 noiseamplitude = 0
 
 #parametros de saturacion de los laseres. g: doppler. p: probe (un rebombeo que scanea), r: repump (otro rebombeo fijo)
-sg = 0.3
-sp = 3
+sg = 0.25
+sp = 5.0
 
 drivefreq=2*np.pi*22.135*1e6
 
@@ -97,17 +179,17 @@ Tvec = np.linspace(0.5e-3,100e-3,15)
 #Tvec = np.linspace(0.001,0.1,20)
 s12vec = np.linspace(0.2,0.6,20)
 #s12vec = [s12vec[2],s12vec[4],s12vec[10],s12vec[18]]
-s12vec = [0.28]
+s12vec = [0.51]
 s23vec = np.linspace(0.5,15,20)
 #s23vec = [s23vec[2],s23vec[6],s23vec[10],s23vec[18]]
-s23vec = [10]
+s23vec = [3.5]
 
 Tmat = np.zeros((len(s12vec),len(s23vec)))
 
 Tvec_ajuste = np.zeros(len(Tvec))
 phivect = 0
 
-T = 10e-3
+T = 8e-3
 
 titavect = np.linspace(0,2*np.pi,100)    
   
@@ -115,58 +197,134 @@ betag = 0
 betap = 0 
 alpha = 0
 
+SCALE = 5.60485992e+04
+SCALE = 1
+
+
+OFFSET = 0
+OFFSET = 1.55401398e+02
+
+
+
 Freq,Fluo_sb = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag, betap, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False, solvemode=1, detpvec=None, dephasing  = False, boltzmann = False)
 Freq,Fluo_boltz = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag, betap, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False, solvemode=1, detpvec=None, dephasing  = False, boltzmann = True)
+T = 0.8e-3
 Freq,Fluo_deph = PerformExperiment_8levels(sg, sp, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, T, alpha, phidoppler, titadoppler, phiprobe, titaprobe, betag, betap, drivefreq, freqMin, freqMax, freqStep, circularityprobe=1, plot=False, solvemode=1, detpvec=None, dephasing  = True, boltzmann = False)
 
-#%%
-plt.plot(Freq,Fluo_boltz,label = 'Velocities')
-plt.plot(Freq,Fluo_sb,label = 'Sideband')
-plt.plot(Freq,Fluo_deph, label = 'Dephasing')
+
+plt.plot(Freq,SCALE*Fluo_boltz+OFFSET,label = 'Semiclassic')
+plt.plot(Freq,SCALE*Fluo_sb+OFFSET,label = 'Sideband')
+plt.plot(Freq,SCALE*Fluo_deph+OFFSET, label = 'Dephasing')
 
 plt.legend()
 
+
+
+
 #%%
 
-os.chdir('/home/muri/nubeDF/Documents/codigos/artiq_experiments/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/')
+from scipy.optimize import curve_fit
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.5
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 4
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, TEMP,f0):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    BETA1 = 0
+    BETA2 = 0
+    Detunings, Fluorescence1 = PerformExperiment_8levels(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=np.array(freqs)-f0)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+popt_1 = [4.82483692e-01, 8.18685518e+00, 6.48238914e+04, 1.54835760e+02, 5.56566519e-03, 5.24515673e-18]
+
+do_fit = True
+if do_fit:
+    #popt_1, pcov_1 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.2, 5, 6.89e4, 1.2723, 8e-3,1], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 7e4, 5e4, 15e-3,5)))
+    FittedEITpi_1 = FitEIT_MM_single(freqslong, *popt_1)
+
+beta1 = popt_1[4]
+errorbeta1 = np.sqrt(pcov_1[4,4])
+temp1 = popt_1[5]
+errortemp1 = np.sqrt(pcov_1[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_1, color='darkolivegreen', linewidth=3, label='med 1')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+
+
+
+
+
+
+
+
+
 
-CPT_FILES = """000011345-IR_Scan_withcal_optimized
-000011331-IR_Scan_withcal_optimized
-""" 
 
-for i in range(0,9):
-    CPT_FILES = CPT_FILES + f'0000153{19 + i}-IR_Scan_withcal_optimized\n'
-CPT_FILES = CPT_FILES
 
 
 
-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(CPT_FILES))
 
-Counts = []
-Freqs = []
 
-AmpTisa = []
-UVCPTAmp = []
-No_measures = []
 
-for i, fname in enumerate(CPT_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']['IR1_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']))
 
 
diff --git a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
index 9b01fd47f43523d30bd33eb6737617d075eab434..8fd9fb56ae5099a66570f35d0232c9452bbcdb52 100644
--- a/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
+++ b/analisis/plots/20230920_CPT_TemperatureSens_v2/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
@@ -250,7 +250,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/(mcalcio))
 
     return gammaD
     
@@ -264,10 +264,16 @@ def FullL(rabG, rabP, gPS = 0, gPD = 0, Detg = 0, Detp = 0, u = 0, lwg = 0, lwp
     """
     
     
+    kg = 397e9
+    kp = 866e9
+    
+    fg = kg**2/(kg**2+kp**2)
+    fp = kp**2/(kg**2+kp**2)
+    
     db = dopplerBroadening(0.397e-6, 0.866e-6, alpha, T)
     
-    lwg = np.sqrt(lwg**2 + (db/2)**2)/2
-    lwp = np.sqrt(lwp**2 + (db/2)**2)/2    
+    lwg = np.sqrt(lwg**2 + (fg*db)**2)
+    lwp = np.sqrt(lwp**2 + (fp*db)**2)    
 
 
     
@@ -306,15 +312,18 @@ def FullL(rabG, rabP, gPS = 0, gPD = 0, Detg = 0, Detp = 0, u = 0, lwg = 0, lwp
     M = CalculateSingleMmatrix(gPS, gPD, lwg, lwp) 
     L0 = np.array(np.matrix(Lfullpartial) + M)
     
-    #ESTA PARTE ES CUANDO AGREGAS MICROMOCION
-    nmax = 7
-    #print(nmax)
-    Ltemp, Omega = LtempCalculus(betag,betap, drivefreq)
-    #print(factor)
-    L1 = GetL1(Ltemp, L0, Omega, nmax)
-    Lfull = L0 + L1 #ESA CORRECCION ESTA EN L1
-    #HASTA ACA
     
+    if betag !=0 and betap !=0:
+        #ESTA PARTE ES CUANDO AGREGAS MICROMOCION
+        nmax = 2*int(betag)
+        #print(nmax)
+        Ltemp, Omega = LtempCalculus(betag,betap, drivefreq)
+        #print(factor)
+        L1 = GetL1(Ltemp, L0, Omega, nmax)
+        Lfull = L0 + L1 #ESA CORRECCION ESTA EN L1
+        #HASTA ACA
+    else:
+        Lfull = L0
     #NORMALIZACION DE RHO
     i = 0 
     while i < 64:
@@ -422,6 +431,9 @@ def CPTspectrum8levels(sg, sp, gPS, gPD, Detg, u, lwg, lwp, Temp, alpha, phidopp
     else: 
         DetProbeVector = detpvec*1e6 * 2*np.pi
     
+    
+
+    
    
     Detg = 2*np.pi*Detg*1e6
     #lwg, lwr, lwp = 2*np.pi*lwg*1e6, 2*np.pi*lwr*1e6, 2*np.pi*lwp*1e6
@@ -463,7 +475,7 @@ def CPTspectrum8levels(sg, sp, gPS, gPD, Detg, u, lwg, lwp, Temp, alpha, phidopp
         plt.plot(DetProbeVectorMHz, [100*f for f in Fluovector], label=str(titaprobe) + 'º, T: ' + str(Temp*1e3) + ' mK')
         plt.legend()
         
-    return DetProbeVectorMHz, Fluovector
+    return DetProbeVectorMHz, np.array(Fluovector)
 
 
 def CPTspectrum8levels_vel(velvect,titavec,phivec,probvel,sg, sp, gPS, gPD, Detg, u, lwg, lwp, Temp, alpha, phidoppler, titadoppler, phiprobe, titaprobe, Circularityprobe, beta, drivefreq, freqMin=-100, freqMax=100, freqStep=1e-1, plot=False, solvemode=1):
@@ -613,7 +625,7 @@ def CPTspectrum8levels_vel(velvect,titavec,phivec,probvel,sg, sp, gPS, gPD, Detg
         plt.plot(DetProbeVectorMHz, [100*f for f in Fluovector], label=str(titaprobe) + 'º, T: ' + str(Temp*1e3) + ' mK')
         plt.legend()
         
-    return DetProbeVectorMHz, Fluovector
+    return DetProbeVectorMHz, np.array(Fluovector)
 
 
 if __name__ == "__main__":
diff --git a/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py b/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py
index 7c9319d4bfc461a162ebaea714ea5431004a4acd..49def9d22f2642a6e40097acb948f8c0ea1a807e 100644
--- a/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py
+++ b/analisis/plots/20231123_CPTconmicromocion3/CPT_plotter_20231123.py
@@ -24,7 +24,7 @@ CPT_FILES = """000016262-IR_Scan_withcal_optimized
 000016255-IR_Scan_withcal_optimized
 000016256-IR_Scan_withcal_optimized
 000016257-IR_Scan_withcal_optimized
-""" 
+"""
 
 
 def SeeKeys(files):
@@ -147,7 +147,7 @@ correccion = 13
 offsetxpi = 419+correccion+3*0.8
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -173,7 +173,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -234,7 +234,7 @@ correccion = 13
 offsetxpi = 419+correccion+1.6
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -259,7 +259,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -323,7 +323,7 @@ DetDoppler = -11.5-correccion
 
 print(offsetxpi,DetDoppler)
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -347,7 +347,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -409,7 +409,7 @@ correccion = 13
 offsetxpi = 419+correccion
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -433,7 +433,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -496,7 +496,7 @@ correccion = 13
 offsetxpi = 419+correccion-1
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -520,7 +520,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     #TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -578,10 +578,10 @@ u = 32.5e6
 
 correccion = 13
 
-offsetxpi = 419+correccion-2.2  
+offsetxpi = 419+correccion-2.2
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -607,7 +607,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -669,7 +669,7 @@ correccion = 13
 offsetxpi = 419+correccion-3.7
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -693,7 +693,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -755,7 +755,7 @@ correccion = 13
 offsetxpi = 419+correccion-4.9
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -779,7 +779,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     # TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -843,7 +843,7 @@ correccion = 16
 offsetxpi = 419+correccion-6
 DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -867,7 +867,7 @@ def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
     # SG = 0.6
     # SP = 8.1
     #TEMP = 0.2e-3
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
     ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
@@ -938,7 +938,7 @@ correccion = 13
 
 #DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -963,7 +963,7 @@ ErrorTemp_vec = []
 DetuningsUV_vec = []
 ErrorDetuningsUV_vec = []
 
-for selectedcurve in SelectedCurveVec: 
+for selectedcurve in SelectedCurveVec:
 
 #selectedcurve = 2 #IMPORTANTE: SELECCIONA LA MEDICION
 
@@ -982,11 +982,11 @@ for selectedcurve in SelectedCurveVec:
         CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
     if selectedcurve==7:
         CountsDR[117]=0.5*(CountsDR[116]+CountsDR[118])
-        
+
     freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
     CircPr = 1
     alpha = 0
-    
+
 
     def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U, plot=False):
     #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
@@ -994,44 +994,49 @@ for selectedcurve in SelectedCurveVec:
         # SG = 0.6
         # SP = 8.1
         # TEMP = 0.2e-3
-    
+
         freqs = [2*f*1e-6-offset for f in Freqs]
-      
+
         Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, U, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
-    
+
         ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
         if plot:
             return ScaledFluo1, Detunings
         else:
             return ScaledFluo1
         #return ScaledFluo1
-    
+
     do_fit = True
     if do_fit:
+<<<<<<< HEAD
         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_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)))
+
+>>>>>>> f197671e6d2f5bc2c74f8d1e8fb4a89fb518ddbe
         popt_SA_vec.append(popt_3_SA)
         pcov_SA_vec.append(pcov_3_SA)
-    
+
         FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA, plot=True)
         freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
         FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA, plot=True)
-    
+
     DetuningsUV_vec.append(popt_3_SA[1])
     ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
-    
+
     Betas_vec.append(popt_3_SA[6])
     ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
     Temp_vec.append(popt_3_SA[7])
     ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
-    
+
     Detuningsshort_vec.append(Detunings_3_SA_short)
     Counts_vec.append(CountsDR)
     Detuningslong_vec.append(Detunings_3_SA_long)
     FittedCounts_vec.append(FittedEITpi_3_SA_long)
-    
-    
+
+
     plt.figure()
     plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
     plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
@@ -1040,11 +1045,11 @@ for selectedcurve in SelectedCurveVec:
     plt.ylabel('Counts')
     plt.legend(loc='upper left', fontsize=20)
     plt.grid()
-    
+
     print(f'listo med {selectedcurve}')
     print(popt_3_SA)
 
-    
+
 #%%
 """
 Grafico distintas variables que salieron del SUper ajuste
@@ -1067,10 +1072,17 @@ def hiperbola(x,a,b,c,x0):
 hiperbola_or_linear = True
 
 if hiperbola_or_linear:
+<<<<<<< HEAD
     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.055,200)
     
+=======
+    popthip,pcovhip = curve_fit(hiperbola,voltages_dcA,Betas_vec[:medfin-1],p0=(100,0.1,1,-0.15))
+
+    xhip = np.linspace(-0.23,0.005,200)
+
+>>>>>>> f197671e6d2f5bc2c74f8d1e8fb4a89fb518ddbe
     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])
     plt.plot(xhip,hiperbola(xhip,*popthip))
@@ -1081,13 +1093,13 @@ if hiperbola_or_linear:
 else:
     poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],Betas_vec[0:3])
     poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],Betas_vec[4:])
-    
+
     minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
     minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
-    
+
     xini = np.linspace(-0.23,-0.13,100)
     xfin = np.linspace(-0.15,0.005,100)
-    
+
     plt.figure()
     plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,fmt='o',capsize=5,markersize=5,color=paleta[1])
     plt.plot(xini,lineal(xini,*poptini))
@@ -1168,13 +1180,18 @@ def MicromotionSpectra(beta,det, gamma):
     P = (jv(0, beta)**2)/(((det)**2)+(0.5*gamma)**2)
     i = 1
     #print(P)
-    while i <= 2:
+    while i <= 5:
         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 polynomial(x,a,b,c,d,e):
+    b=0
+    d=0
+    return a+b*x+c*x*x+d*x*x*x+e*x*x*x*x
+
 def InverseDerivMicromotionSpectra(beta, det, gamma):
     ftrap=22.1
     #gamma=23
@@ -1182,7 +1199,7 @@ def InverseDerivMicromotionSpectra(beta, det, gamma):
     P = ((jv(0, beta)**2)/((((det)**2)+(0.5*gamma)**2)**2))*(-2*(det))
     i = 1
     #print(P)
-    while i <= 2:
+    while i <= 5:
         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)
@@ -1190,7 +1207,7 @@ def InverseDerivMicromotionSpectra(beta, det, gamma):
 
 
 def FinalTemp(beta,det, C,D):
-    gamma = 22
+    gamma = 21
     #det=-11
     #D=-0.8
     #C = 1.68656122e-03  
@@ -1201,6 +1218,9 @@ def FinalTemp(beta,det, C,D):
     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[:9],[t*1e3 for t in Temp_vec[:9]])
@@ -1209,6 +1229,8 @@ popt_exp, pcov_exp = curve_fit(expo,Betas_vec[:9],[t*1e3 for t in Temp_vec[:9]])
 #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[: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
+popt_rho22_poly, pcov_rho22_poly = curve_fit(polynomial,Betas_vec[:9], [t*1e3 for t in Temp_vec[:9]],p0=(1,2,3,4,10)) #esto ajusta muy bien
+
 
 print(popt_rho22_balance)
 
@@ -1222,11 +1244,16 @@ print(f'betasquared coeff: {popt_rho22_balance[2]}')
 
 print(f'cociente de los coeff: {popt_rho22_balance[2]/popt_rho22_balance[1]}')
 
+
+print(f'params: {popt_rho22_balance}')
+print(f'errores: {np.sqrt(np.diag(pcov_rho22_balance))}')
+
 k_plot = 9
 
 plt.figure()
 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,polynomial(betaslong,*popt_rho22_poly),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,FinalTemp(betaslong,popt_rho22_balance[0],popt_rho22_balance[1],popt_rho22_balance[2]*1),label='Ajuste con espectro modulado')
@@ -1411,8 +1438,8 @@ for j in jvec:
     plt.plot([f-f_2 for f in Freqs6[0:i_2]], [scale_2*c for c in Counts6[0:i_2]],'o')
     plt.plot(Freqs7, Counts7,'o')
     plt.errorbar(Merged_freqs, Merged_counts, yerr=np.sqrt(Merged_counts), fmt='o', capsize=2, markersize=2)
-    
-    
+
+
     i = i + 1
 plt.xlabel('Frecuencia (MHz)')
 plt.ylabel('counts')
@@ -1421,7 +1448,7 @@ for dr in drs:
     plt.axvline(dr)
     plt.axvline(dr+drive, color='red', linestyle='dashed', alpha=0.3)
     plt.axvline(dr-drive, color='red', linestyle='dashed', alpha=0.3)
-    
+
 plt.legend()
 
 #%%
@@ -1456,7 +1483,7 @@ offsetxpi = 438+correccion
 DetDoppler = -35-correccion-22
 
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -1478,14 +1505,14 @@ def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, SCALE3, OFFSET, BETA1, BETA2, BETA3
     # SP = 8.1
     TEMP = 0.1e-3
 
-    
+
     #BETA1, BETA2, BETA3 = 0, 0, 2
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
     Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
     Detunings, Fluorescence3 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA3, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
-    
+
     ScaledFluo1 = np.array([f*SCALE1 for f in Fluorescence1])
     ScaledFluo2 = np.array([f*SCALE2 for f in Fluorescence2])
     ScaledFluo3 = np.array([f*SCALE3 for f in Fluorescence3])
@@ -1583,7 +1610,7 @@ offsetxpi = 421+correccion
 DetDoppler = -16-correccion+5
 
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -1604,9 +1631,9 @@ def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, OFFSET):
     # SG = 0.6
     # SP = 8.1
     TEMP = 0.1e-3
-    
+
     BETA1, BETA2 = 3, 0
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
     Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
@@ -1697,7 +1724,7 @@ correccion = 13
 
 #DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -1709,29 +1736,29 @@ SelectedCurveVec = [3]
 popt_SA_vec_2ions = []
 pcov_SA_vec_2ions = []
 
-for selectedcurve in SelectedCurveVec: 
+for selectedcurve in SelectedCurveVec:
 
     FreqsDR = Freqs[selectedcurve]
     CountsDR = Counts[selectedcurve]
-    
+
     freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
-    
+
     CircPr = 1
     alpha = 0
-    
-    
+
+
     def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, SCALE2, OFFSET, BETA1, BETA2, TEMP, plot=False):
     #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
         #BETA = 1.8
         #SG = 0.6
         #SP = 8.1
         # TEMP = 0.2e-3
-    
+
         freqs = [2*f*1e-6-offset for f in Freqs]
-      
+
         Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
         Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
-    
+
         ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
         ScaledFluo2 = np.array([f*SCALE2 for f in Fluorescence2])
         if plot:
@@ -1739,22 +1766,22 @@ for selectedcurve in SelectedCurveVec:
         else:
             return ScaledFluo1+ScaledFluo2
         #return ScaledFluo1
-    
+
     do_fit = True
     if do_fit:
         popt_3_SA_2ions, pcov_3_SA_2ions = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[448, -42, 0.6, 8.1, 4e4, 4e4, 6e3, 1, 1.2, 0.5e-3], bounds=((0, -100,0, 0, 0,0,0,0,0, 0), (1000, 0, 2, 20,5e6, 5e6,5e4, 10, 10,10e-3)))
-        
+
         #popt_3_SA_2ions = [448, -42, 8e4, 6e3, 2, 0.5e-3]
-        
-        
+
+
         popt_SA_vec_2ions.append(popt_3_SA_2ions)
         pcov_SA_vec_2ions.append(pcov_3_SA_2ions)
-    
+
         FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA_2ions, plot=True)
         freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
         FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA_2ions, plot=True)
-    
-    
+
+
     plt.figure()
     plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
     plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
@@ -1763,7 +1790,7 @@ for selectedcurve in SelectedCurveVec:
     plt.ylabel('Counts')
     plt.legend(loc='upper left', fontsize=20)
     plt.grid()
-    
+
     print(f'listo med {selectedcurve}')
     print(popt_3_SA_2ions)
     #print(f'Detdop:{popt_3_SA[1]},popt_3_SA:{popt[0]}')
@@ -1805,7 +1832,7 @@ offsetxpi = 421+correccion
 DetDoppler = -16-correccion+5
 
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -1826,9 +1853,9 @@ def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, OFFSET):
     # SG = 0.6
     # SP = 8.1
     TEMP = 0.1e-3
-    
+
     BETA1, BETA2 = 3, 0
-    
+
     Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
     Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
 
@@ -1924,7 +1951,7 @@ correccion = 13
 
 #DetDoppler = -11.5-correccion
 
-gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
 alpha = 0
 
 
@@ -1949,7 +1976,7 @@ SelectedCurveVec = [0]
 # DetuningsUV_vec = []
 # ErrorDetuningsUV_vec = []
 
-for selectedcurve in SelectedCurveVec: 
+for selectedcurve in SelectedCurveVec:
 
 #selectedcurve = 2 #IMPORTANTE: SELECCIONA LA MEDICION
 
@@ -1968,11 +1995,11 @@ for selectedcurve in SelectedCurveVec:
         CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
     if selectedcurve==7:
         CountsDR[117]=0.5*(CountsDR[116]+CountsDR[118])
-        
+
     freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
     CircPr = 1
     alpha = 0
-    
+
 
     def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U, plot=False):
     #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
@@ -1980,43 +2007,43 @@ for selectedcurve in SelectedCurveVec:
         # SG = 0.6
         # SP = 8.1
         # TEMP = 0.2e-3
-    
+
         freqs = [2*f*1e-6-offset for f in Freqs]
-      
+
         Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, U, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
-    
+
         ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
         if plot:
             return ScaledFluo1, Detunings
         else:
             return ScaledFluo1
         #return ScaledFluo1
-    
+
     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)))
-        
+
         # popt_SA_vec.append(popt_3_SA)
         # pcov_SA_vec.append(pcov_3_SA)
-    
+
         FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA, plot=True)
         freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
         FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA, plot=True)
-    
+
     # DetuningsUV_vec.append(popt_3_SA[1])
     # ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
-    
+
     # Betas_vec.append(popt_3_SA[6])
     # ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
     # Temp_vec.append(popt_3_SA[7])
     # ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
-    
+
     # Detuningsshort_vec.append(Detunings_3_SA_short)
     # Counts_vec.append(CountsDR)
     # Detuningslong_vec.append(Detunings_3_SA_long)
     # FittedCounts_vec.append(FittedEITpi_3_SA_long)
-    
-    
+
+
     plt.figure()
     plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
     plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
@@ -2025,13 +2052,6 @@ for selectedcurve in SelectedCurveVec:
     plt.ylabel('Counts')
     plt.legend(loc='upper left', fontsize=20)
     plt.grid()
-    
+
     print(f'listo med {selectedcurve}')
     print(popt_3_SA)
-
-
-
-
-
-
-
diff --git a/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste.py b/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste.py
new file mode 100644
index 0000000000000000000000000000000000000000..8152e0c1dbf8cc2203f4b87db436e65dc5af9bb5
--- /dev/null
+++ b/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste.py
@@ -0,0 +1,520 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Ploteo de datos y ajustes
+@author: lolo
+"""
+
+
+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
+
+
+
+
+#%% Importaciones extra
+
+# /home/lolo/Dropbox/marce/LIAF/Trampa_anular/artiq_experiments/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
+
+from Data.EITfit.lolo_modelo_full_8niveles import PerformExperiment_8levels_MM
+
+
+PARAMETROS = np.load('PARAMETROS.npz',allow_pickle=True)
+for var_name in PARAMETROS.keys():
+    globals()[var_name] = PARAMETROS[var_name]
+    print(f'loaded: {var_name}')
+
+
+#%%
+
+"""
+Primero tengo mediciones de espectros cpt de un ion variando la tension dc_A
+"""
+
+#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data
+
+folder = '../20231123_CPTconmicromocion3/Data/'
+CPT_FILES = f"""
+{folder}/000016262-IR_Scan_withcal_optimized
+{folder}/000016239-IR_Scan_withcal_optimized
+{folder}/000016240-IR_Scan_withcal_optimized
+{folder}/000016241-IR_Scan_withcal_optimized
+{folder}/000016244-IR_Scan_withcal_optimized
+{folder}/000016255-IR_Scan_withcal_optimized
+{folder}/000016256-IR_Scan_withcal_optimized
+{folder}/000016257-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(CPT_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 = []
+Voltages = []
+
+for i, fname in enumerate(CPT_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']['IR1_Frequencies']))
+    Counts.append(np.array(data['datasets']['data_array']))
+    #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']))
+    Voltages.append(np.array(data['datasets']['scanning_voltages']))
+
+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
+
+
+CountsSplit = []
+CountsSplit.append(Split(Counts[0],len(Freqs[0])))
+
+
+CountsSplit_2ions = []
+CountsSplit_2ions.append(Split(Counts[4],len(Freqs[4])))
+
+
+
+#%%
+"""
+AHORA INTENTO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
+
+La 0 no ajusta bien incluso con todos los parametros libres
+De la 1 a la 11 ajustan bien
+"""
+
+
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+SUPER AJUSTE (SA)
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+#DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+SelectedCurveVec = [1,2,3,4,5,6,7,8,9,10,11]
+#SelectedCurveVec = [10]
+
+# if not 'popt_SA_vec' in globals().keys() or len(popt_SA_vec)==0:
+
+popt_SA_vec = []
+pcov_SA_vec = []
+Detuningsshort_vec = []
+Counts_vec = []
+Detuningslong_vec = []
+FittedCounts_vec = []
+
+Betas_vec = []
+ErrorBetas_vec = []
+Temp_vec = []
+ErrorTemp_vec = []
+
+DetuningsUV_vec = []
+ErrorDetuningsUV_vec = []
+
+for selectedcurve in SelectedCurveVec: 
+
+#selectedcurve = 2 #IMPORTANTE: SELECCIONA LA MEDICION
+
+    FreqsDR = Freqs[0]
+    CountsDR = CountsSplit[0][selectedcurve]
+
+
+    if selectedcurve==1:
+        CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+        CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+    if selectedcurve==2:
+        CountsDR[67]=0.5*(CountsDR[66]+CountsDR[68])
+        CountsDR[71]=0.5*(CountsDR[70]+CountsDR[72])
+    if selectedcurve==6:
+        CountsDR[1]=0.5*(CountsDR[0]+CountsDR[2])
+        CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
+    if selectedcurve==7:
+        CountsDR[117]=0.5*(CountsDR[116]+CountsDR[118])
+        
+    freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+    CircPr = 1
+    alpha = 0
+    
+
+    def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U, plot=False):
+    #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+        #BETA = 1.8
+        # SG = 0.6
+        # SP = 8.1
+        # TEMP = 0.2e-3
+    
+        freqs = [2*f*1e-6-offset for f in Freqs]
+      
+        Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, U, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    
+        ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+        if plot:
+            return ScaledFluo1, Detunings
+        else:
+            return ScaledFluo1
+        #return ScaledFluo1
+    
+    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)))
+        
+        popt_SA_vec.append(popt_3_SA)
+        pcov_SA_vec.append(pcov_3_SA)
+    
+        FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA, plot=True)
+        freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+        FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA, plot=True)
+    
+    DetuningsUV_vec.append(popt_3_SA[1])
+    ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
+    
+    Betas_vec.append(popt_3_SA[6])
+    ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
+    Temp_vec.append(popt_3_SA[7])
+    ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
+    
+    Detuningsshort_vec.append(Detunings_3_SA_short)
+    Counts_vec.append(CountsDR)
+    Detuningslong_vec.append(Detunings_3_SA_long)
+    FittedCounts_vec.append(FittedEITpi_3_SA_long)
+    
+    
+    plt.figure()
+    plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+    plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
+    #plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+    plt.xlabel('Detuning (MHz)')
+    plt.ylabel('Counts')
+    plt.legend(loc='upper left', fontsize=20)
+    plt.grid()
+    
+    print(f'listo med {selectedcurve}')
+    print(popt_3_SA)
+
+    
+#%%
+"""
+Grafico distintas variables que salieron del SUper ajuste
+"""
+
+import seaborn as sns
+paleta = sns.color_palette("rocket")
+
+medfin = 12
+
+
+voltages_dcA = Voltages[0][1:medfin]
+
+def lineal(x,a,b):
+    return a*x+b
+
+def hiperbola(x,a,b,c,x0):
+    return a*np.sqrt(((x-x0)**2+c**2))+b
+
+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))
+    
+    xhip = np.linspace(-0.23,0.005,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])
+    plt.plot(xhip,hiperbola(xhip,*popthip))
+    plt.xlabel('Endcap voltage (V)')
+    plt.ylabel('Modulation factor')
+    plt.grid()
+
+else:
+    poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],Betas_vec[0:3])
+    poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],Betas_vec[4:])
+    
+    minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+    minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+    
+    xini = np.linspace(-0.23,-0.13,100)
+    xfin = np.linspace(-0.15,0.005,100)
+    
+    plt.figure()
+    plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,fmt='o',capsize=5,markersize=5,color=paleta[1])
+    plt.plot(xini,lineal(xini,*poptini))
+    plt.plot(xfin,lineal(xfin,*poptfin))
+    plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+    plt.xlabel('Endcap voltage (V)')
+    plt.ylabel('Modulation factor')
+    plt.grid()
+
+
+print([t*1e3 for t in Temp_vec])
+
+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.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+#plt.ylim(0,2)
+
+#%%
+"""
+Ahora hago un ajuste con una hiperbola porque tiene mas sentido, por el hecho
+de que en el punto optimo el ion no esta en el centro de la trampa
+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))
+
+xhip = np.linspace(-0.23,0.005,200)
+
+plt.figure()
+plt.errorbar(voltages_dcA,Betas_vec[:10],yerr=ErrorBetas_vec[:10],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.grid()
+
+
+
+
+#%%
+from scipy.special import jv
+
+
+def expo(x,tau,A,B):
+    return A*np.exp(x/tau)+B
+
+def cuadratica(x,a,c):
+    return a*(x**2)+c
+
+def InverseMicromotionSpectra(beta, A, det, x0, gamma, B):
+    ftrap=22.1
+    #gamma=30
+    P = ((jv(0, beta)**2)/((((det-x0)**2)+(0.5*gamma)**2)**2))*(-2*(det-x0))
+    i = 1
+    #print(P)
+    while i <= 5:
+        P = P + (-2*(det-x0))*((jv(i, beta))**2)/(((((det-x0)+i*ftrap)**2)+(0.5*gamma)**2)**2) + (-2*(det-x0))*(((jv(-i, beta))**2)/((((det-x0)-i*ftrap)**2)+(0.5*gamma)**2)**2)
+        i = i + 1
+        #print(P)
+    #return 1/(A*P+B)
+    return 1/(A*P+B)
+
+
+def InverseMicromotionSpectra_raw(beta, A, det, B):
+    ftrap=22.1
+    gamma=21
+    P = ((jv(0, beta)**2)/((((det)**2)+(0.5*gamma)**2)**2))*(-2*(det))
+    i = 1
+    #print(P)
+    while i <= 3:
+        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
+
+
+"""
+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_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
+
+
+print(popt_rho22_raw)
+
+betaslong = np.arange(0,2*2.7,0.01)
+
+print(f'Min temp predicted: {InverseMicromotionSpectra_raw(betaslong,*popt_rho22_raw)[100]}')
+
+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.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.axvline(minimum_voltage,linestyle='dashed',color='grey')
+#plt.axhline(0.538)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+#%%
+"""
+Esto no es del super ajuste sino de los ajustes anteriores en donde DetDoppler y offset son puestos a mano
+Aca grafico los betas con su error en funcion de la tension variada.
+Ademas, hago ajuste lineal para primeros y ultimos puntos, ya que espero que
+si la tension hace que la posicion del ion varie linealmente, el beta varia proporcional a dicha posicion.
+"""
+
+import seaborn as sns
+
+def lineal(x,a,b):
+    return a*x+b
+
+paleta = sns.color_palette("rocket")
+
+betavector = [beta1,beta2,beta3,beta4,beta5,beta6,beta7,beta8,beta9]
+errorbetavector = [errorbeta1,errorbeta2,errorbeta3,errorbeta4,errorbeta5,errorbeta6,errorbeta7,errorbeta8,errorbeta9]
+voltages_dcA = Voltages[0][1:10]
+
+poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],betavector[0:3])
+poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],betavector[4:])
+
+minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+
+xini = np.linspace(-0.23,-0.13,100)
+xfin = np.linspace(-0.15,0.005,100)
+
+plt.figure()
+plt.errorbar(voltages_dcA,betavector,yerr=errorbetavector,fmt='o',capsize=5,markersize=5,color=paleta[1])
+plt.plot(xini,lineal(xini,*poptini))
+plt.plot(xfin,lineal(xfin,*poptfin))
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Modulation factor')
+plt.grid()
+
+
+#%%
+"""
+Aca veo la temperatura del ion en funcion del voltaje del endcap, ya que
+al cambiar la cantidad de micromocion, cambia la calidad del enfriado
+"""
+tempvector = np.array([temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9])*1e3
+errortempvector = np.array([errortemp1,errortemp2,errortemp3,errortemp4,errortemp5,errortemp6,errortemp7,errortemp8,errortemp9])*1e3
+
+voltages_dcA = Voltages[0][1:10]
+
+plt.figure()
+plt.errorbar(voltages_dcA,tempvector,yerr=errortempvector,fmt='o',capsize=5,markersize=5,color=paleta[3])
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+plt.ylim(0,2)
+
+
+#%%
+"""
+Por las dudas, temperatura en funcion de beta
+"""
+plt.figure()
+plt.errorbar(betavector,tempvector,yerr=errortempvector,xerr=errorbetavector,fmt='o',capsize=5,markersize=5)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+
+#%%
+"""
+Si quiero ver algun parametro del ajuste puntual. el orden es: 0:SG, 1:SP, 2:SCALE1, 3:OFFSET
+"""
+ki=2
+plt.errorbar(np.arange(0,9,1),[popt_1[ki],popt_2[ki],popt_3[ki],popt_4[ki],popt_5[ki],popt_6[ki],popt_7[ki],popt_8[ki],popt_9[ki]],yerr=[np.sqrt(pcov_1[ki,ki]),np.sqrt(pcov_2[ki,ki]),np.sqrt(pcov_3[ki,ki]),np.sqrt(pcov_4[ki,ki]),np.sqrt(pcov_5[ki,ki]),np.sqrt(pcov_6[ki,ki]),np.sqrt(pcov_7[ki,ki]),np.sqrt(pcov_8[ki,ki]),np.sqrt(pcov_9[ki,ki])], fmt='o',capsize=3,markersize=3)
+
+
+#%%
+
+if False:
+    GUARDAR = {}
+    for var in [ kk for kk in globals().keys() if kk.startswith('pop') ]:
+        print(var)
+        GUARDAR[var] = globals()[var]
+    print('')
+    for var in [ kk for kk in globals().keys() if kk.startswith('pcov') ]:
+        print(var)
+        GUARDAR[var] = globals()[var]
+
+    print('')
+    for var in [ kk for kk in globals().keys() if kk.startswith('Fitted') ]:
+        print(var)
+        GUARDAR[var] = globals()[var]
+    print('')
+    for var in [ kk for kk in globals().keys() if kk.endswith('_vec') ]:
+        print(var)
+        GUARDAR[var] = globals()[var]
+
+
+    np.savez('PARAMETROS.npz', **GUARDAR )
+
+
diff --git a/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste_PARAMETROS.npz b/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste_PARAMETROS.npz
new file mode 100644
index 0000000000000000000000000000000000000000..94bcf635fc49e24b9a4442e4531c1743dc5eaae0
Binary files /dev/null and b/analisis/plots/20231123_CPTconmicromocion3/analisis_superajuste_PARAMETROS.npz differ
diff --git a/analisis/plots/20231123_CPTconmicromocion3/lolo_CPT_plotter_20231123.py b/analisis/plots/20231123_CPTconmicromocion3/lolo_CPT_plotter_20231123.py
index a8b1e6c58b120e68d29be492e136fcb2ab0ea3f1..abd34ed3bc070cb6bca36248bd1edcfa991c6df6 100644
--- a/analisis/plots/20231123_CPTconmicromocion3/lolo_CPT_plotter_20231123.py
+++ b/analisis/plots/20231123_CPTconmicromocion3/lolo_CPT_plotter_20231123.py
@@ -920,6 +920,9 @@ plt.grid()
 #%%
 """
 AHORA INTENTO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
+
+La 0 no ajusta bien incluso con todos los parametros libres
+De la 1 a la 11 ajustan bien
 """
 
 
@@ -963,8 +966,8 @@ alpha = 0
 drivefreq = 2*np.pi*22.135*1e6
 
 
-SelectedCurveVec = [1,2,3,4,5,6,7,8,9]
-#SelectedCurveVec = [9]
+SelectedCurveVec = [1,2,3,4,5,6,7,8,9,10,11]
+#SelectedCurveVec = [10]
 
 if not 'popt_SA_vec' in globals().keys() or len(popt_SA_vec)==0:
 
@@ -1152,9 +1155,42 @@ plt.grid()
 
 
 #%%
+from scipy.special import jv
+
+
 def expo(x,tau,A,B):
     return A*np.exp(x/tau)+B
 
+def cuadratica(x,a,c):
+    return a*(x**2)+c
+
+def InverseMicromotionSpectra(beta, A, det, x0, gamma, B):
+    ftrap=22.1
+    #gamma=30
+    P = ((jv(0, beta)**2)/((((det-x0)**2)+(0.5*gamma)**2)**2))*(-2*(det-x0))
+    i = 1
+    #print(P)
+    while i <= 5:
+        P = P + (-2*(det-x0))*((jv(i, beta))**2)/(((((det-x0)+i*ftrap)**2)+(0.5*gamma)**2)**2) + (-2*(det-x0))*(((jv(-i, beta))**2)/((((det-x0)-i*ftrap)**2)+(0.5*gamma)**2)**2)
+        i = i + 1
+        #print(P)
+    #return 1/(A*P+B)
+    return 1/(A*P+B)
+
+
+def InverseMicromotionSpectra_raw(beta, A, det, B):
+    ftrap=22.1
+    gamma=21
+    P = ((jv(0, beta)**2)/((((det)**2)+(0.5*gamma)**2)**2))*(-2*(det))
+    i = 1
+    #print(P)
+    while i <= 3:
+        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
+
+
 """
 Temperatura vs
 """
@@ -1818,7 +1854,7 @@ if False:
     for var in [ kk for kk in globals().keys() if kk.startswith('pcov') ]:
         print(var)
         GUARDAR[var] = globals()[var]
-    
+
     print('')
     for var in [ kk for kk in globals().keys() if kk.startswith('Fitted') ]:
         print(var)
@@ -1827,8 +1863,6 @@ if False:
     for var in [ kk for kk in globals().keys() if kk.endswith('_vec') ]:
         print(var)
         GUARDAR[var] = globals()[var]
-    
-    
-    np.savez('PARAMETROS.npz', **GUARDAR )
-    
 
+
+    np.savez('PARAMETROS.npz', **GUARDAR )
diff --git a/analisis/plots/20231123_CPTconmicromocion3/lolo_analisis_superajuste.py b/analisis/plots/20231123_CPTconmicromocion3/lolo_analisis_superajuste.py
new file mode 100644
index 0000000000000000000000000000000000000000..013b0bb203a2c56e90fbcdde053827fbb0b59bfb
--- /dev/null
+++ b/analisis/plots/20231123_CPTconmicromocion3/lolo_analisis_superajuste.py
@@ -0,0 +1,707 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Ploteo de datos y ajustes
+@author: lolo
+"""
+
+
+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 numba import jit,njit
+
+from time import time
+
+#%% Importaciones extra
+
+# /home/lolo/Dropbox/marce/LIAF/Trampa_anular/artiq_experiments/analisis/plots/20231123_CPTconmicromocion3/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
+
+from Data.EITfit.lolo_modelo_full_8niveles import PerformExperiment_8levels_MM
+
+
+# PARAMETROS = np.load('PARAMETROS.npz',allow_pickle=True)
+# for var_name in PARAMETROS.keys():
+#     globals()[var_name] = PARAMETROS[var_name]
+#     print(f'loaded: {var_name}')
+
+
+# Funciones auxiliares
+
+from scipy.stats.distributions import  t,chi2
+
+def estadistica(datos_x,datos_y,modelo,pcov,parametros,nombres=None,alpha=0.05):
+    
+    if nombres is None:
+        nombres = [ f'{j}' for j in range(len(parametros)) ]
+    
+    # Cantidad de parámetros
+    P = len(parametros)
+    
+    # Número de datos
+    N = len(datos_x)
+    
+    # Grados de libertas (Degrees Of Freedom)
+    dof = N-P-1
+
+    # Cauculamos coordenadas del modelo
+    # modelo_x    = datos_x if modelo_x_arr is None else modelo_x_arr
+    # modelo_y    = modelo( modelo_x, *parametros )
+    
+    # Predicción del modelo para los datos_x medidos
+    prediccion_modelo = modelo( datos_x, *parametros )
+    
+    # Calculos de cantidades estadísticas relevantes
+    COV       = pcov                                      # Matriz de Covarianza
+    SE        = np.sqrt(np.diag( COV  ))                        # Standar Error / Error estandar de los parámetros
+    residuos  = datos_y - prediccion_modelo               # diferencia enrte el modelo y los datos
+    
+    SSE       = sum(( residuos )**2 )                     # Resitual Sum of Squares
+    SST       = sum(( datos_y - np.mean(datos_y))**2)        # Total Sum of Squares
+    
+    # http://en.wikipedia.org/wiki/Coefficient_of_determination
+    # Expresa el porcentaje de la varianza que logra explicar el modelos propuesto
+    Rsq       =  1 - SSE/SST                               # Coeficiente de determinación
+    Rsq_adj   = 1-(1-Rsq) * (N-1)/(N-P-1)                  # Coeficiente de determinación Ajustado   
+    
+    # https://en.wikipedia.org/wiki/Pearson_correlation_coefficient#In_least_squares_regression_analysis
+    # Expresa la correlación que hay entre los datos y la predicción del modelo
+    r_pearson = np.corrcoef( datos_y ,  prediccion_modelo )[0,1]
+    
+    # Reduced chi squared
+    # https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic
+    chi2_     = sum( residuos**2 )/N
+    chi2_red  = sum( residuos**2 )/(N-P)
+    
+    # Chi squared test
+    chi2_test = sum( residuos**2 / abs(prediccion_modelo) )
+    # p-value del ajuste
+    p_val  = chi2(dof).cdf( chi2_test )
+    
+    
+    sT = t.ppf(1.0 - alpha/2.0, N - P ) # student T multiplier
+    CI = sT * SE                        # Confidence Interval
+    
+    print('R-squared    ',Rsq)
+    print('R-sq_adjusted',Rsq_adj)
+    print('chi2         ',chi2_)
+    print('chi2_reduced ',chi2_red)
+    print('chi2_test    ',chi2_test)
+    print('r-pearson    ',r_pearson)
+    print('p-value      ',p_val)
+    print('')
+    print('Error Estandard (SE):')
+    for i in range(P):
+        print(f'parametro[{nombres[i]:>5s}]: ' , parametros[i], ' ± ' , SE[i])
+    print('')
+    print('Intervalo de confianza al '+str((1-alpha)*100)+'%:')
+    for i in range(P):
+        print(f'parametro[{nombres[i]:>5s}]: ' , parametros[i], ' ± ' , CI[i])
+    
+    return dict(R2=Rsq,R2_adj=Rsq_adj,chi2=chi2_,chi2_red=chi2_red,
+                chi2_test=chi2_test,r=r_pearson,pvalue=p_val,
+                SE=SE,CI=CI)
+
+
+
+
+
+
+#%%
+
+"""
+Primero tengo mediciones de espectros cpt de un ion variando la tension dc_A
+"""
+
+#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data
+# os.chdir('../20231123_CPTconmicromocion3/Data/')
+
+folder = '../20231123_CPTconmicromocion3/Data/'
+CPT_FILES = f"""
+{folder}/000016262-IR_Scan_withcal_optimized
+{folder}/000016239-IR_Scan_withcal_optimized
+{folder}/000016240-IR_Scan_withcal_optimized
+{folder}/000016241-IR_Scan_withcal_optimized
+{folder}/000016244-IR_Scan_withcal_optimized
+{folder}/000016255-IR_Scan_withcal_optimized
+{folder}/000016256-IR_Scan_withcal_optimized
+{folder}/000016257-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(CPT_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 = []
+Voltages = []
+
+for i, fname in enumerate(CPT_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']['IR1_Frequencies']))
+    Counts.append(np.array(data['datasets']['data_array']))
+    #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']))
+    Voltages.append(np.array(data['datasets']['scanning_voltages']))
+
+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
+
+
+CountsSplit = []
+CountsSplit.append(Split(Counts[0],len(Freqs[0])))
+
+
+CountsSplit_2ions = []
+CountsSplit_2ions.append(Split(Counts[4],len(Freqs[4])))
+
+
+#%% Cargo parámetros fiteados de antes
+
+
+PARAMETROS = np.load('analisis_superajuste_PARAMETROS.npz',allow_pickle=True)
+for var_name in PARAMETROS.keys():
+    globals()[var_name] = PARAMETROS[var_name]
+    print(f'loaded: {var_name}')
+
+
+if False:
+    # Esto es para correr en caso de necesidad de limpiar todos los vectores de parametros
+    print('Limpio los vectores de parámetros')
+    for var in [ kk for kk in globals().keys() if kk.endswith('_vec') ]:
+        print(f'del {var}')
+        del(globals()[var])
+
+
+#%% Definiciones de Numba
+
+@jit
+def FitEIT_MM_single_plot(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+
+    freqs = [2*f*1e-6-offset for f in Freqs]
+
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, 
+                                                            DopplerLaserLinewidth, ProbeLaserLinewidth, 
+                                                            TEMP, alpha, phidoppler, titadoppler, 
+                                                            phiprobe, titaprobe,  BETA1, drivefreq, 
+                                                            min(freqs), max(freqs)+(freqs[1]-freqs[0]), 
+                                                            freqs[1]-freqs[0], circularityprobe=CircPr, 
+                                                            plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1, Detunings
+
+
+
+@jit
+def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+    "Esta verison de la función devuelve sólo el eje y, para usar de modelo en un ajuste"
+    return FitEIT_MM_single_plot(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP)[0]
+
+
+
+param_names = 'offset DetDoppler SG SP SCALE1 OFFSET BETA1 TEMP'.split()
+
+#%%
+"""
+AHORA INTENTO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
+
+La 0 no ajusta bien incluso con todos los parametros libres
+De la 1 a la 11 ajustan bien
+"""
+
+
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+
+"""
+SUPER AJUSTE (SA)
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+#DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+SelectedCurveVec = [1,2,3,4,5,6,7,8,9,10,11]
+#SelectedCurveVec = [10]
+
+CircPr = 1
+alpha = 0
+
+t0 = time()
+
+if not 'popt_SA_vec' in globals().keys() or len(popt_SA_vec)==0:
+
+    popt_SA_vec = []
+    pcov_SA_vec = []
+    Detuningsshort_vec = []
+    Counts_vec = []
+    Detuningslong_vec = []
+    FittedCounts_vec = []
+
+    Betas_vec = []
+    ErrorBetas_vec = []
+    Temp_vec = []
+    ErrorTemp_vec = []
+
+    DetuningsUV_vec = []
+    ErrorDetuningsUV_vec = []
+    
+    Estadistica_vec = []
+
+    for selectedcurve in SelectedCurveVec:
+        print(f"{round(time()-t0,1):6.1f}: Procesando la curva {selectedcurve}")
+        #selectedcurve = 2 #IMPORTANTE: SELECCIONA LA MEDICION
+
+        FreqsDR = Freqs[0]
+        CountsDR = CountsSplit[0][selectedcurve]
+
+
+        if selectedcurve==1:
+            CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+            CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+        if selectedcurve==2:
+            CountsDR[67]=0.5*(CountsDR[66]+CountsDR[68])
+            CountsDR[71]=0.5*(CountsDR[70]+CountsDR[72])
+        if selectedcurve==6:
+            CountsDR[1]=0.5*(CountsDR[0]+CountsDR[2])
+            CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
+        if selectedcurve==7:
+            CountsDR[117]=0.5*(CountsDR[116]+CountsDR[118])
+
+        freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+
+        if True:
+            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], bounds=((0, -50, 0, 0, 0, 0, 0, 0), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3)))
+
+            popt_SA_vec.append(popt_3_SA)
+            pcov_SA_vec.append(pcov_3_SA)
+
+            FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single_plot(FreqsDR, *popt_3_SA)
+            freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+            FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single_plot(freqslong, *popt_3_SA)
+            
+            
+            # estadistica(datos_x,datos_y,modelo,pcov,parametros,nombres=None,alpha=0.05)
+            est_tmp = estadistica(FreqsDR,CountsDR,FitEIT_MM_single,pcov_3_SA,popt_3_SA,
+                                  nombres=param_names,alpha=0.05)
+            Estadistica_vec.append(est_tmp)
+
+        DetuningsUV_vec.append(popt_3_SA[1])
+        ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
+
+        Betas_vec.append(popt_3_SA[6])
+        ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
+        Temp_vec.append(popt_3_SA[7])
+        ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
+
+        Detuningsshort_vec.append(Detunings_3_SA_short)
+        Counts_vec.append(CountsDR)
+        Detuningslong_vec.append(Detunings_3_SA_long)
+        FittedCounts_vec.append(FittedEITpi_3_SA_long)
+
+
+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#%% Graficamos todos los fiteos
+
+# tmp_datos=(Detuningsshort_vec,Counts_vec,Detuningslong_vec,FittedCounts_vec,SelectedCurveVec)
+
+# for Detunings_3_SA_short,CountsDR,Detunings_3_SA_long,FittedEITpi_3_SA_long,selectedcurve in zip(*tmp_datos):
+#     plt.figure()
+#     plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+#     plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
+#     #plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+#     plt.xlabel('Detuning (MHz)')
+#     plt.ylabel('Counts')
+#     plt.legend(loc='upper left', fontsize=20)
+#     plt.grid()
+
+#     print(f'listo med {selectedcurve}')
+#     print(popt_3_SA)
+
+
+fig, axx = plt.subplots( 3,4, figsize=(13,8) ,  constrained_layout=True, sharex=True , sharey=True )
+fig.set_constrained_layout_pads(w_pad=2/72, h_pad=2/72, hspace=0, wspace=0)
+
+tmp_datos=(Detuningsshort_vec,Counts_vec,Detuningslong_vec,FittedCounts_vec,SelectedCurveVec,axx.flatten())
+
+for Detunings_3_SA_short,CountsDR,Detunings_3_SA_long,FittedEITpi_3_SA_long,selectedcurve,ax in zip(*tmp_datos):
+    ax.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.3, capsize=2, markersize=2)
+    ax.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='black', linewidth=2, label=f'med {selectedcurve}', alpha=0.7)
+    #plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+    # ax.set_xlabel('Detuning (MHz)')
+    # ax.set_ylabel('Counts')
+    ax.legend(loc='upper left', fontsize=12)
+    ax.grid(True, ls=":")
+
+    print(f'listo med {selectedcurve}')
+    print(popt_3_SA)
+
+
+for ax in axx[:,0]:
+    ax.set_ylabel('Counts')
+
+for ax in axx[-1,:]:
+    ax.set_xlabel('Detuning (MHz)')
+
+
+
+
+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#%% Inspección de parámetros
+
+param_names = 'offset DetDoppler SG SP SCALE1 OFFSET BETA1 TEMP'.split()
+
+err_vecs = np.array([ np.sqrt(np.diag(el)) for el in pcov_SA_vec ])
+num_med  = np.arange(len(pcov_SA_vec)) +1
+
+r2_values = np.array([ el['R2_adj'] for el in Estadistica_vec ])
+
+
+fig, axx = plt.subplots( len(popt_SA_vec[0])+1,1, figsize=(13,8) ,  constrained_layout=True, sharex=True , sharey=False )
+fig.set_constrained_layout_pads(w_pad=2/72, h_pad=2/72, hspace=0, wspace=0)
+
+for ax,param_vec,err_vec,par_name in zip(axx,popt_SA_vec.T,err_vecs.T,param_names) :
+    ax.plot(num_med, param_vec, '.-')
+    ax.errorbar( num_med, param_vec, yerr=err_vec, 
+                 fmt='s', mfc='none', elinewidth = 1, capsize=3, ms=1)
+
+    ax.grid(True, ls=":", color='lightgray')
+    ax.set_ylabel(par_name)
+
+
+ax=axx[-1]
+ax.plot( num_med , r2_values, '.-')
+ax.set_ylabel(r'$R^2$')
+ax.grid(True, ls=":", color='lightgray')
+
+
+
+fig.align_ylabels()
+ax.set_xticks(num_med)
+ax.set_xlabel('Num. de medición')
+
+
+#%%
+"""
+Grafico distintas variables que salieron del SUper ajuste
+"""
+
+import seaborn as sns
+paleta = sns.color_palette("rocket")
+
+voltages_dcA = Voltages[0][1:10]
+
+def lineal(x,a,b):
+    return a*x+b
+
+def hiperbola(x,a,b,c,x0):
+    return a*np.sqrt(((x-x0)**2+c**2))+b
+
+hiperbola_or_linear = True
+
+if hiperbola_or_linear:
+    popthip,pcovhip = curve_fit(hiperbola,voltages_dcA,Betas_vec,p0=(100,0.1,1,-0.15))
+
+    xhip = np.linspace(-0.23,0.005,200)
+
+    plt.figure()
+    plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,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.grid()
+
+else:
+    poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],Betas_vec[0:3])
+    poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],Betas_vec[4:])
+
+    minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+    minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+
+    xini = np.linspace(-0.23,-0.13,100)
+    xfin = np.linspace(-0.15,0.005,100)
+
+    plt.figure()
+    plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,fmt='o',capsize=5,markersize=5,color=paleta[1])
+    plt.plot(xini,lineal(xini,*poptini))
+    plt.plot(xfin,lineal(xfin,*poptfin))
+    plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+    plt.xlabel('Endcap voltage (V)')
+    plt.ylabel('Modulation factor')
+    plt.grid()
+
+
+print([t*1e3 for t in Temp_vec])
+
+plt.figure()
+plt.errorbar(voltages_dcA,[t*1e3 for t in Temp_vec],yerr=[t*1e3 for t in ErrorTemp_vec],fmt='o',capsize=5,markersize=5,color=paleta[3])
+# plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+print(f'\n\nTE FALTA DEFINIR LA VARIABLE minimum_voltage\n\n')
+plt.axhline(0.538)
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+#plt.ylim(0,2)
+
+#%%
+"""
+Ahora hago un ajuste con una hiperbola porque tiene mas sentido, por el hecho
+de que en el punto optimo el ion no esta en el centro de la trampa
+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,p0=(100,0.1,1,-0.15))
+
+xhip = np.linspace(-0.23,0.005,200)
+
+plt.figure()
+plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,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.grid()
+
+
+
+
+#%%
+from scipy.special import jv
+
+
+def expo(x,tau,A,B):
+    return A*np.exp(x/tau)+B
+
+def cuadratica(x,a,c):
+    return a*(x**2)+c
+
+def InverseMicromotionSpectra(beta, A, det, x0, gamma, B):
+    ftrap=22.1
+    #gamma=30
+    P = ((jv(0, beta)**2)/((((det-x0)**2)+(0.5*gamma)**2)**2))*(-2*(det-x0))
+    i = 1
+    #print(P)
+    while i <= 5:
+        P = P + (-2*(det-x0))*((jv(i, beta))**2)/(((((det-x0)+i*ftrap)**2)+(0.5*gamma)**2)**2) + (-2*(det-x0))*(((jv(-i, beta))**2)/((((det-x0)-i*ftrap)**2)+(0.5*gamma)**2)**2)
+        i = i + 1
+        #print(P)
+    #return 1/(A*P+B)
+    return 1/(A*P+B)
+
+
+def InverseMicromotionSpectra_raw(beta, A, det, B):
+    ftrap=22.1
+    gamma=21
+    P = ((jv(0, beta)**2)/((((det)**2)+(0.5*gamma)**2)**2))*(-2*(det))
+    i = 1
+    #print(P)
+    while i <= 3:
+        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
+
+
+"""
+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_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
+
+
+print(popt_rho22_raw)
+
+betaslong = np.arange(0,2*2.7,0.01)
+
+print(f'Min temp predicted: {InverseMicromotionSpectra_raw(betaslong,*popt_rho22_raw)[100]}')
+
+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.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.axvline(minimum_voltage,linestyle='dashed',color='grey')
+#plt.axhline(0.538)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+#%%
+"""
+Esto no es del super ajuste sino de los ajustes anteriores en donde DetDoppler y offset son puestos a mano
+Aca grafico los betas con su error en funcion de la tension variada.
+Ademas, hago ajuste lineal para primeros y ultimos puntos, ya que espero que
+si la tension hace que la posicion del ion varie linealmente, el beta varia proporcional a dicha posicion.
+"""
+
+import seaborn as sns
+
+def lineal(x,a,b):
+    return a*x+b
+
+paleta = sns.color_palette("rocket")
+
+betavector = [beta1,beta2,beta3,beta4,beta5,beta6,beta7,beta8,beta9]
+errorbetavector = [errorbeta1,errorbeta2,errorbeta3,errorbeta4,errorbeta5,errorbeta6,errorbeta7,errorbeta8,errorbeta9]
+voltages_dcA = Voltages[0][1:10]
+
+poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],betavector[0:3])
+poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],betavector[4:])
+
+minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+
+xini = np.linspace(-0.23,-0.13,100)
+xfin = np.linspace(-0.15,0.005,100)
+
+plt.figure()
+plt.errorbar(voltages_dcA,betavector,yerr=errorbetavector,fmt='o',capsize=5,markersize=5,color=paleta[1])
+plt.plot(xini,lineal(xini,*poptini))
+plt.plot(xfin,lineal(xfin,*poptfin))
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Modulation factor')
+plt.grid()
+
+
+#%%
+"""
+Aca veo la temperatura del ion en funcion del voltaje del endcap, ya que
+al cambiar la cantidad de micromocion, cambia la calidad del enfriado
+"""
+tempvector = np.array([temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9])*1e3
+errortempvector = np.array([errortemp1,errortemp2,errortemp3,errortemp4,errortemp5,errortemp6,errortemp7,errortemp8,errortemp9])*1e3
+
+voltages_dcA = Voltages[0][1:10]
+
+plt.figure()
+plt.errorbar(voltages_dcA,tempvector,yerr=errortempvector,fmt='o',capsize=5,markersize=5,color=paleta[3])
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+plt.ylim(0,2)
+
+
+#%%
+"""
+Por las dudas, temperatura en funcion de beta
+"""
+plt.figure()
+plt.errorbar(betavector,tempvector,yerr=errortempvector,xerr=errorbetavector,fmt='o',capsize=5,markersize=5)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+
+#%%
+"""
+Si quiero ver algun parametro del ajuste puntual. el orden es: 0:SG, 1:SP, 2:SCALE1, 3:OFFSET
+"""
+ki=2
+plt.errorbar(np.arange(0,9,1),[popt_1[ki],popt_2[ki],popt_3[ki],popt_4[ki],popt_5[ki],popt_6[ki],popt_7[ki],popt_8[ki],popt_9[ki]],yerr=[np.sqrt(pcov_1[ki,ki]),np.sqrt(pcov_2[ki,ki]),np.sqrt(pcov_3[ki,ki]),np.sqrt(pcov_4[ki,ki]),np.sqrt(pcov_5[ki,ki]),np.sqrt(pcov_6[ki,ki]),np.sqrt(pcov_7[ki,ki]),np.sqrt(pcov_8[ki,ki]),np.sqrt(pcov_9[ki,ki])], fmt='o',capsize=3,markersize=3)
+
+
+#%%
+
+if False:
+    GUARDAR = {}
+    # for var in [ kk for kk in globals().keys() if kk.startswith('pop') ]:
+    #     print(var)
+    #     GUARDAR[var] = globals()[var]
+    # print('')
+    # for var in [ kk for kk in globals().keys() if kk.startswith('pcov') ]:
+    #     print(var)
+    #     GUARDAR[var] = globals()[var]
+
+    # print('')
+    # for var in [ kk for kk in globals().keys() if kk.startswith('Fitted') ]:
+    #     print(var)
+    #     GUARDAR[var] = globals()[var]
+    # print('')
+    for var in [ kk for kk in globals().keys() if kk.endswith('_vec') ]:
+        print(var)
+        GUARDAR[var] = globals()[var]
+
+
+    np.savez('analisis_superajuste_PARAMETROS.npz', **GUARDAR )
diff --git a/analisis/plots/20231218_CPT_muri/CPT_plotter_20231123.py b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231123.py
new file mode 100644
index 0000000000000000000000000000000000000000..82775ed204dd3a5ab8233c51f5b2f8ad53b1df8f
--- /dev/null
+++ b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231123.py
@@ -0,0 +1,1788 @@
+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
+
+"""
+Primero tengo mediciones de espectros cpt de un ion variando la tension dc_A
+"""
+
+#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/20231123_CPTconmicromocion3/Data/')
+
+CPT_FILES = """000016262-IR_Scan_withcal_optimized
+000016239-IR_Scan_withcal_optimized
+000016240-IR_Scan_withcal_optimized
+000016241-IR_Scan_withcal_optimized
+000016244-IR_Scan_withcal_optimized
+000016255-IR_Scan_withcal_optimized
+000016256-IR_Scan_withcal_optimized
+000016257-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(CPT_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 = []
+Voltages = []
+
+for i, fname in enumerate(CPT_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']['IR1_Frequencies']))
+    Counts.append(np.array(data['datasets']['data_array']))
+    #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']))
+    Voltages.append(np.array(data['datasets']['scanning_voltages']))
+
+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
+
+
+CountsSplit = []
+CountsSplit.append(Split(Counts[0],len(Freqs[0])))
+
+
+CountsSplit_2ions = []
+CountsSplit_2ions.append(Split(Counts[4],len(Freqs[4])))
+
+#%%
+
+"""
+Ploteo la cpt de referencia / plotting the reference CPT
+"""
+
+jvec = [4] # de la 1 a la 9 vale la pena, despues no
+
+drs = [390.5, 399.5, 406, 413.5]
+
+drive=22.1
+
+Frequencies = Freqs[0]
+
+plt.figure()
+i = 0
+for j in jvec:
+    plt.errorbar([2*f*1e-6 for f in Frequencies], CountsSplit[0][j], yerr=np.sqrt(CountsSplit[0][j]), fmt='o', capsize=2, markersize=2)
+    i = i + 1
+plt.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+#for dr in drs:
+#    plt.axvline(dr)
+    #plt.axvline(dr+drive)
+plt.legend()
+
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 1
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion+3*0.8
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 1
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_1, pcov_1 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_1 = FitEIT_MM_single(freqslong, *popt_1)
+
+beta1 = popt_1[4]
+errorbeta1 = np.sqrt(pcov_1[4,4])
+temp1 = popt_1[5]
+errortemp1 = np.sqrt(pcov_1[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_1, color='darkolivegreen', linewidth=3, label='med 1')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 2
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion+1.6
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+
+selectedcurve = 2
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_2, pcov_2 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_2 = FitEIT_MM_single(freqslong, *popt_2)
+
+beta2 = popt_2[4]
+errorbeta2 = np.sqrt(pcov_2[4,4])
+temp2 = popt_2[5]
+errortemp2 = np.sqrt(pcov_2[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_2, color='darkolivegreen', linewidth=3, label='med 2')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 3
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion+0.8
+DetDoppler = -11.5-correccion
+
+print(offsetxpi,DetDoppler)
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 3
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = True
+if do_fit:
+    popt_3, pcov_3 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_3 = FitEIT_MM_single(freqslong, *popt_3)
+
+beta3 = popt_3[4]
+errorbeta3 = np.sqrt(pcov_3[4,4])
+temp3 = popt_3[5]
+errortemp3 = np.sqrt(pcov_3[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_3, color='darkolivegreen', linewidth=3, label='med 3')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 4
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 4
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_4, pcov_4 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_4 = FitEIT_MM_single(freqslong, *popt_4)
+
+beta4 = popt_4[4]
+errorbeta4 = np.sqrt(pcov_4[4,4])
+temp4 = popt_4[5]
+errortemp4 = np.sqrt(pcov_4[5,5])
+
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_4, color='darkolivegreen', linewidth=3, label='med 4')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 5
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion-1
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 5
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    #TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_5, pcov_5 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_5 = FitEIT_MM_single(freqslong, *popt_5)
+
+beta5 = popt_5[4]
+errorbeta5 = np.sqrt(pcov_5[4,4])
+temp5 = popt_5[5]
+errortemp5 = np.sqrt(pcov_5[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_5, color='darkolivegreen', linewidth=3, label='med 5')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 6
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion-2.2  
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 6
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
+CountsDR[1]=0.5*(CountsDR[0]+CountsDR[2])
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = True
+if do_fit:
+    popt_6, pcov_6 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 5e4, 1e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_6 = FitEIT_MM_single(freqslong, *popt_6)
+
+beta6 = popt_6[4]
+errorbeta6 = np.sqrt(pcov_6[4,4])
+temp6 = popt_6[5]
+errortemp6 = np.sqrt(pcov_6[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_6, color='darkolivegreen', linewidth=3, label='med 6')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 7
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion-3.7
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 7
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_7, pcov_7 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_7 = FitEIT_MM_single(freqslong, *popt_7)
+
+beta7 = popt_7[4]
+errorbeta7 = np.sqrt(pcov_7[4,4])
+temp7 = popt_7[5]
+errortemp7 = np.sqrt(pcov_7[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_7, color='darkolivegreen', linewidth=3, label='med 7')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 8
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion-4.9
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 8
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = False
+if do_fit:
+    popt_8, pcov_8 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10, 10e-3)))
+    FittedEITpi_8 = FitEIT_MM_single(freqslong, *popt_8)
+
+beta8 = popt_8[4]
+errorbeta8 = np.sqrt(pcov_8[4,4])
+temp8 = popt_8[5]
+errortemp8 = np.sqrt(pcov_8[5,5])
+
+print()
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_8, color='darkolivegreen', linewidth=3, label='med 8')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+MEDICION 9
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 16
+
+offsetxpi = 419+correccion-6
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+selectedcurve = 9
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    #TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = True
+if do_fit:
+    popt_9, pcov_9 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 2, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 5e4, 5e4, 10,10e-3)))
+
+    FittedEITpi_9 = FitEIT_MM_single(freqslong, *popt_9)
+
+beta9 = popt_9[4]
+errorbeta9 = np.sqrt(pcov_9[4,4])
+temp9 = popt_9[5]
+errortemp9 = np.sqrt(pcov_9[5,5])
+
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_9, color='darkolivegreen', linewidth=3, label='med 9')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+
+#%%
+"""
+AHORA INTENTO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
+"""
+
+
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+SUPER AJUSTE (SA)
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+#DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+SelectedCurveVec = [1,2,3,4,5,6,7,8,9]
+#SelectedCurveVec = [9]
+
+popt_SA_vec = []
+pcov_SA_vec = []
+Detuningsshort_vec = []
+Counts_vec = []
+Detuningslong_vec = []
+FittedCounts_vec = []
+
+Betas_vec = []
+ErrorBetas_vec = []
+Temp_vec = []
+ErrorTemp_vec = []
+
+DetuningsUV_vec = []
+ErrorDetuningsUV_vec = []
+
+for selectedcurve in SelectedCurveVec: 
+
+#selectedcurve = 2 #IMPORTANTE: SELECCIONA LA MEDICION
+
+    FreqsDR = Freqs[0]
+    CountsDR = CountsSplit[0][selectedcurve]
+
+
+    if selectedcurve==1:
+        CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+        CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+    if selectedcurve==2:
+        CountsDR[67]=0.5*(CountsDR[66]+CountsDR[68])
+        CountsDR[71]=0.5*(CountsDR[70]+CountsDR[72])
+    if selectedcurve==6:
+        CountsDR[1]=0.5*(CountsDR[0]+CountsDR[2])
+        CountsDR[76]=0.5*(CountsDR[75]+CountsDR[77])
+    if selectedcurve==7:
+        CountsDR[117]=0.5*(CountsDR[116]+CountsDR[118])
+        
+    freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+    CircPr = 1
+    alpha = 0
+    
+
+    def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, plot=False):
+    #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+        #BETA = 1.8
+        # SG = 0.6
+        # SP = 8.1
+        # TEMP = 0.2e-3
+    
+        freqs = [2*f*1e-6-offset for f in Freqs]
+      
+        Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    
+        ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+        if plot:
+            return ScaledFluo1, Detunings
+        else:
+            return ScaledFluo1
+        #return ScaledFluo1
+    
+    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], bounds=((0, -50, 0, 0, 0, 0, 0, 0), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3)))
+        
+        popt_SA_vec.append(popt_3_SA)
+        pcov_SA_vec.append(pcov_3_SA)
+    
+        FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA, plot=True)
+        freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+        FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA, plot=True)
+    
+    DetuningsUV_vec.append(popt_3_SA[1])
+    ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
+    
+    Betas_vec.append(popt_3_SA[6])
+    ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
+    Temp_vec.append(popt_3_SA[7])
+    ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
+    
+    Detuningsshort_vec.append(Detunings_3_SA_short)
+    Counts_vec.append(CountsDR)
+    Detuningslong_vec.append(Detunings_3_SA_long)
+    FittedCounts_vec.append(FittedEITpi_3_SA_long)
+    
+    
+    plt.figure()
+    plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+    plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
+    #plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+    plt.xlabel('Detuning (MHz)')
+    plt.ylabel('Counts')
+    plt.legend(loc='upper left', fontsize=20)
+    plt.grid()
+    
+    print(f'listo med {selectedcurve}')
+    print(popt_3_SA)
+
+    
+#%%
+"""
+Grafico distintas variables que salieron del SUper ajuste
+"""
+
+import seaborn as sns
+paleta = sns.color_palette("rocket")
+
+voltages_dcA = Voltages[0][1:10]
+
+def lineal(x,a,b):
+    return a*x+b
+
+def hiperbola(x,a,b,c,x0):
+    return a*np.sqrt(((x-x0)**2+c**2))+b
+
+hiperbola_or_linear = True
+
+if hiperbola_or_linear:
+    popthip,pcovhip = curve_fit(hiperbola,voltages_dcA,Betas_vec,p0=(100,0.1,1,-0.15))
+    
+    xhip = np.linspace(-0.23,0.005,200)
+    
+    plt.figure()
+    plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,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.grid()
+
+else:
+    poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],Betas_vec[0:3])
+    poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],Betas_vec[4:])
+    
+    minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+    minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+    
+    xini = np.linspace(-0.23,-0.13,100)
+    xfin = np.linspace(-0.15,0.005,100)
+    
+    plt.figure()
+    plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,fmt='o',capsize=5,markersize=5,color=paleta[1])
+    plt.plot(xini,lineal(xini,*poptini))
+    plt.plot(xfin,lineal(xfin,*poptfin))
+    plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+    plt.xlabel('Endcap voltage (V)')
+    plt.ylabel('Modulation factor')
+    plt.grid()
+
+
+print([t*1e3 for t in Temp_vec])
+
+plt.figure()
+plt.errorbar(voltages_dcA,[t*1e3 for t in Temp_vec],yerr=[t*1e3 for t in ErrorTemp_vec],fmt='o',capsize=5,markersize=5,color=paleta[3])
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.axhline(0.538)
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+#plt.ylim(0,2)
+
+#%%
+"""
+Ahora hago un ajuste con una hiperbola porque tiene mas sentido, por el hecho
+de que en el punto optimo el ion no esta en el centro de la trampa
+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,p0=(100,0.1,1,-0.15))
+
+xhip = np.linspace(-0.23,0.005,200)
+
+plt.figure()
+plt.errorbar(voltages_dcA,Betas_vec,yerr=ErrorBetas_vec,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.grid()
+
+
+
+
+#%%
+def expo(x,tau,A,B):
+    return A*np.exp(x/tau)+B
+
+def cuadratica(x,a,c):
+    return a*(x**2)+c
+
+"""
+Temperatura vs beta con un aju8ste exponencial 
+"""
+
+popt_exp, pcov_exp = curve_fit(expo,Betas_vec,[t*1e3 for t in Temp_vec])
+popt_quad, pcov_quad = curve_fit(cuadratica,Betas_vec,[t*1e3 for t in Temp_vec],p0=(1,10))
+
+
+betaslong = np.arange(0,2.7,0.01)
+
+plt.figure()
+plt.errorbar(Betas_vec,[t*1e3 for t in Temp_vec],xerr=ErrorBetas_vec, yerr=[t*1e3 for t in ErrorTemp_vec],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.axvline(minimum_voltage,linestyle='dashed',color='grey')
+#plt.axhline(0.538)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+#%%
+"""
+Esto no es del super ajuste sino de los ajustes anteriores en donde DetDoppler y offset son puestos a mano
+Aca grafico los betas con su error en funcion de la tension variada.
+Ademas, hago ajuste lineal para primeros y ultimos puntos, ya que espero que
+si la tension hace que la posicion del ion varie linealmente, el beta varia proporcional a dicha posicion.
+"""
+
+import seaborn as sns
+
+def lineal(x,a,b):
+    return a*x+b
+
+paleta = sns.color_palette("rocket")
+
+betavector = [beta1,beta2,beta3,beta4,beta5,beta6,beta7,beta8,beta9]
+errorbetavector = [errorbeta1,errorbeta2,errorbeta3,errorbeta4,errorbeta5,errorbeta6,errorbeta7,errorbeta8,errorbeta9]
+voltages_dcA = Voltages[0][1:10]
+
+poptini,pcovini = curve_fit(lineal,voltages_dcA[0:3],betavector[0:3])
+poptfin,pcovfin = curve_fit(lineal,voltages_dcA[4:],betavector[4:])
+
+minimum_voltage = -(poptini[1]-poptfin[1])/(poptini[0]-poptfin[0]) #voltaje donde se intersectan las rectas, es decir, donde deberia estar el minimo de micromocion
+minimum_modulationfactor = lineal(minimum_voltage,*poptini) #es lo mismo si pongo *poptfin
+
+xini = np.linspace(-0.23,-0.13,100)
+xfin = np.linspace(-0.15,0.005,100)
+
+plt.figure()
+plt.errorbar(voltages_dcA,betavector,yerr=errorbetavector,fmt='o',capsize=5,markersize=5,color=paleta[1])
+plt.plot(xini,lineal(xini,*poptini))
+plt.plot(xfin,lineal(xfin,*poptfin))
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Modulation factor')
+plt.grid()
+
+
+#%%
+"""
+Aca veo la temperatura del ion en funcion del voltaje del endcap, ya que
+al cambiar la cantidad de micromocion, cambia la calidad del enfriado
+"""
+tempvector = np.array([temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9])*1e3
+errortempvector = np.array([errortemp1,errortemp2,errortemp3,errortemp4,errortemp5,errortemp6,errortemp7,errortemp8,errortemp9])*1e3
+
+voltages_dcA = Voltages[0][1:10]
+
+plt.figure()
+plt.errorbar(voltages_dcA,tempvector,yerr=errortempvector,fmt='o',capsize=5,markersize=5,color=paleta[3])
+plt.axvline(minimum_voltage,linestyle='dashed',color='grey')
+plt.xlabel('Endcap voltage (V)')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+plt.ylim(0,2)
+
+
+#%%
+"""
+Por las dudas, temperatura en funcion de beta
+"""
+plt.figure()
+plt.errorbar(betavector,tempvector,yerr=errortempvector,xerr=errorbetavector,fmt='o',capsize=5,markersize=5)
+plt.xlabel('Modulation factor')
+plt.ylabel('Temperature (mK)')
+plt.grid()
+
+
+
+#%%
+"""
+Si quiero ver algun parametro del ajuste puntual. el orden es: 0:SG, 1:SP, 2:SCALE1, 3:OFFSET
+"""
+ki=2
+plt.errorbar(np.arange(0,9,1),[popt_1[ki],popt_2[ki],popt_3[ki],popt_4[ki],popt_5[ki],popt_6[ki],popt_7[ki],popt_8[ki],popt_9[ki]],yerr=[np.sqrt(pcov_1[ki,ki]),np.sqrt(pcov_2[ki,ki]),np.sqrt(pcov_3[ki,ki]),np.sqrt(pcov_4[ki,ki]),np.sqrt(pcov_5[ki,ki]),np.sqrt(pcov_6[ki,ki]),np.sqrt(pcov_7[ki,ki]),np.sqrt(pcov_8[ki,ki]),np.sqrt(pcov_9[ki,ki])], fmt='o',capsize=3,markersize=3)
+
+#%%
+"""
+AHORA VAMOS A MEDICIONES CON MAS DE UN ION!!!
+"""
+
+"""
+Ploteo la cpt de referencia / plotting the reference CPT
+
+1: 2 iones, -100 mV dcA
+2: 2 iones, -150 mV dcA
+3: 2 iones, -50 mV dcA
+4: 2 iones, 5 voltajes (el ion se va en la 4ta medicion y en la 5ta ni esta)
+5, 6 y 7: 3 iones en donde el scaneo esta centrado en distintos puntos
+
+"""
+
+jvec = [3] # desde la 1, pero la 4 no porque es un merge de curvitas
+
+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)
+    i = i + 1
+plt.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+#for dr in drs:
+#    plt.axvline(dr)
+    #plt.axvline(dr+drive)
+plt.legend()
+
+
+#%%
+"""
+Mergeo la 5, 6 y 7
+"""
+
+Freqs5 = [2*f*1e-6 for f in Freqs[5]]
+Freqs6 = [2*f*1e-6 for f in Freqs[6]]
+Freqs7 = [2*f*1e-6 for f in Freqs[7]]
+
+Counts5 = Counts[5]
+Counts6 = Counts[6]
+Counts7 = Counts[7]
+
+i_1_ini = 0
+i_1 = 36
+i_2_ini = 0
+i_2 = 24
+
+f_1 = 18
+f_2 = 30
+
+
+scale_1 = 0.92
+scale_2 = 0.98
+
+#Merged_freqs_test = [f-f_2 for f in Freqs6[i_2_ini:i_2]]+[f-f_1 for f in Freqs5[i_1_ini:i_1]]+Freqs7
+
+#plt.plot(Merged_freqs_test,'o')
+
+
+
+Merged_freqs = [f-f_2 for f in Freqs6[0:i_2]]+[f-f_1 for f in Freqs5[0:i_1]]+Freqs7
+Merged_counts = [scale_2*c for c in Counts6[0:i_2]]+[scale_1*c for c in Counts5[0:i_1]]+list(Counts7)
+
+Merged_freqs_rescaled = np.linspace(np.min(Merged_freqs),np.max(Merged_freqs),len(Merged_freqs))
+
+#drs = [391.5, 399.5, 405.5, 414]
+drs = [370,379,385,391.5]
+
+plt.figure()
+i = 0
+for j in jvec:
+    plt.plot([f-f_1 for f in Freqs5[0:i_1]], [scale_1*c for c in Counts5[0:i_1]],'o')
+    plt.plot([f-f_2 for f in Freqs6[0:i_2]], [scale_2*c for c in Counts6[0:i_2]],'o')
+    plt.plot(Freqs7, Counts7,'o')
+    plt.errorbar(Merged_freqs, Merged_counts, yerr=np.sqrt(Merged_counts), fmt='o', capsize=2, markersize=2)
+    
+    
+    i = i + 1
+plt.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+for dr in drs:
+    plt.axvline(dr)
+    plt.axvline(dr+drive, color='red', linestyle='dashed', alpha=0.3)
+    plt.axvline(dr-drive, color='red', linestyle='dashed', alpha=0.3)
+    
+plt.legend()
+
+#%%
+"""
+ajusto la mergeada de 3 iones
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = -20
+
+offsetxpi = 438+correccion
+DetDoppler = -35-correccion-22
+
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+FreqsDR = [f-offsetxpi for f in Merged_freqs]
+CountsDR = Merged_counts
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, SCALE3, OFFSET, BETA1, BETA2, BETA3):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    TEMP = 0.1e-3
+
+    
+    #BETA1, BETA2, BETA3 = 0, 0, 2
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    Detunings, Fluorescence3 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA3, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    
+    ScaledFluo1 = np.array([f*SCALE1 for f in Fluorescence1])
+    ScaledFluo2 = np.array([f*SCALE2 for f in Fluorescence2])
+    ScaledFluo3 = np.array([f*SCALE3 for f in Fluorescence3])
+    return ScaledFluo1+ScaledFluo2+ScaledFluo3+OFFSET
+    #return ScaledFluo1
+
+
+do_fit = True
+if do_fit:
+    popt_3ions, pcov_3ions = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.6, 6.2, 3.5e5, 3.5e5, 3.5e5, 2e3, 1, 1, 1], bounds=((0, 0, 0, 0, 0, 0, 0, 0, 0), (2, 20, 5e8, 5e8, 5e8, 7e3, 10, 10, 10)))
+#popt, pcov = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.8, 8, 4e4, 3.5e3, 0], bounds=((0, 0, 0, 0, 0), (2, 15, 1e5, 1e5, 10)))
+
+#array([7.12876797e-01, 7.92474752e+00, 4.29735308e+04, 1.74240582e+04,
+       #1.53401696e+03, 1.17073206e-06, 2.53804151e+00])
+
+
+FittedEITpi_3ions = FitEIT_MM(freqslong, *popt_3ions)
+#FittedEITpi_3ions = FitEIT_MM(freqslong, popt_3ions[0],popt_3ions[1],popt_3ions[2],popt_3ions[3],popt_3ions[4],popt_3ions[5],4,2,0)
+
+#FittedEITpi_3ions = FitEIT_MM(freqslong, *popt_3ions)
+
+
+print(popt_3ions)
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_3ions, color='darkgreen', linewidth=3)
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.title(f'Corr:{correccion},DetD:{DetDoppler}')
+plt.grid()
+
+
+
+
+
+#%%
+"""
+Veo la medicion de varios voltajes uno atras de otro
+Se va en medio de la medicion 4, y en la 5 ni esta
+"""
+
+jvec = [2] # desde la 1, pero la 4 no porque es un merge de curvitas
+
+Freqs
+
+plt.figure()
+i = 0
+for j in jvec:
+    plt.errorbar([2*f*1e-6 for f in Freqs[4]], CountsSplit_2ions[0][j], yerr=np.sqrt(CountsSplit_2ions[0][j]), fmt='o', capsize=2, markersize=2)
+    i = i + 1
+plt.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+#for dr in drs:
+#    plt.axvline(dr)
+    #plt.axvline(dr+drive)
+plt.legend()
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+AJUSTO LA CPT DE 2 IONES CON UN MODELO EN DONDE SUMO DOS ESPECTROS CON BETAS DISTINTOS
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 27
+
+offsetxpi = 421+correccion
+DetDoppler = -16-correccion+5
+
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[1]]
+CountsDR = Counts[1]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, OFFSET):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    TEMP = 0.1e-3
+    
+    BETA1, BETA2 = 3, 0
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    ScaledFluo2 = np.array([f*SCALE2 + OFFSET for f in Fluorescence2])
+    return ScaledFluo1+ScaledFluo2
+    #return ScaledFluo1
+
+
+do_fit = True
+if do_fit:
+    popt_2ions_1, pcov_2ions_1 = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.9, 6.2, 3.5e3, 2.9e3, 3e3], bounds=((0, 0, 0, 0, 0), (2, 20, 5e8, 5e8, 8e3)))
+#popt, pcov = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.8, 8, 4e4, 3.5e3, 0], bounds=((0, 0, 0, 0, 0), (2, 15, 1e5, 1e5, 10)))
+
+#array([7.12876797e-01, 7.92474752e+00, 4.29735308e+04, 1.74240582e+04,
+       #1.53401696e+03, 1.17073206e-06, 2.53804151e+00])
+
+FittedEITpi_2sp = FitEIT_MM(freqslong, *popt_2ions_1)
+#FittedEITpi = FitEIT_MM(freqslong, 0.8, 8, 4e4, 3.5e3, 0)
+
+# beta1_2ions = popt_2ions_1[5]
+# beta2_2ions = popt_2ions_1[6]
+
+# errbeta1_2ions = np.sqrt(pcov_2ions_1[5,5])
+# errbeta2_2ions = np.sqrt(pcov_2ions_1[6,6])
+
+"""
+Estos params dan bien poniendo beta2=0 y correccion=0 y son SG, SP, SCALE1, SCALE2, OFFSET, BETA1
+#array([9.03123248e-01, 6.25865542e+00, 3.47684055e+04, 2.92076804e+04, 1.34556420e+03, 3.55045904e+00])
+"""
+
+"""
+Ahora considerando ambos betas, con los parametros iniciales dados por los que se obtuvieron con beta2=0
+y correccion=0 dan estos parametros que son los de antes pero con BETA2 incluido:
+array([8.52685426e-01, 7.42939084e+00, 3.61998310e+04, 3.40160472e+04, 8.62651715e+02, 3.89756335e+00, 7.64867601e-01])
+"""
+
+#arreglito = np.array([8.52685426e-01, 7.42939084e+00, 3.61998310e+04, 3.40160472e+04, 8.62651715e+02, 3.89756335e+00, 7.64867601e-01])
+
+FittedEITpi_2ions_1 = FitEIT_MM(freqslong, *popt_2ions_1)
+
+
+print(popt_2ions_1)
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_2ions_1, color='darkgreen', linewidth=3)
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.title(f'Corr:{correccion},DetD:{DetDoppler}')
+plt.grid()
+
+
+#%%
+"""
+SUPER AJUSTE PARA MED DE 2 IONES
+"""
+
+
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+#DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+
+SelectedCurveVec = [3]
+
+popt_SA_vec_2ions = []
+pcov_SA_vec_2ions = []
+
+for selectedcurve in SelectedCurveVec: 
+
+    FreqsDR = Freqs[selectedcurve]
+    CountsDR = Counts[selectedcurve]
+    
+    freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+    
+    CircPr = 1
+    alpha = 0
+    
+    
+    def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, SCALE2, OFFSET, BETA1, BETA2, TEMP, plot=False):
+    #def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+        #BETA = 1.8
+        #SG = 0.6
+        #SP = 8.1
+        # TEMP = 0.2e-3
+    
+        freqs = [2*f*1e-6-offset for f in Freqs]
+      
+        Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+        Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    
+        ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+        ScaledFluo2 = np.array([f*SCALE2 for f in Fluorescence2])
+        if plot:
+            return ScaledFluo1+ScaledFluo2, Detunings
+        else:
+            return ScaledFluo1+ScaledFluo2
+        #return ScaledFluo1
+    
+    do_fit = True
+    if do_fit:
+        popt_3_SA_2ions, pcov_3_SA_2ions = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[448, -42, 0.6, 8.1, 4e4, 4e4, 6e3, 1, 1.2, 0.5e-3], bounds=((0, -100,0, 0, 0,0,0,0,0, 0), (1000, 0, 2, 20,5e6, 5e6,5e4, 10, 10,10e-3)))
+        
+        #popt_3_SA_2ions = [448, -42, 8e4, 6e3, 2, 0.5e-3]
+        
+        
+        popt_SA_vec_2ions.append(popt_3_SA_2ions)
+        pcov_SA_vec_2ions.append(pcov_3_SA_2ions)
+    
+        FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *popt_3_SA_2ions, plot=True)
+        freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+        FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *popt_3_SA_2ions, plot=True)
+    
+    
+    plt.figure()
+    plt.errorbar(Detunings_3_SA_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+    plt.plot(Detunings_3_SA_long, FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
+    #plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+    plt.xlabel('Detuning (MHz)')
+    plt.ylabel('Counts')
+    plt.legend(loc='upper left', fontsize=20)
+    plt.grid()
+    
+    print(f'listo med {selectedcurve}')
+    print(popt_3_SA_2ions)
+    #print(f'Detdop:{popt_3_SA[1]},popt_3_SA:{popt[0]}')
+
+
+#%%
+#from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels
+from scipy.optimize import curve_fit
+import time
+
+"""
+AJUSTO LA CPT DE 2 IONES CON UN MODELO EN DONDE SUMO DOS ESPECTROS CON BETAS DISTINTOS
+"""
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 27
+
+offsetxpi = 421+correccion
+DetDoppler = -16-correccion+5
+
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[1]]
+CountsDR = Counts[1]
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM(freqs, SG, SP, SCALE1, SCALE2, OFFSET):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    TEMP = 0.1e-3
+    
+    BETA1, BETA2 = 3, 0
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    Detunings, Fluorescence2 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA2, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    ScaledFluo2 = np.array([f*SCALE2 + OFFSET for f in Fluorescence2])
+    return ScaledFluo1+ScaledFluo2
+    #return ScaledFluo1
+
+
+do_fit = True
+if do_fit:
+    popt_2ions_1, pcov_2ions_1 = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.9, 6.2, 3.5e3, 2.9e3, 3e3], bounds=((0, 0, 0, 0, 0), (2, 20, 5e8, 5e8, 8e3)))
+#popt, pcov = curve_fit(FitEIT_MM, FreqsDR, CountsDR, p0=[0.8, 8, 4e4, 3.5e3, 0], bounds=((0, 0, 0, 0, 0), (2, 15, 1e5, 1e5, 10)))
+
+#array([7.12876797e-01, 7.92474752e+00, 4.29735308e+04, 1.74240582e+04,
+       #1.53401696e+03, 1.17073206e-06, 2.53804151e+00])
+
+FittedEITpi_2sp = FitEIT_MM(freqslong, *popt_2ions_1)
+#FittedEITpi = FitEIT_MM(freqslong, 0.8, 8, 4e4, 3.5e3, 0)
+
+# beta1_2ions = popt_2ions_1[5]
+# beta2_2ions = popt_2ions_1[6]
+
+# errbeta1_2ions = np.sqrt(pcov_2ions_1[5,5])
+# errbeta2_2ions = np.sqrt(pcov_2ions_1[6,6])
+
+"""
+Estos params dan bien poniendo beta2=0 y correccion=0 y son SG, SP, SCALE1, SCALE2, OFFSET, BETA1
+#array([9.03123248e-01, 6.25865542e+00, 3.47684055e+04, 2.92076804e+04, 1.34556420e+03, 3.55045904e+00])
+"""
+
+"""
+Ahora considerando ambos betas, con los parametros iniciales dados por los que se obtuvieron con beta2=0
+y correccion=0 dan estos parametros que son los de antes pero con BETA2 incluido:
+array([8.52685426e-01, 7.42939084e+00, 3.61998310e+04, 3.40160472e+04, 8.62651715e+02, 3.89756335e+00, 7.64867601e-01])
+"""
+
+#arreglito = np.array([8.52685426e-01, 7.42939084e+00, 3.61998310e+04, 3.40160472e+04, 8.62651715e+02, 3.89756335e+00, 7.64867601e-01])
+
+FittedEITpi_2ions_1 = FitEIT_MM(freqslong, *popt_2ions_1)
+
+
+print(popt_2ions_1)
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_2ions_1, color='darkgreen', linewidth=3)
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.title(f'Corr:{correccion},DetD:{DetDoppler}')
+plt.grid()
+
+
+
+
+
+
+
+
+
diff --git a/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218.py b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218.py
new file mode 100644
index 0000000000000000000000000000000000000000..92e7cf7e9819be8dac8a89a56ab4a536192daee9
--- /dev/null
+++ b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218.py
@@ -0,0 +1,202 @@
+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
+
+"""
+CPT con tres laseres pero lso dos IR son el mismo entonces las DD son mas finas
+"""
+
+#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211223_CPT_DosLaseres_v07_ChristmasSpecial\Data
+
+ALL_FILES = """000016420-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']['IR1_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']))
+
+
+
+#%%
+
+#Barriendo angulo del IR con tisa apagado
+
+jvec = [0]
+
+jselected = jvec
+
+plt.figure()
+i = 0
+for j in jvec:
+    if j in jselected:
+        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.xlabel('Frecuencia (MHz)')
+plt.ylabel('counts')
+plt.grid()
+plt.legend()
+
+#%%
+from scipy.optimize import curve_fit
+import time
+
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  90
+phiprobe = 0
+titaprobe = 0.1
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
+
+
+drivefreq = 2*np.pi*22.135*1e6
+noiseamplitude = 0
+
+selectedcurve=0
+
+FreqsDR = Freqs[selectedcurve]
+CountsDR = Counts[selectedcurve]
+   
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+CircPr = 1
+alpha = 0
+
+def FitEIT_MM_1ion(Freqs, offset, DetDoppler, DetRepump, SG, SP, SR, SCALE1, OFFSET, TEMP, U, plot=False):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    # BETA1 = 0
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    # U = 32.5e6
+    freqs = [2*f*1e-6-offset for f in Freqs]
+  
+    #Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+    Detunings, Fluorescence1 = GenerateNoisyCPT_fit(SG, SR, SP, gPS, gPD, DetDoppler, DetRepump, U, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, TEMP,  alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqs, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    if plot:
+        return ScaledFluo1, Detunings
+    else:
+        return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = True
+if do_fit:
+    popt_1, pcov_1 = curve_fit(FitEIT_MM_1ion, FreqsDR, CountsDR, p0=[430, -25, 12, 0.9, 6.2, 3, 3e4, 2e3, 0.5e-3, 32e6], bounds=((0, -100, -20, 0, 0, 0, 0, 0, 0,20e6), (1000, 0, 50, 2, 20, 20, 5e6, 5e4, 15e-3,40e6)))
+
+    FittedEITpi_1_short, Detunings_1_short = FitEIT_MM_1ion(FreqsDR, *popt_1, plot=True)
+    freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+    FittedEITpi_1_long, Detunings_1_long = FitEIT_MM_1ion(freqslong, *popt_1, plot=True)
+
+#%%
+
+plt.figure()
+plt.errorbar(Detunings_1_short, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='red', alpha=0.5, capsize=2, markersize=2)
+plt.plot(Detunings_1_long, FittedEITpi_1_long, color='darkolivegreen', linewidth=3, label='med 1')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+#plt.xlim(-20,0)
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
+#%%
+u = 32.5e6
+
+B = (u/(2*np.pi))/c
+
+correccion = 8 #con 8 fitea bien
+
+offsetxpi = 440+1+correccion
+DetDoppler = -5.0-correccion
+
+FreqsDRpi_3 = [2*f*1e-6-offsetxpi+14 for f in Freqs_B[5]]
+CountsDRpi_3 = Counts_B[5]
+
+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):
+    temp = 2e-3
+    MeasuredFreq, MeasuredFluo = GenerateNoisyCPT_fit(SG, sr, SP, gPS, gPD, DetDoppler, DetRepump, u, DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth, temp, alpha, phidoppler, titadoppler, phiprobe, [titaprobe], phirepump, titarepump, freqs, plot=False, solvemode=1, detpvec=None, noiseamplitude=noiseamplitude)
+    FinalFluo = [f*6.554e4 + 1.863e3 for f in MeasuredFluo]
+    return FinalFluo
+
+popt_tisaoff, pcov_tisaoff = curve_fit(FitEITpi, FreqsDRpi_3, CountsDRpi_3, p0=[0.5, 4.5], bounds=((0, 0), (2, 10)))
+
+print(popt_tisaoff)
+
+Sat_3 = popt_tisaoff[0]
+Det_3 = popt_tisaoff[1]
+
+FittedEITpi_3 = FitEITpi(freqslongpi_3, *popt_tisaoff)
+
+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')
+
+FreqsCalibradas_B = FreqsDRpi_3
+
+
+
+
+
+
+
+
+
+
diff --git a/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218_muri.py b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218_muri.py
index 539c6c4064ea7db31315e150007ec807d82f55f3..3378b220b826ebda10c6e8d1adc426aee331da0f 100644
--- a/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218_muri.py
+++ b/analisis/plots/20231218_CPT_muri/CPT_plotter_20231218_muri.py
@@ -14,7 +14,7 @@ Primero tengo mediciones de espectros cpt de un ion variando la tension dc_A
 
 #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/20231123_CPTconmicromocion3/Data/')
+os.chdir('/home/muri/nubeDF/Documents/codigos/artiq_experiments/analisis/plots/20231218_CPT_muri/Data')
 
 CPT_FILES = """000016262-IR_Scan_withcal_optimized
 000016239-IR_Scan_withcal_optimized
@@ -111,7 +111,84 @@ plt.grid()
 plt.legend()
 
 
+#%%
+from EITfit.MM_eightLevel_2repumps_AnalysisFunctions import PerformExperiment_8levels_MM
+
+phidoppler, titadoppler = 0, 90
+phirepump, titarepump = 0,  0
+phiprobe = 0
+titaprobe = 90
+
+Temp = 0.5e-3
+
+sg = 0.544
+sp = 4.5
+sr = 0
+DetRepump = 0
+
+
+lw = 0.1
+DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
+
+
+u = 32.5e6
+
+#B = (u/(2*np.pi))/c
+
+correccion = 13
+
+offsetxpi = 419+correccion
+DetDoppler = -11.5-correccion
+
+gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6 
+alpha = 0
 
 
+drivefreq = 2*np.pi*22.135*1e6
 
 
+selectedcurve = 4
+
+FreqsDR = [2*f*1e-6-offsetxpi for f in Freqs[0]]
+CountsDR = CountsSplit[0][selectedcurve]
+CountsDR[100]=0.5*(CountsDR[99]+CountsDR[101])
+CountsDR[105]=0.5*(CountsDR[104]+CountsDR[106])
+
+freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
+
+CircPr = 1
+alpha = 0
+
+
+def FitEIT_MM_single(freqs, SG, SP, SCALE1, OFFSET, BETA1, TEMP):
+#def FitEIT_MM(freqs, SG, SP, SCALE1, OFFSET, BETA1):
+    #BETA = 1.8
+    # SG = 0.6
+    # SP = 8.1
+    # TEMP = 0.2e-3
+    
+    Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, u, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe,  BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
+
+    ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
+    return ScaledFluo1
+    #return ScaledFluo1
+
+do_fit = True
+if do_fit:
+    popt_1, pcov_1 = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[0.9, 6.2, 3e4, 1.34e3, 0, 1e-3], bounds=((0, 0, 0, 0, 0, 0), (2, 20, 7e4, 5e4, 0.000001, 15e-3)))
+    FittedEITpi_1 = FitEIT_MM_single(freqslong, *popt_1)
+
+beta1 = popt_1[4]
+errorbeta1 = np.sqrt(pcov_1[4,4])
+temp1 = popt_1[5]
+errortemp1 = np.sqrt(pcov_1[5,5])
+
+plt.figure()
+plt.errorbar(FreqsDR, CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
+plt.plot(freqslong, FittedEITpi_1, color='darkolivegreen', linewidth=3, label='med 1')
+#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
+plt.xlabel('Detuning (MHz)')
+plt.ylabel('Counts')
+plt.legend(loc='upper left', fontsize=20)
+plt.grid()
+
diff --git a/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py b/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
index bffaeeaaa99fc7f9a1b0d2d07ac1fd3bb7e7c74b..1a6c29dd7e6a5612d2bb3746f07fac8947def88b 100644
--- a/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
+++ b/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_AnalysisFunctions.py
@@ -15,7 +15,7 @@ import numpy as np
 import time
 import matplotlib.pyplot as plt
 from scipy.signal import argrelextrema
-#from EITfit.MM_eightLevel_2repumps_python_scripts import CPTspectrum8levels_MM
+from EITfit.MM_eightLevel_2repumps_python_scripts import CPTspectrum8levels_MM
 import random
 from scipy.signal import savgol_filter as sf
 
diff --git a/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py b/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
index 61bc4d75b68facd5d98d78990e09fdca019d8be2..d9204478484e04086fb64ff48802fb4356cc2dbb 100644
--- a/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
+++ b/analisis/plots/20231218_CPT_muri/Data/EITfit/MM_eightLevel_2repumps_python_scripts.py
@@ -233,7 +233,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/(mcalcio))
 
     return gammaD
     
@@ -249,8 +249,14 @@ 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)    
+    kg = 1/397
+    kp = 1/866
+    
+    fg = kg**2/(kg**2+kp**2)
+    fp = kp**2/(kg**2+kp**2)
+    
+    lwg = np.sqrt(lwg**2 + (fg*db)**2)
+    lwp = np.sqrt(lwp**2 + (fp*db)**2)    
     
     CC = EffectiveL(gPS, gPD, lwg, lwp)