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