BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
StripView.C
Go to the documentation of this file.
1R__ADD_INCLUDE_PATH($VMCWORKDIR)
2
3#if !defined(__CLING__) || defined(__MAKECLING__)
4
5#include "BmnGemStripDigit.h"
6#include "BmnHist.h"
7#include "BmnSiliconDigit.h"
8#include "BmnSiliconStationSet.h"
9
10#include <BmnEventHeader.h>
11#include <FairTrackParam.h>
12#include <Fit/FitResult.h>
13#include <Rtypes.h>
14#include <TCanvas.h>
15#include <TChain.h>
16#include <TClass.h>
17#include <TClonesArray.h>
18#include <TDatime.h>
19#include <TF1.h>
20#include <TFile.h>
21#include <TH1.h>
22#include <TH2.h>
23#include <TMath.h>
24#include <TPad.h>
25#include <TROOT.h>
26#include <TString.h>
27#include <TStyle.h>
28#include <TTree.h>
29#include <TVirtualPad.h>
30// #include "BmnGemStripStation.h"
31#include "BmnCSCDigit.h"
32#include "BmnCSCModule.h"
33#include "BmnCSCStation.h"
34#include "BmnCSCStationSet.h"
35#include "BmnGemStripModule.h"
36#include "BmnGemStripStationSet.h"
37
38#else
39#include "bmnloadlibs.C"
40#include "gconfig/basiclibs.C"
41
42#endif
43
44#define PAD_WIDTH_SIL 1920
45#define PAD_HEIGHT_SIL 1280
46// #define ROWS 2
47#define COLS 2
48#define EV_LIMIT 4
49using namespace std;
50using namespace TMath;
51
52void DrawRef(TCanvas* canGemStrip, vector<PadInfo*>* canGemStripPads)
53{
54 Double_t maxy;
55 Double_t k = 1;
56 for (Int_t iPad = 0; iPad < canGemStripPads->size(); iPad++) {
57 TVirtualPad* pad = canGemStrip->cd(iPad + 1);
58 pad->Clear();
59 // pad->SetLogy();
60 PadInfo* info = canGemStripPads->at(iPad);
61 if (!info)
62 continue;
63 if (info->current) {
64 maxy = info->current->GetBinContent(info->current->GetMaximumBin());
65 if (info->ref != NULL) {
66 // k = (info->ref->Integral() > 0) ?
67 // info->current->Integral() /
68 // (Double_t) info->ref->Integral() : 1;
69 // if (k == 0) k = 1;
70 // if (info->ref->Integral() > 0)
71 k = info->ref->GetBinContent(info->ref->GetMaximumBin());
72 // if (maxy < k) {
73 // maxy = k;
74 // info->ref->Draw(info->opt.Data());
75 // info->current->Draw("same hist"); //, info->current->Integral());
76 // } else {
77 // info->current->Draw(info->opt.Data());
78 // info->ref->Draw("same hist"); //, info->current->Integral());
79 //
80 // }
81 }
82 // info->current->Draw(info->opt.Data());
83 // info->ref->Draw("same hist"); //, info->current->Integral());
84 info->ref->Draw(info->opt.Data());
85 info->current->Draw("same hist"); //, info->current->Integral());
86 // info->current->GetYaxis()->SetLimits(0, floor(maxy * 1.2));
87 // info->ref->GetYaxis()->SetLimits(0, floor(maxy * 1.2));
88 //
89 //
90 // info->current->GetYaxis()->SetLimits(0, floor(maxy * 1.2));
91 // info->ref->GetYaxis()->SetLimits(0, floor(maxy * 1.2));
92 }
93 pad->Update();
94 pad->Modified();
95 }
96 canGemStrip->Update();
97 canGemStrip->Modified();
98}
99
100void StripView(Int_t runID)
101{
102#if !(!defined(__CLING__) || defined(__MAKECLING__))
103 bmnloadlibs(); // load BmnRoot libraries
104#endif
105 gStyle->SetOptStat(0);
106 const Int_t nColors = 16;
107 Int_t ColorMap[nColors] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 49, 11, 12, 13, 14, 15, 16};
108 // Int_t runID = 4600;
109 Int_t fPeriodID = 7;
110 UInt_t sumMods = 0;
111 UInt_t maxLayers = 0;
112 BmnSetup fBmnSetup = kBMNSETUP;
113 TString inFileNameMK = Form("MK_digi_%04i.root", runID);
114 TString inFileNameBmn = Form("bmn_run%04i_digi.root", runID);
115
116 TString fnames[COLS] = {inFileNameMK, inFileNameBmn};
117 TString treeNames[COLS] = {"bmndata", "bmndata"};
118 TString silNames[COLS] = {"SILICON", "SILICON"};
119 TString gemNames[COLS] = {"GEM", "GEM"};
120 TString cscNames[COLS] = {"CSC", "CSC"};
121 TFile* files[COLS] = {NULL};
122 TTree* trees[COLS] = {NULL};
123 TClonesArray* hits[COLS] = {NULL};
124 TClonesArray* tracks[COLS] = {NULL};
125 TClonesArray* silDigit[COLS] = {NULL, NULL};
126 TClonesArray* gemDigit[COLS] = {NULL, NULL};
127 TClonesArray* cscDigit[COLS] = {NULL, NULL};
128 vector<vector<vector<TH1F*>>> histStrip[COLS];
129 vector<vector<vector<TH1F*>>> histStripGem[COLS];
130 vector<vector<vector<TH1F*>>> histStripCsc[COLS];
131 TCanvas* canStrip;
132 TCanvas* canStripGem;
133 TCanvas* canStripCsc;
134 vector<PadInfo*> canStripPads;
135 vector<PadInfo*> canStripPadsGem;
136 vector<PadInfo*> canStripPadsCsc;
137
138 Int_t hf = 2400;
139 const Int_t kNStrips = 640;
140 TCanvas* canProf = new TCanvas("canprof", "can", 1920, 1920);
141 canProf->Divide(1, 4);
142 TH2F* hfilter = new TH2F("hfilter", "hfilter", kNStrips + 1, 0, kNStrips, hf + 1, 0, hf);
143 TH2F* hfilterMK = new TH2F("hfilterMK", "hfilterMK", kNStrips + 1, 0, kNStrips, hf + 1, 0, hf);
144 TH1F* hsig = new TH1F("hsig", "hsig", hf + 1, 0, hf);
145 hsig->SetLineColor(kRed);
146 TH1F* hsigMK = new TH1F("hsigMK", "hsigMK", hf + 1, 0, hf);
147
148 TString name;
149
150 // ********************
151 // silicon pads
152 // ********************
153 sumMods = 0;
154 maxLayers = 0;
155 TString xmlConfFileName = fPeriodID == 7 ? "SiliconRunSpring2018.xml" : "SiliconRunSpring2017.xml";
156 xmlConfFileName = TString(getenv("VMCWORKDIR")) + "/parameters/silicon/XMLConfigs/" + xmlConfFileName;
157 printf("xmlConfFileName %s\n", xmlConfFileName.Data());
158 BmnSiliconStationSet* stationSet = new BmnSiliconStationSet(xmlConfFileName);
159 // printf("xmlConf stations %i\n", stationSet->GetNStations());
160 for (Int_t iCol = 0; iCol < COLS; iCol++) {
161 for (Int_t iStation = 0; iStation < stationSet->GetNStations(); iStation++) {
162 vector<vector<TH1F*>> rowGEM;
163 BmnSiliconStation* st = stationSet->GetSiliconStation(iStation);
164 sumMods += st->GetNModules();
165 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
166 vector<TH1F*> colGEM;
167 BmnSiliconModule* mod = st->GetModule(iModule);
168 // printf("iStation %i iModule %i nlayers %i sumMods %i\n", iStation, iModule,
169 // mod->GetNStripLayers(), sumMods); if (maxLayers < mod->GetNStripLayers())
170 maxLayers = 2;
171 for (Int_t iLayer = 0; iLayer < 2; iLayer++) {
172 BmnSiliconLayer lay = mod->GetStripLayer(iLayer);
173 name = Form("Silicon_%d_Station_%d_module_%d_layer_%d", iCol, iStation, iModule, iLayer);
174 TH1F* h = new TH1F(name, name, lay.GetNStrips(), 0, lay.GetNStrips());
175 h->SetTitleSize(0.06, "XY");
176 h->SetLabelSize(0.08, "XY");
177 h->GetXaxis()->SetTitle("Strip Number");
178 h->GetXaxis()->SetTitleColor(kOrange + 10);
179 h->GetYaxis()->SetTitle("Activation Count");
180 h->GetYaxis()->SetTitleColor(kOrange + 10);
181 colGEM.push_back(h);
182 }
183 rowGEM.push_back(colGEM);
184 }
185 histStrip[iCol].push_back(rowGEM);
186 }
187 }
188 sumMods = sumMods / COLS;
189 name = "SilCanvas";
190 canStrip = new TCanvas(name, name, PAD_WIDTH_SIL * maxLayers, PAD_HEIGHT_SIL * sumMods);
191 canStrip->Divide(maxLayers, sumMods);
192 Int_t modCtr = 0;
193 canStripPads.resize(sumMods * maxLayers);
194 for (auto& pad : canStripPads) {
195 pad = nullptr;
196 }
197 for (Int_t iStation = 0; iStation < stationSet->GetNStations(); iStation++) {
198 BmnSiliconStation* st = stationSet->GetSiliconStation(iStation);
199 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
200 BmnSiliconModule* mod = st->GetModule(iModule);
201 for (Int_t iLayer = 0; iLayer < 2; iLayer++) {
202 Int_t iPad = modCtr * maxLayers + iLayer;
203 PadInfo* p = new PadInfo();
204 p->current = histStrip[0][iStation][iModule][iLayer];
205 p->ref = histStrip[1][iStation][iModule][iLayer];
206 p->ref->SetLineColor(kRed);
207 canStripPads[iPad] = p;
208 canStrip->GetPad(iPad + 1)->SetGrid();
209 }
210 modCtr++;
211 }
212 }
213 // ********************
214 // gem pads
215 // ********************
216 sumMods = 0;
217 maxLayers = 0;
218 xmlConfFileName = fPeriodID == 7 ? "GemRunSpring2018.xml" : "GemRunSpring2017.xml";
219 xmlConfFileName = TString(getenv("VMCWORKDIR")) + "/parameters/gem/XMLConfigs/" + xmlConfFileName;
220 printf("xmlConfFileName %s\n", xmlConfFileName.Data());
221 BmnGemStripStationSet* gemStationSet = new BmnGemStripStationSet(xmlConfFileName);
222 for (Int_t iCol = 0; iCol < COLS; iCol++) {
223 for (Int_t iStation = 0; iStation < gemStationSet->GetNStations(); iStation++) {
224 vector<vector<TH1F*>> rowGEM;
225 BmnGemStripStation* st = gemStationSet->GetGemStation(iStation);
226 sumMods += st->GetNModules();
227 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
228 vector<TH1F*> colGEM;
229 BmnGemStripModule* mod = st->GetModule(iModule);
230 if (maxLayers < mod->GetNStripLayers())
231 maxLayers = mod->GetNStripLayers();
232 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
233 BmnGemStripLayer lay = mod->GetStripLayer(iLayer);
234 name = Form("GEM_%i_Station_%d_module_%d_layer_%d", iCol, iStation, iModule, iLayer);
235 TH1F* h = new TH1F(name, name, lay.GetNStrips(), 0, lay.GetNStrips());
236 h->SetTitleSize(0.06, "XY");
237 h->SetLabelSize(0.08, "XY");
238 h->GetXaxis()->SetTitle("Strip Number");
239 h->GetXaxis()->SetTitleColor(kOrange + 10);
240 h->GetYaxis()->SetTitle("Activation Count");
241 h->GetYaxis()->SetTitleColor(kOrange + 10);
242 h->GetYaxis()->SetTitleOffset(1.0);
243 colGEM.push_back(h);
244 }
245 rowGEM.push_back(colGEM);
246 }
247 histStripGem[iCol].push_back(rowGEM);
248 }
249 }
250 name = "GemCanvas";
251 canStripGem = new TCanvas(name, name, PAD_WIDTH_SIL * maxLayers, PAD_HEIGHT_SIL * sumMods);
252 canStripGem->Divide(maxLayers, sumMods);
253 modCtr = 0;
254 canStripPadsGem.resize(sumMods * maxLayers);
255 for (Int_t iStation = 0; iStation < gemStationSet->GetNStations(); iStation++) {
256 BmnGemStripStation* st = gemStationSet->GetGemStation(iStation);
257 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
258 BmnGemStripModule* mod = st->GetModule(iModule);
259 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
260 PadInfo* p = new PadInfo();
261 p->opt = "";
262 p->current = histStripGem[0][iStation][iModule][iLayer];
263 p->ref = histStripGem[1][iStation][iModule][iLayer];
264 p->ref->SetLineColor(kRed);
265 Int_t iPad = modCtr * maxLayers + iLayer;
266 canStripPadsGem[iPad] = p;
267 canStripGem->GetPad(iPad + 1)->SetGrid();
268 }
269 modCtr++;
270 }
271 }
272 // ********************
273 // csc pads
274 // ********************
275 sumMods = 0;
276 maxLayers = 0;
277 xmlConfFileName = "CSCRunSpring2018.xml";
278 xmlConfFileName = TString(getenv("VMCWORKDIR")) + "/parameters/csc/XMLConfigs/" + xmlConfFileName;
279 printf("xmlConfFileName %s\n", xmlConfFileName.Data());
280 BmnCSCStationSet* StationSet = new BmnCSCStationSet(xmlConfFileName);
281 for (Int_t iCol = 0; iCol < COLS; iCol++) {
282 for (Int_t iStation = 0; iStation < StationSet->GetNStations(); iStation++) {
283 vector<vector<TH1F*>> rowGEM;
284 BmnCSCStation* st = StationSet->GetStation(iStation);
285 sumMods += st->GetNModules();
286 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
287 vector<TH1F*> colGEM;
288 BmnCSCModule* mod = st->GetModule(iModule);
289 if (maxLayers < mod->GetNStripLayers())
290 maxLayers = mod->GetNStripLayers();
291 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
292 BmnCSCLayer lay = mod->GetStripLayer(iLayer);
293 name = Form("CSC_%i_Station_%d_module_%d_layer_%d", iCol, iStation, iModule, iLayer);
294 TH1F* h = new TH1F(name, name, lay.GetNStrips(), 0, lay.GetNStrips());
295 h->SetTitleSize(0.06, "XY");
296 h->SetLabelSize(0.08, "XY");
297 h->GetXaxis()->SetTitle("Strip Number");
298 h->GetXaxis()->SetTitleColor(kOrange + 10);
299 h->GetYaxis()->SetTitle("Activation Count");
300 h->GetYaxis()->SetTitleColor(kOrange + 10);
301 h->GetYaxis()->SetTitleOffset(1.0);
302 colGEM.push_back(h);
303 }
304 rowGEM.push_back(colGEM);
305 }
306 histStripCsc[iCol].push_back(rowGEM);
307 }
308 }
309 name = "CscCanvas";
310 canStripCsc = new TCanvas(name, name, PAD_WIDTH_SIL * maxLayers, PAD_HEIGHT_SIL * sumMods);
311 canStripCsc->Divide(maxLayers, sumMods);
312 modCtr = 0;
313 canStripPadsCsc.resize(sumMods * maxLayers);
314 for (Int_t iStation = 0; iStation < StationSet->GetNStations(); iStation++) {
315 BmnCSCStation* st = StationSet->GetStation(iStation);
316 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
317 BmnCSCModule* mod = st->GetModule(iModule);
318 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
319 PadInfo* p = new PadInfo();
320 p->opt = "";
321 p->current = histStripCsc[0][iStation][iModule][iLayer];
322 p->ref = histStripCsc[1][iStation][iModule][iLayer];
323 p->ref->SetLineColor(kRed);
324 Int_t iPad = modCtr * maxLayers + iLayer;
325 canStripPadsCsc[iPad] = p;
326 canStripCsc->GetPad(iPad + 1)->SetGrid();
327 }
328 modCtr++;
329 }
330 }
331
332 for (Int_t i = 0; i < COLS; i++) {
333 files[i] = new TFile(fnames[i], "READ");
334 if (files[i]->IsOpen())
335 printf("file %s opened\n", fnames[i].Data());
336 else {
337 fprintf(stderr, "file %s open error\n", fnames[i].Data());
338 return;
339 }
340 trees[i] = (TTree*)files[i]->Get(treeNames[i]);
341 cout << "#recorded entries = " << trees[i]->GetEntries() << endl;
342 trees[i]->SetBranchAddress(silNames[i], &silDigit[i]);
343 trees[i]->SetBranchAddress(gemNames[i], &gemDigit[i]);
344 trees[i]->SetBranchAddress(cscNames[i], &cscDigit[i]);
345 }
346 for (Int_t i = 0; i < COLS; i++) {
347 cout << "tree # " << i << endl;
348 UInt_t nEvs = trees[i]->GetEntries();
349 for (Int_t iEv = 0; iEv < 10000 /*nEvs/*11000/*nEvs*/; iEv++) {
350 trees[i]->GetEntry(iEv);
351 if (iEv % 10000 == 0)
352 cout << "iEv = " << iEv << endl;
353 // silicon
354 if (silDigit[i])
355 for (Int_t iDig = 0; iDig < silDigit[i]->GetEntriesFast(); iDig++) {
356 BmnSiliconDigit* dig = (BmnSiliconDigit*)silDigit[i]->UncheckedAt(iDig);
357 if (!(dig->IsGoodDigit()))
358 continue;
359 Int_t module = dig->GetModule();
360 Int_t station = dig->GetStation();
361 Int_t layer = dig->GetStripLayer();
362 Int_t strip = dig->GetStripNumber();
363 histStrip[i][station][module][layer]->Fill(strip);
364 if (station == 0 && module == 0 && layer == 0)
365 if (i == 0) {
366 hfilterMK->Fill(strip, dig->GetStripSignal());
367 if (dig->GetStripNumber() > 511)
368 hsigMK->Fill(dig->GetStripSignal());
369 } else {
370 hfilter->Fill(strip, dig->GetStripSignal());
371
372 if (dig->GetStripNumber() > 511)
373 hsig->Fill(dig->GetStripSignal());
374 }
375 }
376 // gem
377 if (gemDigit[i])
378 for (Int_t iDig = 0; iDig < gemDigit[i]->GetEntriesFast(); iDig++) {
379 BmnGemStripDigit* dig = (BmnGemStripDigit*)gemDigit[i]->UncheckedAt(iDig);
380 if (!(dig->IsGoodDigit()))
381 continue;
382 Int_t module = dig->GetModule();
383 Int_t station = dig->GetStation();
384 Int_t layer = dig->GetStripLayer();
385 Int_t strip = dig->GetStripNumber();
386 histStripGem[i][station][module][layer]->Fill(strip);
387 }
388 // csc
389 if (cscDigit[i])
390 for (Int_t iDig = 0; iDig < cscDigit[i]->GetEntriesFast(); iDig++) {
391 BmnCSCDigit* dig = (BmnCSCDigit*)cscDigit[i]->UncheckedAt(iDig);
392 if (!(dig->IsGoodDigit()))
393 continue;
394 Int_t module = dig->GetModule();
395 Int_t station = dig->GetStation();
396 Int_t layer = dig->GetStripLayer();
397 Int_t strip = dig->GetStripNumber();
398 histStripCsc[i][station][module][layer]->Fill(strip);
399 }
400 }
401 }
402
403 // for (Int_t col = 0; col < maxLayers; col++)
404 // for (Int_t row = 0; row < sumMods; row++) {
405 // TVirtualPad *pad = canStrip->cd(row * maxLayers + col + 1);
406 // pad->Clear();
407 // // if (row > 2)
408 // // h[col][row]->Draw();
409 // // else
410 // TString s = Form("%s.>>%s_X_Vertex(200, -10, 10)", names[col].Data()), "PrimaryVertex.fNTracks>1",
411 // ""); for (Int_t iTrack = 0; iTrack < nColors; iTrack++)
412 // if (iTrack)
413 // h[col][row][iTrack]->Draw("SAME");
414 // else
415 // h[col][row][iTrack]->Draw("");
416 // }
417
418 DrawRef(canStrip, &canStripPads);
419 canStrip->SaveAs(Form("can-run-%d.png", runID));
420 DrawRef(canStripGem, &canStripPadsGem);
421 canStripGem->SaveAs(Form("can-run-gem-%d.png", runID));
422 DrawRef(canStripCsc, &canStripPadsCsc);
423 canStripCsc->SaveAs(Form("can-run-csc-%d.png", runID));
424 canProf->cd(1);
425 hfilter->Draw("colz");
426 canProf->cd(2);
427 hfilterMK->Draw("colz");
428 canProf->cd(3);
429 hsig->Draw("");
430 // canProf->cd(4);
431 hsigMK->Draw("same");
432 canProf->SaveAs("can-prof.png");
433 // canStrip->SaveAs(Form("can-run-%d.eps", runID));
434 // canStrip->SaveAs(Form("can-run-%d.pdf", runID));
435 // Int_t q = getchar();
436 // printf("%i\n", q);
437 // do {
438 // if (hitCount[0] < EV_LIMIT || hitCount[1] < EV_LIMIT || hitCount[2] < EV_LIMIT) {
439 // iEv++;
440 // continue;
441 // }
442 // for (Int_t col = 0; col < COLS; col++)
443 // for (Int_t row = 0; row < ROWS; row++) {
444 // TVirtualPad *pad = can->cd(row * 3 + col + 1);
445 // pad->Clear();
446 // // if (row > 2)
447 // // h[col][row]->Draw();
448 // // else
449 // for (Int_t iTrack = 0; iTrack < nColors; iTrack++)
450 // if (iTrack)
451 // h[col][row][iTrack]->Draw("SAME");
452 // else
453 // h[col][row][iTrack]->Draw("");
454 // }
455 // can->Update();
456 // can->Modified();
457 // can->SaveAs(Form("can-%d.pdf", runID));
458 // cout << " Ev# " << iEv << endl;
459 // ch = getchar();
460 // switch (ch) {
461 // case 'a':
462 // iEv = (iEv == 0) ? iEv : iEv - 1;
463 // break;
464 // case 'd':
465 // iEv = (iEv < nEvs) ? iEv + 1 : iEv;
466 // break;
467 // default:
468 // iEv++;
469 // break;
470 // }
471 // } while (ch != 'q');
472
473 // return;
474}
int i
Definition P4_F32vec4.h:22
int Int_t
unsigned int UInt_t
double Double_t
#define R__ADD_INCLUDE_PATH(PATH)
kRed
kOrange
#define PAD_WIDTH_SIL
Definition StripView.C:44
void DrawRef(TCanvas *canGemStrip, vector< PadInfo * > *canGemStripPads)
Definition StripView.C:52
void StripView(Int_t runID)
Definition StripView.C:100
#define COLS
Definition StripView.C:47
#define PAD_HEIGHT_SIL
Definition StripView.C:45
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
BmnSetup
Define experimental setup.
Definition BmnEnums.h:165
@ kBMNSETUP
Definition BmnEnums.h:166
Int_t GetNStrips()
Int_t GetNStripLayers()
BmnCSCLayer & GetStripLayer(Int_t num)
BmnCSCStation * GetStation(Int_t station_num)
Int_t GetNModules()
BmnCSCModule * GetModule(Int_t module_num)
BmnGemStripLayer & GetStripLayer(Int_t num)
BmnGemStripStation * GetGemStation(Int_t station_num)
BmnGemStripModule * GetModule(Int_t module_num)
BmnSiliconLayer & GetStripLayer(Int_t num)
BmnSiliconStation * GetSiliconStation(Int_t station_num)
BmnSiliconModule * GetModule(Int_t module_num)
Bool_t IsGoodDigit()
Int_t GetStripNumber()
Int_t GetStripLayer()
Int_t GetStation()
Double_t GetStripSignal()
Int_t GetModule()
Storage for pad content and it's options.
Definition PadInfo.h:20
string opt
Definition PadInfo.h:88
TH1 * ref
Definition PadInfo.h:79
TH1 * current
Definition PadInfo.h:78
virtual void SetTitleOffset(Float_t offset=1)
virtual void SetTitleColor(Color_t color=1)
virtual void SetLineColor(Color_t lcolor)
TVirtualPad * cd(Int_t subpadnumber=0) override
void Update() override
virtual void SetTitleSize(Float_t size=0.02, Option_t *axis="X")
TAxis * GetXaxis()
TAxis * GetYaxis()
void Draw(Option_t *option="") override
virtual Int_t Fill(const char *name, Double_t w)
virtual Int_t GetMaximumBin() const
virtual Double_t GetBinContent(Int_t bin) const
virtual void SetLabelSize(Float_t size=0.02, Option_t *axis="X")
virtual Int_t Fill(const char *namex, const char *namey, Double_t w)
virtual void SetTitle(const char *title="")
Int_t GetEntriesFast() const
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
void Modified(Bool_t flag=true) override
void SaveAs(const char *filename="", Option_t *option="") const override
TVirtualPad * GetPad(Int_t subpadnumber) const override
const char * Data() const
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
virtual Long64_t GetEntries() const
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
virtual void Modified(Bool_t flag=1)=0
virtual void SetGrid(Int_t valuex=1, Int_t valuey=1)=0
virtual void Update()=0
void Clear(Option_t *option="") override=0
Definition json.hpp:4446