DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
raw_file_dumper.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2
3import fddetdataformats
5
6import click
7import time
8
9
10@click.command()
11@click.argument('filenames', nargs=-1, type=click.Path(exists=True))
12@click.option('--frame-type', '-t', type=click.Choice(['wibeth','daphne','tdeeth'], case_sensitive=False), default='wibeth', help="Frame type for decoding")
13@click.option('--print-headers', is_flag=True, help="Print Frame headers")
14
15def main(filenames, frame_type, print_headers):
16
17 frame_size = 0
18 if frame_type == 'wibeth':
19 frame_size = fddetdataformats.WIBEthFrame.sizeof()
20 elif frame_type == 'tdeeth':
21 frame_size = fddetdataformats.TDEEthFrame.sizeof()
22 elif frame_type == 'daphne':
23 frame_size = fddetdataformats.DAPHNEFrame.sizeof()
24
25 for filename in filenames:
26 with open(filename, 'rb') as ff:
27 frame_counter = 0
28 first_timestamp = -1
29 last_timestamp = -1
30 while True: # Loop over frames in file
31 frame = ff.read(frame_size)
32 if not frame:
33 break
34 frame_counter += 1
35
36 if frame_type == 'wibeth':
37 wf = fddetdataformats.WIBEthFrame(frame)
38 timestamp = wf.get_timestamp()
39 if first_timestamp == -1 or timestamp < first_timestamp:
40 first_timestamp = timestamp
41 if last_timestamp == -1 or timestamp > last_timestamp:
42 last_timestamp = timestamp
43
44 #print header info
45 if print_headers:
46 print('\n\t==== WIBETH HEADER ====')
47 print_header(wf,prefix='\t\t')
48 if frame_type == 'tdeeth':
49 tf = fddetdataformats.TDEEthFrame(frame)
50 timestamp = tf.get_timestamp()
51
52 if first_timestamp == -1 or timestamp < first_timestamp:
53 first_timestamp = timestamp
54 if last_timestamp == -1 or timestamp > last_timestamp:
55 last_timestamp = timestamp
56
57 #print header info
58 if print_headers:
59 print('\n\t==== TDE ETH HEADER PRINT NOT SUPPORTED ====')
60 if frame_type == 'daphne':
61 df = fddetdataformats.DAPHNEFrame(frame)
62 timestamp = df.get_timestamp()
63
64 if first_timestamp == -1 or timestamp < first_timestamp:
65 first_timestamp = timestamp
66 if last_timestamp == -1 or timestamp > last_timestamp:
67 last_timestamp = timestamp
68
69 #print header info
70 if print_headers:
71 print('\n\t==== DAPHNE HEADER PRINT NOT SUPPORTED ====')
72
73
74 print(f'\n==== FILE {filename} SUMMARY ====')
75 print(f'{frame_counter} frames, first timestamp {first_timestamp}, last timestamp {last_timestamp}')
76
77 #end file loop
78 print(f'Processed all requested frames')
79
80
81if __name__ == '__main__':
82 main()
main(filenames, frame_type, print_headers)