In questo quaderno viene fornito un semplice esempio per convertire in formato ASCII i files binari salvati dall'acquisizione. In particolare i files hanno suffisso _events.ade
.
A patto di spiegargli come sono codificati, numpy รจ perfettamente in grado di leggere files binari.
import numpy as np
from matplotlib import pyplot as plt
Definiamo come prima cosa il nostro tipo di dato (u sta per intero senza segno, mentre il numero decimale indica il numero di bytes)
myEvent = np.dtype([
('timestamp', np.dtype('u8')),
('qshort', np.dtype('u2')),
('qlong', np.dtype('u2')),
('baseline', np.dtype('u2')),
('channel', np.dtype('u1')),
('PUR', np.dtype('u1')),
])
Per caricare i dati si utilizza il metodo np.fromfile
che permette di leggere i dati a partire da un file aperto, in questo caso in lettura binaria "rb"
, specificando il tipo di dato appena costruito
with open("provaTutorial_events.ade", "rb") as f:
myData = np.fromfile(f, dtype = myEvent)
Esempio di istogramma e plot
h, bins = np.histogram(myData["qlong"], bins = 200)
binc = bins[:-1] + (bins[1] - bins[0])/2
fig, ax = plt.subplots()
ax.plot(binc, h, ds = "steps-mid", c = "darkgreen", lw = 2, label = "Spettro")
ax.fill_between(binc, h, step = "mid", color = "lime", alpha = 1)
ax.grid()
ax.set_xlabel("Energia [ADC]", fontsize = 14)
ax.set_ylabel("Entries", fontsize = 14)
ax.set_title("Spettro $^{241}$Am", fontsize = 16)
ax.legend()
plt.show()