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