Belle II Software development
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
26namespace Belle2 {
31 namespace SVD {
32
37 class SVDPackerModule : public Module {
38
39 public:
40
41 //Constructor
42
45
47 virtual ~SVDPackerModule();
48
49 virtual void initialize() override;
50 virtual void beginRun() override;
51 virtual void event() override;
52 virtual void endRun() override;
53 virtual void terminate() override;
56 std::string m_rawSVDListName;
58 std::string m_svdEventInfoName;
62 private:
63
65 typedef std::unordered_map<unsigned short, unsigned short> FADCmap;
66
68 unsigned short nFADCboards;
69
71 std::unordered_multimap<unsigned char, unsigned char>* APVmap;
72
76 static std::string m_xmlFileName ;
79 std::unique_ptr<SVDOnlineToOfflineMap> m_map;
85
86 std::vector<uint32_t> data_words;
89 void inline addData32(uint32_t adata32)
90 {
91 data_words.push_back(adata32);
92 }
94 void binPrintout(unsigned int nwords);
95
97 struct DataInfo {
98 short data[6];
99 unsigned short channel;
102 // The following assumes i386 byte order: MSB comes last!
103
105 struct FTBHeader {
106 unsigned int errorsField : 8;
107 unsigned int eventNumber : 24;
108 };
109
111 struct MainHeader {
112 unsigned int trgNumber : 8;
113 unsigned int trgType : 4;
114 unsigned int trgTiming : 2;
115 unsigned int xTalk : 2;
116 unsigned int FADCnum : 8;
117 unsigned int DAQType : 1;
118 unsigned int DAQMode : 2;
119 unsigned int runType : 2;
120 unsigned int check : 3;
121 };
122
124 struct APVHeader {
125 unsigned int CMC1 : 8;
126 unsigned int CMC2 : 4;
127 unsigned int fifoErr: 1;
128 unsigned int frameErr: 1;
129 unsigned int detectErr: 1;
130 unsigned int apvErr : 1;
131 unsigned int pipelineAddr : 8;
132 unsigned int APVnum : 6;
133 unsigned int check : 2;
134 };
135
137 struct data_A {
138 unsigned int sample1 : 8;
139 unsigned int sample2 : 8;
140 unsigned int sample3 : 8;
141 unsigned int stripNum : 7;
142 unsigned int check : 1;
143 };
144
146 struct data_B {
147 unsigned int sample4 : 8;
148 unsigned int sample5 : 8;
149 unsigned int sample6 : 8;
150 unsigned int stripNum : 7;
151 unsigned int check : 1;
152 };
153
155 struct FADCTrailer {
156 unsigned int FTBFlags: 16;
157 unsigned int dataSizeCut: 1;
158 unsigned int nullDigits: 7;
159 unsigned int fifoErrOR: 1;
160 unsigned int frameErrOR: 1;
161 unsigned int detectErrOR: 1;
162 unsigned int apvErrOR: 1;
163 unsigned int check : 4;
164 };
165
167 struct FTBTrailer {
168 unsigned int crc16 : 16;
169 unsigned int controlWord : 16;
170 };
171
172
173 union {
174 uint32_t data32;
182 };
183
190 };
191 } //SVD
193} // Belle2
194
195#endif /* SVDPackerModule_H */
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
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