Belle II Software  release-05-02-19
CDCUnpackerModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Makoto Uchida *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef CDCUnpackerModule_H
12 #define CDCUnpackerModule_H
13 
14 #include <framework/core/Module.h>
15 #include <framework/datastore/StoreArray.h>
16 #include <framework/database/DBArray.h>
17 #include <framework/database/DBObjPtr.h>
18 #include <cdc/dataobjects/CDCHit.h>
19 #include <cdc/dataobjects/CDCRawHit.h>
20 #include <cdc/dataobjects/CDCRawHitWaveForm.h>
21 #include <cdc/dataobjects/WireID.h>
22 #include <cdc/dbobjects/CDCChannelMap.h>
23 #include <cdc/dbobjects/CDCADCDeltaPedestals.h>
24 #include <rawdata/dataobjects/RawCDC.h>
25 
26 namespace Belle2 {
32  namespace CDC {
33 
38  class CDCUnpackerModule : public Module {
39 
40  public:
45 
49  virtual ~CDCUnpackerModule();
50 
54  void initialize() override;
55 
60  void beginRun() override;
61 
67  void event() override;
68 
72  void endRun() override;
73 
77  void terminate() override;
78 
82  void setCDCPacketHeader(int* buf)
83  {
84 
85  if ((buf[0] & 0xff000000) == 0x22000000) { // raw data mode.
86  m_dataType = 1;
87  } else if ((buf[0] & 0xff000000) == 0x20000000) { // suppressed data mode.
88  m_dataType = 2;
89  } else {
90  B2ERROR("Undefined data type");
91  }
92 
93  m_version = ((buf[0] & 0xff0000) >> 16); // Always zero.
94  m_boardId = (buf[0] & 0xffff);
95  m_triggerTime = ((buf[1] & 0xffff0000) >> 16);
96  m_dataLength = (buf[1] & 0xffff);
97  m_triggerNumber = buf[2];
98 
99  }
100 
105  int getDataType()
106  {
107  return m_dataType;
108  }
109 
114  int getTriggerTime()
115  {
116  return m_triggerTime;
117  }
118 
123  int getDataLength()
124  {
125  return m_dataLength;
126  }
127 
132  int getTriggerNumber()
133  {
134  return m_triggerNumber;
135  }
136 
137 
142  int getBoardId()
143  {
144  return m_boardId;
145  }
146 
150  void loadMap();
151 
155  void setADCPedestal();
156 
157 
161  WireID getWireID(int iBoard, int iCh) const;
162 
168  void printBuffer(int* buf, int nwords);
169 
174  bool isValidBoardChannel(WireID wireId)
175  {
176  if (wireId.getEWire() == 65535) {
177  return false;
178  } else {
179  return true;
180  }
181  }
182  private:
183 
187  int m_dataType;
188 
192  int m_version;
193 
197  int m_boardId;
198 
202  int m_triggerTime;
203 
207  int m_dataLength;
208 
212  int m_triggerNumber;
213 
218 
223  bool m_enablePrintOut;
224 
225 
229  std::string m_rawCDCName;
230 
234  std::string m_cdcRawHitName;
235 
239  std::string m_cdcRawHitWaveFormName;
240 
244  std::string m_cdcHitName;
245 
249  std::string m_xmlMapFileName;
250 
254  std::vector<unsigned short> m_buffer;
255 
260  WireID m_map[300][48];
261 
265  int m_fadcThreshold;
266 
270  int m_tdcOffset;
271 
275  int m_tdcAuxOffset;
279  int m_boardIDTrig;
280 
284  int m_channelTrig;
285 
291 
296  bool m_enableDatabase;
297 
302  bool m_enable2ndHit;
303 
308  // DBArray<CDCChannelMap> m_channelMapFromDB;
309 
314 
318  bool m_pedestalSubtraction = true;
323 
328 
333 
338 
339 
343  bool m_dataLengthError;
344 
348  bool m_dataSizeError;
349 
350 
351  };//end class declaration
352 
353 
354  } //end CDC namespace;
356 } // end namespace Belle2
357 
358 #endif // CDCUnpackerModule_H
359 
Belle2::CDC::CDCUnpackerModule::m_adcPedestalFromDB
DBObjPtr< CDCADCDeltaPedestals > * m_adcPedestalFromDB
ADC delta pedestal.
Definition: CDCUnpackerModule.h:321
Belle2::CDC::CDCUnpackerModule::event
void event() override
Event action (main routine).
Definition: CDCUnpackerModule.cc:107
Belle2::WireID
Class to identify a wire inside the CDC.
Definition: WireID.h:44
Belle2::CDC::CDCUnpackerModule::m_CDCRawHitWaveForms
StoreArray< CDCRawHitWaveForm > m_CDCRawHitWaveForms
Raw hit waveforms.
Definition: CDCUnpackerModule.h:335
Belle2::CDC::CDCUnpackerModule::m_channelMapFromDB
DBArray< CDCChannelMap > * m_channelMapFromDB
Channel map retrieved from DB.
Definition: CDCUnpackerModule.h:315
Belle2::CDC::CDCUnpackerModule::m_pedestalSubtraction
bool m_pedestalSubtraction
Whether pedestal is subtracted (true) or not (false).
Definition: CDCUnpackerModule.h:326
Belle2::CDC::CDCUnpackerModule::m_channelTrig
int m_channelTrig
Channel for the trigger.
Definition: CDCUnpackerModule.h:292
Belle2::CDC::CDCUnpackerModule::getWireID
WireID getWireID(int iBoard, int iCh) const
Getter of Wire ID.
Definition: CDCUnpackerModule.cc:465
Belle2::CDC::CDCUnpackerModule::m_boardIDTrig
int m_boardIDTrig
Board ID for the trigger.
Definition: CDCUnpackerModule.h:287
Belle2::CDC::CDCUnpackerModule::m_version
int m_version
Format version.
Definition: CDCUnpackerModule.h:200
Belle2::CDC::CDCUnpackerModule::getDataType
int getDataType()
Getter for CDC data mode.
Definition: CDCUnpackerModule.h:113
Belle2::CDC::CDCUnpackerModule::endRun
void endRun() override
End run action.
Definition: CDCUnpackerModule.cc:447
Belle2::WireID::getEWire
unsigned short getEWire() const
Getter for encoded wire number.
Definition: WireID.h:164
Belle2::CDC::CDCUnpackerModule::m_buffer
std::vector< unsigned short > m_buffer
Short ward buffer of CDC event block.
Definition: CDCUnpackerModule.h:262
Belle2::DBArray
Class for accessing arrays of objects in the database.
Definition: DBArray.h:36
Belle2::CDC::CDCUnpackerModule::setADCPedestal
void setADCPedestal()
Set DBobject of ADC delta pedestal.
Definition: CDCUnpackerModule.cc:510
Belle2::CDC::CDCUnpackerModule::m_tdcOffset
int m_tdcOffset
TDC offset (nsec).
Definition: CDCUnpackerModule.h:278
Belle2::CDC::CDCUnpackerModule::printBuffer
void printBuffer(int *buf, int nwords)
Print out the CDC data block in hex.
Definition: CDCUnpackerModule.cc:521
Belle2::CDC::CDCUnpackerModule::m_rawCDCName
std::string m_rawCDCName
Name of the RawCDC dataobject (suppressed mode).
Definition: CDCUnpackerModule.h:237
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::CDC::CDCUnpackerModule::m_dataLengthError
bool m_dataLengthError
True if data length error has been already reported.
Definition: CDCUnpackerModule.h:351
Belle2::CDC::CDCUnpackerModule::terminate
void terminate() override
Termination action.
Definition: CDCUnpackerModule.cc:454
Belle2::CDC::CDCUnpackerModule::m_enableDatabase
bool m_enableDatabase
Enable/Disable to read the channel map from the database.
Definition: CDCUnpackerModule.h:304
Belle2::CDC::CDCUnpackerModule::m_enableStoreCDCRawHit
bool m_enableStoreCDCRawHit
Enable/Disable to store CDCRawHit.
Definition: CDCUnpackerModule.h:225
Belle2::CDC::CDCUnpackerModule::~CDCUnpackerModule
virtual ~CDCUnpackerModule()
Destructor of the module.
Definition: CDCUnpackerModule.cc:66
Belle2::CDC::CDCUnpackerModule::m_enable2ndHit
bool m_enable2ndHit
Enable/Disable to 2nd hit output.
Definition: CDCUnpackerModule.h:310
Belle2::CDC::CDCUnpackerModule::m_map
WireID m_map[300][48]
Assignment map of FE board channel to the cell.
Definition: CDCUnpackerModule.h:268
Belle2::CDC::CDCUnpackerModule::m_enablePrintOut
bool m_enablePrintOut
Enable/Disable to print out the data to the terminal.
Definition: CDCUnpackerModule.h:231
Belle2::CDC::CDCUnpackerModule::getTriggerNumber
int getTriggerNumber()
Getter for trigger number.
Definition: CDCUnpackerModule.h:140
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CDC::CDCUnpackerModule::CDCUnpackerModule
CDCUnpackerModule()
Constructor of the module.
Definition: CDCUnpackerModule.cc:40
Belle2::CDC::CDCUnpackerModule::m_tdcAuxOffset
int m_tdcAuxOffset
TDC auxiliary offset (nsec).
Definition: CDCUnpackerModule.h:283
Belle2::CDC::CDCUnpackerModule::m_CDCRawHits
StoreArray< CDCRawHit > m_CDCRawHits
Raw hits.
Definition: CDCUnpackerModule.h:340
Belle2::CDC::CDCUnpackerModule::m_fadcThreshold
int m_fadcThreshold
FADC threshold.
Definition: CDCUnpackerModule.h:273
Belle2::CDC::CDCUnpackerModule::getTriggerTime
int getTriggerTime()
Getter for trigger time in nsec.
Definition: CDCUnpackerModule.h:122
Belle2::CDC::CDCUnpackerModule::m_subtractTrigTiming
bool m_subtractTrigTiming
Enable/Disable to subtract the trigger timing from TDCs.
Definition: CDCUnpackerModule.h:298
Belle2::CDC::CDCUnpackerModule::loadMap
void loadMap()
Load FE channel to cell ID map.
Definition: CDCUnpackerModule.cc:470
Belle2::CDC::CDCUnpackerModule::m_cdcRawHitName
std::string m_cdcRawHitName
Name of the CDCRawHit dataobject (suppressed mode).
Definition: CDCUnpackerModule.h:242
Belle2::CDC::CDCUnpackerModule::beginRun
void beginRun() override
Begin run action.
Definition: CDCUnpackerModule.cc:96
Belle2::CDC::CDCUnpackerModule::isValidBoardChannel
bool isValidBoardChannel(WireID wireId)
Check if the hit wire is valid or not.
Definition: CDCUnpackerModule.h:182
Belle2::CDC::CDCUnpackerModule::m_cdcRawHitWaveFormName
std::string m_cdcRawHitWaveFormName
Name of the CDCRawHit dataobject (raw data mode).
Definition: CDCUnpackerModule.h:247
Belle2::CDC::CDCUnpackerModule::m_dataSizeError
bool m_dataSizeError
True if data size error between CDCFE and COPPER has been already reported.
Definition: CDCUnpackerModule.h:356
Belle2::CDC::CDCUnpackerModule::m_dataType
int m_dataType
Data type of CDC data block.
Definition: CDCUnpackerModule.h:195
Belle2::CDC::CDCUnpackerModule::m_boardId
int m_boardId
Front end board ID.
Definition: CDCUnpackerModule.h:205
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::CDC::CDCUnpackerModule::m_triggerNumber
int m_triggerNumber
Trigger number.
Definition: CDCUnpackerModule.h:220
Belle2::CDC::CDCUnpackerModule::initialize
void initialize() override
Initializes the Module.
Definition: CDCUnpackerModule.cc:70
Belle2::CDC::CDCUnpackerModule::m_xmlMapFileName
std::string m_xmlMapFileName
Name of the assignment map of FE board channel to the cell.
Definition: CDCUnpackerModule.h:257
Belle2::CDC::CDCUnpackerModule::m_dataLength
int m_dataLength
Data length of the CDC data block (in bytes).
Definition: CDCUnpackerModule.h:215
Belle2::CDC::CDCUnpackerModule::m_cdcHitName
std::string m_cdcHitName
Tree name of the CDCHit object.
Definition: CDCUnpackerModule.h:252
Belle2::CDC::CDCUnpackerModule::getDataLength
int getDataLength()
Getter for data length in byte.
Definition: CDCUnpackerModule.h:131
Belle2::CDC::CDCUnpackerModule::m_CDCHits
StoreArray< CDCHit > m_CDCHits
CDC hits.
Definition: CDCUnpackerModule.h:345
Belle2::CDC::CDCUnpackerModule::getBoardId
int getBoardId()
Getter for FE board ID.
Definition: CDCUnpackerModule.h:150
Belle2::CDC::CDCUnpackerModule::m_rawCDCs
StoreArray< RawCDC > m_rawCDCs
Input array for CDC Raw.
Definition: CDCUnpackerModule.h:330
Belle2::CDC::CDCUnpackerModule::setCDCPacketHeader
void setCDCPacketHeader(int *buf)
Set CDC Packet header.
Definition: CDCUnpackerModule.h:90
Belle2::CDC::CDCUnpackerModule::m_triggerTime
int m_triggerTime
Trigger time.
Definition: CDCUnpackerModule.h:210