BmnRoot
26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnHistECAL.cxx
Go to the documentation of this file.
1
/*
2
* To change this license header, choose License Headers in Project Properties.
3
* To change this template file, choose Tools | Templates
4
* and open the template in the editor.
5
*/
6
7
/*
8
* File: BmnHistEcal.cxx
9
* Author: ilnur
10
*
11
* Created on March 17, 2017, 2:48 PM
12
*/
13
14
#include "
BmnHistECAL.h
"
15
16
#include "
TGaxis.h
"
17
18
BmnHistECAL::BmnHistECAL
(
TString
title,
TString
path)
19
:
BmnHist
()
20
{
21
fTitle
= title;
22
fName
= title +
"_cl"
;
23
TGaxis::SetMaxDigits
(1);
24
TString
name;
25
name =
fTitle
+
"_h2d_Grid"
;
26
h2d_grid
=
new
TH2D
(name,
fTitle
+
" Grid"
, 32, 0, 32, 32, 0, 32);
27
h2d_grid
->GetXaxis()->SetTitle(
"iX"
);
28
h2d_grid
->GetYaxis()->SetTitle(
"iY"
);
29
BmnHist::SetHistStyleTH1
(
h2d_grid
);
30
h2d_grid
->GetZaxis()->SetNoExponent(
kTRUE
);
31
name =
fTitle
+
"_h2d_Profile"
;
32
h2d_profile
=
new
TH2D
(name,
fTitle
+
" Profile"
, 1200, 0, 1200, 1200, 0, 1200);
33
h2d_profile
->GetXaxis()->SetTitle(
"X"
);
34
h2d_profile
->GetYaxis()->SetTitle(
"Y"
);
35
BmnHist::SetHistStyleTH1
(
h2d_profile
);
36
name =
fTitle
+
"_X_Amplitude"
;
37
hx
=
new
TH1D
(name,
fTitle
+
" X Amplitude"
, 1200, 0, 1200);
38
hx
->GetYaxis()->SetNoExponent(
kTRUE
);
39
hx
->GetYaxis()->SetMoreLogLabels(
kFALSE
);
40
name =
fTitle
+
"_Y_Amplitude"
;
41
hy
=
new
TH1D
(name,
fTitle
+
" Y Amplitude"
, 1200, 0, 1200);
42
hy
->GetYaxis()->SetNoExponent(
kFALSE
);
43
hx
->GetYaxis()->SetMoreLogLabels(
kTRUE
);
44
name =
fTitle
+
"CanvasAmplitudes"
;
45
canAmps
=
new
TCanvas
(name, name, PAD_WIDTH *
ECAL_ROWS
, PAD_HEIGHT *
ECAL_COLS
);
46
canAmps
->Divide(
ECAL_ROWS
,
ECAL_COLS
);
47
canAmpsPads
.resize(
ECAL_ROWS
*
ECAL_COLS
);
48
NamesAmps
.resize(
ECAL_ROWS
*
ECAL_COLS
);
49
50
PadInfo
* p =
new
PadInfo
();
51
p->
current
=
hx
;
52
canAmpsPads
[0] = p;
53
PadInfo
* p1 =
new
PadInfo
();
54
p1->
current
=
hy
;
55
canAmpsPads
[1] = p1;
56
57
for
(
Int_t
rowIndex = 0; rowIndex <
ECAL_ROWS
; rowIndex++) {
58
for
(
Int_t
colIndex = 0; colIndex <
ECAL_COLS
; colIndex++) {
59
Int_t
iPad = rowIndex *
ECAL_COLS
+ colIndex;
60
canAmps
->GetPad(iPad + 1)->SetGrid();
61
NamesAmps
[iPad] =
canAmpsPads
[iPad]->current->GetName();
62
TH1
* h =
canAmpsPads
[iPad]->current;
63
h->
GetXaxis
()->
SetTitle
(
"Coordinate"
);
64
h->
GetYaxis
()->
SetTitle
(
"Amplitude"
);
65
BmnHist::SetHistStyleTH1
(h);
66
h->
GetYaxis
()->
SetNoExponent
(
kFALSE
);
67
}
68
}
69
}
70
71
BmnHistECAL::~BmnHistECAL
()
72
{
73
delete
canAmps
;
74
if
(
fDir
!= NULL)
75
return
;
76
delete
h2d_grid
;
77
delete
h2d_profile
;
78
delete
hx
;
79
delete
hy
;
80
for
(
auto
pad :
canAmpsPads
)
81
delete
pad;
82
}
83
84
void
BmnHistECAL::Register
(
THttpServer
* serv)
85
{
86
fServer
= serv;
87
fServer
->Register(
"/"
,
this
);
88
TString
path =
"/"
+
fTitle
+
"/"
;
89
fServer
->Register(path,
h2d_grid
);
90
fServer
->Register(path,
h2d_profile
);
91
fServer
->Register(path,
canAmps
);
92
TString
cmd =
"/"
+
fName
+
"/->Reset()"
;
93
fServer
->SetItemField(path.Data(),
"_monitoring"
,
"2000"
);
94
fServer
->SetItemField(path.Data(),
"_layout"
,
"grid3x3"
);
95
TString
cmdTitle = path +
"Reset"
;
96
fServer
->RegisterCommand(cmdTitle.
Data
(), cmd.
Data
(),
"button;"
);
97
fServer
->Restrict(cmdTitle,
"visible=shift"
);
98
fServer
->Restrict(cmdTitle,
"allow=shift"
);
99
cmd =
"/"
+
fName
+
"/->SetRefRun(%arg1%)"
;
100
cmdTitle = path +
"SetRefRun"
;
101
fServer
->RegisterCommand(cmdTitle.
Data
(), cmd.
Data
(),
"button;"
);
102
}
103
104
void
BmnHistECAL::SetDir
(
TFile
* outFile = NULL,
TTree
* recoTree = NULL)
105
{
106
frecoTree
= recoTree;
107
fDir
= NULL;
108
if
(outFile != NULL)
109
fDir
= outFile->mkdir(
fTitle
+
"_hists"
);
110
h2d_grid
->SetDirectory(
fDir
);
111
h2d_profile
->SetDirectory(
fDir
);
112
hx
->SetDirectory(
fDir
);
113
hy
->SetDirectory(
fDir
);
114
}
115
116
void
BmnHistECAL::DrawBoth
()
117
{
118
BmnHist::DrawRef
(
canAmps
, &
canAmpsPads
);
119
return
;
120
}
121
122
void
BmnHistECAL::FillFromDigi
(
DigiArrays
* fDigiArrays)
123
{
124
TClonesArray
* digits = fDigiArrays->
ecal
;
125
if
(!digits)
126
return
;
127
Double_t
xAmp = 0;
128
Double_t
yAmp = 0;
129
Double_t
Amp = 0;
130
for
(
Int_t
iDig = 0; iDig < digits->
GetEntriesFast
(); iDig++) {
131
BmnECALDigit
* dig = (
BmnECALDigit
*)digits->
At
(iDig);
132
Int_t
ix = dig->
GetIX
();
133
Int_t
iy = dig->
GetIY
();
134
Double_t
amp = dig->
GetAmp
();
135
Amp += amp;
136
h2d_grid
->Fill(ix, iy, dig->
GetAmp
());
137
xAmp += amp * dig->
GetX
();
138
yAmp += amp * dig->
GetY
();
139
}
140
if
(Amp == 0)
141
return
;
142
xAmp /= Amp;
143
yAmp /= Amp;
144
h2d_profile
->Fill(xAmp, yAmp, Amp);
145
hx
->Fill(xAmp, Amp);
146
hy
->Fill(yAmp, Amp);
147
}
148
149
BmnStatus
BmnHistECAL::SetRefRun
(
Int_t
id
)
150
{
151
TString
FileName =
Form
(
"bmn_run%04d_hist.root"
,
id
);
152
printf(
"SetRefRun: %s\n"
, FileName.
Data
());
153
if
(
refRunName
!= FileName) {
154
refRunName
= FileName;
155
refID
= id;
156
BmnHist::LoadRefRun
(
refID
,
refPath
+ FileName,
fTitle
,
canAmpsPads
,
NamesAmps
);
157
DrawBoth
();
158
}
159
return
kBMNSUCCESS
;
160
}
161
162
void
BmnHistECAL::ClearRefRun
()
163
{
164
for
(
auto
pad :
canAmpsPads
) {
165
if
(pad->ref)
166
delete
pad->ref;
167
pad->ref = NULL;
168
}
169
refID
= 0;
170
}
171
172
void
BmnHistECAL::Reset
()
173
{
174
h2d_grid
->Reset();
175
h2d_profile
->Reset();
176
hx
->Reset();
177
hy
->Reset();
178
}
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
kBMNSUCCESS
@ kBMNSUCCESS
Success.
Definition
BmnEnums.h:94
BmnHistECAL.h
ECAL_ROWS
#define ECAL_ROWS
Definition
BmnHistECAL.h:19
ECAL_COLS
#define ECAL_COLS
Definition
BmnHistECAL.h:20
Int_t
int Int_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
TGaxis.h
Form
char * Form(const char *fmt,...)
BmnCaloDigit::GetX
Float_t GetX() const
Definition
BmnCaloDigit.h:31
BmnCaloDigit::GetY
Float_t GetY() const
Definition
BmnCaloDigit.h:32
BmnCaloDigit::GetAmp
Float_t GetAmp() const
Definition
BmnCaloDigit.h:34
BmnECALDigit
Definition
BmnECALDigit.h:48
BmnECALDigit::GetIX
UChar_t GetIX() const
Definition
BmnECALDigit.h:77
BmnECALDigit::GetIY
UChar_t GetIY() const
Definition
BmnECALDigit.h:78
BmnHistECAL::ClearRefRun
void ClearRefRun()
Definition
BmnHistECAL.cxx:162
BmnHistECAL::FillFromDigi
void FillFromDigi(DigiArrays *fDigiArrays)
Definition
BmnHistECAL.cxx:122
BmnHistECAL::SetRefRun
BmnStatus SetRefRun(Int_t id)
Definition
BmnHistECAL.cxx:149
BmnHistECAL::canAmpsPads
vector< PadInfo * > canAmpsPads
Definition
BmnHistECAL.h:42
BmnHistECAL::hy
TH1D * hy
Definition
BmnHistECAL.h:40
BmnHistECAL::NamesAmps
vector< TString > NamesAmps
Definition
BmnHistECAL.h:43
BmnHistECAL::BmnHistECAL
BmnHistECAL(TString title, TString path="")
Definition
BmnHistECAL.cxx:18
BmnHistECAL::hx
TH1D * hx
Definition
BmnHistECAL.h:39
BmnHistECAL::h2d_grid
TH2D * h2d_grid
Definition
BmnHistECAL.h:37
BmnHistECAL::canAmps
TCanvas * canAmps
Definition
BmnHistECAL.h:41
BmnHistECAL::DrawBoth
void DrawBoth()
Definition
BmnHistECAL.cxx:116
BmnHistECAL::Reset
void Reset()
Definition
BmnHistECAL.cxx:172
BmnHistECAL::h2d_profile
TH2D * h2d_profile
Definition
BmnHistECAL.h:38
BmnHistECAL::SetDir
void SetDir(TFile *outFile, TTree *recoTree)
Definition
BmnHistECAL.cxx:104
BmnHistECAL::~BmnHistECAL
virtual ~BmnHistECAL()
Definition
BmnHistECAL.cxx:71
BmnHistECAL::Register
void Register(THttpServer *serv)
Definition
BmnHistECAL.cxx:84
BmnHist::fServer
THttpServer * fServer
Definition
BmnHist.h:87
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::frecoTree
TTree * frecoTree
Definition
BmnHist.h:88
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::BmnHist
BmnHist(Int_t periodID=7, BmnSetup setup=kBMNSETUP)
Definition
BmnHist.cxx:3
DigiArrays
Definition
DigiArrays.h:10
DigiArrays::ecal
TClonesArray * ecal
Definition
DigiArrays.h:138
PadInfo
Storage for pad content and it's options.
Definition
PadInfo.h:20
PadInfo::current
TH1 * current
Definition
PadInfo.h:78
TAxis::SetNoExponent
void SetNoExponent(Bool_t noExponent=kTRUE)
TCanvas
TFile
TGaxis::SetMaxDigits
static void SetMaxDigits(Int_t maxd=5)
TH1D
TH1
TH1::GetXaxis
TAxis * GetXaxis()
TH1::GetYaxis
TAxis * GetYaxis()
TH2D
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
BmnHistECAL.cxx
Generated on
for BmnRoot by
1.17.0