BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnHistGem.cxx
Go to the documentation of this file.
1
#include "
BmnHistGem.h
"
2
3
#include "BmnGemStripDigit.h"
4
#include "BmnGemStripStationSet.h"
5
#include "BmnRawDataDecoder.h"
6
7
#include <algorithm>
8
#include <numeric>
9
10
BmnHistGem::BmnHistGem
(
TString
title,
TString
path,
Int_t
PeriodID,
BmnSetup
stp)
11
:
BmnHist
(PeriodID, stp)
12
{
13
sumMods
= 0;
14
maxLayers
= 0;
15
refPath
= path;
16
fTitle
= title;
17
fName
= title +
"_cl"
;
18
TString
name;
19
unique_ptr<BmnGemStripStationSet> gemStationSet =
BmnGemStripStationSet::Create
(
fPeriodID
,
fSetup
);
20
for
(
Int_t
iStation = 0; iStation < gemStationSet->GetNStations(); iStation++) {
21
vector<vector<TH1I*>> rowGEM;
22
BmnGemStripStation
* st = gemStationSet->GetGemStation(iStation);
23
sumMods
+= st->
GetNModules
();
24
for
(
Int_t
iModule = 0; iModule < st->
GetNModules
(); iModule++) {
25
vector<TH1I*> colGEM;
26
BmnGemStripModule
* mod = st->
GetModule
(iModule);
27
if
((
Int_t
)
maxLayers < mod->
GetNStripLayers())
28
maxLayers
= mod->
GetNStripLayers
();
29
for
(
Int_t
iLayer = 0; iLayer < mod->
GetNStripLayers
(); iLayer++) {
30
BmnGemStripLayer
lay = mod->
GetStripLayer
(iLayer);
31
name =
Form
(
fTitle
+
"_Station_%d_module_%d_layer_%d"
, iStation, iModule, iLayer);
32
TH1I
* h =
new
TH1I
(name, name, lay.
GetNStrips
(), 0, lay.
GetNStrips
());
33
h->
GetXaxis
()->
SetTitle
(
"Strip Number"
);
34
h->
GetYaxis
()->
SetTitle
(
"Activation Count"
);
35
BmnHist::SetHistStyleTH1
(h);
36
colGEM.push_back(h);
37
}
38
rowGEM.push_back(colGEM);
39
}
40
histGemStrip
.push_back(rowGEM);
41
}
42
// Create canvas
43
name =
fTitle
+
"Canvas"
;
44
canGemStrip
=
new
TCanvas
(name, name, PAD_WIDTH *
maxLayers
, PAD_HEIGHT *
sumMods
);
45
canGemStrip
->Divide(
maxLayers
,
sumMods
, 0.01 /
maxLayers
, 0.01 /
sumMods
);
46
Int_t
modCtr = 0;
// filling GEM Canvas' pads
47
canStripPads
.resize(
sumMods
*
maxLayers
);
48
Names
.resize(
sumMods
*
maxLayers
);
49
for
(
Int_t
iStation = 0; iStation < gemStationSet->GetNStations(); iStation++) {
50
BmnGemStripStation
* st = gemStationSet->GetGemStation(iStation);
51
for
(
Int_t
iModule = 0; iModule < st->
GetNModules
(); iModule++) {
52
BmnGemStripModule
* mod = st->
GetModule
(iModule);
53
for
(
Int_t
iLayer = 0; iLayer < mod->
GetNStripLayers
(); iLayer++) {
54
PadInfo
* p =
new
PadInfo
();
55
p->
opt
=
""
;
56
p->
current
=
histGemStrip
[iStation][iModule][iLayer];
57
Int_t
iPad = modCtr *
maxLayers
+ iLayer;
58
canStripPads
[iPad] = p;
59
canGemStrip
->GetPad(iPad + 1)->SetGrid();
60
Names
[iPad] =
canStripPads
[iPad]->current->GetName();
61
}
62
modCtr++;
63
}
64
}
65
}
66
67
BmnHistGem::~BmnHistGem
()
68
{
69
delete
canGemStrip
;
70
if
(
fDir
)
71
return
;
72
for
(
auto
pad :
canStripPads
)
73
delete
pad;
74
}
75
76
void
BmnHistGem::Register
(
THttpServer
* serv)
77
{
78
fServer
= serv;
79
fServer
->Register(
"/"
,
this
);
80
TString
path =
"/"
+
fTitle
+
"/"
;
81
fServer
->Register(path,
canGemStrip
);
82
// for (auto row : histGemStrip)
83
// for (auto col : row)
84
// for (auto el : col)
85
// fServer->Register(path, el);
86
fServer
->SetItemField(path,
"_monitoring"
,
"2000"
);
87
fServer
->SetItemField(path,
"_layout"
,
"grid3x3"
);
88
TString
cmd =
"/"
+
fName
+
"/->Reset()"
;
89
TString
cmdTitle = path +
"Reset"
;
90
// fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(), "button;");
91
fServer
->Restrict(cmdTitle.
Data
(),
"visible=shift"
);
92
fServer
->Restrict(cmdTitle.
Data
(),
"allow=shift"
);
93
fServer
->Restrict(cmdTitle.
Data
(),
"deny=guest"
);
94
cmd =
"/"
+
fName
+
"/->SetRefRun(%arg1%)"
;
95
cmdTitle = path +
"SetRefRun"
;
96
fServer
->RegisterCommand(cmdTitle.
Data
(), cmd.
Data
(),
"button;"
);
97
// fServer->Restrict(cmdTitle.Data(), "deny=guest");
98
}
99
100
void
BmnHistGem::SetDir
(
TFile
* outFile,
TTree
* recoTree)
101
{
102
frecoTree
= recoTree;
103
fDir
= NULL;
104
if
(outFile != NULL)
105
fDir
= outFile->
mkdir
(
fTitle
+
"_hists"
);
106
for
(
auto
row :
histGemStrip
)
107
for
(
auto
col : row)
108
for
(
auto
el : col)
109
el->SetDirectory(
fDir
);
110
}
111
112
void
BmnHistGem::DrawBoth
()
113
{
114
BmnHist::DrawRef
(
canGemStrip
, &
canStripPads
);
115
}
116
117
void
BmnHistGem::FillFromDigi
(
DigiArrays
* fDigiArrays)
118
{
119
TClonesArray
* gemDigits = fDigiArrays->
gem
;
120
if
(!gemDigits)
121
return
;
122
for
(
Int_t
digIndex = 0; digIndex < gemDigits->
GetEntriesFast
(); digIndex++) {
123
BmnGemStripDigit
* gs =
static_cast<
BmnGemStripDigit
*
>
(gemDigits->
At
(digIndex));
124
Int_t
module = gs->
GetModule
();
125
Int_t
station = gs->
GetStation
();
126
Int_t
layer = gs->
GetStripLayer
();
127
Int_t
gemStrip = gs->
GetStripNumber
();
128
histGemStrip
[station][module][layer]->Fill(gemStrip);
129
}
130
}
131
132
BmnStatus
BmnHistGem::SetRefRun
(
Int_t
id
)
133
{
134
if
(
refID
!=
id
) {
135
TString
FileName =
Form
(
"bmn_run%04d_hist.root"
,
id
);
136
printf(
"SetRefRun: %s\n"
, FileName.
Data
());
137
refRunName
= FileName;
138
refID
= id;
139
BmnHist::LoadRefRun
(
refID
,
refPath
+ FileName,
fTitle
,
canStripPads
,
Names
);
140
DrawBoth
();
141
}
142
143
return
kBMNSUCCESS
;
144
}
145
146
void
BmnHistGem::ClearRefRun
()
147
{
148
for
(
auto
pad :
canStripPads
) {
149
if
(pad)
150
if
(pad->ref) {
151
delete
pad->ref;
152
pad->ref =
nullptr
;
153
}
154
}
155
refID
= 0;
156
}
157
158
void
BmnHistGem::Reset
()
159
{
160
for
(
auto
row :
histGemStrip
)
161
for
(
auto
col : row)
162
for
(
auto
el : col)
163
el->Reset();
164
}
Int_t
int Int_t
Form
char * Form(const char *fmt,...)
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
kBMNSUCCESS
@ kBMNSUCCESS
Success.
Definition
BmnEnums.h:94
BmnSetup
BmnSetup
Define experimental setup.
Definition
BmnEnums.h:165
BmnGemStripDigit
Definition
BmnGemStripDigit.h:9
BmnGemStripLayer
Definition
BmnGemStripLayer.h:15
BmnGemStripLayer::GetNStrips
Int_t GetNStrips()
Definition
BmnGemStripLayer.cxx:109
BmnGemStripModule
Definition
BmnGemStripModule.h:27
BmnGemStripModule::GetStripLayer
BmnGemStripLayer & GetStripLayer(Int_t num)
Definition
BmnGemStripModule.h:86
BmnGemStripModule::GetNStripLayers
Int_t GetNStripLayers()
Definition
BmnGemStripModule.h:85
BmnGemStripStationSet::Create
static unique_ptr< BmnGemStripStationSet > Create(Int_t period, Int_t stp=0)
Definition
BmnGemStripStationSet.cxx:362
BmnGemStripStation
Definition
BmnGemStripStation.h:12
BmnGemStripStation::GetModule
BmnGemStripModule * GetModule(Int_t module_num)
Definition
BmnGemStripStation.cxx:183
BmnGemStripStation::GetNModules
Int_t GetNModules()
Definition
BmnGemStripStation.h:62
BmnHistGem::Register
void Register(THttpServer *serv)
Definition
BmnHistGem.cxx:76
BmnHistGem::SetDir
void SetDir(TFile *outFile=NULL, TTree *recoTree=NULL)
Definition
BmnHistGem.cxx:100
BmnHistGem::FillFromDigi
void FillFromDigi(DigiArrays *fDigiArrays)
Definition
BmnHistGem.cxx:117
BmnHistGem::histGemStrip
vector< vector< vector< TH1I * > > > histGemStrip
Definition
BmnHistGem.h:37
BmnHistGem::Reset
void Reset()
Definition
BmnHistGem.cxx:158
BmnHistGem::maxLayers
UInt_t maxLayers
Definition
BmnHistGem.h:42
BmnHistGem::~BmnHistGem
virtual ~BmnHistGem()
Definition
BmnHistGem.cxx:67
BmnHistGem::canGemStrip
TCanvas * canGemStrip
Definition
BmnHistGem.h:38
BmnHistGem::canStripPads
vector< PadInfo * > canStripPads
Definition
BmnHistGem.h:40
BmnHistGem::ClearRefRun
void ClearRefRun()
Definition
BmnHistGem.cxx:146
BmnHistGem::Names
vector< TString > Names
Definition
BmnHistGem.h:36
BmnHistGem::DrawBoth
void DrawBoth()
Definition
BmnHistGem.cxx:112
BmnHistGem::sumMods
UInt_t sumMods
Definition
BmnHistGem.h:41
BmnHistGem::BmnHistGem
BmnHistGem(TString title, TString path="", Int_t periodID=7, BmnSetup setup=kBMNSETUP)
Definition
BmnHistGem.cxx:10
BmnHistGem::SetRefRun
BmnStatus SetRefRun(Int_t id)
Definition
BmnHistGem.cxx:132
BmnHist::fPeriodID
Int_t fPeriodID
Definition
BmnHist.h:94
BmnHist::frecoTree
TTree * frecoTree
Definition
BmnHist.h:88
BmnHist::refID
Int_t refID
Definition
BmnHist.h:92
BmnHist::refPath
TString refPath
Definition
BmnHist.h:90
BmnHist::fDir
TDirectory * fDir
Definition
BmnHist.h:89
BmnHist::DrawRef
static void DrawRef(unique_ptr< TCanvas > &canGemStrip, vector< PadInfo * > *canGemStripPads)
Definition
BmnHist.cxx:15
BmnHist::fSetup
BmnSetup fSetup
Definition
BmnHist.h:95
BmnHist::SetHistStyleTH1
static void SetHistStyleTH1(TH1 *h)
Definition
BmnHist.cxx:195
BmnHist::refRunName
TString refRunName
Definition
BmnHist.h:91
BmnHist::LoadRefRun
static BmnStatus LoadRefRun(Int_t refID, TString FullName, TString fTitle, vector< PadInfo * > canPads, vector< TString > Names)
Definition
BmnHist.cxx:100
BmnHist::fServer
THttpServer * fServer
Definition
BmnHist.h:87
BmnHist::BmnHist
BmnHist(Int_t periodID=7, BmnSetup setup=kBMNSETUP)
Definition
BmnHist.cxx:3
BmnStripDigit::GetStripNumber
Int_t GetStripNumber()
Definition
BmnStripDigit.h:29
BmnStripDigit::GetStripLayer
Int_t GetStripLayer()
Definition
BmnStripDigit.h:28
BmnStripDigit::GetStation
Int_t GetStation()
Definition
BmnStripDigit.h:26
BmnStripDigit::GetModule
Int_t GetModule()
Definition
BmnStripDigit.h:27
DigiArrays
Definition
DigiArrays.h:10
DigiArrays::gem
TClonesArray * gem
Definition
DigiArrays.h:126
PadInfo
Storage for pad content and it's options.
Definition
PadInfo.h:20
PadInfo::opt
string opt
Definition
PadInfo.h:88
PadInfo::current
TH1 * current
Definition
PadInfo.h:78
TCanvas
TDirectoryFile::mkdir
TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
TFile
TH1I
TH1::GetXaxis
TAxis * GetXaxis()
TH1::GetYaxis
TAxis * GetYaxis()
THttpServer
TNamed::SetTitle
virtual void SetTitle(const char *title="")
TNamed::fTitle
TString fTitle
TNamed::fName
TString fName
TObjArray::GetEntriesFast
Int_t GetEntriesFast() const
TObjArray::At
TObject * At(Int_t idx) const override
TObject::TClonesArray
friend friend class TClonesArray
TString
TString::Data
const char * Data() const
TTree
BmnHistGem.h
monitor
BmnHistGem.cxx
Generated on
for BmnRoot by
1.17.0