Apertura files binari Red Pitaya per spettroscopia alpha¶

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.

In [ ]:
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)

In [ ]:
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

In [ ]:
with open("provaTutorial_events.ade", "rb") as f:
    myData = np.fromfile(f, dtype = myEvent)

Esempio di istogramma e plot

In [ ]:
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()