CMS 3D CMS Logo

FRDEventMessage.cc
Go to the documentation of this file.
1 
13 
18  : buf_((uint8*)buf),
19  payload_(nullptr),
20  size_(0),
21  version_(0),
22  run_(0),
23  lumi_(0),
24  event_(0),
25  eventSize_(0),
26  paddingSize_(0),
27  adler32_(0),
28  crc32c_(0) {
29  uint32* bufPtr = static_cast<uint32*>(buf);
30  version_ = *bufPtr;
31  // if the version number is rather large, then we assume that the true
32  // version number is one. (In version one of the format, there was
33  // no version number in the data, and the run number appeared first.)
34  if (version_ >= 32) {
35  version_ = 1;
36  }
37 
38  size_ = 0;
39 
40  // version number
41  if (version_ >= 2) {
42  size_ += sizeof(uint32);
43  ++bufPtr;
44  }
45 
46  // run number
47  run_ = *bufPtr;
48  size_ += sizeof(uint32);
49  ++bufPtr;
50 
51  // lumi number
52  if (version_ >= 2) {
53  lumi_ = *bufPtr;
54  size_ += sizeof(uint32);
55  ++bufPtr;
56  }
57 
58  // event number
59  if (version_ == 4) {
60  uint64 eventLow = *bufPtr;
61  size_ += sizeof(uint32);
62  ++bufPtr;
63 
64  uint64 eventHigh = *bufPtr;
65  size_ += sizeof(uint32);
66  ++bufPtr;
67 
68  event_ = (eventHigh << 32) | eventLow;
69 
70  } else {
71  event_ = *bufPtr;
72  size_ += sizeof(uint32);
73  ++bufPtr;
74  }
75 
76  if (version_ >= 3) {
77  // event size
78  eventSize_ = *bufPtr;
79  size_ += sizeof(uint32) + eventSize_;
80  ++bufPtr;
81 
82  if (version_ >= 5) {
83  crc32c_ = *bufPtr;
84  size_ += sizeof(uint32);
85  ++bufPtr;
86  } else {
87  // padding size up to V4
88  paddingSize_ = *bufPtr;
89  size_ += sizeof(uint32) + paddingSize_;
90  ++bufPtr;
91 
92  adler32_ = *bufPtr;
93  size_ += sizeof(uint32);
94  ++bufPtr;
95  }
96  } else {
97  for (int idx = 0; idx < 1024; idx++) {
98  size_ += sizeof(uint32); // FED N size
99  size_ += *bufPtr; // FED N data
100  eventSize_ += *bufPtr;
101  ++bufPtr;
102  }
103  }
104 
105  payload_ = (void*)bufPtr;
106 }
FRDEventMsgView(void *buf)
#define nullptr
unsigned int uint32
Definition: MsgTools.h:13
unsigned long long uint64
Definition: MsgTools.h:14
unsigned char uint8
Definition: MsgTools.h:11
void event_()