Compare commits

...

2 commits

120
testimpulse.py Normal file
View file

@ -0,0 +1,120 @@
import numpy as np
from matplotlib import pyplot as plt
import scipy
plt.rcParams["figure.figsize"] = (15,8)
plt.rcParams['xtick.labelsize'] = 15
plt.rcParams['ytick.labelsize'] = 15
plt.rcParams['axes.labelsize'] = 20
plt.rcParams['axes.titlesize']=25
plt.rcParams['legend.fontsize']=20
plt.rcParams['savefig.bbox']='tight'
def gauss(x, *p):
A, mu, sigma = p
return A*np.exp(-(x-mu)**2/(2.*sigma**2))
def fwhm(a):
p,cov=scipy.optimize.curve_fit(gauss,xdata=np.arange(len(a)),ydata=a,p0=[150,3880,20])
#plt.plot(gauss(np.arange(len(a)),*p))
return abs(2*np.sqrt(2*np.log(2))*p[2])
'''
def fwhm(a):
h=max(a)/2
u=False
k=0
for i in a:
if not u:
if i<=h:
k+=1
continue
else:
u=k
k+=1
else:
if i>=h:
k+=1
continue
else:
o=k
break
return o-u
'''
c0=np.loadtxt('data/c0.TKA')
c20=np.loadtxt('data/c20.TKA')
c95=np.loadtxt('data/c95.TKA')
c245=np.loadtxt('data/c245.TKA')
c320=np.loadtxt('data/c320.TKA')
c1020=np.loadtxt('data/c1020.TKA')
c1770=np.loadtxt('data/c1770.TKA')
cv0=np.loadtxt('data/cv0.TKA')
cv1=np.loadtxt('data/cv1.TKA')
cv2=np.loadtxt('data/cv2.TKA')
cv3=np.loadtxt('data/cv3.TKA')
cv4=np.loadtxt('data/cv4.TKA')
cv5=np.loadtxt('data/cv5.TKA')
cv10=np.loadtxt('data/cv10.TKA')
cv40=np.loadtxt('data/cv40.TKA')
halbC=[]
for c in [c0,c20,c95,c245,c320,c1020,c1770]:
halbC.append(fwhm(c))
#plt.plot(c,'b')
#plt.show()
halbV=[]
for v in [cv0,cv1,cv2,cv3,cv4,cv5,cv10,cv40]:
halbV.append(fwhm(v))
#plt.plot(v,'r')
#plt.show()
halbC=np.array(halbC)
halbV=np.array(halbV)
fig,axs=plt.subplots()
axs.plot(halbC,[0,20,95,245,320,1020,1770],'b',label='Detektor mit verschiedenen Spannungen')
axs.plot(halbC,[0,20,95,245,320,1020,1770],'r',label='Kapazitive Lasten')
axs.legend(loc=1)
axs2=axs.twinx()
axs2.plot(halbV,[0,1,2,3,4,5,10,40],'b')
axs2.set_ylabel('In Sperrichtung angelegte Spannung [V]')
axs.set_ylabel('Kapazitive Last [pF]')
axs.set_xlabel('Halbwertsbreite [bins]')
axs.axvline(halbV[-1],c='black',linestyle='--')
axs.axhline(277.35,xmax=0.313,c='black',linestyle='--')
plt.show()
lin10=np.loadtxt('data/linear10.TKA')
lin15=np.loadtxt('data/linear15.TKA')
lin20=np.loadtxt('data/linear20.TKA')
lin25=np.loadtxt('data/linear25.TKA')
lin30=np.loadtxt('data/linear30.TKA')
lin35=np.loadtxt('data/linear35.TKA')
lin40=np.loadtxt('data/linear40.TKA')
lin45=np.loadtxt('data/linear45.TKA')
lin50=np.loadtxt('data/linear50.TKA')
lin55=np.loadtxt('data/linear55.TKA')
linmax=[]
for l in [lin10,lin15,lin20,lin25,lin30,lin35,lin40,lin45,lin50,lin55]:
plt.plot(l)
linmax.append(np.argmax(l))
plt.show()
def lin(x,a,b):
return a*x+b
linmax=np.array(linmax)
A=np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,5.5])
p,cov=scipy.optimize.curve_fit(lin,A,linmax)
plt.scatter(A,linmax,c='r')
plt.plot(A,lin(A,p[0],p[1]),label=r'Fit pixel(E)=678$\frac{1}{MeV}\cdot$E[MeV]+163',c='b')
plt.legend()
plt.show()
print(p,cov)