Commit 324d41fb authored by Rafael Peretti Pezzi's avatar Rafael Peretti Pezzi

Espectros colocados nas posições corretas na comparação Gaussiana/Bessel

parent 2b2fb6b6
#-*- coding: utf-8 -*-
# Teste para a perda de energia baseada na função modificada de Bessel do primeiro tipo de ordem 1.
# Apresenta os graficos para a perda de energia para algumas espessuras na geometria definida,
# Apresenta os graficos para a perda de energia para algumas espessuras na geometria do experimento
# comparadas com as correspondentes perdas de energias Gaussianas nas mesmas espessuras.
# Referencia: R. P. Pezzi, et al. Applied Physics Letters, 92 164102 (2008)
# Referência: R. P. Pezzi, et al. Applied Physics Letters, 92 164102 (2008)
from pylab import *
from scipy.special import i1
......@@ -10,7 +10,7 @@ PI=math.pi
E0=100000 #eV
deltaE=25000
passo=20
passo=30
dedx=192. # eV/nm
dw2dx=20740. # eV^2/nm
......@@ -24,9 +24,9 @@ k = ((sqrt (mt**2+mi**2*(sin(Theta_s)**2)) + mi*cos(Theta_s) ) / (mi+mt) )**2
dedxef=dedx*(k/cos(Theta_in*PI/180.) + 1/cos(Theta_out*PI/180.))
dw2dxef=dw2dx*(k**2./cos(Theta_in*PI/180.)+1./cos(Theta_out*PI/180.))
e = arange(0,deltaE, passo)
e = arange(E0-deltaE, E0, passo)
for x in [.1,1,5,10,15,20,25]:
for x in arange(0,30,1):
# Bessel:
# Ainda falta incluir a delta de Dirac na origem e a convolução com a resolução experimental
......@@ -34,25 +34,18 @@ for x in [.1,1,5,10,15,20,25]:
# da precisão numérica. Uma possível solução pode ser trabalhar em outras unidades que não
# resultem em argumentos tão grandes para a função exponencial.
# Perceba que o cálculo de Bessel correspondente à camada mais funda está trucado.
# Perceba que os cálculos de Bessel correspondentes às camadas mais fundas estão truncados.
alpha=dedxef*(2./dw2dxef)
m=alpha*dedxef
lbd=m*x*alpha
bessel = lbd*exp(-m*x-alpha*e)*i1(2.*sqrt(lbd*e))/(sqrt(lbd*e))
plt.plot(e+k*E0-deltaE, bessel[::-1])
# [::-1] inverte a ordem dos elementos da matriz. Este é um problema que não
# existe na perda de energia Gaussiana pela sua simetria.
# +k*E0-deltaE ajusta o vetor energia para a posição correta de kE0 na
# superficie, levando em conta a inversão dos elementos da matriz bessel.
# Este artifício vai dificultar a soma dos espectros de cada elemento.
bessel = lbd*exp(-m*x-alpha*(k*E0-e))*i1(2.*sqrt(lbd*(k*E0-e)))/(sqrt(lbd*(k*E0-e)))
plt.plot(e, bessel)
# Gaussiana:
Em=x*dedxef
Em=k*E0-x*dedxef
sigma=x*dw2dxef
gaussian = exp((-(e-Em)**2)/(2.*sigma))/sqrt(2.*PI*sigma)
plt.plot(e+k*E0-deltaE,gaussian[::-1])
plt.plot(e,gaussian)
show()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment