Belle II Software  release-05-01-25
DataStorePackage.cc
1 #include "daq/storage/modules/DataStorePackage.h"
2 #include "daq/storage/ONSENBinData.h"
3 
4 #include <framework/logging/Logger.h>
5 
6 #include <framework/datastore/StoreArray.h>
7 #include <rawdata/dataobjects/RawPXD.h>
8 
9 #include <cstring>
10 
11 using namespace Belle2;
12 
13 bool DataStorePackage::restore()
14 {
15  static int count = 0;
16  //(m_sndhdrary.appendNew())->SetBuffer(m_data.getBuffer());
17  int nboard = m_data.getNBoard();
18  if (m_eb2 == 0 && nboard == 1) {
19  m_data_hlt.setBuffer(m_data.getBuffer());
20  } else if (m_eb2 > 0 || nboard > 1) {
21  m_data_hlt.setBuffer(m_data.getBody());
22  }
23 
24  if (m_data_hlt.getBuffer() == NULL || m_data_hlt.getTrailerMagic() != BinData::TRAILER_MAGIC) {
25  B2FATAL("Bad tarailer magic for HLT = " << m_data_hlt.getTrailerMagic()
26  << " count = " << count);
27  }
28  EvtMessage* msg = new EvtMessage((char*)m_data_hlt.getBody());
29  if (msg->type() == MSG_TERMINATE) {
30  B2INFO("Got Termination message");
31  delete msg;
32  return false;
33  }
34  //B2INFO("nbyte : " << m_data_hlt.getBody()[0]);
35  m_streamer->restoreDataStore(msg);
36  delete msg;
37  if (nboard > 1) {
38  unsigned int offset = m_data_hlt.getWordSize() + m_data.getHeaderWordSize();
39  for (unsigned int i = 0; i < nboard - 1; i++) {
40  m_data_pxd.setBuffer(m_data.getBuffer() + offset);
41  offset += m_data_pxd.getWordSize();
42  if (m_data_pxd.getBody()[0] != ONSENBinData::MAGIC) {
43  B2FATAL("Bad ONSEN magic for PXD = " << m_data_pxd.getTrailerMagic());
44  return false;
45  } else if (m_data_pxd.getTrailerMagic() != BinData::TRAILER_MAGIC) {
46  B2FATAL("Bad tarailer magic for PXD = " << m_data_pxd.getTrailerMagic());
47  return false;
48  }
49  if (m_data_pxd.getBuffer() != NULL) {
50  m_rawpxdary.appendNew((int*)m_data_pxd.getBody(), m_data_pxd.getBodyByteSize());
51  //(m_sndhdrary.appendNew())->SetBuffer(m_data_pxd.getBuffer());
52  }
53  }
54  } else {
55  m_data_pxd.setBuffer(NULL);
56  }
57  return true;
58 }
59 
Belle2::EvtMessage::type
ERecordType type() const
Get record type.
Definition: EvtMessage.cc:115
Belle2::EvtMessage
Class to manage streamed object.
Definition: EvtMessage.h:60
Belle2::DataStoreStreamer::restoreDataStore
int restoreDataStore(EvtMessage *msg)
Restore DataStore objects from EvtMessage.
Definition: DataStoreStreamer.cc:207
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19