Belle II Software  release-05-01-25
RawHeader_latest.cc
1 //+
2 // File : RawHeader_latest.cc
3 // Description : Module to handle RawHeader_latest attached to raw data from COPPER
4 //
5 // Author : Satoru Yamada, IPNS, KEK
6 // Date : 2 - Aug - 2013
7 //-
8 
9 #include <rawdata/dataobjects/RawHeader_latest.h>
10 
11 
12 using namespace Belle2;
13 
14 //ClassImp(RawHeader_latest);
15 
17 {
18  m_buffer = NULL;
19  // initialize();
20  // cout << "RawHeader_latest NULL constructor" << endl;
21 }
22 
24 {
25  m_buffer = buffer;
26 }
27 
29 {
30 }
31 
32 
33 // int RawHeader_latest::AddNodeInfo(int node_id)
34 // {
35 // CheckSetBuffer();
36 // // When the number of total nodes exceeds NUM_MAX_NODES
37 // if (GetNumNodes() >= NUM_MAX_NODES) {
38 // m_buffer[ POS_NUM_NODES ]++;
39 // return -1;
40 // }
41 
42 // m_buffer[ POS_NODES_1 + m_buffer[ POS_NUM_NODES ] ] = node_id;
43 // m_buffer[ POS_NUM_NODES ]++;
44 // return 0;
45 // }
46 
47 // int RawHeader_latest::GetNodeInfo(int node_no, int* node_id)
48 // {
49 // CheckGetBuffer();
50 // if (node_no >= GetNumNodes()) {
51 // return -1;
52 // }
53 // *node_id = m_buffer[ POS_NODES_1 + node_no ];
54 
55 // return 0;
56 // }
57 
58 
59 
60 
62 {
63 
64  // # of words
65  if (buf[ POS_NWORDS ] > 2.5e7 || buf[ POS_NWORDS ] < RAWHEADER_NWORDS) {
66  char err_buf[500];
67  sprintf(err_buf, "data size error %d words. Exiting... : %s %s %d\n",
68  buf[ POS_NWORDS ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
69  printf("%s", err_buf); fflush(stdout);
70  B2FATAL(err_buf);
71  }
72 
73  // # of words in this block
74  if ((buf[ POS_VERSION_HDRNWORDS ] & HDR_NWORDS_MASK) != RAWHEADER_NWORDS) {
75  char err_buf[500];
76  sprintf(err_buf, "Invalid header size %d words should be %d. Exiting... : %s %s %d\n",
77  buf[ buf[ POS_VERSION_HDRNWORDS ] & HDR_NWORDS_MASK ],
78  RAWHEADER_NWORDS, __FILE__, __PRETTY_FUNCTION__, __LINE__);
79  printf("%s", err_buf); fflush(stdout);
80  B2FATAL(err_buf);
81  }
82 
83  // exp. run #
84 
85  // utime( 2010 1/1 - 2050 1/1 )
86  if ((unsigned int)(buf[ POS_TTUTIME ]) < (unsigned int)0x4b3cbc70 ||
87  (unsigned int)0x9679f770 < (unsigned int)(buf[ POS_TTUTIME ])) {
88  char err_buf[500];
89  sprintf(err_buf, "Invalid utime %d . Exiting...: %s %s %d\n",
90  buf[ POS_TTUTIME ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
91  printf("%s", err_buf); fflush(stdout);
92  B2FATAL(err_buf);
93  }
94 
95  // truncation mask
96 
97  // offset
98  if (buf[ POS_OFFSET_1ST_FINESSE ] < RAWHEADER_NWORDS) {
99  char err_buf[500];
100  sprintf(err_buf, "Invalid data offset for 1st finesse buffer(%d). Exiting...: %s %s %d\n",
101  buf[ POS_OFFSET_1ST_FINESSE ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
102  printf("%s", err_buf); fflush(stdout);
103  B2FATAL(err_buf);
104  }
105 
106  if (buf[ POS_OFFSET_2ND_FINESSE ] < buf[ POS_OFFSET_1ST_FINESSE ]) {
107  char err_buf[500];
108  sprintf(err_buf, "Invalid data offset for 2nd finesse buffer(%d). Exiting...: %s %s %d\n",
109  buf[ POS_OFFSET_2ND_FINESSE ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
110  printf("%s", err_buf); fflush(stdout);
111  B2FATAL(err_buf);
112  }
113 
114  if (buf[ POS_OFFSET_3RD_FINESSE ] < buf[ POS_OFFSET_2ND_FINESSE ]) {
115  char err_buf[500];
116  sprintf(err_buf, "Invalid data offset for 3rd finesse buffer(%d). Exiting...: %s %s %d\n",
117  buf[ POS_OFFSET_3RD_FINESSE ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
118  printf("%s", err_buf); fflush(stdout);
119  B2FATAL(err_buf);
120  }
121 
122  if (buf[ POS_OFFSET_4TH_FINESSE ] < buf[ POS_OFFSET_3RD_FINESSE ] ||
123  buf[ POS_OFFSET_4TH_FINESSE ] > buf[ POS_NWORDS ]) {
124  char err_buf[500];
125  sprintf(err_buf, "Invalid data offset for 4th finesse buffer(%d). Exiting...: %s %s %d\n",
126  buf[ POS_OFFSET_4TH_FINESSE ], __FILE__, __PRETTY_FUNCTION__, __LINE__);
127  printf("%s", err_buf); fflush(stdout);
128  B2FATAL(err_buf);
129  }
130 
131  return;
132 
133 
134 }
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::RawHeader_latest::RawHeader_latest
RawHeader_latest()
Default constructor.
Definition: RawHeader_latest.cc:16
Belle2::RawHeader_latest::~RawHeader_latest
~RawHeader_latest()
Destructor.
Definition: RawHeader_latest.cc:28
Belle2::RawHeader_latest::m_buffer
int * m_buffer
do not record buffer ( RawCOPPER includes buffer of RawHeader_latest and RawTrailer )
Definition: RawHeader_latest.h:236
Belle2::RawHeader_latest::CheckHeader
void CheckHeader(int *buf)
Get magic word to check the data corruption.
Definition: RawHeader_latest.cc:61