forninlist(range(nmax+1))[(nmax+1)::-1][0:len(list(range(nmax+1))[(nmax+1)::-1])-1]:#jaja esto solo es para que vaya de nmax a 1 bajando. debe haber algo mas facil pero kcio
if(r<2andk>3)or(k<2andr>3)or(r>3andk>3)or(r==0andk==1)or(r==1andk==0)or(r==2andk==3)or(r==3andk==2):#todo esto sale de analizar explicitamente la matriz y tratar de no calcular cosas de más que dan cero
forninlist(range(nmax+1))[(nmax+1)::-1][0:len(list(range(nmax+1))[(nmax+1)::-1])-1]:#jaja esto solo es para que vaya de nmax a 1 bajando. debe haber algo mas facil pero kcio
if(r<2andk>3)or(k<2andr>3)or(r>3andk>3)or(r==0andk==1)or(r==1andk==0)or(r==2andk==3)or(r==3andk==2):#todo esto sale de analizar explicitamente la matriz y tratar de no calcular cosas de más que dan cero
Toma los indices donde estan las DR y evalua su fluorescencia. Esos indices son minimos locales en un entorno
cercano a las DR teoricas y, si no hay ningun minimo, toma la teorica.
Luego, hace el cociente de esa fluorescencia y un factor de normalización segun NormalizationCriterium:
1: Devuelve la fluorescencia absoluta de los minimos
2: Devuelve el cociente entre la fluorescencia del minimo y un valor medio entre dos puntos lejanos, como si no
hubiera una resonancia oscura y hubiera una recta. Ese valor esta a DistanciaFrecuenciaCociente del detuning del azul (el punto medio entre las dos DR en este caso)
3: Devuelve el cociente entre la fluorescencia del minimo y el valor a -100 MHz (si se hizo de -100 a 100),
o el valor limite por izquierda de la curva
4: Deuelve el cociente entre la fluorescencia del minimo y el valor de fluorescencia a detuning 0 MHz
Esta funcion devuelve valores de frecuencias y fluorescencia relativa de los minimos.
Minimumcriterion:
1: Saca los minimos con funcion argelextrema
2: Directamente con las frecuencias teoricas busca las fluorescencias
Normalizationcriterium:
1: Devuelve la fluorescencia absoluta de los minimos
2: Devuelve el cociente entre la fluorescencia del minimo y un valor medio entre dos puntos lejanos, como si no
hubiera una resonancia oscura y hubiera una recta. Ese valor esta a DistanciaFrecuenciaCociente del detuning del azul (el punto medio entre las dos DR en este caso)
3: Devuelve el cociente entre la fluorescencia del minimo y el valor a -100 MHz (si se hizo de -100 a 100),
forninlist(range(nmax+1))[(nmax+1)::-1][0:len(list(range(nmax+1))[(nmax+1)::-1])-1]:#jaja esto solo es para que vaya de nmax a 1 bajando. debe haber algo mas facil pero kcio
Toma los indices donde estan las DR y evalua su fluorescencia. Esos indices son minimos locales en un entorno
cercano a las DR teoricas y, si no hay ningun minimo, toma la teorica.
Luego, hace el cociente de esa fluorescencia y un factor de normalización segun NormalizationCriterium:
1: Devuelve la fluorescencia absoluta de los minimos
2: Devuelve el cociente entre la fluorescencia del minimo y un valor medio entre dos puntos lejanos, como si no
hubiera una resonancia oscura y hubiera una recta. Ese valor esta a DistanciaFrecuenciaCociente del detuning del azul (el punto medio entre las dos DR en este caso)
3: Devuelve el cociente entre la fluorescencia del minimo y el valor a -100 MHz (si se hizo de -100 a 100),
o el valor limite por izquierda de la curva
4: Deuelve el cociente entre la fluorescencia del minimo y el valor de fluorescencia a detuning 0 MHz
Esta funcion devuelve valores de frecuencias y fluorescencia relativa de los minimos.
Minimumcriterion:
1: Saca los minimos con funcion argelextrema
2: Directamente con las frecuencias teoricas busca las fluorescencias
Normalizationcriterium:
1: Devuelve la fluorescencia absoluta de los minimos
2: Devuelve el cociente entre la fluorescencia del minimo y un valor medio entre dos puntos lejanos, como si no
hubiera una resonancia oscura y hubiera una recta. Ese valor esta a DistanciaFrecuenciaCociente del detuning del azul (el punto medio entre las dos DR en este caso)
3: Devuelve el cociente entre la fluorescencia del minimo y el valor a -100 MHz (si se hizo de -100 a 100),
forninlist(range(nmax+1))[(nmax+1)::-1][0:len(list(range(nmax+1))[(nmax+1)::-1])-1]:#jaja esto solo es para que vaya de nmax a 1 bajando. debe haber algo mas facil pero kcio
if(r<2andk>3)or(k<2andr>3)or(r>3andk>3)or(r==0andk==1)or(r==1andk==0)or(r==2andk==3)or(r==3andk==2):#todo esto sale de analizar explicitamente la matriz y tratar de no calcular cosas de más que dan cero
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
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
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
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
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
#popt_rho22_balance, pcov_rho22_balance = curve_fit(FinalTemp,list(Betas_vec[:9]), [t for t in Temp_vec[:9]],p0=(-11e6,0.8,4e-28)) #esto ajusta muy bien
#popt_rho22_balance, pcov_rho22_balance = curve_fit(FinalTemp,list(Betas_vec[:10]), [t for t in Temp_vec[:10]],sigma=ErrorTemp_vec[:10],absolute_sigma=False,p0=(-10e6,0.8,5e-20)) #esto ajusta muy bien
#Buen ajuste final:
popt_rho22_balance,pcov_rho22_balance=curve_fit(FinalTemp_withoutC,list(Betas_vec[:10]),[tfortinTemp_vec[:10]],sigma=ErrorTemp_vec[:10],absolute_sigma=False,p0=(-10e6,5e-20))#esto ajusta muy bien
popt_rho22_balance_noMM,pcov_rho22_balance_noMM=curve_fit(FinalTemp_withoutmicromotion,list(Betas_vec[:10]),[tfortinTemp_vec[:10]],sigma=ErrorTemp_vec[:10],absolute_sigma=False,p0=(-10e6))#esto ajusta muy bien
popt_rho22_balance,pcov_rho22_balance=curve_fit(FinalTemp_withoutC,list(Betas_vec[:10]),[tfortinTemp_vec[:10]],sigma=ErrorTemp_vec[:10],absolute_sigma=False,p0=(-10e6,5e-20))#esto ajusta muy bien
popt_rho22_balance_noMM,pcov_rho22_balance_noMM=curve_fit(FinalTemp_withoutmicromotion,list(Betas_vec[:10]),[tfortinTemp_vec[:10]],sigma=ErrorTemp_vec[:10],absolute_sigma=False,p0=(-10e6))#esto ajusta muy bien