BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnZdcDigitizer.cxx
Go to the documentation of this file.
1
/*
2
* File: BmnZdcDigitizer.cxx
3
* Author: Petr Alekseev
4
*
5
* Created on 29.05.2020, 18:00
6
*/
7
8
#include "
BmnZdcDigitizer.h
"
9
10
#include "
BmnZdcPoint.h
"
11
#include "FairLogger.h"
12
#include "FairRootManager.h"
13
14
#include <FairRun.h>
15
#include <FairRunSim.h>
16
17
BmnZdcDigitizer::BmnZdcDigitizer
()
18
{
19
fArrayOfZdcPoints
=
nullptr
;
20
fArrayOfZdcDigits
=
nullptr
;
21
}
22
23
BmnZdcDigitizer::~BmnZdcDigitizer
() {}
24
25
InitStatus
BmnZdcDigitizer::Init
()
26
{
27
28
FairRootManager* ioman = FairRootManager::Instance();
29
fArrayOfZdcPoints
= (
TClonesArray
*)ioman->GetObject(
"ZdcPoint"
);
30
if
(
fArrayOfZdcPoints
==
nullptr
) {
31
LOG(error) <<
"BmnZdcDigitizer::Init() branch 'ZdcPoint' not found! Task will be deactivated"
;
32
SetActive(
kFALSE
);
33
return
kERROR;
34
}
35
36
fArrayOfZdcDigits
=
new
TClonesArray
(
"BmnZDCDigit"
);
37
ioman->Register(
"ZdcDigit"
,
"Zdc"
,
fArrayOfZdcDigits
,
kTRUE
);
38
39
LoadMap
(
"ZDC_map_period_5.txt"
);
40
41
Info
(__func__,
"ZDC digitizer ready"
);
42
return
kSUCCESS;
43
}
44
45
void
BmnZdcDigitizer::Exec
(
Option_t
* opt)
46
{
47
if
(!IsActive())
48
return
;
49
50
// Reset arrays
51
fArrayOfZdcDigits
->Delete();
52
for
(
Int_t
i
= 0;
i
< 106;
i
++) {
53
fModules
[
i
].SetAmp(0.);
54
}
55
56
// Collect points
57
Int_t
N =
fArrayOfZdcPoints
->GetEntries();
58
for
(
Int_t
i
= 0;
i
< N;
i
++) {
59
BmnZdcPoint
* p = (
BmnZdcPoint
*)
fArrayOfZdcPoints
->At(
i
);
60
61
Int_t
ch = p->
GetCopyMother
();
62
if
(ch < 106) {
63
fModules
[ch].SetAmp(
fModules
[ch].GetAmp() + p->GetEnergyLoss());
64
}
else
{
65
Error
(__func__,
"ZDC module %d ignored"
, ch);
66
}
67
}
68
69
// Store digits
70
for
(
Int_t
i
= 1;
i
< 105;
i
++) {
71
Double_t
amp =
fModules
[
i
].GetAmp() *
fScale
;
72
73
if
(amp == 0.)
74
continue
;
75
if
(
i
< 69) {
76
if
(amp <
fLargeModThreshold
)
77
continue
;
78
}
else
{
79
if
(amp <
fSmallModThreshold
)
80
continue
;
81
}
82
83
BmnZDCDigit
* p =
new
((*fArrayOfZdcDigits)[
fArrayOfZdcDigits
->GetEntriesFast()])
BmnZDCDigit
();
84
*p =
fModules
[
i
];
85
p->
SetAmp
(amp);
86
}
87
88
if
(
fModules
[105].GetAmp() > 0) {
89
BmnZDCDigit
* p =
new
((*fArrayOfZdcDigits)[
fArrayOfZdcDigits
->GetEntriesFast()])
BmnZDCDigit
();
90
p->
SetChannel
(111);
91
p->
SetAmp
(
fModules
[105].GetAmp());
92
}
93
}
94
95
void
BmnZdcDigitizer::LoadMap
(
const
char
* fileName)
96
{
97
ifstream in;
98
99
TString
path = getenv(
"VMCWORKDIR"
);
100
path +=
"/input/"
;
101
path += fileName;
102
in.open(path.Data());
103
if
(!in.is_open()) {
104
Fatal
(__func__,
"Loading ZDC Map from file: %s - file open error!\n"
, fileName);
105
return
;
106
}
107
Info
(__func__,
"Loading ZDC Map from file: %s\n"
, fileName);
108
109
TString
dummy;
110
in >> dummy >> dummy >> dummy >> dummy >> dummy >> dummy >> dummy >> dummy >> dummy >> dummy;
111
112
// int ixmin = -1, ixmax = -1, iymin = -1, iymax = -1;
113
// int xmin = 10000., xmax = -10000., ymin = 10000., ymax = -10000.;
114
while
(!in.eof()) {
115
int
id, chan, front_chan, size, ix, iy, used;
116
float
x, y;
117
in >> std::hex >>
id
>> std::dec >> chan >> front_chan >> size >> ix >> iy >> x >> y >> used;
118
if
(!in.good())
119
break
;
120
// printf("%0x %d %d %d %d %d %f %f\n",id,chan,front_chan,size,ix,iy,x,y);
121
if
(front_chan > 0 && front_chan < 105) {
122
fModules
[front_chan].SetChannel(front_chan);
123
fModules
[front_chan].SetSize(size);
124
fModules
[front_chan].SetIX(ix);
125
fModules
[front_chan].SetIY(iy);
126
fModules
[front_chan].SetX(x);
127
fModules
[front_chan].SetY(y);
128
}
129
}
130
in.close();
131
}
i
int i
Definition
P4_F32vec4.h:22
Int_t
int Int_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
Option_t
const char Option_t
Info
void Info(const char *location, const char *msgfmt,...)
Error
void Error(const char *location, const char *msgfmt,...)
Fatal
void Fatal(const char *location, const char *msgfmt,...)
BmnCaloDigit::SetChannel
void SetChannel(UShort_t ch)
Definition
BmnCaloDigit.h:28
BmnCaloDigit::SetAmp
void SetAmp(Float_t amp)
Definition
BmnCaloDigit.h:29
BmnZDCDigit
Definition
BmnZDCDigit.h:7
BmnZdcDigitizer::Init
virtual InitStatus Init()
Definition
BmnZdcDigitizer.cxx:25
BmnZdcDigitizer::fArrayOfZdcDigits
TClonesArray * fArrayOfZdcDigits
Definition
BmnZdcDigitizer.h:41
BmnZdcDigitizer::BmnZdcDigitizer
BmnZdcDigitizer()
Definition
BmnZdcDigitizer.cxx:17
BmnZdcDigitizer::fModules
BmnZDCDigit fModules[106]
Definition
BmnZdcDigitizer.h:38
BmnZdcDigitizer::Exec
virtual void Exec(Option_t *opt)
Definition
BmnZdcDigitizer.cxx:45
BmnZdcDigitizer::fArrayOfZdcPoints
TClonesArray * fArrayOfZdcPoints
Definition
BmnZdcDigitizer.h:40
BmnZdcDigitizer::fLargeModThreshold
Double_t fLargeModThreshold
Definition
BmnZdcDigitizer.h:45
BmnZdcDigitizer::fScale
Double_t fScale
Definition
BmnZdcDigitizer.h:43
BmnZdcDigitizer::~BmnZdcDigitizer
virtual ~BmnZdcDigitizer()
Definition
BmnZdcDigitizer.cxx:23
BmnZdcDigitizer::fSmallModThreshold
Double_t fSmallModThreshold
Definition
BmnZdcDigitizer.h:44
BmnZdcDigitizer::LoadMap
void LoadMap(const char *fileName)
Definition
BmnZdcDigitizer.cxx:95
BmnZdcPoint
Definition
BmnZdcPoint.h:20
BmnZdcPoint::GetCopyMother
Short_t GetCopyMother() const
Definition
BmnZdcPoint.h:58
TClonesArray
TString
BmnZdcDigitizer.h
BmnZdcPoint.h
detectors
zdc
BmnZdcDigitizer.cxx
Generated on
for BmnRoot by
1.17.0