BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnRawDataDecoder.cxx
Go to the documentation of this file.
1
#include "
BmnRawDataDecoder.h
"
2
3
#include <iostream>
4
// ROOT
5
#include "
TStopwatch.h
"
6
// FairRoot
7
#include "FairLogger.h"
8
// BmnRoot
9
#include "
BmnConverterTools.h
"
10
#include "UniDetectorParameter.h"
11
#include "UniRawFile.h"
12
#include "UniRun.h"
13
14
// Double_t realtime = 0.0;
15
// Double_t converterTime = 0.0;
16
17
#include <arpa/inet.h>
/* For ntohl for Big Endian LAND. */
18
19
// how protruded the noisy channel should be
20
double
BmnRawDataDecoder::threshGem
= 3.0;
21
double
BmnRawDataDecoder::threshCsc
= 3.0;
22
double
BmnRawDataDecoder::threshSil
= 3.0;
23
24
// if not enough statistic is in histograms
25
double
BmnRawDataDecoder::correctionGem
= 0;
26
double
BmnRawDataDecoder::correctionCsc
= 0;
27
double
BmnRawDataDecoder::correctionSil
= 0;
28
29
// window size
30
int
BmnRawDataDecoder::samplesGem
= 32;
31
int
BmnRawDataDecoder::samplesCsc
= 32;
32
int
BmnRawDataDecoder::samplesSil
= 32;
33
34
BmnRawDataDecoder::BmnRawDataDecoder
(
TString
file,
TString
outfile, ULong_t nEvents, ULong_t period)
35
:
fRawSource
(nullptr)
36
,
fDecoder
(nullptr)
37
,
isTaskMode
(false)
38
,
isForwardMode
(false)
39
,
isRawRootInputFile
(false)
40
,
fApplyThreshold
(
kTRUE
)
41
,
fPeriodId
(period)
42
// , fEventId(0)
43
,
fNTotalEvents
(0)
44
,
fNSignalEvents
(0)
45
,
fStartEventId
(0)
46
,
fRawFileName
(file)
47
,
fMaxEvent
(nEvents)
48
,
fBmnSetup
(
kBMNSETUP
)
49
,
fUseCalibFile
(false)
50
,
fT0Serial
(0)
51
,
fVerbose
(0)
52
{
53
isRawRootInputFile
=
IsRootFile
(
fRawFileName
);
54
BmnFileProp
prop;
55
BmnConverterTools::ParseRawFileName
(
fRawFileName
, prop);
56
fRunId
= prop.
GetRunId
();
57
fSubName
=
BmnConverterTools::GetSubNameAfterRunId
(
fRawFileName
);
58
LOG(debug) <<
"subname "
<<
fSubName
;
59
LOG(info) <<
"RunId "
<<
fRunId
<<
" got from "
<< (
isRawRootInputFile
?
"RawRoot"
:
"RawData"
) <<
" file"
;
60
fDigiFileName
= (outfile ==
""
) ?
Form
(
"bmn_run%d%s_digi.root"
,
fRunId
,
fSubName
.Data()) : outfile;
61
if
(
isRawRootInputFile
)
62
fRootFileName
=
fRawFileName
;
63
}
64
65
BmnRawDataDecoder::~BmnRawDataDecoder
()
66
{
67
LOG(debug) <<
"~BmnRawDataDecoder()"
;
68
if
(
fRawSource
)
69
delete
fRawSource
;
70
if
(
fDecoder
)
71
delete
fDecoder
;
72
}
73
74
void
BmnRawDataDecoder::CreateConverter
()
75
{
76
if
(
fRootFileName
.Length() == 0) {
77
Int_t
lastSlash =
fDigiFileName
.Last(
'/'
);
78
fDigiDirPath
= (lastSlash ==
TString::kNPOS
) ?
""
:
TString
(
fDigiFileName
(0, lastSlash + 1));
79
if
(
fRootDirPath
.Length() == 0)
80
fRootDirPath
=
fDigiDirPath
;
81
fRootFileName
=
Form
(
"%sbmn_run%d%s_raw.root"
,
fRootDirPath
.Data(),
fRunId
,
fSubName
.Data());
82
}
83
if
(
fRootDirPath
.Length()) {
84
bool
dc = std::filesystem::create_directories(
fRootDirPath
.Data());
85
LOGF(info,
"Raw directory: %s was %s"
,
fRootDirPath
.Data(), dc ?
"created"
:
"already present"
);
86
}
87
fRawSource
=
new
BmnRawSource
(
fRawFileName
,
fRootFileName
,
fMaxEvent
,
fPeriodId
);
88
fRawSource
->SetDecoderConfigFileName(
fDecoderConfigFileName
);
89
fRawSource
->SetForwardMode(
isForwardMode
);
90
if
(
fRawSource
->GetRunId() == 0)
91
fRawSource
->SetRunId(
fRunId
);
92
else
93
fRunId
=
fRawSource
->GetRunId();
94
fRawSource
->SetVerbose(
fVerbose
);
95
}
96
97
void
BmnRawDataDecoder::CreateDecoder
()
98
{
99
LOGF(info,
"fRunId %u fRootFileName %s"
,
fRunId
,
fRootFileName
.Data());
100
if
(
fRootFileName
.Length() == 0) {
101
Int_t
lastSlash =
fDigiFileName
.Last(
'/'
);
102
fDigiDirPath
= (lastSlash ==
TString::kNPOS
) ?
""
:
TString
(
fDigiFileName
(0, lastSlash + 1));
103
if
(
fRootDirPath
.Length() == 0)
104
fRootDirPath
=
fDigiDirPath
;
105
fRootFileName
=
Form
(
"%sbmn_run%d%s_raw.root"
,
fRootDirPath
.Data(),
fRunId
,
fSubName
.Data());
106
}
107
fDecoder
=
new
BmnDecoder
(
fRootFileName
,
fDigiFileName
,
fMaxEvent
,
fPeriodId
);
108
fDecoder
->SetForwardMode(
isForwardMode
);
109
fDecoder
->SetDecoderConfigFileName(
fDecoderConfigFileName
);
110
fDecoder
->SetDetectorSetup(
fDetectorSetup
);
111
fDecoder
->SetBmnSetup(
fBmnSetup
);
112
if
(
fDecoder
->GetRunId() == 0)
113
fDecoder
->SetRunId(
fRunId
);
114
else
115
fRunId
=
fDecoder
->GetRunId();
116
fDecoder
->SetVerbose(
fVerbose
);
117
}
118
119
BmnStatus
BmnRawDataDecoder::InitConverter
(
TString
FileName)
120
{
121
return
fRawSource
->InitConverter(FileName);
122
}
123
124
BmnStatus
BmnRawDataDecoder::InitConverter
()
125
{
126
return
fRawSource
->InitConverter();
127
}
128
129
BmnStatus
BmnRawDataDecoder::InitDecoder
()
130
{
131
return
fDecoder
->InitDecoder();
132
}
133
134
void
BmnRawDataDecoder::ConnectForward
()
135
{
136
TTree
* raw_tree =
fRawSource
->GetRawTree();
137
fDecoder
->SetRawTree(raw_tree);
138
TTree
* raw_tree_spills =
fRawSource
->GetRawTreeSpills();
139
fDecoder
->SetRawTreeSpills(raw_tree_spills);
140
fDecoder
->AssignInputs();
141
}
142
143
BmnStatus
BmnRawDataDecoder::ConvertRawToRootIterate
(UInt_t* buf, UInt_t len)
144
{
145
return
fRawSource
->ConvertRawToRootIterate(buf, len);
146
}
147
148
BmnStatus
BmnRawDataDecoder::DecodeDataToDigiIterate
()
149
{
150
return
fDecoder
->DecodeDataToDigiIterate();
151
}
152
153
BmnStatus
BmnRawDataDecoder::ConvertRawToRoot
()
154
{
155
if
(
isRawRootInputFile
) {
156
LOGF(info,
"Input is raw root file. Nothing to do!"
);
157
return
kBMNSUCCESS
;
158
}
else
{
159
if
(!
fRawSource
)
160
CreateConverter
();
161
return
fRawSource
->ConvertRawToRoot();
162
}
163
}
164
165
BmnStatus
BmnRawDataDecoder::DecodeDataToDigi
()
166
{
167
return
fDecoder
->DecodeDataToDigi();
168
}
169
170
Bool_t
BmnRawDataDecoder::IsRootFile
(
TString
name)
171
{
172
TPRegexp
re(
".+\\.root"
);
173
return
re.
MatchB
(name);
174
}
Bool_t
bool Bool_t
Int_t
int Int_t
kTRUE
constexpr Bool_t kTRUE
TStopwatch.h
Form
char * Form(const char *fmt,...)
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
kBMNSUCCESS
@ kBMNSUCCESS
Success.
Definition
BmnEnums.h:94
kBMNSETUP
@ kBMNSETUP
Definition
BmnEnums.h:166
BmnConverterTools::GetSubNameAfterRunId
static TString GetSubNameAfterRunId(TString name)
Definition
BmnConverterTools.cxx:488
BmnConverterTools::ParseRawFileName
static BmnStatus ParseRawFileName(const TString &s, BmnFileProp &prop)
Definition
BmnConverterTools.cxx:506
BmnDecoder
Definition
BmnDecoder.h:60
BmnFileProp
Definition
BmnFileProp.h:11
BmnFileProp::GetRunId
uint32_t GetRunId() const
Definition
BmnFileProp.h:22
BmnRawDataDecoder::fRootDirPath
TString fRootDirPath
Definition
BmnRawDataDecoder.h:242
BmnRawDataDecoder::fDigiDirPath
TString fDigiDirPath
Definition
BmnRawDataDecoder.h:243
BmnRawDataDecoder::fT0Serial
UInt_t fT0Serial
Definition
BmnRawDataDecoder.h:261
BmnRawDataDecoder::fDecoder
BmnDecoder * fDecoder
Definition
BmnRawDataDecoder.h:220
BmnRawDataDecoder::threshCsc
static double threshCsc
Definition
BmnRawDataDecoder.h:61
BmnRawDataDecoder::CreateConverter
void CreateConverter()
Definition
BmnRawDataDecoder.cxx:74
BmnRawDataDecoder::samplesGem
static int samplesGem
Definition
BmnRawDataDecoder.h:62
BmnRawDataDecoder::correctionSil
static double correctionSil
Definition
BmnRawDataDecoder.h:60
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::samplesCsc
static int samplesCsc
Definition
BmnRawDataDecoder.h:62
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::fStartEventId
UInt_t fStartEventId
Definition
BmnRawDataDecoder.h:238
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::ConnectForward
void ConnectForward()
Definition
BmnRawDataDecoder.cxx:134
BmnRawDataDecoder::fBmnSetup
BmnSetup fBmnSetup
Definition
BmnRawDataDecoder.h:253
BmnRawDataDecoder::CreateDecoder
void CreateDecoder()
Definition
BmnRawDataDecoder.cxx:97
BmnRawDataDecoder::ConvertRawToRootIterate
BmnStatus ConvertRawToRootIterate(UInt_t *buf, UInt_t len)
Definition
BmnRawDataDecoder.cxx:143
BmnRawDataDecoder::samplesSil
static int samplesSil
Definition
BmnRawDataDecoder.h:62
BmnRawDataDecoder::isRawRootInputFile
bool isRawRootInputFile
Definition
BmnRawDataDecoder.h:230
BmnRawDataDecoder::InitDecoder
BmnStatus InitDecoder()
Definition
BmnRawDataDecoder.cxx:129
BmnRawDataDecoder::fNTotalEvents
UInt_t fNTotalEvents
Definition
BmnRawDataDecoder.h:236
BmnRawDataDecoder::fMaxEvent
ULong_t fMaxEvent
Definition
BmnRawDataDecoder.h:249
BmnRawDataDecoder::threshGem
static double threshGem
Definition
BmnRawDataDecoder.h:61
BmnRawDataDecoder::DecodeDataToDigi
BmnStatus DecodeDataToDigi()
Definition
BmnRawDataDecoder.cxx:165
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::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::fRootFileName
TString fRootFileName
Definition
BmnRawDataDecoder.h:241
BmnRawDataDecoder::isForwardMode
Bool_t isForwardMode
Definition
BmnRawDataDecoder.h:223
BmnRawDataDecoder::fRawFileName
TString fRawFileName
Definition
BmnRawDataDecoder.h:244
BmnRawDataDecoder::fApplyThreshold
bool fApplyThreshold
Definition
BmnRawDataDecoder.h:231
BmnRawSource
Definition
BmnRawSource.h:52
TPRegexp
TPRegexp::MatchB
Bool_t MatchB(const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10)
TString
TString::kNPOS
static constexpr Ssiz_t kNPOS
TTree
BmnConverterTools.h
BmnRawDataDecoder.h
decoder
BmnRawDataDecoder.cxx
Generated on
for BmnRoot by
1.17.0