Skip to content
Snippets Groups Projects
Commit e65a8a45 authored by Rafael Andrei Vinasco Soler's avatar Rafael Andrei Vinasco Soler
Browse files

añadir funcion construccion histograma de carga

parent 5d7b5066
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
### Practica Detección de Luz
%% Cell type:code id: tags:
``` python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import io
%matplotlib inline
```
%% Cell type:markdown id: tags:
## Calibración del setup con el arreglo de SiPM: Voltaje Umbral ("triggering") y de Polarización
%% Cell type:markdown id: tags:
Voltaje Umbral (Alimentación o "HV" = 1 kV):
Tenemos el fichero "calibration_data_trigger-1kv.txt", con varios niveles de trigger [mV] y las cuentas por minuto [cpm], correspondientes a esta configuración del banco de prueba.
Voltaje de Polarización:
Tenemos el fichero "calibration_data_hv.txt", donde se ha variado el HV [V] y se registran las cuentas por minuto [cpm], correspondientes a esta configuración del banco de prueba.
¿Que se solicita (tu labor a realizar como entregable) en esta Parte I?
Graficar y encontrar la zona de plateau (meseta), como región óptima de operación del arreglo de sensores.
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos500=0
archivo = open('Data/WCD_calibration_500V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos500+=1
contador_evento = 1
print(eventos500)
```
%% Cell type:code id: tags:
``` python
a=[]
contador_evento=0
eventos550=0
archivo = open('Data/WCD_calibration_550V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos550+=1
contador_evento = 1
print(eventos550)
```
%% Cell type:code id: tags:
``` python
a=[]
contador_evento=0
eventos560=0
eventos570=0
eventos580=0
eventos590=0
eventos610=0
eventos620=0
eventos630=0
eventos640=0
archivo = open('Data/WCD_calibration_560V_nogps_2021_04_14_23h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos560+=1
contador_evento = 1
#print(eventos560)
archivo1 = open('Data/WCD_calibration_560V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo1:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos560+=1
contador_evento = 1
print(eventos560)
archivo2 = open('Data/WCD_calibration_570V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo2:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos570+=1
contador_evento = 1
print(eventos570)
archivo3 = open('Data/WCD_calibration_580V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo3:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos580+=1
contador_evento = 1
print(eventos580)
archivo4 = open('Data/WCD_calibration_590V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo4:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos590+=1
contador_evento = 1
print(eventos590)
archivo5 = open('Data/WCD_calibration_610V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo5:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos610+=1
contador_evento = 1
print(eventos610)
archivo6 = open('Data/WCD_calibration_620V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo6:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos620+=1
contador_evento = 1
print(eventos620)
archivo7 = open('Data/WCD_calibration_630V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo7:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos630+=1
contador_evento = 1
print(eventos630)
archivo8 = open('Data/WCD_calibration_640V_nogps_2021_04_15_00h00.dat', 'r')
for linea in archivo8:
if linea[0] == '#' :
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos640+=1
contador_evento = 1
print(eventos640)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos600=0
archivo = open('Data/WCD_calibration_600V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos600+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos600)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos650=0
archivo = open('Data/WCD_calibration_650V_nogps_2021_04_14_19h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos650+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos650)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos700=0
archivo = open('Data/WCD_calibration_700V_nogps_2021_04_14_19h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos700+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos700)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos750=0
archivo = open('Data/WCD_calibration_750V_nogps_2021_04_14_19h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos750+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos750)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos800=0
archivo = open('Data/WCD_calibration_800V_nogps_2021_04_14_19h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos800+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos800)
archivo1 = open('Data/WCD_calibration_800V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo1:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos800+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos800)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos850=0
archivo = open('Data/WCD_calibration_850V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos850+=1
contador_evento = 1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
channel1.append(int("".join(a)))
a.clear()
#a=[]
continue
if j=="\n":
channel3.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
a.append(j)
#print(linea)
print(eventos850)
```
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
a=[]
contador_evento=0
eventos900=0
archivo = open('Data/WCD_calibration_900V_nogps_2021_04_14_20h00.dat', 'r')
for linea in archivo:
if linea[0] == '#' :
#i+=1
contador_evento = 0
continue
for j in linea:
if contador_evento==0:
eventos900+=1
contador_evento = 1
#if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
#channel1.append(int("".join(a)))
#a.clear()
#a=[]
#continue
#if j=="\n":
#channel3.append(int("".join(a)))
#print(int("".join(a)))
#a.clear()
#a.append(j)
#print(linea)
print(eventos900)
```
%% Cell type:code id: tags:
``` python
eventosy=[eventos500*(5./4.97),eventos550*(5./5.13),eventos600*(5./6.86),eventos650*(5./4.97),eventos700,eventos750,eventos800,eventos850,eventos900]
Voltaje=[500,550,600,650,700,750,800,850,900]
plt.figure(figsize =(20,6))
#plt.plot(CPM_Trig , Trig, 'ob', fillstyle = 'none')
plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("Eventos", fontsize=15)
plt.title(" Zona de plateau ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( Voltaje,eventosy , 'ro-')
plt.yscale(u'log')
plt.grid()
plt.show()
```
%% Cell type:code id: tags:
``` python
eventosy=[eventos500*(5./4.97),eventos550*(5./5.13),eventos600*(5./6.86),eventos650*(5./4.97),eventos700,eventos750]
Voltaje=[500,550,600,650,700,750]
plt.figure(figsize =(20,6))
plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("Eventos", fontsize=15)
plt.title(" Zona de plateau ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( Voltaje,eventosy , 'ro-')
plt.grid()
plt.show()
```
%% Cell type:code id: tags:
``` python
log_eventosy = np.log10(eventosy)
```
%% Cell type:code id: tags:
``` python
log_eventosy
```
%% Cell type:code id: tags:
``` python
dev_log_eventosy = []
for i in range(1,len(log_eventosy),1):
dev_log_eventosy.append( (log_eventosy[i]-log_eventosy[i-1])/50 )
print(log_eventosy[i]-log_eventosy[i-1])
```
%% Cell type:code id: tags:
``` python
dev_log_eventosy
```
%% Cell type:code id: tags:
``` python
Voltaje1 =[525,575,625,675,725]
plt.figure(figsize =(20,6))
plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("$derivada eventos", fontsize=15)
plt.title(" Zona de plateau ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( Voltaje1,dev_log_eventosy , 'ro-')
plt.grid()
plt.show()
```
%% Cell type:markdown id: tags:
# NUEVOS DATOS
%% Cell type:code id: tags:
``` python
eventos500fix = eventos500*(1/4.97)
eventos550fix = eventos550*(1/5.13)
eventos560fix = eventos560*(1/6.23)
eventos570fix = eventos570*(1/6.93)
eventos580fix = eventos580*(1/5.4)
eventos590fix = eventos590*(1/6.63)
eventos600fix = eventos600*(1/6.86)
eventos610fix = eventos610*(1/6.33)
eventos620fix = eventos620*(1/5.2)
eventos630fix = eventos630*(1/5.15)
eventos640fix = eventos640*(1/5.75)
eventos650fix = eventos650*(1/4.97)
eventos700fix = eventos700*(1/5)
eventos750fix = eventos750*(1/5)
eventosy=[eventos500fix,eventos550fix,eventos560fix,eventos570fix,eventos580fix,eventos590fix,eventos600fix,eventos610fix,eventos620fix,eventos630fix,eventos640fix,eventos650fix,eventos700fix,eventos750fix,eventos800]
Voltaje=[500,550,560,570,580,590,600,610,620,630,640,650,700,750,800]
plt.figure(figsize =(20,6))
#plt.plot(CPM_Trig , Trig, 'ob', fillstyle = 'none')
plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("Eventos", fontsize=15)
plt.title(" Zona de plateau ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( Voltaje,eventosy , 'ro-')
plt.yscale(u'log')
plt.grid()
plt.show()
```
%% Cell type:code id: tags:
``` python
log_eventosy = np.log10(eventosy)
diff_Voltaje = []
for i in range (1,len(Voltaje),1):
diff_Voltaje.append( Voltaje[i]-Voltaje[i-1] )
diff_Voltaje
```
%% Cell type:code id: tags:
``` python
dev_log_eventosy = []
for i in range(1,len(log_eventosy),1):
dev_log_eventosy.append( (log_eventosy[i]-log_eventosy[i-1])/diff_Voltaje[i-1] )
print(log_eventosy[i]-log_eventosy[i-1])
```
%% Cell type:code id: tags:
``` python
Voltaje_prom = []
for i in range(0,len(log_eventosy)-1,1):
Voltaje_prom.append( Voltaje[i] + diff_Voltaje[i]/2 )
plt.figure(figsize =(20,6))
plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("$derivada eventos", fontsize=15)
plt.title(" Zona de plateau ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( Voltaje_prom,dev_log_eventosy , 'ro-')
plt.grid()
plt.show()
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
# Puebas una hora
%% Cell type:code id: tags:
``` python
i=0
channel1=[]
channel2=[]
channel3=[]
channel3_aux=[]
a=[]
contador_evento=0
eventos560=0
number_bines=0
archivo = open('Data/energy_cal_575V_nogps_2021_04_15_13h00.dat', 'r')
for linea in archivo:
number_bines += 1
if linea[0] == '#' :
channel3_aux=[]
number_bines=0
contador_evento=0
i+=1
continue
for j in linea:
a.append(j)
if contador_evento==0:
eventos560+=1
#print("...")
contador_evento=1
if j==" ":
#print( int("".join(a)) )
#contador para determinar si poner canal 1 o 2
#channel1.append(int("".join(a)))
a.clear()
a=[]
continue
if j=="\n":
channel3_aux.append(int("".join(a)))
#print(int("".join(a)))
a.clear()
if number_bines==12:
for h in channel3_aux:
channel3.append(h)
#print(linea)
```
%% Cell type:code id: tags:
``` python
def suma_bines(array):
suma_parcial=0
array_out=[]
for i in range(0,len(array),1):
suma_parcial+=array[i]
if (i+1)%12==0 and i!=0:
array_out.append(suma_parcial)
suma_parcial=0
#print("el ultimo que suma es:", array[i] )
return array_out
```
%% Cell type:code id: tags:
``` python
def make_histogram(array,bins,minn,maxx):
intervalo = maxx - minn
array_out = np.zeros(bins)
for i in array:
a = ((i-minn)/maxx)*bins
if a>=0 and a<bins:
#array_out_append(a)
array_out[int(a)] += 1
return array_out
```
%% Cell type:code id: tags:
``` python
hh=suma_bines(channel3)
min_hist = 550.
max_hist = 650.
bin_hist = 100
hist_Xlabel=[]
hist=make_histogram(hh,bin_hist,min_hist,max_hist)
for i in range (0,bin_hist,1):
f = min_hist + ((max_hist - min_hist)*i)/bin_hist
hist_Xlabel.append(f)
```
%% Cell type:code id: tags:
``` python
plt.figure(figsize =(20,6))
#plt.xlabel("V$_{Trigger}$ [V]", fontsize=15)
plt.ylabel("Numero Eventos", fontsize=15)
plt.title(" Histograma ",fontdict={'family': 'serif', 'color' : 'darkblue','size': 25})
plt.plot( hist_Xlabel,hist , 'ro-')
plt.grid()
plt.show()
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment