Skip to content
Snippets Groups Projects
Commit 9c7c01bf authored by Christian Sarmiento's avatar Christian Sarmiento
Browse files

script con celdas basicas para hacer el analisis

parent dd4daaf1
No related branches found
No related tags found
1 merge request!1Script de las graficas de los espectros de Cs, Co y Na.
%% Cell type:code id:1e9e0f71 tags:
``` python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
%matplotlib inline
```
%% Cell type:code id:054e11a4 tags:
``` python
plt.rc('axes', labelsize=20)
plt.rc('xtick', labelsize=20)
plt.rc('ytick', labelsize=20)
```
%% Cell type:markdown id:235c5c85 tags:
### Lectura de los datos
- Datos obtenidos para la caracterización del SiMP.
%% Cell type:code id:73c4c6ff tags:
``` python
#A partir de aquí python sabe en que carpeta se encuentran los datos
os.chdir("/home/christian/MEGA/PostDoc_UIS/Conga_2022/Notebooks_CONGA/SiPM/")
os.getcwd()
```
%% Output
'/home/christian/MEGA/PostDoc_UIS/Conga_2022/Notebooks_CONGA/SiPM'
%% Cell type:code id:18a64f20 tags:
``` python
#Lectura de los datos
ds=pd.read_csv("picos_285292.tmp.txt", sep="\t")
```
%% Cell type:code id:4bd27abe tags:
``` python
ds.head()
```
%% Output
ADC Channel - Charge distribution Counts - Charge distribution
0 -249 0
1 -247 0
2 -245 0
3 -243 0
4 -241 1
%% Cell type:code id:57e0f701 tags:
``` python
ds.info()
```
%% Output
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2936 entries, 0 to 2935
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ADC Channel - Charge distribution 2936 non-null int64
1 Counts - Charge distribution 2936 non-null int64
dtypes: int64(2)
memory usage: 46.0 KB
%% Cell type:markdown id:a6a7ae18 tags:
### Ajuste gaussiano de cada uno de los picos
%% Cell type:code id:15d0c568 tags:
``` python
x=np.linspace(1,2936,2936)
plt.figure(figsize=(10, 8))
plt.plot(x, ds["Counts - Charge distribution"], color="b", linewidth=3)
plt.xlabel("Canal ADC")
plt.ylabel("Cuentas")
plt.grid()
plt.show()
```
%% Output
%% Cell type:code id:b6692d1c tags:
``` python
from scipy.optimize import curve_fit
# Define the Gaussian function
def Gauss(x, a, mu, sig, c):
y = a*np.exp(-(x-mu)**2/(2*sig**2)) +c
return y
parameters=()
def fit(i,j):
xdata = np.asarray(ds["ADC Channel - Charge distribution"][i:j])
ydata = np.asarray(ds["Counts - Charge distribution"][i:j])
param, covariance = curve_fit(Gauss, xdata, ydata, p0=[1000, i*2, 200, 0])
fit_A=param[0]
fit_B=param[1]
fit_C=param[2]
fit_D=param[3]
print("mu=", fit_B, "\nsigma=", fit_C, "\n")
fit_y = Gauss(xdata, fit_A, fit_B, fit_C, fit_D)
plt.plot(xdata, ydata, c="darkblue", label='data')
plt.plot(xdata, fit_y, '-r', label='fit')
plt.xlabel("Canal ADC")
plt.ylabel("Cuentas")
plt.grid()
```
%% Cell type:code id:f15890ec tags:
``` python
fit(0,250)
fit(250,500)
fit(500,750)
fit(750,1000)
fit(1000,1200)
fit(1200, 1400)
```
%% Output
mu= 19.157181333696382
sigma= 49.24544222362323
mu= 479.0099909259773
sigma= 51.310704584285276
mu= 939.6075158534509
sigma= 52.7541516809037
mu= 1396.856500246315
sigma= 58.13163757023065
mu= 1851.4849042741075
sigma= 66.47690197710251
mu= 2292.507518508694
sigma= 90.54113833966873
%% Cell type:markdown id:12ee35ee tags:
### Cálculo de la distancia entre picos
- Primero se buscan los máximos locales y después se calcula la distancia entre ellos.
%% Cell type:code id:8f6d8519 tags:
%% Cell type:code id:2e7fe648 tags:
``` python
from scipy.signal import find_peaks
x=ds["Counts - Charge distribution"]
peaks, _ = find_peaks(x, distance=200)
plt.figure(figsize=(10,8))
plt.plot(peaks, x[peaks], "or", markersize=12)
plt.plot(x, "-b")
plt.xlabel("Canal ADC")
plt.ylabel("Cuentas")
plt.grid()
```
%% Output
%% Cell type:code id:94385c3f tags:
``` python
#Posición de los picos
peaks
```
%% Output
array([ 131, 361, 599, 821, 1056, 1278, 1520, 1750, 1950, 2172, 2387,
2605, 2862])
%% Cell type:code id:b1915eef tags:
``` python
dist=[]
for i in range(1, len(peaks)-1):
d=peaks[i+1]-peaks[i]
dist.append(d)
print("distancia entre el pico", i, "y", i+1, "=", d )
```
%% Output
distancia entre el pico 1 y 2 = 238
distancia entre el pico 2 y 3 = 222
distancia entre el pico 3 y 4 = 235
distancia entre el pico 4 y 5 = 222
distancia entre el pico 5 y 6 = 242
distancia entre el pico 6 y 7 = 230
distancia entre el pico 7 y 8 = 200
distancia entre el pico 8 y 9 = 222
distancia entre el pico 9 y 10 = 215
distancia entre el pico 10 y 11 = 218
distancia entre el pico 11 y 12 = 257
%% Cell type:code id:61992f52 tags:
``` python
print("promedio de la distancia entre picos: ", sum(dist)/(len(peaks)-2))
```
%% Output
promedio de la distancia entre picos: 227.36363636363637
......
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