Belle II Software  release-08-01-10
SVDPackerModule.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #ifndef SVDPackerModule_H
10 #define SVDPackerModule_H
11 
12 #include <framework/core/Module.h>
13 #include <framework/datastore/StoreArray.h>
14 #include <framework/datastore/StoreObjPtr.h>
15 #include <framework/dataobjects/EventMetaData.h>
16 #include <svd/dataobjects/SVDEventInfo.h>
17 
18 #include <rawdata/dataobjects/RawSVD.h>
19 #include <svd/dataobjects/SVDShaperDigit.h>
20 
21 #include <svd/online/SVDOnlineToOfflineMap.h>
22 
23 #include <framework/database/PayloadFile.h>
24 
25 
26 namespace Belle2 {
31  namespace SVD {
32 
40  class SVDPackerModule : public Module {
41 
42  public:
43 
44  //Constructor
45 
48 
50  virtual ~SVDPackerModule();
51 
52  virtual void initialize() override;
53  virtual void beginRun() override;
54  virtual void event() override;
55  virtual void endRun() override;
56  virtual void terminate() override;
59  std::string m_rawSVDListName;
61  std::string m_svdEventInfoName;
65  private:
66 
68  typedef std::unordered_map<unsigned short, unsigned short> FADCmap;
69 
71  unsigned short nFADCboards;
72 
74  std::unordered_multimap<unsigned char, unsigned char>* APVmap;
75 
76  int n_basf2evt;
77  int m_nodeid;
79  static std::string m_xmlFileName ;
82  std::unique_ptr<SVDOnlineToOfflineMap> m_map;
88 
89  std::vector<uint32_t> data_words;
92  void inline addData32(uint32_t adata32)
93  {
94  data_words.push_back(adata32);
95  }
97  void binPrintout(unsigned int nwords);
98 
100  struct DataInfo {
101  short data[6];
102  unsigned short channel;
105  // The following assumes i386 byte order: MSB comes last!
106 
108  struct FTBHeader {
109  unsigned int errorsField : 8;
110  unsigned int eventNumber : 24;
111  };
112 
114  struct MainHeader {
115  unsigned int trgNumber : 8;
116  unsigned int trgType : 4;
117  unsigned int trgTiming : 2;
118  unsigned int xTalk : 2;
119  unsigned int FADCnum : 8;
120  unsigned int DAQType : 1;
121  unsigned int DAQMode : 2;
122  unsigned int runType : 2;
123  unsigned int check : 3;
124  };
125 
127  struct APVHeader {
128  unsigned int CMC1 : 8;
129  unsigned int CMC2 : 4;
130  unsigned int fifoErr: 1;
131  unsigned int frameErr: 1;
132  unsigned int detectErr: 1;
133  unsigned int apvErr : 1;
134  unsigned int pipelineAddr : 8;
135  unsigned int APVnum : 6;
136  unsigned int check : 2;
137  };
138 
140  struct data_A {
141  unsigned int sample1 : 8;
142  unsigned int sample2 : 8;
143  unsigned int sample3 : 8;
144  unsigned int stripNum : 7;
145  unsigned int check : 1;
146  };
147 
149  struct data_B {
150  unsigned int sample4 : 8;
151  unsigned int sample5 : 8;
152  unsigned int sample6 : 8;
153  unsigned int stripNum : 7;
154  unsigned int check : 1;
155  };
156 
158  struct FADCTrailer {
159  unsigned int FTBFlags: 16;
160  unsigned int dataSizeCut: 1;
161  unsigned int nullDigits: 7;
162  unsigned int fifoErrOR: 1;
163  unsigned int frameErrOR: 1;
164  unsigned int detectErrOR: 1;
165  unsigned int apvErrOR: 1;
166  unsigned int check : 4;
167  };
168 
170  struct FTBTrailer {
171  unsigned int crc16 : 16;
172  unsigned int controlWord : 16;
173  };
174 
175 
176  union {
177  uint32_t data32;
185  };
186 
193  };
194  } //SVD
196 } // Belle2
197 
198 #endif /* SVDPackerModule_H */
Specialization of DBObjPtr in case of PayloadFiles.
Definition: PayloadFile.h:54
Base class for Modules.
Definition: Module.h:72
SVDPackerModule: The SVD Raw Hits Creator.
MainHeader m_MainHeader
Implementation of FADC Header.
bool m_simulate3sampleData
if true, simulate 3-sample data taking
StoreArray< RawSVD > m_rawSVD
output for RawSVD
FADCTrailer m_FADCTrailer
Implementation of FADC Trailer.
StoreObjPtr< SVDEventInfo > m_svdEventInfoPtr
SVDEventInfo from simulation.
virtual void initialize() override
initialize
std::unordered_map< unsigned short, unsigned short > FADCmap
type def for the FADC map
virtual void event() override
event
struct Belle2::SVD::SVDPackerModule::DataInfo dataInfo
data info
FTBHeader m_FTBHeader
Implementation of FTB Header.
virtual void endRun() override
end run
std::string m_rawSVDListName
RawSVD StoreArray name.
StoreArray< SVDShaperDigit > m_svdShaperDigit
Required input for SVDShaperDigit.
DBObjPtr< PayloadFile > m_mapping
channel map payload
virtual void terminate() override
terminate
data_B m_data_B
Implementation of 2nd data word.
int m_FADCTriggerNumberOffset
FADC trigger numnber offset.
static std::string m_xmlFileName
< xml filename
SVDPackerModule()
default constructor
void addData32(uint32_t adata32)
adds packed 32-bit data word to the raw data vector
FTBTrailer m_FTBTrailer
Implementation of FTB Trailer.
APVHeader m_APVHeader
Implementation of APV Header.
virtual void beginRun() override
begin run
std::string m_svdShaperDigitListName
SVDShaperDigit StoreArray name.
std::string m_svdEventInfoName
SVDEventInfo name.
virtual ~SVDPackerModule()
default destructor
data_A m_data_A
Implementation of 1st data word.
StoreObjPtr< EventMetaData > m_eventMetaDataPtr
Required input for EventMetaData.
std::unordered_multimap< unsigned char, unsigned char > * APVmap
pointer to APVforFADCmap filled by mapping procedure
std::unique_ptr< SVDOnlineToOfflineMap > m_map
Pointer to online-to-offline map.
uint32_t data32
Output 32-bit data word.
std::vector< uint32_t > data_words
vector of raw data words
void binPrintout(unsigned int nwords)
tool: print out N words
bool m_binPrintout
if true, print data created by the Packer
FADCmap FADCnumberMapRev
maps containing assignment (0,1,2,3,4,..,nFADCboards-1) <-> FADC numbers
FADCmap FADCnumberMap
maps containing assignment (0,1,2,3,4,..,nFADCboards-1) <-> FADC numbers
unsigned short nFADCboards
how many FADCs we have
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Type-safe access to single objects in the data store.
Definition: StoreObjPtr.h:96
Abstract base class for different kinds of events.
implementation of APV Header
unsigned int detectErr
Detection Error.
unsigned int pipelineAddr
Pipeline Address.
unsigned int APVnum
APV chip number.
unsigned int CMC1
Common Mode Noise w/o masking out particle signals.
unsigned int check
MSB "10" - for APV Header identification.
unsigned int fifoErr
FIFO full Error.
unsigned int CMC2
Common Mode Noise after masking out particle signals.
6 samples and APV channel struct
unsigned short channel
APV channel number.
implementation of FADC Trailer
unsigned int frameErrOR
Frame Error OR.
unsigned int apvErrOR
APV chip number OR.
unsigned int fifoErrOR
FIFO full Error OR.
unsigned int check
MSB "1110" - for FADC Trailer identification.
unsigned int FTBFlags
FTB Flags Field.
unsigned int dataSizeCut
APV data-size cut flag
unsigned int detectErrOR
Detection Error OR.
implementation of FTB Header
unsigned int errorsField
FTB error fields.
unsigned int eventNumber
FTB event number.
implementation of FTB Trailer
unsigned int controlWord
MSB "ff55" - FADC Trailer ID.
unsigned int crc16
FTB CRC16 Checksum
implementation of FADC Header
unsigned int DAQType
(from 2020c) Event type(0): "0"…3 or …6 acquisition mode, "1"…3-mixed-6 acquisition mode
unsigned int check
MSB "110" - for FADC Header identification.
unsigned int trgNumber
Trigger Number.
unsigned int trgTiming
Trigger Timing.
unsigned int DAQMode
Event type(2:1): "00"…1-sample, "01"…3-sample, "10"…6-sample.
implementation of the first data word
unsigned int sample3
3rd data sample
unsigned int stripNum
Strip number.
unsigned int sample2
2nd data sample
unsigned int check
MSB "1" - for Data word identification.
unsigned int sample1
1st data sample
implementation of the second data word
unsigned int sample6
6th data sample
unsigned int stripNum
Strip number.
unsigned int check
MSB "1" - for Data word identification.
unsigned int sample4
4th data sample
unsigned int sample5
5th data sample