Belle II Software  release-05-01-25
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/WireID.h>
19 #include <cdc/dbobjects/CDCChannelMap.h>
20 #include <cdc/dbobjects/CDCADCDeltaPedestals.h>
21 #include <rawdata/dataobjects/RawCDC.h>
22 
23 namespace Belle2 {
29  namespace CDC {
30 
35  class CDCUnpackerModule : public Module {
36 
37  public:
42 
46  virtual ~CDCUnpackerModule();
47 
51  void initialize() override;
52 
57  void beginRun() override;
58 
64  void event() override;
65 
69  void endRun() override;
70 
74  void terminate() override;
75 
79  void setCDCPacketHeader(int* buf)
80  {
81 
82  if ((buf[0] & 0xff000000) == 0x22000000) { // raw data mode.
83  m_dataType = 1;
84  } else if ((buf[0] & 0xff000000) == 0x20000000) { // suppressed data mode.
85  m_dataType = 2;
86  } else {
87  B2ERROR("Undefined data type");
88  }
89 
90  m_version = ((buf[0] & 0xff0000) >> 16); // Always zero.
91  m_boardId = (buf[0] & 0xffff);
92  m_triggerTime = ((buf[1] & 0xffff0000) >> 16);
93  m_dataLength = (buf[1] & 0xffff);
94  m_triggerNumber = buf[2];
95 
96  }
97 
102  int getDataType()
103  {
104  return m_dataType;
105  }
106 
111  int getTriggerTime()
112  {
113  return m_triggerTime;
114  }
115 
120  int getDataLength()
121  {
122  return m_dataLength;
123  }
124 
129  int getTriggerNumber()
130  {
131  return m_triggerNumber;
132  }
133 
134 
139  int getBoardId()
140  {
141  return m_boardId;
142  }
143 
147  void loadMap();
148 
152  void setADCPedestal();
153 
154 
158  WireID getWireID(int iBoard, int iCh) const;
159 
165  void printBuffer(int* buf, int nwords);
166 
171  bool isValidBoardChannel(WireID wireId)
172  {
173  if (wireId.getEWire() == 65535) {
174  return false;
175  } else {
176  return true;
177  }
178  }
179  private:
180 
184  int m_dataType;
185 
189  int m_version;
190 
194  int m_boardId;
195 
199  int m_triggerTime;
200 
204  int m_dataLength;
205 
209  int m_triggerNumber;
210 
215 
220  bool m_enablePrintOut;
221 
222 
226  std::string m_rawCDCName;
227 
231  std::string m_cdcRawHitName;
232 
236  std::string m_cdcRawHitWaveFormName;
237 
241  std::string m_cdcHitName;
242 
246  std::string m_xmlMapFileName;
247 
251  std::string m_relCDCRawHitToCDCHitName;
252 
257  std::string m_relCDCRawHitWFToCDCHitName;
258 
262  std::vector<unsigned short> m_buffer;
263 
268  WireID m_map[300][48];
269 
273  int m_fadcThreshold;
274 
278  int m_tdcOffset;
279 
283  int m_tdcAuxOffset;
287  int m_boardIDTrig;
288 
292  int m_channelTrig;
293 
299 
304  bool m_enableDatabase;
305 
310  bool m_enable2ndHit;
311 
316  // DBArray<CDCChannelMap> m_channelMapFromDB;
317 
322 
326  bool m_pedestalSubtraction = true;
331 
332  };//end class declaration
333 
334 
335  } //end CDC namespace;
337 } // end namespace Belle2
338 
339 #endif // CDCUnpackerModule_H
340 
Belle2::CDC::CDCUnpackerModule::m_adcPedestalFromDB
DBObjPtr< CDCADCDeltaPedestals > * m_adcPedestalFromDB
ADC delta pedestal.
Definition: CDCUnpackerModule.h:329
Belle2::CDC::CDCUnpackerModule::event
void event() override
Event action (main routine).
Definition: CDCUnpackerModule.cc:125
Belle2::WireID
Class to identify a wire inside the CDC.
Definition: WireID.h:44
Belle2::CDC::CDCUnpackerModule::m_channelMapFromDB
DBArray< CDCChannelMap > * m_channelMapFromDB
Channel map retrieved from DB.
Definition: CDCUnpackerModule.h:323
Belle2::CDC::CDCUnpackerModule::m_pedestalSubtraction
bool m_pedestalSubtraction
Whether pedestal is subtracted (true) or not (false).
Definition: CDCUnpackerModule.h:334
Belle2::CDC::CDCUnpackerModule::m_channelTrig
int m_channelTrig
Channel for the trigger.
Definition: CDCUnpackerModule.h:300
Belle2::CDC::CDCUnpackerModule::getWireID
WireID getWireID(int iBoard, int iCh) const
Getter of Wire ID.
Definition: CDCUnpackerModule.cc:481
Belle2::CDC::CDCUnpackerModule::m_boardIDTrig
int m_boardIDTrig
Board ID for the trigger.
Definition: CDCUnpackerModule.h:295
Belle2::CDC::CDCUnpackerModule::m_version
int m_version
Format version.
Definition: CDCUnpackerModule.h:197
Belle2::CDC::CDCUnpackerModule::getDataType
int getDataType()
Getter for CDC data mode.
Definition: CDCUnpackerModule.h:110
Belle2::CDC::CDCUnpackerModule::endRun
void endRun() override
End run action.
Definition: CDCUnpackerModule.cc:463
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:270
Belle2::DBArray
Class for accessing arrays of objects in the database.
Definition: DBArray.h:36
Belle2::CDC::CDCUnpackerModule::m_relCDCRawHitToCDCHitName
std::string m_relCDCRawHitToCDCHitName
Relation name between CDCRawHit and CDCHit.
Definition: CDCUnpackerModule.h:259
Belle2::CDC::CDCUnpackerModule::setADCPedestal
void setADCPedestal()
Set DBobject of ADC delta pedestal.
Definition: CDCUnpackerModule.cc:526
Belle2::CDC::CDCUnpackerModule::m_tdcOffset
int m_tdcOffset
TDC offset (nsec).
Definition: CDCUnpackerModule.h:286
Belle2::CDC::CDCUnpackerModule::printBuffer
void printBuffer(int *buf, int nwords)
Print out the CDC data block in hex.
Definition: CDCUnpackerModule.cc:537
Belle2::CDC::CDCUnpackerModule::m_rawCDCName
std::string m_rawCDCName
Name of the RawCDC dataobject (suppressed mode).
Definition: CDCUnpackerModule.h:234
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::CDC::CDCUnpackerModule::terminate
void terminate() override
Termination action.
Definition: CDCUnpackerModule.cc:470
Belle2::CDC::CDCUnpackerModule::m_relCDCRawHitWFToCDCHitName
std::string m_relCDCRawHitWFToCDCHitName
Relation name between CDCRawHitWaveForm and CDCHit.
Definition: CDCUnpackerModule.h:265
Belle2::CDC::CDCUnpackerModule::m_enableDatabase
bool m_enableDatabase
Enable/Disable to read the channel map from the database.
Definition: CDCUnpackerModule.h:312
Belle2::CDC::CDCUnpackerModule::m_enableStoreCDCRawHit
bool m_enableStoreCDCRawHit
Enable/Disable to store CDCRawHit.
Definition: CDCUnpackerModule.h:222
Belle2::CDC::CDCUnpackerModule::~CDCUnpackerModule
virtual ~CDCUnpackerModule()
Destructor of the module.
Definition: CDCUnpackerModule.cc:67
Belle2::CDC::CDCUnpackerModule::m_enable2ndHit
bool m_enable2ndHit
Enable/Disable to 2nd hit output.
Definition: CDCUnpackerModule.h:318
Belle2::CDC::CDCUnpackerModule::m_map
WireID m_map[300][48]
Assignment map of FE board channel to the cell.
Definition: CDCUnpackerModule.h:276
Belle2::CDC::CDCUnpackerModule::m_enablePrintOut
bool m_enablePrintOut
Enable/Disable to print out the data to the terminal.
Definition: CDCUnpackerModule.h:228
Belle2::CDC::CDCUnpackerModule::getTriggerNumber
int getTriggerNumber()
Getter for trigger number.
Definition: CDCUnpackerModule.h:137
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:41
Belle2::CDC::CDCUnpackerModule::m_tdcAuxOffset
int m_tdcAuxOffset
TDC auxiliary offset (nsec).
Definition: CDCUnpackerModule.h:291
Belle2::CDC::CDCUnpackerModule::m_fadcThreshold
int m_fadcThreshold
FADC threshold.
Definition: CDCUnpackerModule.h:281
Belle2::CDC::CDCUnpackerModule::getTriggerTime
int getTriggerTime()
Getter for trigger time in nsec.
Definition: CDCUnpackerModule.h:119
Belle2::CDC::CDCUnpackerModule::m_subtractTrigTiming
bool m_subtractTrigTiming
Enable/Disable to subtract the trigger timing from TDCs.
Definition: CDCUnpackerModule.h:306
Belle2::CDC::CDCUnpackerModule::loadMap
void loadMap()
Load FE channel to cell ID map.
Definition: CDCUnpackerModule.cc:486
Belle2::CDC::CDCUnpackerModule::m_cdcRawHitName
std::string m_cdcRawHitName
Name of the CDCRawHit dataobject (suppressed mode).
Definition: CDCUnpackerModule.h:239
Belle2::CDC::CDCUnpackerModule::beginRun
void beginRun() override
Begin run action.
Definition: CDCUnpackerModule.cc:114
Belle2::CDC::CDCUnpackerModule::isValidBoardChannel
bool isValidBoardChannel(WireID wireId)
Check if the hit wire is valid or not.
Definition: CDCUnpackerModule.h:179
Belle2::CDC::CDCUnpackerModule::m_cdcRawHitWaveFormName
std::string m_cdcRawHitWaveFormName
Name of the CDCRawHit dataobject (raw data mode).
Definition: CDCUnpackerModule.h:244
Belle2::CDC::CDCUnpackerModule::m_dataType
int m_dataType
Data type of CDC data block.
Definition: CDCUnpackerModule.h:192
Belle2::CDC::CDCUnpackerModule::m_boardId
int m_boardId
Front end board ID.
Definition: CDCUnpackerModule.h:202
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:217
Belle2::CDC::CDCUnpackerModule::initialize
void initialize() override
Initializes the Module.
Definition: CDCUnpackerModule.cc:71
Belle2::CDC::CDCUnpackerModule::m_xmlMapFileName
std::string m_xmlMapFileName
Name of the assignment map of FE board channel to the cell.
Definition: CDCUnpackerModule.h:254
Belle2::CDC::CDCUnpackerModule::m_dataLength
int m_dataLength
Data length of the CDC data block (in bytes).
Definition: CDCUnpackerModule.h:212
Belle2::CDC::CDCUnpackerModule::m_cdcHitName
std::string m_cdcHitName
Tree name of the CDCHit object.
Definition: CDCUnpackerModule.h:249
Belle2::CDC::CDCUnpackerModule::getDataLength
int getDataLength()
Getter for data length in byte.
Definition: CDCUnpackerModule.h:128
Belle2::CDC::CDCUnpackerModule::getBoardId
int getBoardId()
Getter for FE board ID.
Definition: CDCUnpackerModule.h:147
Belle2::CDC::CDCUnpackerModule::m_rawCDCs
StoreArray< RawCDC > m_rawCDCs
Input array for CDC Raw.
Definition: CDCUnpackerModule.h:338
Belle2::CDC::CDCUnpackerModule::setCDCPacketHeader
void setCDCPacketHeader(int *buf)
Set CDC Packet header.
Definition: CDCUnpackerModule.h:87
Belle2::CDC::CDCUnpackerModule::m_triggerTime
int m_triggerTime
Trigger time.
Definition: CDCUnpackerModule.h:207