Belle II Software  release-05-02-19
PXDUnpackerOTModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Bjoern Spruck / Klemens Lautenbach *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <framework/core/Module.h>
14 #include <pxd/dataobjects/PXDRawHit.h>
15 #include <pxd/dataobjects/PXDRawAdc.h>
16 #include <pxd/dataobjects/PXDRawROIs.h>
17 #include <vxd/dataobjects/VxdID.h>
18 #include <rawdata/dataobjects/RawPXD.h>
19 #include <framework/datastore/StoreArray.h>
20 #include <framework/datastore/StoreObjPtr.h>
21 #include <framework/dataobjects/EventMetaData.h>
22 
23 #include <pxd/dataobjects/PXDErrorFlags.h>
24 #include <pxd/dataobjects/PXDDAQStatus.h>
25 
26 namespace Belle2 {
32  namespace PXD {
33 
43  class PXDUnpackerOTModule : public Module {
44 
45  public:
48 
50  static PXDError::PXDErrorFlags getSilenceMask(void) { return PXDError::c_ALL_ERROR;};
52  static PXDError::PXDErrorFlags getVerboseMask(void) { return PXDError::c_NO_ERROR;};
53 
54  private:
55 
57  void initialize() override final;
59  void event() override final;
61  void terminate() override final;
62 
63  std::string m_RawPXDsName;
64  std::string m_PXDDAQEvtStatsName;
65  std::string m_PXDRawHitsName;
66  std::string m_PXDRawAdcsName;
67  std::string m_PXDRawROIsName;
70  bool m_doNotStore{false};
72  bool m_checkPaddingCRC{false};
74  bool m_forceMapping{false};
76  bool m_forceNoMapping{false};
78  unsigned int m_maxDHPFrameDiff{0};
79 
81  uint64_t m_criticalErrorMask{0}; // TODO this should be type PXDErrorFlag .. but that does not work with addParam()
83  uint64_t m_suppressErrorMask{0}; // TODO this should be type PXDErrorFlag .. but that does not work with addParam()
85  uint64_t m_errorSkipPacketMask{0}; // TODO this should be type PXDErrorFlag .. but that does not work with addParam()
86 
88  unsigned long m_meta_event_nr{0};
90  unsigned long m_meta_run_nr{0};
92  unsigned long m_meta_subrun_nr{0};
94  unsigned long m_meta_experiment{0};
96  unsigned long long int m_meta_time{0};
98  unsigned int m_meta_sec{0};
100  unsigned int m_meta_ticks{0};
101 
103  unsigned int m_unpackedEventsCount{0};
105  unsigned int m_errorCounter[PXDError::ONSEN_MAX_TYPE_ERR] {};
107  bool m_verbose{false};
109  bool m_continueOnError{false};
110 
112  StoreArray<RawPXD> m_storeRawPXD;
114  StoreObjPtr<EventMetaData> m_eventMetaData;
116  StoreArray<PXDRawHit> m_storeRawHits;
118  StoreArray<PXDRawROIs> m_storeROIs;
123 
128  void unpack_rawpxd(RawPXD& px, int inx);
129 
138  void unpack_dhc_frame(void* data, const int len, const int Frame_Number, const int Frames_in_event, PXDDAQPacketStatus& daqpktstat);
139 
149  void unpack_dhp(void* data, unsigned int len, unsigned int dhe_first_readout_frame_lo, unsigned int dhe_ID, unsigned dhe_DHPport,
150  unsigned dhe_reformat, VxdID vxd_id, PXDDAQPacketStatus& daqpktstat);
151 
159  void unpack_dhp_raw(void* data, unsigned int len, unsigned int dhe_ID, unsigned dhe_DHPport, VxdID vxd_id);
160 
167  void unpack_fce(unsigned short* data, unsigned int length, VxdID vxd_id);
168 
170  PXDError::PXDErrorFlags m_errorMask{0};
172  PXDError::PXDErrorFlags m_errorMaskDHE{0};
174  PXDError::PXDErrorFlags m_errorMaskDHC{0};
176  PXDError::PXDErrorFlags m_errorMaskPacket{0};
178  PXDError::PXDErrorFlags m_errorMaskEvent{0};
179 
181  unsigned int m_notaccepted{0};
183  unsigned int m_sendrois{0};
185  unsigned int m_sendunfiltered{0};
187  bool m_formatBonnDAQ{false};
188 
190  int m_last_dhp_readout_frame_lo[4] { -1}; // signed because -1 means undefined
191 
192  public:
196  static int nr5bits(int i);
197 
200  static void dump_dhp(void* data, unsigned int frame_len);
201 
204  static void dump_roi(void* data, unsigned int frame_len);
205 
206  };//end class declaration
207 
208 
209  } //end PXD namespace;
211 } // end namespace Belle2
Belle2::PXD::PXDUnpackerOTModule::m_storeRawPXD
StoreArray< RawPXD > m_storeRawPXD
Input array for PXD Raw.
Definition: PXDUnpackerOTModule.h:120
Belle2::PXD::PXDUnpackerOTModule::m_eventMetaData
StoreObjPtr< EventMetaData > m_eventMetaData
Input ptr for EventMetaData.
Definition: PXDUnpackerOTModule.h:122
Belle2::PXD::PXDUnpackerOTModule::unpack_rawpxd
void unpack_rawpxd(RawPXD &px, int inx)
Unpack one event (several frames) stored in RawPXD object.
Definition: PXDUnpackerOTModule.cc:173
Belle2::PXD::PXDUnpackerOTModule::m_checkPaddingCRC
bool m_checkPaddingCRC
Check for susp.
Definition: PXDUnpackerOTModule.h:80
Belle2::PXD::PXDUnpackerOTModule::m_meta_experiment
unsigned long m_meta_experiment
Experiment from MetaInfo.
Definition: PXDUnpackerOTModule.h:102
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXD::PXDUnpackerOTModule::m_suppressErrorMask
uint64_t m_suppressErrorMask
Mask for suppressing selected error messages.
Definition: PXDUnpackerOTModule.h:91
Belle2::PXD::PXDUnpackerOTModule::PXDUnpackerOTModule
PXDUnpackerOTModule()
Constructor defining the parameters.
Definition: PXDUnpackerOTModule.cc:40
Belle2::PXD::PXDUnpackerOTModule::getSilenceMask
static PXDError::PXDErrorFlags getSilenceMask(void)
Static function to return PXDError::c_ALL_ERROR.
Definition: PXDUnpackerOTModule.h:58
Belle2::PXD::PXDUnpackerOTModule::m_meta_run_nr
unsigned long m_meta_run_nr
Run Number from MetaInfo.
Definition: PXDUnpackerOTModule.h:98
Belle2::PXD::PXDUnpackerOTModule::m_verbose
bool m_verbose
give verbose unpacking information
Definition: PXDUnpackerOTModule.h:115
Belle2::PXD::PXDUnpackerOTModule::getVerboseMask
static PXDError::PXDErrorFlags getVerboseMask(void)
Static function to return PXDError::c_NO_ERROR.
Definition: PXDUnpackerOTModule.h:60
Belle2::PXD::PXDUnpackerOTModule::terminate
void terminate() override final
Terminate the module.
Definition: PXDUnpackerOTModule.cc:103
Belle2::PXD::PXDUnpackerOTModule::m_storeRawHits
StoreArray< PXDRawHit > m_storeRawHits
Output array for Raw Hits.
Definition: PXDUnpackerOTModule.h:124
Belle2::PXD::PXDUnpackerOTModule::m_errorCounter
unsigned int m_errorCounter[PXDError::ONSEN_MAX_TYPE_ERR]
Error counters.
Definition: PXDUnpackerOTModule.h:113
Belle2::PXD::PXDUnpackerOTModule::m_PXDRawROIsName
std::string m_PXDRawROIsName
The name of the StoreArray of PXDRawROIs to be generated.
Definition: PXDUnpackerOTModule.h:75
Belle2::PXD::PXDUnpackerOTModule::m_errorMask
PXDError::PXDErrorFlags m_errorMask
Error Mask set per packet / frame.
Definition: PXDUnpackerOTModule.h:178
Belle2::PXD::PXDUnpackerOTModule::m_continueOnError
bool m_continueOnError
flag continue unpacking of frames even after error (for debugging)
Definition: PXDUnpackerOTModule.h:117
Belle2::PXD::PXDUnpackerOTModule::m_last_dhp_readout_frame_lo
int m_last_dhp_readout_frame_lo[4]
some workaround check for continouous frame ids
Definition: PXDUnpackerOTModule.h:198
Belle2::PXD::PXDUnpackerOTModule::m_formatBonnDAQ
bool m_formatBonnDAQ
flag ONSEN or BonnDAQ format
Definition: PXDUnpackerOTModule.h:195
Belle2::PXD::PXDUnpackerOTModule::m_RawPXDsName
std::string m_RawPXDsName
The name of the StoreArray of processed RawPXDs.
Definition: PXDUnpackerOTModule.h:71
Belle2::PXD::PXDUnpackerOTModule::dump_roi
static void dump_roi(void *data, unsigned int frame_len)
dump to a file, helper function for debugging.
Definition: PXDUnpackerOTModule.cc:426
Belle2::PXD::PXDUnpackerOTModule::dump_dhp
static void dump_dhp(void *data, unsigned int frame_len)
dump to a file, helper function for debugging.
Definition: PXDUnpackerOTModule.cc:403
Belle2::PXD::PXDUnpackerOTModule::m_storeROIs
StoreArray< PXDRawROIs > m_storeROIs
Output array for Raw ROIs.
Definition: PXDUnpackerOTModule.h:126
Belle2::RawPXD
The Raw PXD class.
Definition: RawPXD.h:28
Belle2::PXD::PXDUnpackerOTModule::m_criticalErrorMask
uint64_t m_criticalErrorMask
Critical error mask which defines return value of task.
Definition: PXDUnpackerOTModule.h:89
Belle2::PXD::PXDUnpackerOTModule::m_PXDRawAdcsName
std::string m_PXDRawAdcsName
The name of the StoreArray of PXDRawAdcs to be generated.
Definition: PXDUnpackerOTModule.h:74
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXD::PXDUnpackerOTModule::m_notaccepted
unsigned int m_notaccepted
counter for not accepted events...
Definition: PXDUnpackerOTModule.h:189
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::PXD::PXDUnpackerOTModule::m_errorMaskEvent
PXDError::PXDErrorFlags m_errorMaskEvent
Error Mask set per packet / event.
Definition: PXDUnpackerOTModule.h:186
Belle2::PXD::PXDUnpackerOTModule::m_storeRawAdc
StoreArray< PXDRawAdc > m_storeRawAdc
Output array for Raw Adcs.
Definition: PXDUnpackerOTModule.h:130
Belle2::PXD::PXDUnpackerOTModule::m_meta_time
unsigned long long int m_meta_time
Time(Tag) from MetaInfo.
Definition: PXDUnpackerOTModule.h:104
Belle2::PXD::PXDUnpackerOTModule::m_meta_sec
unsigned int m_meta_sec
Time(Tag) from MetaInfo, seconds (masked to lower bits)
Definition: PXDUnpackerOTModule.h:106
Belle2::PXD::PXDUnpackerOTModule::nr5bits
static int nr5bits(int i)
helper function to "count" nr of set bits within lower 5 bits.
Definition: PXDUnpackerOTModule.cc:677
Belle2::PXD::PXDUnpackerOTModule::m_errorMaskDHE
PXDError::PXDErrorFlags m_errorMaskDHE
Error Mask set per packet / DHE.
Definition: PXDUnpackerOTModule.h:180
Belle2::PXD::PXDUnpackerOTModule::m_forceNoMapping
bool m_forceNoMapping
Force No Mapping even if DHH bit is requesting it.
Definition: PXDUnpackerOTModule.h:84
Belle2::PXD::PXDUnpackerOTModule::event
void event() override final
do the unpacking
Definition: PXDUnpackerOTModule.cc:123
Belle2::PXD::PXDUnpackerOTModule::m_doNotStore
bool m_doNotStore
Only unpack, but Do Not Store anything to file.
Definition: PXDUnpackerOTModule.h:78
Belle2::PXD::PXDUnpackerOTModule::m_meta_subrun_nr
unsigned long m_meta_subrun_nr
Subrun Number from MetaInfo.
Definition: PXDUnpackerOTModule.h:100
Belle2::PXD::PXDUnpackerOTModule::m_storeDAQEvtStats
StoreObjPtr< PXDDAQStatus > m_storeDAQEvtStats
Output array for DAQ Status.
Definition: PXDUnpackerOTModule.h:128
Belle2::PXD::PXDUnpackerOTModule::m_unpackedEventsCount
unsigned int m_unpackedEventsCount
Event counter.
Definition: PXDUnpackerOTModule.h:111
Belle2::PXD::PXDUnpackerOTModule::m_PXDDAQEvtStatsName
std::string m_PXDDAQEvtStatsName
The name of the StoreObjPtr of PXDDAQStatus to be generated.
Definition: PXDUnpackerOTModule.h:72
Belle2::PXD::PXDUnpackerOTModule::m_meta_ticks
unsigned int m_meta_ticks
Time(Tag) from MetaInfo, Ticks of 127MHz.
Definition: PXDUnpackerOTModule.h:108
Belle2::PXD::PXDUnpackerOTModule::unpack_dhp
void unpack_dhp(void *data, unsigned int len, unsigned int dhe_first_readout_frame_lo, unsigned int dhe_ID, unsigned dhe_DHPport, unsigned dhe_reformat, VxdID vxd_id, PXDDAQPacketStatus &daqpktstat)
Unpack DHP data within one DHE frame.
Definition: PXDUnpackerOTModule.cc:441
Belle2::PXD::PXDUnpackerOTModule::m_meta_event_nr
unsigned long m_meta_event_nr
Event Number from MetaInfo.
Definition: PXDUnpackerOTModule.h:96
Belle2::PXD::PXDUnpackerOTModule::unpack_dhc_frame
void unpack_dhc_frame(void *data, const int len, const int Frame_Number, const int Frames_in_event, PXDDAQPacketStatus &daqpktstat)
Unpack one frame (within an event).
Definition: PXDUnpackerOTModule.cc:687
Belle2::PXD::PXDUnpackerOTModule::initialize
void initialize() override final
Initialize the module.
Definition: PXDUnpackerOTModule.cc:76
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::PXD::PXDUnpackerOTModule::m_PXDRawHitsName
std::string m_PXDRawHitsName
The name of the StoreArray of PXDRawHits to be generated.
Definition: PXDUnpackerOTModule.h:73
Belle2::PXD::PXDUnpackerOTModule::m_errorSkipPacketMask
uint64_t m_errorSkipPacketMask
Mask for error which stop package unpacking directly.
Definition: PXDUnpackerOTModule.h:93
Belle2::PXD::PXDUnpackerOTModule::m_forceMapping
bool m_forceMapping
Force Mapping even if DHH bit is not requesting it.
Definition: PXDUnpackerOTModule.h:82
Belle2::PXD::PXDUnpackerOTModule::unpack_fce
void unpack_fce(unsigned short *data, unsigned int length, VxdID vxd_id)
Unpack DHP/FCE data within one DHE frame Not fully implemented as cluster format not 100% fixed.
Definition: PXDUnpackerOTModule.cc:358
Belle2::PXD::PXDUnpackerOTModule::m_errorMaskDHC
PXDError::PXDErrorFlags m_errorMaskDHC
Error Mask set per packet / DHC.
Definition: PXDUnpackerOTModule.h:182
Belle2::PXD::PXDUnpackerOTModule::unpack_dhp_raw
void unpack_dhp_raw(void *data, unsigned int len, unsigned int dhe_ID, unsigned dhe_DHPport, VxdID vxd_id)
Unpack DHP RAW data within one DHE frame (pedestals, etc)
Definition: PXDUnpackerOTModule.cc:298
Belle2::PXD::PXDUnpackerOTModule::m_errorMaskPacket
PXDError::PXDErrorFlags m_errorMaskPacket
Error Mask set per packet / packet.
Definition: PXDUnpackerOTModule.h:184
Belle2::PXD::PXDUnpackerOTModule::m_sendrois
unsigned int m_sendrois
counter for send debug rois
Definition: PXDUnpackerOTModule.h:191
Belle2::PXDDAQPacketStatus
The PXD DAQ Packet Status class.
Definition: PXDDAQPacketStatus.h:42
Belle2::PXD::PXDUnpackerOTModule::m_sendunfiltered
unsigned int m_sendunfiltered
counter for send unfiltered
Definition: PXDUnpackerOTModule.h:193
Belle2::PXD::PXDUnpackerOTModule::m_maxDHPFrameDiff
unsigned int m_maxDHPFrameDiff
Maximum DHP frame difference until error is reported.
Definition: PXDUnpackerOTModule.h:86