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() override;
48
49 virtual void initialize() override;
50 virtual void beginRun() override;
51 virtual void event() override;
52
53
54 std::string m_rawSVDListName;
56 std::string m_svdEventInfoName;
57 bool m_simulate3sampleData = false;
59
60 private:
61
63 typedef std::unordered_map<unsigned short, unsigned short> FADCmap;
64
66 unsigned short nFADCboards = 0;
67
69 std::unordered_multimap<unsigned char, unsigned char>* APVmap = 0;
70
73
74 static std::string m_xmlFileName ;
76
77 std::unique_ptr<SVDOnlineToOfflineMap> m_map;
78
83
84 std::vector<uint32_t> data_words;
85
87 void inline addData32(uint32_t adata32)
88 {
89 data_words.push_back(adata32);
90 }
91
92 void binPrintout(unsigned int nwords);
93
95 struct DataInfo {
96 short data[6];
97 unsigned short channel;
99
100 // The following assumes i386 byte order: MSB comes last!
101
103 struct FTBHeader {
104 unsigned int errorsField : 8;
105 unsigned int eventNumber : 24;
106 };
107
109 struct MainHeader {
110 unsigned int trgNumber : 8;
111 unsigned int trgType : 4;
112 unsigned int trgTiming : 2;
113 unsigned int xTalk : 2;
114 unsigned int FADCnum : 8;
115 unsigned int DAQType : 1;
116 unsigned int DAQMode : 2;
117 unsigned int runType : 2;
118 unsigned int check : 3;
119 };
120
122 struct APVHeader {
123 unsigned int CMC1 : 8;
124 unsigned int CMC2 : 4;
125 unsigned int fifoErr: 1;
126 unsigned int frameErr: 1;
127 unsigned int detectErr: 1;
128 unsigned int apvErr : 1;
129 unsigned int pipelineAddr : 8;
130 unsigned int APVnum : 6;
131 unsigned int check : 2;
132 };
133
135 struct data_A {
136 unsigned int sample1 : 8;
137 unsigned int sample2 : 8;
138 unsigned int sample3 : 8;
139 unsigned int stripNum : 7;
140 unsigned int check : 1;
141 };
142
144 struct data_B {
145 unsigned int sample4 : 8;
146 unsigned int sample5 : 8;
147 unsigned int sample6 : 8;
148 unsigned int stripNum : 7;
149 unsigned int check : 1;
150 };
151
153 struct FADCTrailer {
154 unsigned int FTBFlags: 16;
155 unsigned int APVdataSizeCut: 1;
156 unsigned int FADCdataSizeCut: 1;
157 unsigned int DummyAPVHeader: 1;
158 unsigned int PiplAddrMismatch: 1;
159 unsigned int nullDigits: 4;
160 unsigned int fifoErrOR: 1;
161 unsigned int frameErrOR: 1;
162 unsigned int detectErrOR: 1;
163 unsigned int apvErrOR: 1;
164 unsigned int check : 4;
165 };
166
168 struct FTBTrailer {
169 unsigned int crc16 : 16;
170 unsigned int controlWord : 16;
171 };
172
173
174 union {
175 uint32_t data32 = 0;
183 };
184
190
191 };
192 } //SVD
194} // Belle2
195
196#endif /* SVDPackerModule_H */
Class for accessing objects in the database.
Definition DBObjPtr.h:21
Module()
Constructor.
Definition Module.cc:30
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
virtual ~SVDPackerModule() override
default destructor
struct Belle2::SVD::SVDPackerModule::DataInfo dataInfo
data info
FTBHeader m_FTBHeader
Implementation of FTB Header.
std::string m_rawSVDListName
RawSVD StoreArray name.
StoreArray< SVDShaperDigit > m_svdShaperDigit
Required input for SVDShaperDigit.
DBObjPtr< PayloadFile > m_mapping
channel map payload
data_B m_data_B
Implementation of 2nd data word.
int m_FADCTriggerNumberOffset
FADC trigger number 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.
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
Namespace to encapsulate code needed for simulation and reconstrucion of the SVD.
Abstract base class for different kinds of events.
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.
unsigned int PiplAddrMismatch
Pipeline address mismatch detection flag.
unsigned int apvErrOR
APV chip number OR.
unsigned int fifoErrOR
FIFO full Error OR.
unsigned int DummyAPVHeader
Dummy APV Header included flag.
unsigned int check
MSB "1110" - for FADC Trailer identification.
unsigned int FTBFlags
FTB Flags Field.
unsigned int APVdataSizeCut
APV data-size cut flag.
unsigned int FADCdataSizeCut
FADC data-size cut flag.
unsigned int detectErrOR
Detection Error OR.
unsigned int errorsField
FTB error fields.
unsigned int eventNumber
FTB event number.
unsigned int controlWord
MSB "ff55" - FADC Trailer ID.
unsigned int crc16
FTB CRC16 Checksum.
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