I dati sono costituiti dagli HBOOK
convertiti in ROOT
usando il comando h2root
e quindi concatenati.
Il lavoro è stato fatto col seguente script
#!/bin/bash
for f in $(ls ./hbook/*.hbook); do
# Solo nome (e.g. run016491_001.hbook)
bb=$(basename $f)
# Prima parte del nome (e.g. run016491)
nn=$(echo $bb | cut -d'_' -f1)
# Nome completo no estensione (e.g. run016491_001)
nome=${bb/.hbook/}
# Root singolo (e.g. ./root/run016491_001.root)
fileParziale=./root/${nome}.root
# Root unito (e.g. ./root_merged/run016491.root)
fileTotale=./root_merged/${nn}.root
h2root $f $fileParziale
hadd -a $fileTotale $fileParziale
done
La guida di riferimento è questo mio altro esempio realizzato per il test beam di NanoCal, le spiegazioni dettagliate si trovano lì
import sys, os, re, glob
import uproot
import numpy as np
from matplotlib import pyplot as plt
Definisco dove si trovano i dati. A titolo esemplificativo, ne carico solo uno
dataPath = r"/eos/project/i/insulab-como/testBeam/CNAO_2023_06/root_merged"
dataPath = r"/eos/project/i/insulab-como/testBeam/CNAO_2023_06/root"
numRun = 16496
fileToLoad = os.path.join(dataPath, f"run{numRun:06d}_001.root")
with uproot.open(fileToLoad) as f:
for k in f:
print(k)
try:
for kk in f[k]:
print(kk)
except:
pass
h11;1 <TBranch 'I15h1' at 0x7ff55e4a2730> <TBranch 'Itime' at 0x7ff55e4a2f70> <TBranch 'Iatime' at 0x7ff55e4af760> <TBranch 'Iutil' at 0x7ff55e4aff10> <TBranch 'Nword0_742' at 0x7ff55e4b4700> <TBranch 'Idata0_742' at 0x7ff55e4b4eb0> <TBranch 'Info_onl' at 0x7ff55e43b6a0> h1;1 <TBranch 'I15g1' at 0x7ff55e43f220> <TBranch 'Itime' at 0x7ff55e43fcd0> <TBranch 'Iatime' at 0x7ff55e4464c0> <TBranch 'Iutil' at 0x7ff55e446c70> <TBranch 'Nword0_730' at 0x7ff55e44b460> <TBranch 'Idata0_730' at 0x7ff55e44bc10> <TBranch 'Info_onl' at 0x7ff55e452400> h2;1 <TBranch 'I15g1' at 0x7ff55e4561c0> <TBranch 'Itime' at 0x7ff55e456a00> <TBranch 'Iatime' at 0x7ff55e45c1f0> <TBranch 'Iutil' at 0x7ff55e45c9a0> <TBranch 'Nword0_730' at 0x7ff55e461190> <TBranch 'Idata0_730' at 0x7ff55e461940> <TBranch 'Info_onl' at 0x7ff55e469130> h3;1 <TBranch 'I15g1' at 0x7ff55e46c4f0> <TBranch 'Itime' at 0x7ff55e46cd30> <TBranch 'Iatime' at 0x7ff55e472520> <TBranch 'Iutil' at 0x7ff55e472cd0> <TBranch 'Nword0_730' at 0x7ff55e4764c0> <TBranch 'Idata0_730' at 0x7ff55e476c70> <TBranch 'Info_onl' at 0x7ff55e3fb460> h12;1 <TBranch 'I15h1' at 0x7ff55e3fb910> <TBranch 'Itime' at 0x7ff55e404490> <TBranch 'Iatime' at 0x7ff55e404c40> <TBranch 'Iutil' at 0x7ff55e40a430> <TBranch 'Nword0_742' at 0x7ff55e40abe0> <TBranch 'Idata0_742' at 0x7ff55e4103d0> <TBranch 'Info_onl' at 0x7ff55e410b80> h13;1 <TBranch 'I15h1' at 0x7ff55e415910> <TBranch 'Itime' at 0x7ff55e41c190> <TBranch 'Iatime' at 0x7ff55e41c940> <TBranch 'Iutil' at 0x7ff55e422130> <TBranch 'Nword0_742' at 0x7ff55e4228e0> <TBranch 'Idata0_742' at 0x7ff55e4260d0> <TBranch 'Info_onl' at 0x7ff55e426880> h4;1 <TBranch 'I15g1' at 0x7ff55e42d340> <TBranch 'Itime' at 0x7ff55e42de80> <TBranch 'Iatime' at 0x7ff55e431670> <TBranch 'Iutil' at 0x7ff55e431e20> <TBranch 'Nword0_730' at 0x7ff55e3ba610> <TBranch 'Idata0_730' at 0x7ff55e3badc0> <TBranch 'Info_onl' at 0x7ff55e3bf5b0> h110000;1 h120000;1 h5101;1 h5251;1 h5151;1 h5102;1 h5252;1 h5152;1 h5103;1 h5253;1 h5153;1 h5104;1 h5254;1 h5154;1 h5105;1 h5255;1 h5155;1 h5106;1 h5256;1 h5156;1 h5107;1 h5257;1 h5157;1 h5108;1 h5258;1 h5158;1
Io ipotizzo che sia h11
, ma lo dimostriamo
with uproot.open(fileToLoad) as f:
f["h13"].show()
wf = f["h11"]["Idata0_742"].array(library = "np")
nw = f["h11"]["Nword0_742"].array(library = "np")
print(wf.shape, nw.shape, )
print(wf[0].shape, nw[0].shape, )
name | typename | interpretation ---------------------+--------------------------+------------------------------- I15h1 | int32_t | AsDtype('>i4') Itime | int32_t | AsDtype('>i4') Iatime | int32_t | AsDtype('>i4') Iutil | int32_t[16] | AsDtype("('>i4', (16,))") Nword0_742 | int32_t | AsDtype('>i4') Idata0_742 | int32_t[] | AsJagged(AsDtype('>i4')) Info_onl | uint16_t[100] | AsDtype("('>u2', (100,))") (500,) (500,) (32992,) ()
Una rapida ispezione
fig, ax = plt.subplots()
ax.plot(nw, c = "tab:green")
ax.grid()
print(nw.mean(), nw.std())
plt.show()
32992.0 0.0
wf
array([array([ 67110912, 31655755, 235077632, ..., 111150750, 111216288, 136252035], dtype=int32) , array([ 67110912, 155781542, 235077635, ..., 111216287, 111216288, 136252063], dtype=int32) , array([ 67110912, 8585735, 234684416, ..., 111085217, 111019680, 136252059], dtype=int32) , array([ 67110912, 32967741, 234946560, ..., 111216289, 111019681, 136252055], dtype=int32) , array([ 67110912, 20381727, 234487808, ..., 111019679, 111281822, 136252055], dtype=int32) , array([ 67110912, 786539, 234618880, ..., 111019678, 110888605, 136252051], dtype=int32) , array([ 67110912, 13174370, 235012096, ..., 110691994, 110626457, 136252052], dtype=int32) , array([ 67110912, 2296984, 234815488, ..., 110954141, 110954141, 136252052], dtype=int32) , array([ 67110912, 2360881, 234356736, ..., 110888608, 110954141, 136252079], dtype=int32) , array([ 67110912, 1377388, 234356736, ..., 110691992, 110954138, 136252075], dtype=int32) , array([ 67110912, 4260461, 234618880, ..., 111216289, 111412897, 136252078], dtype=int32) , array([ 67110912, 6227796, 234487808, ..., 111019681, 111150750, 136252053], dtype=int32) , array([ 67110912, 330836, 234749952, ..., 110888608, 111019675, 136252066], dtype=int32) , array([ 67110912, 3081253, 234291200, ..., 110757535, 110823066, 136252021], dtype=int32) , array([ 67110912, 19532141, 234553344, ..., 111085218, 111216289, 136251982], dtype=int32) , array([ 67110912, 1376581, 234356736, ..., 111085215, 111740575, 136252059], dtype=int32) , array([ 67110912, 3935722, 234815488, ..., 110954140, 110823068, 136252048], dtype=int32) , array([ 67110912, 197867, 234356736, ..., 110823067, 110757530, 136252074], dtype=int32) , array([ 67110912, 13893879, 234946560, ..., 111085217, 111347359, 136252051], dtype=int32) , array([ 67110912, 5246906, 234749952, ..., 110954143, 111085212, 136252077], dtype=int32) , array([ 67110912, 7406131, 234291200, ..., 107808369, 107742832, 136251986], dtype=int32) , array([ 67110912, 9831934, 234553344, ..., 111085216, 110888604, 136252055], dtype=int32) , array([ 67110912, 200507, 234094592, ..., 111019676, 110954143, 136252075], dtype=int32) , array([ 67110912, 200466, 234815488, ..., 111019678, 111085212, 136252050], dtype=int32) , array([ 67110912, 264191, 234487808, ..., 110036621, 114362062, 136252095], dtype=int32) , array([ 67110912, 198379, 234422272, ..., 110888605, 110888602, 136252060], dtype=int32) , array([ 67110912, 199600, 234422272, ..., 111019679, 111609500, 136252077], dtype=int32) , array([ 67110912, 198057, 234160128, ..., 110823069, 111019674, 136252053], dtype=int32) , array([ 67110912, 200191, 234487808, ..., 110888605, 110823067, 136252051], dtype=int32) , array([ 67110912, 262916, 234618880, ..., 110823069, 110823068, 136252051], dtype=int32) , array([ 67110912, 262766, 234291200, ..., 110954140, 110823069, 136252053], dtype=int32) , array([ 67110912, 199199, 234749952, ..., 110954141, 111085215, 136252075], dtype=int32) , array([ 67110912, 262167, 234618880, ..., 110954141, 111085213, 136252067], dtype=int32) , array([ 67110912, 199294, 234225664, ..., 110823066, 110954139, 136252076], dtype=int32) , array([ 67110912, 265559, 234422272, ..., 110823068, 110823069, 136252030], dtype=int32) , array([ 67110912, 264108, 234749952, ..., 111019678, 111085213, 136252000], dtype=int32) , array([ 67110912, 330234, 234356736, ..., 111085212, 111216287, 136252059], dtype=int32) , array([ 67110912, 198594, 234160128, ..., 110954140, 111085213, 136252071], dtype=int32) , array([ 67110912, 198602, 234815488, ..., 110954142, 110823067, 136252061], dtype=int32) , array([ 67110912, 200657, 234553344, ..., 110888607, 110888607, 136252079], dtype=int32) , array([ 67110912, 198095, 234684416, ..., 111019678, 111019678, 136252068], dtype=int32) , array([ 67110912, 198518, 234225664, ..., 110888604, 111085213, 136252061], dtype=int32) , array([ 67110912, 198481, 234160128, ..., 111085218, 111150751, 136252049], dtype=int32) , array([ 67110912, 200399, 234487808, ..., 110888603, 110954139, 136252077], dtype=int32) , array([ 67110912, 329535, 234422272, ..., 110954140, 111281820, 136252072], dtype=int32) , array([ 67110912, 265616, 234487808, ..., 110888605, 111019675, 136252063], dtype=int32) , array([ 67110912, 199526, 234291200, ..., 111019675, 111216284, 136252075], dtype=int32) , array([ 67110912, 199516, 234356736, ..., 111019677, 111150750, 136252075], dtype=int32) , array([ 67110912, 460775, 234749952, ..., 111019679, 110888604, 136252077], dtype=int32) , array([ 67110912, 329579, 234749952, ..., 110888607, 111085213, 136252066], dtype=int32) , array([ 67110912, 199473, 234749952, ..., 110823067, 110954142, 136252072], dtype=int32) , array([ 67110912, 330345, 234553344, ..., 110954140, 110757531, 136252044], dtype=int32) , array([ 67110912, 198912, 234291200, ..., 111347358, 111478432, 136252070], dtype=int32) , array([ 67110912, 263832, 234029056, ..., 111085216, 111085215, 136252086], dtype=int32) , array([ 67110912, 262165, 234487808, ..., 111019679, 111740574, 136252066], dtype=int32) , array([ 67110912, 200086, 234291200, ..., 111019678, 111216286, 136252072], dtype=int32) , array([ 67110912, 200517, 234553344, ..., 111019676, 110954138, 136252072], dtype=int32) , array([ 67110912, 199656, 234487808, ..., 110888602, 110954142, 136252053], dtype=int32) , array([ 67110912, 198336, 234553344, ..., 110757533, 111085210, 136252076], dtype=int32) , array([ 67110912, 200338, 234487808, ..., 110954140, 110954144, 136252066], dtype=int32) , array([ 67110912, 199617, 234553344, ..., 110954142, 110888605, 136252050], dtype=int32) , array([ 67110912, 198022, 234356736, ..., 110954140, 110888604, 136252032], dtype=int32) , array([ 67110912, 262836, 234881024, ..., 111216290, 111216289, 136252054], dtype=int32) , array([ 67110912, 200401, 234684416, ..., 110888604, 111216285, 136252035], dtype=int32) , array([ 67110912, 330158, 234881024, ..., 111347355, 111347359, 136252078], dtype=int32) , array([ 67110912, 263758, 234553344, ..., 110823068, 110888602, 136252075], dtype=int32) , array([ 67110912, 199563, 234356736, ..., 110954144, 111347359, 136252095], dtype=int32) , array([ 67110912, 198273, 234553344, ..., 110888605, 111281818, 136252073], dtype=int32) , array([ 67110912, 199679, 234356736, ..., 110823066, 110823068, 136252049], dtype=int32) , array([ 67110912, 198775, 234618880, ..., 109971088, 109774476, 136252068], dtype=int32) , array([ 67110912, 263974, 234618880, ..., 111216288, 111019678, 136252074], dtype=int32) , array([ 67110912, 264437, 234422272, ..., 110954140, 111019678, 136252055], dtype=int32) , array([ 67110912, 200494, 234684416, ..., 110954143, 111019678, 136252079], dtype=int32) , array([ 67110912, 200679, 234749952, ..., 109643403, 109971077, 136252037], dtype=int32) , array([ 67110912, 200682, 234684416, ..., 110888605, 110954141, 136252065], dtype=int32) , array([ 67110912, 198097, 233832448, ..., 110954141, 111085214, 136252051], dtype=int32) , array([ 67110912, 264728, 234553344, ..., 110823067, 110823067, 136252050], dtype=int32) , array([ 67110912, 393822, 234422272, ..., 111085213, 111216287, 136252076], dtype=int32) , array([ 67110912, 265210, 232914944, ..., 110888604, 110757530, 136252016], dtype=int32) , array([ 67110912, 198660, 234422272, ..., 110888603, 110757532, 136252077], dtype=int32) , array([ 67110912, 262536, 234487808, ..., 110626456, 110954139, 136252050], dtype=int32) , array([ 67110912, 198527, 234684416, ..., 111150752, 110888608, 136252055], dtype=int32) , array([ 67110912, 395263, 234487808, ..., 111085215, 110954143, 136252050], dtype=int32) , array([ 67110912, 199862, 234291200, ..., 111019677, 110823068, 136252048], dtype=int32) , array([ 67110912, 265109, 234487808, ..., 110888603, 111019674, 136252066], dtype=int32) , array([ 67110912, 263180, 234618880, ..., 110954143, 111019680, 136252074], dtype=int32) , array([ 67110912, 198248, 234356736, ..., 110823068, 110560923, 136252065], dtype=int32) , array([ 67110912, 264022, 234749952, ..., 110954141, 110888605, 136252077], dtype=int32) , array([ 67110912, 199689, 234749952, ..., 111019681, 110888605, 136252055], dtype=int32) , array([ 67110912, 199267, 234487808, ..., 110954142, 110888602, 136252077], dtype=int32) , array([ 67110912, 200389, 234881024, ..., 111019678, 111216287, 136252075], dtype=int32) , array([ 67110912, 396854, 234356736, ..., 110954142, 111150752, 136252070], dtype=int32) , array([ 67110912, 200266, 234356736, ..., 111019678, 110954143, 136252074], dtype=int32) , array([ 67110912, 396638, 234487808, ..., 110757529, 111019682, 136252073], dtype=int32) , array([ 67110912, 197829, 234422272, ..., 110823070, 111019675, 136252058], dtype=int32) , array([ 67110912, 198242, 234553344, ..., 111085213, 110888607, 136252076], dtype=int32) , array([ 67110912, 198464, 234749952, ..., 110954141, 111085214, 136252074], dtype=int32) , array([ 67110912, 198419, 234749952, ..., 110954142, 111019677, 136252052], dtype=int32) , array([ 67110912, 265333, 234684416, ..., 111019678, 110888604, 136252053], dtype=int32) , array([ 67110912, 198060, 234618880, ..., 110954141, 110954141, 136252054], dtype=int32) , array([ 67110912, 262511, 234881024, ..., 110954146, 111281823, 136252095], dtype=int32) , array([ 67110912, 263037, 234749952, ..., 110954141, 111019677, 136252058], dtype=int32) , array([ 67110912, 262848, 234553344, ..., 110888607, 110888607, 136252074], dtype=int32) , array([ 67110912, 199092, 234618880, ..., 110823070, 111019677, 136252089], dtype=int32) , array([ 67110912, 327920, 234618880, ..., 111085214, 115410656, 136252075], dtype=int32) , array([ 67110912, 198696, 234422272, ..., 110823067, 110823067, 136252072], dtype=int32) , array([ 67110912, 200640, 234684416, ..., 110954142, 110888602, 136252042], dtype=int32) , array([ 67110912, 265617, 234553344, ..., 110888603, 110691995, 136252050], dtype=int32) , array([ 67110912, 198491, 234487808, ..., 111019679, 110954139, 136252048], dtype=int32) , array([ 67110912, 199854, 234356736, ..., 110888605, 110823067, 136252076], dtype=int32) , array([ 67110912, 199031, 234291200, ..., 110888603, 110691996, 136252078], dtype=int32) , array([ 67110912, 264937, 234684416, ..., 110954140, 111085212, 136252071], dtype=int32) , array([ 67110912, 198991, 234684416, ..., 110888604, 110757532, 136252052], dtype=int32) , array([ 67110912, 198851, 234422272, ..., 111085215, 111806111, 136252060], dtype=int32) , array([ 67110912, 263925, 234487808, ..., 110823069, 110954139, 136252050], dtype=int32) , array([ 67110912, 200311, 234684416, ..., 111019676, 111019680, 136252053], dtype=int32) , array([ 67110912, 199438, 234487808, ..., 110823068, 111150747, 136252074], dtype=int32) , array([ 67110912, 200148, 234422272, ..., 110823068, 110954140, 136252067], dtype=int32) , array([ 67110912, 198439, 234487808, ..., 110823067, 110954140, 136252050], dtype=int32) , array([ 67110912, 200527, 234422272, ..., 111019677, 111085214, 136252061], dtype=int32) , array([ 67110912, 197741, 234618880, ..., 110954141, 111019676, 136252051], dtype=int32) , array([ 67110912, 199217, 234487808, ..., 111019678, 111347358, 136252052], dtype=int32) , array([ 67110912, 262167, 234618880, ..., 111019676, 111019680, 136252078], dtype=int32) , array([ 67110912, 265212, 234422272, ..., 110954142, 111216284, 136252076], dtype=int32) , array([ 67110912, 266153, 234815488, ..., 110823068, 110954140, 136252061], dtype=int32) , array([ 67110912, 198491, 234225664, ..., 110757530, 110429847, 136252023], dtype=int32) , array([ 67110912, 393848, 234553344, ..., 111019675, 111085215, 136252054], dtype=int32) , array([ 67110912, 199221, 234553344, ..., 110954139, 110954143, 136252070], dtype=int32) , array([ 67110912, 198825, 234749952, ..., 110823067, 110823068, 136252078], dtype=int32) , array([ 67110912, 263322, 234422272, ..., 111281821, 115476192, 136252091], dtype=int32) , array([ 67110912, 264528, 234291200, ..., 110888604, 110954140, 136252077], dtype=int32) , array([ 67110912, 265485, 234749952, ..., 110888605, 110823069, 136252034], dtype=int32) , array([ 67110912, 262545, 234684416, ..., 111019679, 110823070, 136252079], dtype=int32) , array([ 67110912, 265281, 234094592, ..., 111085217, 110954142, 136252077], dtype=int32) , array([ 67110912, 331390, 234356736, ..., 110823067, 110954139, 136252052], dtype=int32) , array([ 67110912, 200111, 234881024, ..., 111019677, 111085214, 136252049], dtype=int32) , array([ 67110912, 197859, 234749952, ..., 110888603, 111085214, 136252065], dtype=int32) , array([ 67110912, 199092, 234422272, ..., 110823068, 110757531, 136252075], dtype=int32) , array([ 67110912, 264391, 234291200, ..., 111281821, 111085213, 136252051], dtype=int32) , array([ 67110912, 199101, 234291200, ..., 110954142, 110954141, 136252054], dtype=int32) , array([ 67110912, 199810, 234029056, ..., 111019675, 111150747, 136252069], dtype=int32) , array([ 67110912, 198853, 234487808, ..., 110954141, 111150747, 136252052], dtype=int32) , array([ 67110912, 265234, 234487808, ..., 111085215, 110823071, 136252072], dtype=int32) , array([ 67110912, 198785, 234356736, ..., 110364309, 110626452, 136251985], dtype=int32) , array([ 67110912, 199594, 234487808, ..., 110888603, 110823070, 136252040], dtype=int32) , array([ 67110912, 263917, 234356736, ..., 110888604, 111085217, 136252059], dtype=int32) , array([ 67110912, 264357, 234815488, ..., 110888603, 110954140, 136252028], dtype=int32) , array([ 67110912, 200577, 234487808, ..., 111019680, 111085214, 136252063], dtype=int32) , array([ 67110912, 262615, 234422272, ..., 110954139, 110757532, 136252024], dtype=int32) , array([ 67110912, 199355, 234487808, ..., 111019677, 111216285, 136252040], dtype=int32) , array([ 67110912, 197651, 234356736, ..., 110888604, 110823067, 136252074], dtype=int32) , array([ 67110912, 329797, 234422272, ..., 109840013, 109643400, 136252091], dtype=int32) , array([ 67110912, 263435, 234684416, ..., 110823067, 111019675, 136252074], dtype=int32) , array([ 67110912, 264185, 234618880, ..., 110823068, 110888605, 136252072], dtype=int32) , array([ 67110912, 198661, 234356736, ..., 110954140, 110823073, 136252050], dtype=int32) , array([ 67110912, 199851, 234029056, ..., 110888605, 111281819, 136252040], dtype=int32) , array([ 67110912, 199784, 234422272, ..., 110888608, 111085211, 136252091], dtype=int32) , array([ 67110912, 264115, 234422272, ..., 111150754, 111150752, 136252055], dtype=int32) , array([ 67110912, 199162, 234487808, ..., 110954142, 110823066, 136252073], dtype=int32) , array([ 67110912, 199603, 234684416, ..., 110954141, 111019677, 136252077], dtype=int32) , array([ 67110912, 198620, 234487808, ..., 110823069, 111019676, 136252079], dtype=int32) , array([ 67110912, 199475, 230096896, ..., 111019674, 111085211, 136252090], dtype=int32) , array([ 67110912, 394726, 234553344, ..., 110954141, 111216286, 136252064], dtype=int32) , array([ 67110912, 198699, 234291200, ..., 111019678, 110888606, 136252074], dtype=int32) , array([ 67110912, 198267, 234487808, ..., 111085215, 111085215, 136252078], dtype=int32) , array([ 67110912, 200612, 234553344, ..., 110888604, 110954141, 136252079], dtype=int32) , array([ 67110912, 330215, 234356736, ..., 111150752, 110888604, 136252073], dtype=int32) , array([ 67110912, 328599, 234815488, ..., 110757529, 110757530, 136251910], dtype=int32) , array([ 67110912, 198871, 234356736, ..., 111019675, 110823066, 136252050], dtype=int32) , array([ 67110912, 262597, 234749952, ..., 110888607, 111085214, 136252053], dtype=int32) , array([ 67110912, 197990, 234684416, ..., 110691996, 110691995, 136252068], dtype=int32) , array([ 67110912, 199940, 234618880, ..., 110823066, 111085212, 136252053], dtype=int32) , array([ 67110912, 199282, 234487808, ..., 110823068, 110823067, 136252024], dtype=int32) , array([ 67110912, 263322, 234225664, ..., 111085214, 110954144, 136252075], dtype=int32) , array([ 67110912, 264417, 234422272, ..., 110954141, 110757531, 136252059], dtype=int32) , array([ 67110912, 198215, 234684416, ..., 110364305, 110233236, 136252047], dtype=int32) , array([ 67110912, 199957, 234160128, ..., 110823067, 110888604, 136252077], dtype=int32) , array([ 67110912, 327902, 234422272, ..., 110954142, 110954137, 136252052], dtype=int32) , array([ 67110912, 396930, 234684416, ..., 111085212, 111216284, 136252054], dtype=int32) , array([ 67110912, 198264, 234225664, ..., 109708937, 109774475, 136252094], dtype=int32) , array([ 67110912, 199438, 234815488, ..., 110888607, 111085215, 136252058], dtype=int32) , array([ 67110912, 198277, 234487808, ..., 110823068, 110691996, 136252072], dtype=int32) , array([ 67110912, 200276, 234881024, ..., 111085214, 111281823, 136252075], dtype=int32) , array([ 67110912, 265195, 234881024, ..., 111085214, 111150752, 136252063], dtype=int32) , array([ 67110912, 199751, 234618880, ..., 110823067, 111150747, 136252047], dtype=int32) , array([ 67110912, 265607, 234618880, ..., 110954141, 110888608, 136252074], dtype=int32) , array([ 67110912, 199718, 234487808, ..., 110954141, 110757534, 136252051], dtype=int32) , array([ 67110912, 265790, 234749952, ..., 110888608, 110823068, 136252049], dtype=int32) , array([ 67110912, 264753, 234684416, ..., 110954142, 111347356, 136252049], dtype=int32) , array([ 67110912, 328898, 234684416, ..., 110954143, 110888606, 136252050], dtype=int32) , array([ 67110912, 328492, 234684416, ..., 110888606, 111019675, 136252065], dtype=int32) , array([ 67110912, 263198, 234815488, ..., 111019678, 110888604, 136252051], dtype=int32) , array([ 67110912, 200640, 234684416, ..., 110954140, 110691997, 136252056], dtype=int32) , array([ 67110912, 200356, 234356736, ..., 111085215, 111150751, 136252072], dtype=int32) , array([ 67110912, 198559, 234618880, ..., 109708939, 109708938, 136252060], dtype=int32) , array([ 67110912, 263560, 234749952, ..., 110954143, 110757536, 136252076], dtype=int32) , array([ 67110912, 262259, 234422272, ..., 110954141, 111019678, 136252060], dtype=int32) , array([ 67110912, 199889, 234618880, ..., 111019681, 110823069, 136252074], dtype=int32) , array([ 67110912, 198987, 234291200, ..., 110757533, 110691996, 136252079], dtype=int32) , array([ 67110912, 198575, 234422272, ..., 110954142, 110954142, 136252054], dtype=int32) , array([ 67110912, 266197, 235012096, ..., 111347360, 111150755, 136252076], dtype=int32) , array([ 67110912, 328939, 234684416, ..., 110823069, 111019675, 136252052], dtype=int32) , array([ 67110912, 200268, 234815488, ..., 110626455, 110364310, 136252057], dtype=int32) , array([ 67110912, 330652, 234815488, ..., 111019679, 111085214, 136252068], dtype=int32) , array([ 67110912, 459635, 234291200, ..., 111019677, 110954142, 136252068], dtype=int32) , array([ 67110912, 200603, 234291200, ..., 111019676, 111019678, 136252054], dtype=int32) , array([ 67110912, 197974, 234618880, ..., 111019678, 111085215, 136252048], dtype=int32) , array([ 67110912, 262778, 234618880, ..., 110954141, 111019679, 136252073], dtype=int32) , array([ 67110912, 198970, 234553344, ..., 111019679, 111019677, 136252055], dtype=int32) , array([ 67110912, 263598, 234684416, ..., 111281819, 111478431, 136252077], dtype=int32) , array([ 67110912, 264005, 234291200, ..., 111085216, 110954137, 136252049], dtype=int32) , array([ 67110912, 262198, 234487808, ..., 110823066, 111019674, 136251986], dtype=int32) , array([ 67110912, 200138, 232521728, ..., 111019679, 111085213, 136252051], dtype=int32) , array([ 67110912, 197943, 234553344, ..., 111019679, 111019676, 136252079], dtype=int32) , array([ 67110912, 262150, 234684416, ..., 111019677, 111019677, 136252027], dtype=int32) , array([ 67110912, 197727, 234881024, ..., 111347359, 115541730, 136252053], dtype=int32) , array([ 67110912, 328070, 234618880, ..., 109119106, 109315716, 136251820], dtype=int32) , array([ 67110912, 262632, 234422272, ..., 111019678, 111150750, 136252075], dtype=int32) , array([ 67110912, 264687, 234094592, ..., 110888604, 111150749, 136252076], dtype=int32) , array([ 67110912, 264639, 234553344, ..., 111019678, 111019680, 136252075], dtype=int32) , array([ 67110912, 199308, 234749952, ..., 110823069, 111019676, 136251927], dtype=int32) , array([ 67110912, 330577, 234487808, ..., 110888605, 111150747, 136252041], dtype=int32) , array([ 67110912, 197960, 234094592, ..., 111150752, 111347358, 136252049], dtype=int32) , array([ 67110912, 328257, 234225664, ..., 111085212, 111281824, 136252055], dtype=int32) , array([ 67110912, 263242, 234553344, ..., 110757530, 110626457, 136251971], dtype=int32) , array([ 67110912, 200510, 234356736, ..., 111019678, 111019680, 136252075], dtype=int32) , array([ 67110912, 266111, 234553344, ..., 111216289, 111347362, 136252073], dtype=int32) , array([ 67110912, 199993, 234684416, ..., 111085213, 111281826, 136252079], dtype=int32) , array([ 67110912, 199775, 234225664, ..., 110823068, 110888604, 136252052], dtype=int32) , array([ 67110912, 328491, 234422272, ..., 110691996, 110954137, 136252060], dtype=int32) , array([ 67110912, 329388, 234094592, ..., 110888605, 110954140, 136252059], dtype=int32) , array([ 67110912, 264703, 234881024, ..., 110954142, 111150749, 136252069], dtype=int32) , array([ 67110912, 329034, 234356736, ..., 111019678, 111019678, 136252054], dtype=int32) , array([ 67110912, 265496, 234684416, ..., 111216288, 111216286, 136252077], dtype=int32) , array([ 67110912, 331259, 234487808, ..., 110823067, 111085213, 136252094], dtype=int32) , array([ 67110912, 199613, 234684416, ..., 111019678, 110954142, 136252055], dtype=int32) , array([ 67110912, 199854, 234487808, ..., 111019677, 111019677, 136252061], dtype=int32) , array([ 67110912, 199629, 234553344, ..., 110954142, 111216284, 136252052], dtype=int32) , array([ 67110912, 199967, 234487808, ..., 110823070, 111216283, 136252062], dtype=int32) , array([ 67110912, 527681, 234356736, ..., 111019679, 111281821, 136252061], dtype=int32) , array([ 67110912, 200552, 234881024, ..., 110888604, 110888605, 136252051], dtype=int32) , array([ 67110912, 198334, 234684416, ..., 111019678, 110888606, 136252084], dtype=int32) , array([ 67110912, 199327, 234094592, ..., 110954144, 111085216, 136252055], dtype=int32) , array([ 67110912, 264071, 234553344, ..., 111085214, 111216288, 136252053], dtype=int32) , array([ 67110912, 198086, 234749952, ..., 111085209, 110954140, 136252054], dtype=int32) , array([ 67110912, 458872, 234356736, ..., 111019677, 111019678, 136252055], dtype=int32) , array([ 67110912, 198264, 234487808, ..., 111085216, 111085213, 136252052], dtype=int32) , array([ 67110912, 198194, 234553344, ..., 110888607, 111347356, 136252037], dtype=int32) , array([ 67110912, 263398, 234553344, ..., 110888603, 110823067, 136252109], dtype=int32) , array([ 67110912, 200208, 234553344, ..., 111019678, 110823069, 136252042], dtype=int32) , array([ 67110912, 329320, 234487808, ..., 111019678, 110888608, 136252038], dtype=int32) , array([ 67110912, 198238, 234487808, ..., 110757530, 110626458, 136252051], dtype=int32) , array([ 67110912, 265883, 234291200, ..., 111085213, 111019677, 136252062], dtype=int32) , array([ 67110912, 200185, 234815488, ..., 111019681, 111085214, 136252049], dtype=int32) , array([ 67110912, 328488, 234225664, ..., 111019677, 110888606, 136252055], dtype=int32) , array([ 67110912, 328793, 234225664, ..., 110954141, 111085214, 136251972], dtype=int32) , array([ 67110912, 263676, 234815488, ..., 110429847, 110495383, 136252076], dtype=int32) , array([ 67110912, 262201, 234356736, ..., 110888604, 110888602, 136252078], dtype=int32) , array([ 67110912, 263484, 234291200, ..., 111216287, 115541730, 136252050], dtype=int32) , array([ 67110912, 199621, 234815488, ..., 111085214, 111281823, 136252049], dtype=int32) , array([ 67110912, 265867, 234487808, ..., 110823068, 111019677, 136252053], dtype=int32) , array([ 67110912, 199527, 234749952, ..., 110954139, 111019678, 136252056], dtype=int32) , array([ 67110912, 199247, 234356736, ..., 111019677, 111085215, 136252063], dtype=int32) , array([ 67110912, 263052, 234356736, ..., 111085218, 111019679, 136252071], dtype=int32) , array([ 67110912, 331621, 234553344, ..., 111347359, 115345123, 136252050], dtype=int32) , array([ 67110912, 198687, 234684416, ..., 110954140, 111150750, 136252077], dtype=int32) , array([ 67110912, 198429, 234356736, ..., 110954141, 111281822, 136252058], dtype=int32) , array([ 67110912, 200554, 234684416, ..., 110757525, 114951897, 136252053], dtype=int32) , array([ 67110912, 200481, 234684416, ..., 111150750, 110888607, 136252050], dtype=int32) , array([ 67110912, 458844, 234422272, ..., 110888603, 110888600, 136252057], dtype=int32) , array([ 67110912, 393303, 234291200, ..., 111150753, 110888605, 136251963], dtype=int32) , array([ 67110912, 262898, 234553344, ..., 111216288, 111806111, 136252065], dtype=int32) , array([ 67110912, 263052, 234684416, ..., 110888604, 111085213, 136252058], dtype=int32) , array([ 67110912, 327972, 234029056, ..., 110954140, 111216284, 136252072], dtype=int32) , array([ 67110912, 262554, 234487808, ..., 111085214, 111085216, 136252050], dtype=int32) , array([ 67110912, 330189, 234356736, ..., 110954141, 111150751, 136252075], dtype=int32) , array([ 67110912, 199106, 234553344, ..., 110954141, 110954141, 136252074], dtype=int32) , array([ 67110912, 199092, 234356736, ..., 110954144, 111150748, 136252075], dtype=int32) , array([ 67110912, 198750, 234160128, ..., 110954140, 110888604, 136252067], dtype=int32) , array([ 67110912, 263841, 234487808, ..., 110954142, 111150749, 136252048], dtype=int32) , array([ 67110912, 265091, 234815488, ..., 110560920, 110626458, 136251954], dtype=int32) , array([ 67110912, 199136, 234553344, ..., 110954143, 111216286, 136252050], dtype=int32) , array([ 67110912, 328285, 234160128, ..., 111019678, 111019678, 136252057], dtype=int32) , array([ 67110912, 264391, 234291200, ..., 109643400, 109905548, 136252005], dtype=int32) , array([ 67110912, 197695, 234487808, ..., 111019678, 110954142, 136252061], dtype=int32) , array([ 67110912, 198612, 234487808, ..., 111216286, 110888604, 136252051], dtype=int32) , array([ 67110912, 198534, 234684416, ..., 110757531, 110954138, 136252014], dtype=int32) , array([ 67110912, 198388, 234553344, ..., 110233232, 110167699, 136252044], dtype=int32) , array([ 67110912, 198441, 234618880, ..., 111019674, 111281822, 136252036], dtype=int32) , array([ 67110912, 263960, 234618880, ..., 110954138, 110954141, 136252066], dtype=int32) , array([ 67110912, 198283, 234618880, ..., 110888606, 111150748, 136252078], dtype=int32) , array([ 67110912, 264384, 234881024, ..., 110757534, 111019676, 136252049], dtype=int32) , array([ 67110912, 199387, 232783872, ..., 110888603, 110757533, 136252077], dtype=int32) , array([ 67110912, 199665, 234291200, ..., 110954141, 111085216, 136252068], dtype=int32) , array([ 67110912, 331647, 234553344, ..., 111085215, 111281823, 136252051], dtype=int32) , array([ 67110912, 198173, 234618880, ..., 110954140, 111085214, 136252053], dtype=int32) , array([ 67110912, 197665, 234618880, ..., 111085213, 111085215, 136251997], dtype=int32) , array([ 67110912, 200401, 234422272, ..., 111085214, 111150751, 136252056], dtype=int32) , array([ 67110912, 263131, 234618880, ..., 111019678, 110888606, 136252052], dtype=int32) , array([ 67110912, 396187, 234618880, ..., 110888604, 110888602, 136252057], dtype=int32) , array([ 67110912, 200163, 234749952, ..., 111216289, 111085217, 136252055], dtype=int32) , array([ 67110912, 262659, 234291200, ..., 110954141, 111019677, 136252075], dtype=int32) , array([ 67110912, 198990, 234553344, ..., 111085211, 111150748, 136252048], dtype=int32) , array([ 67110912, 265683, 234225664, ..., 111019679, 111281824, 136252049], dtype=int32) , array([ 67110912, 199141, 234815488, ..., 111085213, 111019678, 136252039], dtype=int32) , array([ 67110912, 328068, 234684416, ..., 111019680, 111347360, 136252055], dtype=int32) , array([ 67110912, 263052, 234291200, ..., 110954141, 111347357, 136252072], dtype=int32) , array([ 67110912, 198789, 235012096, ..., 111085214, 111216287, 136252066], dtype=int32) , array([ 67110912, 263219, 234356736, ..., 111150748, 110954145, 136252062], dtype=int32) , array([ 67110912, 198207, 234487808, ..., 110823068, 110691995, 136252073], dtype=int32) , array([ 67110912, 200215, 234422272, ..., 111347362, 111150750, 136252079], dtype=int32) , array([ 67110912, 198789, 234422272, ..., 111019674, 110888605, 136252078], dtype=int32) , array([ 67110912, 198025, 234160128, ..., 110888604, 110888604, 136252054], dtype=int32) , array([ 67110912, 199189, 234553344, ..., 111412894, 111281824, 136252078], dtype=int32) , array([ 67110912, 198956, 234618880, ..., 110954142, 110954141, 136252063], dtype=int32) , array([ 67110912, 199187, 234291200, ..., 110823070, 110691994, 136252074], dtype=int32) , array([ 67110912, 200682, 234487808, ..., 110888605, 110757532, 136252049], dtype=int32) , array([ 67110912, 197972, 234684416, ..., 110888604, 111085212, 136252050], dtype=int32) , array([ 67110912, 263312, 234160128, ..., 110888606, 111216283, 136252054], dtype=int32) , array([ 67110912, 262294, 234356736, ..., 111085214, 110823070, 136252078], dtype=int32) , array([ 67110912, 197943, 234225664, ..., 111085215, 111085215, 136252079], dtype=int32) , array([ 67110912, 265039, 234356736, ..., 110823067, 110691997, 136252063], dtype=int32) , array([ 67110912, 200198, 234946560, ..., 111150748, 111216287, 136252054], dtype=int32) , array([ 67110912, 263487, 234618880, ..., 111281824, 115541728, 136252052], dtype=int32) , array([ 67110912, 199740, 234160128, ..., 111216286, 115214046, 136252053], dtype=int32) , array([ 67110912, 329079, 234684416, ..., 110888607, 111085212, 136252054], dtype=int32) , array([ 67110912, 197841, 234749952, ..., 110888605, 111150750, 136252055], dtype=int32) , array([ 67110912, 197871, 234553344, ..., 111216289, 110757532, 136252051], dtype=int32) , array([ 67110912, 20318917, 234487808, ..., 110954141, 111019678, 136252048], dtype=int32) , array([ 67110912, 200580, 234749952, ..., 111019678, 111019679, 136252052], dtype=int32) , array([ 67110912, 125306635, 234684417, ..., 111281826, 111543970, 136252076], dtype=int32) , array([ 67110912, 8981352, 235208709, ..., 111150750, 111412896, 136252055], dtype=int32) , array([ 67110912, 7081428, 234356736, ..., 111150752, 111150750, 136252074], dtype=int32) , array([ 67110912, 116525883, 234553344, ..., 111150751, 111281827, 136252052], dtype=int32) , array([ 67110912, 330827, 234553344, ..., 110954141, 110823070, 136252077], dtype=int32) , array([ 67110912, 1379638, 234946560, ..., 111019677, 110954142, 136252075], dtype=int32) , array([ 67110912, 723205, 234553344, ..., 110888605, 111019676, 136252050], dtype=int32) , array([ 67110912, 2427846, 233177088, ..., 110954142, 111216283, 136252074], dtype=int32) , array([ 67110912, 6950807, 234881024, ..., 110888608, 110954142, 136252063], dtype=int32) , array([ 67110912, 7802231, 234749952, ..., 111150752, 111019679, 136252077], dtype=int32) , array([ 67110912, 5113025, 234684416, ..., 110823070, 110954143, 136252050], dtype=int32) , array([ 67110912, 1115696, 234356736, ..., 110888602, 110757532, 136251971], dtype=int32) , array([ 67110912, 2687250, 234749952, ..., 111019678, 111216286, 136252055], dtype=int32) , array([ 67110912, 8784136, 234946560, ..., 111281823, 111412897, 136252069], dtype=int32) , array([ 67110912, 10485773, 234815488, ..., 111281825, 111150751, 136252056], dtype=int32) , array([ 67110912, 3804664, 234225664, ..., 111019679, 111216287, 136252073], dtype=int32) , array([ 67110912, 10224081, 234553344, ..., 111085215, 111412896, 136251968], dtype=int32) , array([ 67110912, 6164446, 234487808, ..., 110954141, 111216287, 136252065], dtype=int32) , array([ 67110912, 4195043, 234291200, ..., 111085217, 110954143, 136252090], dtype=int32) , array([ 67110912, 265018, 234553344, ..., 110954141, 110954140, 136252076], dtype=int32) , array([ 67110912, 199286, 234160128, ..., 110888604, 110954140, 136252090], dtype=int32) , array([ 67110912, 262597, 234881024, ..., 110823068, 110757534, 136252055], dtype=int32) , array([ 67110912, 265826, 234618880, ..., 110888607, 110954141, 136252076], dtype=int32) , array([ 67110912, 265721, 234356736, ..., 110823066, 111019675, 136252054], dtype=int32) , array([ 67110912, 198697, 234618880, ..., 110954141, 110888605, 136252048], dtype=int32) , array([ 67110912, 198696, 234553344, ..., 110626459, 110691995, 136252069], dtype=int32) , array([ 67110912, 458782, 234422272, ..., 110888607, 110954140, 136252074], dtype=int32) , array([ 67110912, 199550, 234553344, ..., 111150748, 110954143, 136252078], dtype=int32) , array([ 67110912, 198378, 234553344, ..., 109446790, 109708935, 136251913], dtype=int32) , array([ 67110912, 265461, 234618880, ..., 110954143, 111019679, 136252067], dtype=int32) , array([ 67110912, 263247, 234356736, ..., 111085214, 110888606, 136252048], dtype=int32) , array([ 67110912, 200296, 234160128, ..., 110954143, 111085213, 136252057], dtype=int32) , array([ 67110912, 262519, 234487808, ..., 110823070, 111019677, 136252069], dtype=int32) , array([ 67110912, 198242, 234684416, ..., 111085213, 110823069, 136252049], dtype=int32) , array([ 67110912, 262185, 234356736, ..., 110954142, 111085213, 136252051], dtype=int32) , array([ 67110912, 198559, 234422272, ..., 110954141, 110757532, 136251911], dtype=int32) , array([ 67110912, 198127, 234356736, ..., 110954141, 110954145, 136252079], dtype=int32) , array([ 67110912, 198626, 234553344, ..., 111216289, 111150752, 136252065], dtype=int32) , array([ 67110912, 263201, 234881024, ..., 110954142, 111150750, 136252075], dtype=int32) , array([ 67110912, 330218, 234618880, ..., 110954143, 110954141, 136252075], dtype=int32) , array([ 67110912, 329483, 234618880, ..., 111085213, 110823070, 136252076], dtype=int32) , array([ 67110912, 199203, 234618880, ..., 111019679, 110691996, 136252072], dtype=int32) , array([ 67110912, 197869, 234029056, ..., 110823069, 110954142, 136252052], dtype=int32) , array([ 67110912, 200396, 234749952, ..., 111019678, 110888603, 136252055], dtype=int32) , array([ 67110912, 263497, 234684416, ..., 111412894, 111675040, 136252078], dtype=int32) , array([ 67110912, 199777, 234291200, ..., 109053567, 109381251, 136252036], dtype=int32) , array([ 67110912, 197939, 234356736, ..., 111150749, 110888608, 136252071], dtype=int32) , array([ 67110912, 199897, 234684416, ..., 111085214, 111019680, 136252061], dtype=int32) , array([ 67110912, 197859, 234618880, ..., 111150749, 111281822, 136252075], dtype=int32) , array([ 67110912, 198775, 234684416, ..., 110888608, 111150748, 136252031], dtype=int32) , array([ 67110912, 394682, 234356736, ..., 111412892, 111412895, 136252048], dtype=int32) , array([ 67110912, 394079, 234618880, ..., 111085216, 111871647, 136252068], dtype=int32) , array([ 67110912, 198775, 234618880, ..., 111085215, 110888607, 136252077], dtype=int32) , array([ 67110912, 262478, 234684416, ..., 110823069, 111019674, 136252052], dtype=int32) , array([ 67110912, 262585, 234881024, ..., 110954143, 110823068, 136252049], dtype=int32) , array([ 67110912, 197723, 234618880, ..., 111019678, 111019680, 136252054], dtype=int32) , array([ 67110912, 197834, 234487808, ..., 110888604, 111085213, 136252056], dtype=int32) , array([ 67110912, 262907, 234553344, ..., 111216289, 111281826, 136251982], dtype=int32) , array([ 67110912, 264417, 234749952, ..., 111019678, 111085214, 136252054], dtype=int32) , array([ 67110912, 198127, 234618880, ..., 111150751, 111281824, 136252058], dtype=int32) , array([ 67110912, 394262, 234684416, ..., 110954141, 111412894, 136252076], dtype=int32) , array([ 67110912, 199600, 234160128, ..., 110888603, 110888602, 136252072], dtype=int32) , array([ 67110912, 327937, 234618880, ..., 110954141, 110823069, 136252078], dtype=int32) , array([ 67110912, 263242, 234422272, ..., 111019677, 111019676, 136252038], dtype=int32) , array([ 67110912, 262441, 234094592, ..., 110823070, 111085210, 136252077], dtype=int32) , array([ 67110912, 200185, 234815488, ..., 110757529, 111019677, 136252067], dtype=int32) , array([ 67110912, 265154, 234749952, ..., 109971086, 110167696, 136251726], dtype=int32) , array([ 67110912, 197841, 234487808, ..., 110888606, 110888603, 136252071], dtype=int32) , array([ 67110912, 264022, 234422272, ..., 110823068, 110888603, 136252079], dtype=int32) , array([ 67110912, 198173, 234291200, ..., 110954143, 110757531, 136252045], dtype=int32) , array([ 67110912, 262805, 234815488, ..., 111216289, 111281823, 136252048], dtype=int32) , array([ 67110912, 264746, 234618880, ..., 111085216, 111216285, 136252073], dtype=int32) , array([ 67110912, 199285, 234422272, ..., 110954142, 111085213, 136252077], dtype=int32) , array([ 67110912, 265667, 234356736, ..., 110954142, 110954139, 136252054], dtype=int32) , array([ 67110912, 199001, 234881024, ..., 111216288, 111412895, 136252079], dtype=int32) , array([ 67110912, 199811, 234291200, ..., 111019677, 111216286, 136252044], dtype=int32) , array([ 67110912, 199701, 234553344, ..., 111085214, 111150749, 136252078], dtype=int32) , array([ 67110912, 198573, 234553344, ..., 111085217, 111085215, 136252072], dtype=int32) , array([ 67110912, 264607, 234356736, ..., 110888603, 111019677, 136252065], dtype=int32) , array([ 67110912, 199022, 234618880, ..., 111150752, 110954141, 136252032], dtype=int32) , array([ 67110912, 197990, 234553344, ..., 111019677, 111150750, 136252069], dtype=int32) , array([ 67110912, 199273, 234291200, ..., 111150751, 111150751, 136251983], dtype=int32) , array([ 67110912, 263462, 234422272, ..., 110823068, 111150747, 136252069], dtype=int32) , array([ 67110912, 263254, 234684416, ..., 110954141, 111019678, 136252052], dtype=int32) , array([ 67110912, 199708, 234356736, ..., 111019676, 110954143, 136252095], dtype=int32) , array([ 67110912, 198862, 232718336, ..., 110888607, 111085212, 136252053], dtype=int32) , array([ 67110912, 198225, 234553344, ..., 111281825, 111150752, 136252039], dtype=int32) , array([ 67110912, 263573, 234160128, ..., 111019678, 111150750, 136252035], dtype=int32) , array([ 67110912, 199415, 234815488, ..., 111150751, 111216288, 136252055], dtype=int32) , array([ 67110912, 199092, 234553344, ..., 111347358, 111281824, 136252064], dtype=int32) , array([ 67110912, 264607, 234487808, ..., 110823066, 111150750, 136252056], dtype=int32) , array([ 67110912, 200035, 234684416, ..., 111019679, 111412893, 136252080], dtype=int32) , array([ 67110912, 199147, 234422272, ..., 111085215, 111281823, 136252079], dtype=int32) , array([ 67110912, 262198, 234487808, ..., 110954141, 110888604, 136252011], dtype=int32) , array([ 67110912, 200045, 234487808, ..., 111019680, 110888603, 136251990], dtype=int32) , array([ 67110912, 262259, 234487808, ..., 111216285, 111216287, 136251706], dtype=int32) , array([ 67110912, 197745, 234749952, ..., 110888603, 111150753, 136252078], dtype=int32) , array([ 67110912, 197817, 234356736, ..., 111085212, 111216286, 136252079], dtype=int32) , array([ 67110912, 198810, 234618880, ..., 110954141, 111085214, 136252075], dtype=int32) , array([ 67110912, 264744, 234553344, ..., 111085214, 111085214, 136252051], dtype=int32) , array([ 67110912, 198639, 234422272, ..., 110954139, 111085213, 136252054], dtype=int32) , array([ 67110912, 199034, 234487808, ..., 111019678, 111085214, 136252048], dtype=int32) , array([ 67110912, 200501, 234422272, ..., 110954141, 111150750, 136252023], dtype=int32) , array([ 67110912, 262224, 234749952, ..., 110954141, 110954139, 136252057], dtype=int32) , array([ 67110912, 198664, 234487808, ..., 111019679, 111085212, 136252073], dtype=int32) , array([ 67110912, 263709, 234160128, ..., 111085215, 111216287, 136252054], dtype=int32) , array([ 67110912, 198810, 234356736, ..., 110823070, 110823069, 136252079], dtype=int32) , array([ 67110912, 197832, 234422272, ..., 110954142, 111085213, 136252045], dtype=int32) , array([ 67110912, 263598, 234684416, ..., 111019678, 111085212, 136252052], dtype=int32) , array([ 67110912, 198155, 234422272, ..., 110888606, 110954140, 136252049], dtype=int32) , array([ 67110912, 199008, 234422272, ..., 111150750, 115476193, 136252078], dtype=int32) , array([ 67110912, 264273, 234749952, ..., 111085213, 111216287, 136252094], dtype=int32) , array([ 67110912, 198911, 234553344, ..., 110954141, 111281824, 136252065], dtype=int32) , array([ 67110912, 330269, 234225664, ..., 110823070, 110823067, 136252058], dtype=int32) , array([ 67110912, 198661, 234487808, ..., 111478433, 111675045, 136252069], dtype=int32) , array([ 67110912, 198489, 233242624, ..., 111019676, 111216287, 136252073], dtype=int32) , array([ 67110912, 199034, 234815488, ..., 110954142, 111019677, 136252077], dtype=int32) , array([ 67110912, 199751, 234291200, ..., 110954140, 110823069, 136252035], dtype=int32) , array([ 67110912, 330792, 234618880, ..., 111019678, 111150748, 136252076], dtype=int32) , array([ 67110912, 198876, 234422272, ..., 110823071, 111019677, 136252050], dtype=int32) , array([ 67110912, 198699, 233111552, ..., 111085215, 111085215, 136252069], dtype=int32) , array([ 67110912, 198970, 234618880, ..., 110954142, 111019679, 136251980], dtype=int32) , array([ 67110912, 200356, 234684416, ..., 110888603, 111085213, 136252050], dtype=int32) , array([ 67110912, 198515, 234749952, ..., 111019677, 111019678, 136252051], dtype=int32) , array([ 67110912, 263435, 234356736, ..., 110888607, 111150750, 136252076], dtype=int32) , array([ 67110912, 200396, 234356736, ..., 110823067, 111019675, 136252052], dtype=int32) , array([ 67110912, 197957, 234487808, ..., 111085215, 111150753, 136252064], dtype=int32) , array([ 67110912, 263519, 234291200, ..., 110954143, 111085214, 136252078], dtype=int32) , array([ 67110912, 199070, 234684416, ..., 110954145, 110823071, 136252073], dtype=int32) , array([ 67110912, 198178, 234684416, ..., 111085213, 111150751, 136252048], dtype=int32) , array([ 67110912, 331554, 234291200, ..., 110954141, 110888604, 136252055], dtype=int32) , array([ 67110912, 198040, 234225664, ..., 109840013, 110102156, 136252094], dtype=int32) , array([ 67110912, 263347, 234946560, ..., 110954140, 111085214, 136252073], dtype=int32) , array([ 67110912, 198075, 234553344, ..., 111150750, 115541730, 136252067], dtype=int32) , array([ 67110912, 198386, 234618880, ..., 110167697, 110495379, 136252051], dtype=int32) , array([ 67110912, 265557, 234422272, ..., 111019679, 110954142, 136252053], dtype=int32) , array([ 67110912, 329511, 234618880, ..., 111019678, 111216286, 136252073], dtype=int32) , array([ 67110912, 199078, 235012096, ..., 110954140, 111085213, 136252086], dtype=int32) , array([ 67110912, 200313, 234749952, ..., 110888606, 110823068, 136252072], dtype=int32) , array([ 67110912, 200080, 234881024, ..., 110954141, 110888604, 136252001], dtype=int32) , array([ 67110912, 198915, 234225664, ..., 110954142, 110888604, 136252077], dtype=int32) , array([ 67110912, 199079, 234815488, ..., 111085215, 110757534, 136252049], dtype=int32) , array([ 67110912, 199784, 234356736, ..., 110888605, 110888605, 136252049], dtype=int32) , array([ 67110912, 263414, 234881024, ..., 110954141, 111019678, 136252052], dtype=int32) , array([ 67110912, 197961, 234422272, ..., 110954140, 110757533, 136252055], dtype=int32) , array([ 67110912, 200424, 234422272, ..., 111019678, 110888605, 136252083], dtype=int32) , array([ 67110912, 262752, 234553344, ..., 111281820, 111216288, 136252051], dtype=int32) , array([ 67110912, 197842, 234684416, ..., 111085215, 111150749, 136252074], dtype=int32) , array([ 67110912, 198925, 234553344, ..., 111019677, 111150751, 136252049], dtype=int32) , array([ 67110912, 458791, 234422272, ..., 111085214, 110757533, 136252078], dtype=int32) , array([ 67110912, 200278, 234487808, ..., 110888605, 111216284, 136252055], dtype=int32) , array([ 67110912, 197972, 234487808, ..., 110954141, 111085213, 136252051], dtype=int32) , array([ 67110912, 198775, 234553344, ..., 111281825, 111150753, 136252049], dtype=int32) , array([ 67110912, 198120, 234553344, ..., 110954143, 111281822, 136252075], dtype=int32) , array([ 67110912, 199508, 234815488, ..., 111085218, 111216287, 136252072], dtype=int32) , array([ 67110912, 200519, 234749952, ..., 111019676, 111019678, 136252074], dtype=int32) , array([ 67110912, 263114, 234422272, ..., 110888606, 111019675, 136252078], dtype=int32) , array([ 67110912, 198697, 234881024, ..., 110954139, 111216286, 136252073], dtype=int32) , array([ 67110912, 262691, 234618880, ..., 110954143, 110954141, 136252005], dtype=int32) , array([ 67110912, 264036, 234684416, ..., 110691995, 111150749, 136252049], dtype=int32) , array([ 67110912, 199784, 234684416, ..., 110954141, 110823071, 136252063], dtype=int32) , array([ 67110912, 197997, 234684416, ..., 111281826, 111085215, 136251995], dtype=int32) , array([ 67110912, 199502, 234881024, ..., 110954145, 111281822, 136252077], dtype=int32) , array([ 67110912, 200146, 234618880, ..., 110954143, 111019677, 136252081], dtype=int32) , array([ 67110912, 198842, 234553344, ..., 111085213, 110823070, 136252074], dtype=int32) , array([ 67110912, 263633, 234291200, ..., 110954140, 111019678, 136252048], dtype=int32) , array([ 67110912, 199094, 234618880, ..., 111019678, 110823069, 136252076], dtype=int32) , array([ 67110912, 200390, 234356736, ..., 111085213, 111085211, 136252090], dtype=int32) , array([ 67110912, 198750, 234291200, ..., 110888605, 110888604, 136252064], dtype=int32) , array([ 67110912, 264030, 234749952, ..., 110888605, 110954140, 136252076], dtype=int32) ], dtype=object)
wf[0]
array([ 67110912, 31655755, 235077632, ..., 111150750, 111216288, 136252035], dtype=int32)
Per una descrizione più approfondita, consultare il manuale del digitizer e il codice sorgente dell'acquisizione. Forse in futuro sarò più preciso
Nword0_742
¶Contiene il numero di parole, ovvero il "numero di colonne" che compongono la corrispondente. Questo valore è sempre uguale a $32992$, come si evince dal grafico sopra
Una singola waveform è costituita da 1024 campionamenti, preceduti da 5 valori da saltare, e seguiti da altri 2 valori da saltare, per un totale di 1031 punti. Il digitizer V1742
ha 32 canali, quindi si avrà una ripetizione di 32 volte questa unità elementare $1031 * 32 = 32992 $
Idata0_742
¶Ora la matrice Idata0_742
contiene $500$ righe, una per evento e $32992 = 32 * 1031$ colonne, una volta che ho trasformato l'array di array in una matrice. Le colonne sono da interpretare come la ripetizione della seguente unità elementare
Questa struttura di $1031$ parole si ripete per ciascun canale.
# Trasformo da array di array a matrice
waveform = np.stack(wf, axis = 0)
print(waveform.shape)
(500, 32992)
# Creo una terza dimensione per avere indice di evento e indice di canale
waveform2 = waveform[:, np.newaxis, :]
print(waveform2.shape)
(500, 1, 32992)
# Effettuo il reshaping (evento, canale, tempo)
waveformMatrix = waveform2.reshape(waveform.shape[0], 32, 1031)
print(waveformMatrix.shape)
(500, 32, 1031)
# Butto via inizio e fine di ciascuna waveform
waveformCrop = waveformMatrix[:,:,5:5+1024]
print(waveformCrop.shape)
(500, 32, 1024)
A questo punto
SI NOTI CHE HO FATTO IL MESTIERE IN 4 PASSAGGI A PURO SCOPO DIDATTICO E PER RENDERE L'IDEA DI QUANTO STESSE ACCADENDO, PROBABILMENTE SE SI HANNO MOLTI OGGETTI IN MEMORIA, CONVIENE COMPATTARE O LIBERARE LA MEMORIA DAGLI OGGETTI PRECEDENTI
Il plot non è dei più belli ma lo scopo è verificare semplicemente che ci siano le waveform
idxEv = 10
fig, ax = plt.subplots(8,4)
ax = ax.flatten()
fig.set_size_inches(60, 40)
for idxChan in range(len(ax)):
ax[idxChan].plot(waveformCrop[idxEv, idxChan, :])
ax[idxChan].set_xlabel("Time [tick]")
ax[idxChan].set_ylabel("Voltage [ADC]")
ax[idxChan].set_title(f"Chan. {idxChan}", fontsize = 20)
plt.show()
idxEv = 10
idxChan = 28
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)
ax.plot(waveformCrop[idxEv, idxChan, :])
ax.set_xlabel("Time [tick]")
ax.set_ylabel("Voltage [ADC]")
ax.set_title(f"Chan. {idxChan}", fontsize = 20)
plt.show()
waveformCrop[idxEv, idxChan, :]
array([236326418, 236326417, 236129816, ..., 234884608, 235146753, 234950147], dtype=int32)
C'è qualcosa che non mi convince
Idata0_742 | int32_t[] | AsJagged(AsDtype('>i4'))
In particolare, il tipo di dato non riesco a capire bene cosa sia, e l'asse verticale non è compatibile con quello di un digitizer a 12 bit... Serve indagare un minimo...
Dopo un consulto con Valerio, siamo giunti alla conclusione che i dati non sono impacchettati come si pensava, ma risultano essere
2 - 512 - 4 - 512 - 1
# Ispezione le prime 6 componenti di tutte le waveform
fig, ax = plt.subplots(1,6, figsize=(21,3))
for i in range(6):
ax[i].hist(waveformMatrix[:,:,i].flatten(), 100)
ax[i].set_title(f"pos. {i}")
plt.show()
# Ispezione 6 componenti centrali di tutte le waveform
fig, ax = plt.subplots(1,6, figsize=(21,3))
for i in range(6):
pos = i+511
ax[i].hist(waveformMatrix[:,:,pos].flatten(), 100)
ax[i].set_title(f"pos. {pos}")
plt.show()
# Continuo ispezione 6 componenti un po' più avanti
fig, ax = plt.subplots(1,6, figsize=(21,3))
for i in range(6):
pos = i+514
ax[i].hist(waveformMatrix[:,:,pos].flatten(), 100)
ax[i].set_title(f"pos. {pos}")
plt.show()
# parte finale
fig, ax = plt.subplots(1,6, figsize=(21,3))
for i in range(6):
pos = i+1025
ax[i].hist(waveformMatrix[:,:,pos].flatten(), 100)
ax[i].set_title(f"pos. {pos}")
plt.show()
Da cui appunto sembra poter concludere
Recap
2 - 512 - 4 - 512 - 1
# Butto via inizio e fine di ciascuna waveform
# waveformCrop_New = waveformMatrix[:,:,5:5+1024]
waveformCrop_New = np.delete(waveformMatrix, (0, 1, 514, 515, 516, 517, 1030), axis = 2)
print(waveformCrop_New.shape)
(500, 32, 1024)
idxEv = 10
fig, ax = plt.subplots(8,4)
ax = ax.flatten()
fig.set_size_inches(60, 40)
for idxChan in range(len(ax)):
ax[idxChan].plot(waveformCrop_New[idxEv, idxChan, :])
ax[idxChan].set_xlabel("Time [tick]")
ax[idxChan].set_ylabel("Voltage [ADC]")
ax[idxChan].set_title(f"Chan. {idxChan}", fontsize = 20)
plt.show()
idxEv = 10
idxChan = 28
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)
ax.plot(waveformCrop_New[idxEv, idxChan, :])
ax.set_xlabel("Time [tick]")
ax.set_ylabel("Voltage [ADC]")
ax.set_title(f"Chan. {idxChan}", fontsize = 20)
plt.show()
Su suggerimento di Valerio, provo a studiare la differenza tra punti consecutivi di una certa waveform
myDiff = np.abs(np.diff(waveformCrop_New[0,0,2:2+512], prepend=0))
for i, v in enumerate(zip(waveformCrop_New[0,0,2:2+512], myDiff)):
print(f"Idx: {i}\t wf: {v[0]}\t diff: {v[1]}")
if i==100: break
Idx: 0 wf: 235015678 diff: 235015678 Idx: 1 wf: 235015680 diff: 2 Idx: 2 wf: 234819074 diff: 196606 Idx: 3 wf: 234688003 diff: 131071 Idx: 4 wf: 234884607 diff: 196604 Idx: 5 wf: 234950144 diff: 65537 Idx: 6 wf: 234884604 diff: 65540 Idx: 7 wf: 234753534 diff: 131070 Idx: 8 wf: 234622459 diff: 131075 Idx: 9 wf: 234688001 diff: 65542 Idx: 10 wf: 234491392 diff: 196609 Idx: 11 wf: 234556929 diff: 65537 Idx: 12 wf: 234687998 diff: 131069 Idx: 13 wf: 234687997 diff: 1 Idx: 14 wf: 234687998 diff: 1 Idx: 15 wf: 234884610 diff: 196612 Idx: 16 wf: 235015675 diff: 131065 Idx: 17 wf: 234556929 diff: 458746 Idx: 18 wf: 234884608 diff: 327679 Idx: 19 wf: 234884609 diff: 1 Idx: 20 wf: 234753536 diff: 131073 Idx: 21 wf: 234819071 diff: 65535 Idx: 22 wf: 234753535 diff: 65536 Idx: 23 wf: 234819069 diff: 65534 Idx: 24 wf: 234753534 diff: 65535 Idx: 25 wf: 234688001 diff: 65533 Idx: 26 wf: 234556924 diff: 131077 Idx: 27 wf: 234884609 diff: 327685 Idx: 28 wf: 234688000 diff: 196609 Idx: 29 wf: 234819072 diff: 131072 Idx: 30 wf: 234687997 diff: 131075 Idx: 31 wf: 234491390 diff: 196607 Idx: 32 wf: 234687998 diff: 196608 Idx: 33 wf: 234753536 diff: 65538 Idx: 34 wf: 234819074 diff: 65538 Idx: 35 wf: 235081217 diff: 262143 Idx: 36 wf: 234950146 diff: 131071 Idx: 37 wf: 234753534 diff: 196612 Idx: 38 wf: 234950144 diff: 196610 Idx: 39 wf: 234556922 diff: 393222 Idx: 40 wf: 234622466 diff: 65544 Idx: 41 wf: 234753529 diff: 131063 Idx: 42 wf: 234950143 diff: 196614 Idx: 43 wf: 234556924 diff: 393219 Idx: 44 wf: 234753535 diff: 196611 Idx: 45 wf: 234753533 diff: 2 Idx: 46 wf: 235212290 diff: 458757 Idx: 47 wf: 234753537 diff: 458753 Idx: 48 wf: 234753534 diff: 3 Idx: 49 wf: 234753534 diff: 0 Idx: 50 wf: 234950144 diff: 196610 Idx: 51 wf: 234688000 diff: 262144 Idx: 52 wf: 234819074 diff: 131074 Idx: 53 wf: 234819074 diff: 0 Idx: 54 wf: 234819074 diff: 0 Idx: 55 wf: 234819073 diff: 1 Idx: 56 wf: 234622467 diff: 196606 Idx: 57 wf: 234622465 diff: 2 Idx: 58 wf: 234950145 diff: 327680 Idx: 59 wf: 234622463 diff: 327682 Idx: 60 wf: 235081216 diff: 458753 Idx: 61 wf: 235212288 diff: 131072 Idx: 62 wf: 234819075 diff: 393213 Idx: 63 wf: 234950142 diff: 131067 Idx: 64 wf: 234687997 diff: 262145 Idx: 65 wf: 234753534 diff: 65537 Idx: 66 wf: 234884608 diff: 131074 Idx: 67 wf: 234753535 diff: 131073 Idx: 68 wf: 234753533 diff: 2 Idx: 69 wf: 235081218 diff: 327685 Idx: 70 wf: 235015680 diff: 65538 Idx: 71 wf: 234753534 diff: 262146 Idx: 72 wf: 234950148 diff: 196614 Idx: 73 wf: 234819071 diff: 131077 Idx: 74 wf: 234950143 diff: 131072 Idx: 75 wf: 235015680 diff: 65537 Idx: 76 wf: 234491389 diff: 524291 Idx: 77 wf: 234950145 diff: 458756 Idx: 78 wf: 234884608 diff: 65537 Idx: 79 wf: 234687998 diff: 196610 Idx: 80 wf: 235015684 diff: 327686 Idx: 81 wf: 234491393 diff: 524291 Idx: 82 wf: 234884609 diff: 393216 Idx: 83 wf: 234753534 diff: 131075 Idx: 84 wf: 234687997 diff: 65537 Idx: 85 wf: 234819072 diff: 131075 Idx: 86 wf: 234622464 diff: 196608 Idx: 87 wf: 234884606 diff: 262142 Idx: 88 wf: 234884608 diff: 2 Idx: 89 wf: 234753534 diff: 131074 Idx: 90 wf: 234950146 diff: 196612 Idx: 91 wf: 234819073 diff: 131073 Idx: 92 wf: 235015680 diff: 196607 Idx: 93 wf: 235015683 diff: 3 Idx: 94 wf: 234819073 diff: 196610 Idx: 95 wf: 234688004 diff: 131069 Idx: 96 wf: 234687997 diff: 7 Idx: 97 wf: 234622461 diff: 65536 Idx: 98 wf: 234950141 diff: 327680 Idx: 99 wf: 234884609 diff: 65532 Idx: 100 wf: 234950147 diff: 65538
E si può osservare come a volte il salto sia di poche unità, mentre altre volte, ci sia anche un multiplo di $2^{16}$
v = []
for i in range(6):
a = 2**16 * i
print(a)
v.append(a)
0 65536 131072 196608 262144 327680
65536+131072
196608
fig, ax = plt.subplots()
ax.hist(myDiff, bins = 1000)
ax.set_yscale("log")
plt.show()
fig, ax = plt.subplots()
h, bins = np.histogram(myDiff, bins = 1000, range = (1e5, 7e5))
binc = bins[:-1] + (bins[1] - bins[0])/2
ax.plot(binc, h, ds = "steps-mid", c = "tab:green")
ax.set_yscale("log")
plt.show()
print(binc[h > 0])
[130900. 196300. 196900. 262300. 327700. 393100. 458500. 524500. 589900. 655300.]
for s1 in v:
for s2 in v:
print(f"{s1+s2}\t", end = "")
print()
0 65536 131072 196608 262144 327680 65536 131072 196608 262144 327680 393216 131072 196608 262144 327680 393216 458752 196608 262144 327680 393216 458752 524288 262144 327680 393216 458752 524288 589824 327680 393216 458752 524288 589824 655360
Notiamo che riesco a ricostruire i "salti" come multipli di $2^{16}$, rendendo il tutto a bit puzzling. Nel senso, facendo il diff c'è una differenza di qualche unità, come chiaramente ci si aspetta, a cui occasionalmente va sommato un certo multiplo di $2^{16}$.
Effettuo quindi un istogramma chiaramente non visualizzabile, ma per verificare che i centri seguano quanto mi aspetto...
# fig, ax = plt.subplots()
h, bins = np.histogram(myDiff, bins = 10000000,)
binc = bins[:-1] + (bins[1] - bins[0])/2
# ax.plot(binc, h, ds = "steps-mid", c = "tab:green")
# ax.set_yscale("log")
# plt.show()
print(binc[h > 0].astype(int))
[ 11 65534 131056 131079 196602 196625 262148 327670 327694 393216 458738 458762 524284 589830 655352 720875 2162720 235015666]