BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnRawDataDecoder.h
Go to the documentation of this file.
1
#ifndef BMNRAWDATADECODER_H
2
#define BMNRAWDATADECODER_H 1
3
// STL
4
#include <deque>
5
#include <filesystem>
6
#include <fstream>
7
#include <map>
8
#include <vector>
9
// Boost
10
#pragma GCC system_header
11
#include <boost/property_tree/json_parser.hpp>
12
#include <boost/property_tree/ptree.hpp>
13
// ROOT
14
#include "
TClonesArray.h
"
15
#include "
TFile.h
"
16
#include "
TString.h
"
17
#include "
TTimeStamp.h
"
18
#include "
TTree.h
"
19
// BmnRoot
20
#include "
BmnAdcQA.h
"
21
#include "
BmnConverter.h
"
22
#include "
BmnCscRaw2Digit.h
"
23
#include "
BmnDchRaw2Digit.h
"
24
#include "
BmnDecoder.h
"
25
#include "
BmnECALRaw2Digit.h
"
26
#include "BmnEventHeader.h"
27
#include "
BmnFHCalRaw2Digit.h
"
28
#include "
BmnGemRaw2Digit.h
"
29
#include "
BmnHodoRaw2Digit.h
"
30
#include "
BmnMscRaw2Digit.h
"
31
#include "
BmnMwpcRaw2Digit.h
"
32
#include "
BmnNdetRaw2Digit.h
"
33
#include "
BmnRawSource.h
"
34
#include "
BmnScWallRaw2Digit.h
"
35
#include "
BmnSiBTRaw2Digit.h
"
36
#include "
BmnSiliconRaw2Digit.h
"
37
#include "
BmnTof1Raw2Digit.h
"
38
// #include "BmnTof2Raw2DigitNew.h"
39
#include "
BmnTof701Raw2Digit.h
"
40
#include "
BmnTrigRaw2Digit.h
"
41
#include "
BmnZDCRaw2Digit.h
"
42
#include "DigiArrays.h"
43
#include "RawTypes.h"
44
45
/********************************************************/
46
// wait limit for input data (ms)
47
#define WAIT_LIMIT 40000000
48
// Debug ADC processor
49
// #define ADC_QA true
50
51
using
std::map;
52
using
std::vector;
53
namespace
pt = boost::property_tree;
54
55
using
json =
nlohmann::json
;
56
57
class
BmnRawDataDecoder
58
{
59
public
:
60
static
double
correctionGem
,
correctionCsc
,
correctionSil
;
61
static
double
threshGem
,
threshCsc
,
threshSil
;
62
static
int
samplesGem
,
samplesCsc
,
samplesSil
;
63
64
BmnRawDataDecoder
(
TString
file =
""
,
TString
outfile =
""
, ULong_t nEvents = 0, ULong_t period = 8);
65
virtual
~BmnRawDataDecoder
();
66
67
BmnStatus
ConvertRawToRoot
();
68
void
FillAdcQa
();
69
void
SaveAdcQa
();
70
void
FillProfiles
();
71
void
FillNoisyChannels
();
72
BmnStatus
DecodeDataToDigi
();
73
void
CreateConverter
();
74
void
CreateDecoder
();
75
76
BmnStatus
InitConverter
(
TString
FileName);
77
BmnStatus
InitConverter
();
78
BmnStatus
InitDecoder
();
79
void
ConnectForward
();
80
81
BmnStatus
ConvertRawToRootIterate
(UInt_t* buf, UInt_t len);
82
BmnStatus
DecodeDataToDigiIterate
();
83
84
void
SetRunId
(UInt_t
v
)
85
{
86
fRunId
=
v
;
87
if
(
fRawSource
)
88
fRawSource
->SetRunId(
fRunId
);
89
if
(
fDecoder
)
90
fDecoder
->SetRunId(
fRunId
);
91
}
92
93
void
SetPeriodId
(UInt_t
v
)
94
{
95
fPeriodId
=
v
;
96
if
(
fRawSource
)
97
fRawSource
->SetPeriodId(
fPeriodId
);
98
if
(
fDecoder
)
99
fDecoder
->SetPeriodId(
fPeriodId
);
100
}
101
102
void
SetApplyThreshold
(
bool
b) {
fApplyThreshold
= b; }
103
104
// map<UInt_t, Long64_t> GetTimeShifts() {
105
// return fTimeShifts;
106
// }
107
108
UInt_t
GetRunId
()
const
{
return
fRunId
; }
109
110
UInt_t
GetPeriodId
()
const
{
return
fPeriodId
; }
111
112
UInt_t
GetNevents
()
const
{
return
fNTotalEvents
; }
113
114
UInt_t
GetEventId
()
const
115
{
116
if
(
fDecoder
)
117
return
fDecoder
->GetEventId();
118
if
(
fRawSource
)
119
return
fRawSource
->GetEventId();
120
}
121
122
TTimeStamp
GetRunStartTime
()
const
123
{
124
if
(
fDecoder
)
125
return
fDecoder
->GetRunStartTime();
126
if
(
fRawSource
)
127
return
fRawSource
->GetRunStartTime();
128
}
129
130
TTimeStamp
GetRunEndTime
()
const
131
{
132
if
(
fDecoder
)
133
return
fDecoder
->GetRunEndTime();
134
if
(
fRawSource
)
135
return
fRawSource
->GetRunEndTime();
136
}
137
138
TString
GetRootFileName
() {
return
fRootFileName
; }
139
140
void
SetDetectorSetup
(std::map<DetectorId, bool> setup)
141
{
142
fDetectorSetup
= setup;
143
if
(
fDecoder
)
144
fDecoder
->SetDetectorSetup(
fDetectorSetup
);
145
}
146
147
void
SetDecoderConfigFileName
(
string
FileName)
148
{
149
fDecoderConfigFileName
= FileName;
150
if
(
fRawSource
)
151
fRawSource
->SetDecoderConfigFileName(
fDecoderConfigFileName
);
152
if
(
fDecoder
)
153
fDecoder
->SetDecoderConfigFileName(
fDecoderConfigFileName
);
154
}
155
156
void
SetEvForPedestals
(UInt_t
v
)
157
{
158
fEvForPedestals
=
v
;
159
if
(
fDecoder
)
160
fDecoder
->SetEvForPedestals(
fEvForPedestals
);
161
}
162
163
UInt_t
GetEvForPedestals
() {
return
fEvForPedestals
; }
164
165
void
SetBmnSetup
(BmnSetup
v
) {
fBmnSetup
=
v
; }
166
167
BmnSetup
GetBmnSetup
()
const
{
return
fBmnSetup
; }
168
169
void
SetVerbose
(
Int_t
v
) {
fVerbose
=
v
; }
170
171
Int_t
GetVerbose
()
const
{
return
fVerbose
; }
172
173
void
SetUseCalibFile
(
bool
v
) {
fUseCalibFile
=
v
; }
174
175
bool
GetUseCalibFile
()
const
{
return
fUseCalibFile
; }
176
177
void
SetRawRootDirPath
(
TString
path)
178
{
179
fRootDirPath
= path;
180
fRootFileName
=
Form
(
"%sbmn_run%d%s_raw.root"
,
fRootDirPath
.Data(),
fRunId
,
fSubName
.Data());
181
}
182
183
void
SetRawRootFile
(
TString
filename) {
fRootFileName
= filename; }
184
185
void
SetDigiRootFile
(
TString
filename) {
fDigiFileName
= filename; }
186
187
static
Bool_t
IsRootFile
(
TString
name);
188
189
BmnRawSource
*
GetRawConverter
()
const
{
return
fRawSource
; }
190
191
BmnDecoder
*
GetDecoder
()
const
{
return
fDecoder
; }
192
193
void
SetTaskMode
(
bool
v
=
true
)
194
{
195
isTaskMode
=
v
;
196
if
(
fRawSource
)
197
fRawSource
->SetTaskMode(
isTaskMode
);
198
if
(
fDecoder
)
199
fDecoder
->SetTaskMode(
isTaskMode
);
200
}
201
202
bool
GetTaskMode
()
const
{
return
isTaskMode
; }
203
204
/***
205
Set forward mode (without intermediate raw root file)
206
*/
207
void
SetForwardMode
(
bool
v
=
true
)
208
{
209
isForwardMode
=
v
;
210
if
(
fRawSource
)
211
fRawSource
->SetForwardMode(
isForwardMode
);
212
if
(
fDecoder
)
213
fDecoder
->SetForwardMode(
isForwardMode
);
214
}
215
216
bool
GetForwardMode
()
const
{
return
isForwardMode
; }
217
218
private
:
219
BmnRawSource
*
fRawSource
;
220
BmnDecoder
*
fDecoder
;
221
222
Bool_t
isTaskMode
;
223
Bool_t
isForwardMode
;
224
225
const
TTimeStamp
TimeZero
=
TTimeStamp
(time_t(0), 0);
226
Double_t
workTime_cpu
= 0.0;
227
Double_t
workTime_real
= 0.0;
228
229
std::map<DetectorId, bool>
fDetectorSetup
;
230
bool
isRawRootInputFile
;
231
bool
fApplyThreshold
;
232
233
UInt_t
fRunId
;
234
UInt_t
fPeriodId
;
235
// UInt_t fEventId;
236
UInt_t
fNTotalEvents
;
237
UInt_t
fNSignalEvents
;
238
UInt_t
fStartEventId
;
239
240
string
fDecoderConfigFileName
;
241
TString
fRootFileName
;
242
TString
fRootDirPath
;
243
TString
fDigiDirPath
;
244
TString
fRawFileName
;
245
TString
fDigiFileName
;
246
TString
fCalibFileName
;
247
TString
fSubName
;
248
249
ULong_t
fMaxEvent
;
250
251
UInt_t
fDat
;
// current 32-bits word
252
UInt_t
syncCounter
;
253
BmnSetup
fBmnSetup
;
254
UInt_t
fPedEvCntrBySpill
;
255
UInt_t
fPedEvCntr
;
256
UInt_t
fNoiseEvCntr
;
257
Int_t
fEvForPedestals
;
258
Bool_t
fPedEnough
;
259
Bool_t
fNoiseEnough
;
260
Bool_t
fUseCalibFile
;
261
UInt_t
fT0Serial
;
262
263
Int_t
fVerbose
;
264
};
265
266
#endif
v
__m128 v
Definition
P4_F32vec4.h:1
Bool_t
bool Bool_t
Int_t
int Int_t
Double_t
double Double_t
TClonesArray.h
TFile.h
TString.h
Form
char * Form(const char *fmt,...)
TTimeStamp.h
TTree.h
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
BmnDecoder
Definition
BmnDecoder.h:60
BmnRawDataDecoder::fRootDirPath
TString fRootDirPath
Definition
BmnRawDataDecoder.h:242
BmnRawDataDecoder::fDigiDirPath
TString fDigiDirPath
Definition
BmnRawDataDecoder.h:243
BmnRawDataDecoder::GetTaskMode
bool GetTaskMode() const
Definition
BmnRawDataDecoder.h:202
BmnRawDataDecoder::fT0Serial
UInt_t fT0Serial
Definition
BmnRawDataDecoder.h:261
BmnRawDataDecoder::SetDetectorSetup
void SetDetectorSetup(std::map< DetectorId, bool > setup)
Definition
BmnRawDataDecoder.h:140
BmnRawDataDecoder::fEvForPedestals
Int_t fEvForPedestals
Definition
BmnRawDataDecoder.h:257
BmnRawDataDecoder::fDecoder
BmnDecoder * fDecoder
Definition
BmnRawDataDecoder.h:220
BmnRawDataDecoder::GetBmnSetup
BmnSetup GetBmnSetup() const
Definition
BmnRawDataDecoder.h:167
BmnRawDataDecoder::fNoiseEnough
Bool_t fNoiseEnough
Definition
BmnRawDataDecoder.h:259
BmnRawDataDecoder::threshCsc
static double threshCsc
Definition
BmnRawDataDecoder.h:61
BmnRawDataDecoder::SaveAdcQa
void SaveAdcQa()
BmnRawDataDecoder::CreateConverter
void CreateConverter()
Definition
BmnRawDataDecoder.cxx:74
BmnRawDataDecoder::samplesGem
static int samplesGem
Definition
BmnRawDataDecoder.h:62
BmnRawDataDecoder::GetRootFileName
TString GetRootFileName()
Definition
BmnRawDataDecoder.h:138
BmnRawDataDecoder::SetPeriodId
void SetPeriodId(UInt_t v)
Definition
BmnRawDataDecoder.h:93
BmnRawDataDecoder::correctionSil
static double correctionSil
Definition
BmnRawDataDecoder.h:60
BmnRawDataDecoder::fPedEvCntr
UInt_t fPedEvCntr
Definition
BmnRawDataDecoder.h:255
BmnRawDataDecoder::TimeZero
const TTimeStamp TimeZero
Definition
BmnRawDataDecoder.h:225
BmnRawDataDecoder::SetTaskMode
void SetTaskMode(bool v=true)
Definition
BmnRawDataDecoder.h:193
BmnRawDataDecoder::GetDecoder
BmnDecoder * GetDecoder() const
Definition
BmnRawDataDecoder.h:191
BmnRawDataDecoder::GetEventId
UInt_t GetEventId() const
Definition
BmnRawDataDecoder.h:114
BmnRawDataDecoder::fDecoderConfigFileName
string fDecoderConfigFileName
Definition
BmnRawDataDecoder.h:240
BmnRawDataDecoder::correctionGem
static double correctionGem
Definition
BmnRawDataDecoder.h:60
BmnRawDataDecoder::ConvertRawToRoot
BmnStatus ConvertRawToRoot()
Definition
BmnRawDataDecoder.cxx:153
BmnRawDataDecoder::fUseCalibFile
Bool_t fUseCalibFile
Definition
BmnRawDataDecoder.h:260
BmnRawDataDecoder::correctionCsc
static double correctionCsc
Definition
BmnRawDataDecoder.h:60
BmnRawDataDecoder::SetVerbose
void SetVerbose(Int_t v)
Definition
BmnRawDataDecoder.h:169
BmnRawDataDecoder::samplesCsc
static int samplesCsc
Definition
BmnRawDataDecoder.h:62
BmnRawDataDecoder::fPedEnough
Bool_t fPedEnough
Definition
BmnRawDataDecoder.h:258
BmnRawDataDecoder::GetEvForPedestals
UInt_t GetEvForPedestals()
Definition
BmnRawDataDecoder.h:163
BmnRawDataDecoder::fNSignalEvents
UInt_t fNSignalEvents
Definition
BmnRawDataDecoder.h:237
BmnRawDataDecoder::fSubName
TString fSubName
Definition
BmnRawDataDecoder.h:247
BmnRawDataDecoder::DecodeDataToDigiIterate
BmnStatus DecodeDataToDigiIterate()
Definition
BmnRawDataDecoder.cxx:148
BmnRawDataDecoder::fRunId
UInt_t fRunId
Definition
BmnRawDataDecoder.h:233
BmnRawDataDecoder::threshSil
static double threshSil
Definition
BmnRawDataDecoder.h:61
BmnRawDataDecoder::SetDigiRootFile
void SetDigiRootFile(TString filename)
Definition
BmnRawDataDecoder.h:185
BmnRawDataDecoder::SetEvForPedestals
void SetEvForPedestals(UInt_t v)
Definition
BmnRawDataDecoder.h:156
BmnRawDataDecoder::fStartEventId
UInt_t fStartEventId
Definition
BmnRawDataDecoder.h:238
BmnRawDataDecoder::FillProfiles
void FillProfiles()
BmnRawDataDecoder::SetBmnSetup
void SetBmnSetup(BmnSetup v)
Definition
BmnRawDataDecoder.h:165
BmnRawDataDecoder::GetNevents
UInt_t GetNevents() const
Definition
BmnRawDataDecoder.h:112
BmnRawDataDecoder::fRawSource
BmnRawSource * fRawSource
Definition
BmnRawDataDecoder.h:219
BmnRawDataDecoder::~BmnRawDataDecoder
virtual ~BmnRawDataDecoder()
Definition
BmnRawDataDecoder.cxx:65
BmnRawDataDecoder::InitConverter
BmnStatus InitConverter()
Definition
BmnRawDataDecoder.cxx:124
BmnRawDataDecoder::fDat
UInt_t fDat
Definition
BmnRawDataDecoder.h:251
BmnRawDataDecoder::ConnectForward
void ConnectForward()
Definition
BmnRawDataDecoder.cxx:134
BmnRawDataDecoder::SetRunId
void SetRunId(UInt_t v)
Definition
BmnRawDataDecoder.h:84
BmnRawDataDecoder::fBmnSetup
BmnSetup fBmnSetup
Definition
BmnRawDataDecoder.h:253
BmnRawDataDecoder::fNoiseEvCntr
UInt_t fNoiseEvCntr
Definition
BmnRawDataDecoder.h:256
BmnRawDataDecoder::CreateDecoder
void CreateDecoder()
Definition
BmnRawDataDecoder.cxx:97
BmnRawDataDecoder::GetRunId
UInt_t GetRunId() const
Definition
BmnRawDataDecoder.h:108
BmnRawDataDecoder::ConvertRawToRootIterate
BmnStatus ConvertRawToRootIterate(UInt_t *buf, UInt_t len)
Definition
BmnRawDataDecoder.cxx:143
BmnRawDataDecoder::samplesSil
static int samplesSil
Definition
BmnRawDataDecoder.h:62
BmnRawDataDecoder::GetRawConverter
BmnRawSource * GetRawConverter() const
Definition
BmnRawDataDecoder.h:189
BmnRawDataDecoder::GetPeriodId
UInt_t GetPeriodId() const
Definition
BmnRawDataDecoder.h:110
BmnRawDataDecoder::SetApplyThreshold
void SetApplyThreshold(bool b)
Definition
BmnRawDataDecoder.h:102
BmnRawDataDecoder::isRawRootInputFile
bool isRawRootInputFile
Definition
BmnRawDataDecoder.h:230
BmnRawDataDecoder::GetRunStartTime
TTimeStamp GetRunStartTime() const
Definition
BmnRawDataDecoder.h:122
BmnRawDataDecoder::InitDecoder
BmnStatus InitDecoder()
Definition
BmnRawDataDecoder.cxx:129
BmnRawDataDecoder::SetRawRootDirPath
void SetRawRootDirPath(TString path)
Definition
BmnRawDataDecoder.h:177
BmnRawDataDecoder::workTime_cpu
Double_t workTime_cpu
Definition
BmnRawDataDecoder.h:226
BmnRawDataDecoder::fNTotalEvents
UInt_t fNTotalEvents
Definition
BmnRawDataDecoder.h:236
BmnRawDataDecoder::SetForwardMode
void SetForwardMode(bool v=true)
Definition
BmnRawDataDecoder.h:207
BmnRawDataDecoder::fMaxEvent
ULong_t fMaxEvent
Definition
BmnRawDataDecoder.h:249
BmnRawDataDecoder::GetUseCalibFile
bool GetUseCalibFile() const
Definition
BmnRawDataDecoder.h:175
BmnRawDataDecoder::threshGem
static double threshGem
Definition
BmnRawDataDecoder.h:61
BmnRawDataDecoder::DecodeDataToDigi
BmnStatus DecodeDataToDigi()
Definition
BmnRawDataDecoder.cxx:165
BmnRawDataDecoder::workTime_real
Double_t workTime_real
Definition
BmnRawDataDecoder.h:227
BmnRawDataDecoder::syncCounter
UInt_t syncCounter
Definition
BmnRawDataDecoder.h:252
BmnRawDataDecoder::GetRunEndTime
TTimeStamp GetRunEndTime() const
Definition
BmnRawDataDecoder.h:130
BmnRawDataDecoder::IsRootFile
static Bool_t IsRootFile(TString name)
Definition
BmnRawDataDecoder.cxx:170
BmnRawDataDecoder::isTaskMode
Bool_t isTaskMode
Definition
BmnRawDataDecoder.h:222
BmnRawDataDecoder::fDigiFileName
TString fDigiFileName
Definition
BmnRawDataDecoder.h:245
BmnRawDataDecoder::SetDecoderConfigFileName
void SetDecoderConfigFileName(string FileName)
Definition
BmnRawDataDecoder.h:147
BmnRawDataDecoder::SetUseCalibFile
void SetUseCalibFile(bool v)
Definition
BmnRawDataDecoder.h:173
BmnRawDataDecoder::fPeriodId
UInt_t fPeriodId
Definition
BmnRawDataDecoder.h:234
BmnRawDataDecoder::fDetectorSetup
std::map< DetectorId, bool > fDetectorSetup
Definition
BmnRawDataDecoder.h:229
BmnRawDataDecoder::BmnRawDataDecoder
BmnRawDataDecoder(TString file="", TString outfile="", ULong_t nEvents=0, ULong_t period=8)
Definition
BmnRawDataDecoder.cxx:34
BmnRawDataDecoder::fVerbose
Int_t fVerbose
Definition
BmnRawDataDecoder.h:263
BmnRawDataDecoder::FillAdcQa
void FillAdcQa()
BmnRawDataDecoder::SetRawRootFile
void SetRawRootFile(TString filename)
Definition
BmnRawDataDecoder.h:183
BmnRawDataDecoder::fPedEvCntrBySpill
UInt_t fPedEvCntrBySpill
Definition
BmnRawDataDecoder.h:254
BmnRawDataDecoder::fRootFileName
TString fRootFileName
Definition
BmnRawDataDecoder.h:241
BmnRawDataDecoder::GetForwardMode
bool GetForwardMode() const
Definition
BmnRawDataDecoder.h:216
BmnRawDataDecoder::isForwardMode
Bool_t isForwardMode
Definition
BmnRawDataDecoder.h:223
BmnRawDataDecoder::fRawFileName
TString fRawFileName
Definition
BmnRawDataDecoder.h:244
BmnRawDataDecoder::fCalibFileName
TString fCalibFileName
Definition
BmnRawDataDecoder.h:246
BmnRawDataDecoder::FillNoisyChannels
void FillNoisyChannels()
BmnRawDataDecoder::fApplyThreshold
bool fApplyThreshold
Definition
BmnRawDataDecoder.h:231
BmnRawDataDecoder::GetVerbose
Int_t GetVerbose() const
Definition
BmnRawDataDecoder.h:171
BmnRawSource
Definition
BmnRawSource.h:52
TString
TTimeStamp
BmnAdcQA.h
BmnConverter.h
BmnCscRaw2Digit.h
BmnDchRaw2Digit.h
BmnDecoder.h
BmnECALRaw2Digit.h
BmnFHCalRaw2Digit.h
BmnGemRaw2Digit.h
BmnHodoRaw2Digit.h
BmnMscRaw2Digit.h
BmnMwpcRaw2Digit.h
BmnNdetRaw2Digit.h
BmnRawSource.h
BmnScWallRaw2Digit.h
BmnSiBTRaw2Digit.h
BmnSiliconRaw2Digit.h
BmnTof1Raw2Digit.h
BmnTof701Raw2Digit.h
BmnTrigRaw2Digit.h
BmnZDCRaw2Digit.h
nlohmann::json
basic_json<> json
default specialization
Definition
json.hpp:3365
decoder
BmnRawDataDecoder.h
Generated on
for BmnRoot by
1.17.0