Miles Lucas - Iowa State University
This code serves as a simple parsing tool for the PSEC data created by Dr. Eric Oberla's PSEC acdc-daq.
- Python 3.4+
- numpy
- matplotlib (only for plotting)
Eric's data output is laid out in a text file with the following format
| 0 | 1 | 2-31 | 32 | k*32 + 1 | k*32 + (2-31) | k*32 + 32 | |
|---|---|---|---|---|---|---|---|
| 0 to 255 | Count | 0 | Ped data | 0 | 0 | Ped data | 0 |
| 256 to (n+1) x 256 - 1 | Count | Wraparound | Data | Metadata | Wraparound | Data | Metadata |
Where n is the event number and k is the board number
The metadata is stored in the 33rd column of each event and has the following values
| Value | Name | Description |
|---|---|---|
| 0 | count | |
| 1 | aa | |
| 2 | time | |
| 3 | datetime | |
| 4 | events | |
| 7 | bin count rise | |
| 8 | self trig settings 2 | |
| 9 | sys coinc width | |
| 10 | coinc num chips | |
| 11 | coinc num chans | |
| 12 | self trig settings | |
| 13 | trig en | |
| 14 | trig wait for sys | |
| 15 | trig rate only | |
| 16 | trig sign | |
| 17 | use sma trig in | |
| 18 | use coinc settings | |
| 19 | use trig valid as reset | |
| 20 | coinc window | |
| 21 | reg self trig | |
| 22 | counts of sys no local | |
| 23 | sys trig count | |
| 24 | resets from firmw | |
| 25 | firmware version | |
| 26 | self trig mask | |
| 27 | dig timestamp lo | |
| 28 | dig timestamp mid | |
| 29 | dig timestamp hi | |
| 30 | dig event count | |
| 31 | event count | |
| 32 | timestamp hi | |
| 33 | timestamp mid | |
| 34 | timestamp lo | |
| 35 | CC bin count | |
| 36 | CC event count | |
| 37 | CC timestamp lo | |
| 38 | CC timestamp mid | |
| 39 | CC timestamp hi | |
| 40-44 | RO count | RO count for each chip |
| 45-49 | RO target count | for each chip |
| 50-54 | vbias | for each chip |
| 55-59 | trigger threshold | for each chip |
| 60-64 | RO DAC value | for each chip |
| 70-99 | self trig scalar | for each ac channel |
| 110 | time from valid to trig | |
| 111 | firmware reset time | |
| 112 | last coinc num chans |
In [1]: import Analysis as ana
In [2]: data = ana.load_data('data/test2.acdc.dat')
In [3]: ccTimeStampLo = data['Meta'].loc[0, 5, 37] # 0th board, 5th event
In [4]: print(ccTimeStampLo)
1617
In [5]: plot = ana.plot_event(data, board=0, event=25, channel=2)