CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalTBTriggerDataUnpacker.cc
Go to the documentation of this file.
4 #include <iostream>
5 
6 using namespace std;
7 
8 // Structure for "old" TriggerData - contains header and trailer
9 //
11  uint32_t cdfHeader[4];
12  uint32_t triggerWord;
13  uint32_t triggerNumber;
14  uint32_t triggerTime_usec;
15  uint32_t triggerTime_base;
16  uint32_t spillNumber;
17  uint32_t runNumber;
18  char runNumberSequenceId[16];
19  uint32_t orbitNumber;
20  uint32_t bunchNumber;
21  uint32_t eventStatus;
22  uint32_t filler1;
23  uint32_t cdfTrailer[2];
24 };
25 
26 // structures for "new" trigger data format - does NOT
27 // contain header or trailer (header size is variable -
28 // either 64 or 128 bits)
29 //
30 typedef struct StandardTrgMsgBlkStruct {
31  uint32_t orbitNumber;
32  uint32_t eventNumber;
33  uint32_t flags_daq_ttype;
34  uint32_t algo_bits_3;
35  uint32_t algo_bits_2;
36  uint32_t algo_bits_1;
37  uint32_t algo_bits_0;
38  uint32_t tech_bits;
39  uint32_t gps_1234;
40  uint32_t gps_5678;
42 
43 typedef struct newExtendedTrgMsgBlkStruct {
44  StandardTrgMsgBlk stdBlock;
45  uint32_t triggerWord;
46  uint32_t triggerTime_usec;
47  uint32_t triggerTime_base;
48  uint32_t spillNumber;
49  uint32_t runNumber;
50  char runNumberSequenceId[16];
51  uint32_t eventStatus;
53 
54 
55 namespace hcaltb {
56 
58 
59  // Use the size to determine which format we have received:
60  //
61  if (raw.size() == 80) { // "old" test beam trigger format
62 
63  const oldTriggerDataFormat *oldtrgblk = (const oldTriggerDataFormat *)(raw.data());
64  htbtd.setStandardData(oldtrgblk->orbitNumber,
65  oldtrgblk->triggerNumber,
66  oldtrgblk->bunchNumber,
67  0, // flags_daq_ttype
68  0, 0, 0, 0, // algo_bits_3->0
69  0, // tech_bits
70  0, 0 // gps_1234, gps_5678
71  );
72 
73  htbtd.setExtendedData(oldtrgblk->triggerWord,
74  oldtrgblk->triggerTime_usec,
75  oldtrgblk->triggerTime_base,
76  oldtrgblk->spillNumber,
77  oldtrgblk->runNumber,
78  oldtrgblk->runNumberSequenceId);
79  }
80  else {
81 
82  const newExtendedTrgMsgBlk *newtrgblk;
83 
84  if (raw.size() == 96) // "new" test beam trigger format,
85  // 64-bit header
86  newtrgblk = (const newExtendedTrgMsgBlk *)(raw.data()+8);
87 
88  else if (raw.size() == 104) // "new" test beam trigger format,
89  // 128-bit header
90  newtrgblk = (const newExtendedTrgMsgBlk *)(raw.data()+16);
91  else {
92  cerr << "HcalTBtdUnpacker.unpack: data of unknown size ";
93  cerr << raw.size() << endl;
94  return;
95  }
96 
97  // get bunch number from the header
98  //
99  const uint32_t *cdflow = (const uint32_t *)raw.data();
100  int bunch_id = (*cdflow)>>20;
101 
102  htbtd.setStandardData(newtrgblk->stdBlock.orbitNumber,
103  newtrgblk->stdBlock.eventNumber,
104  bunch_id,
105  newtrgblk->stdBlock.flags_daq_ttype,
106  newtrgblk->stdBlock.algo_bits_3,
107  newtrgblk->stdBlock.algo_bits_2,
108  newtrgblk->stdBlock.algo_bits_1,
109  newtrgblk->stdBlock.algo_bits_0,
110  newtrgblk->stdBlock.tech_bits,
111  newtrgblk->stdBlock.gps_1234,
112  newtrgblk->stdBlock.gps_5678);
113 
114  htbtd.setExtendedData(newtrgblk->triggerWord,
115  newtrgblk->triggerTime_usec,
116  newtrgblk->triggerTime_base,
117  newtrgblk->spillNumber,
118  newtrgblk->runNumber,
119  newtrgblk->runNumberSequenceId);
120  }
121 
122  }
123 }
124 
StandardTrgMsgBlk stdBlock
void setExtendedData(uint32_t triggerWord, uint32_t triggerTime_usec, uint32_t triggerTime_base, uint32_t spillNumber, uint32_t runNumber, const char *runNumberSequenceId)
struct StandardTrgMsgBlkStruct StandardTrgMsgBlk
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void setStandardData(uint32_t orbitNumber, uint32_t eventNumber, uint16_t bunchNumber, uint32_t flags_daq_ttype, uint32_t algo_bits_3, uint32_t algo_bits_2, uint32_t algo_bits_1, uint32_t algo_bits_0, uint32_t tech_bits, uint32_t gps_1234, uint32_t gps_5678)
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
struct newExtendedTrgMsgBlkStruct newExtendedTrgMsgBlk