otsdaq-mu2e-stm  5.02.01
formEvents.hh
1 
5 #ifndef FORMEVENTS_hh
6 #define FORMEVENTS_hh
7 
8 // Hex reader
9 #include "STMDAQ-TestBeam/utils/dataVars.hh"
10 
11 // Logger
12 #include "STMDAQ-TestBeam/utils/Logger.hh"
13 
14 // UDPsocket
15 #include "STMDAQ-TestBeam/utils/UDPsocket.hh"
16 
17 // Circular buffer queue
18 #include "STMDAQ-TestBeam/utils/queue.hh"
19 
20 #include<iostream>
21 #include<fstream>
22 #include<vector>
23 
24 class formEvents {
25 
26 private:
27 
28 public:
29 
30  // Standard constructor - shouldn't be used
31  formEvents(uint64_t buffer_len);
32 
33  // Signal the first event
34  bool first_event[CHNUM] = {true,true};
35 
36  // The event counter
37  uint64_t event_counter[CHNUM] = {};
38 
39  // The current event number
40  uint64_t current_event_num[CHNUM] = {};
41 
42  // The current event length (ADC data only)
43  uint16_t current_event_len[CHNUM] = {};
44 
45  // The current event size (including headers)
46  uint64_t current_event_size[CHNUM] = {};
47 
48  // The accumulated event size (including headers)
49  uint64_t acc_event_size[CHNUM] = {};
50 
51  // The current event data
52  int16_t *current_event_data[CHNUM] = {new int16_t [UDPsocket::MAX_UDP_LEN] (),
53  new int16_t [UDPsocket::MAX_UDP_LEN] ()};
54 
55  // All complete event data in the loop
56  // int16_t* event_data[CHNUM] = {new int16_t [queue_buffer::RING_BUFFER_LEN] (),
57  // new int16_t [queue_buffer::RING_BUFFER_LEN] ()};
58  int16_t* event_data[CHNUM];
59 
60  // Store the current event window tag
61  uint64_t event_number = 0;
62  uint64_t event_count[CHNUM] = {};
63  uint64_t on_spill_count[CHNUM] = {};
64  uint64_t off_spill_count[CHNUM] = {};
65 
66  // Get events from packet data
67  uint64_t get_events(int chan, uint64_t data_len,
68  int16_t* &data,
69  queue_buffer *pushq);
70 
71  // Store the complete event into the buffer
72  void store_event(int chan);
73 
74 
75 };
76 
77 #endif
Definition: data.hh:4