BmnRoot
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
6BmnHistProf::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
70{
71 // delete gemStationSet;
72 delete canStrip;
73 if (fDir)
74 return;
75 for (auto pad : canStripPads)
76 delete pad;
77}
78
79void 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
98void 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
111{
112 BmnHist::DrawRef(canStrip, &canStripPads);
113}
114
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
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
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
157{
158 for (auto& row : histSiliconStrip)
159 for (auto& col : row)
160 for (auto& el : col)
161 el->Reset();
162}
#define PAD_WIDTH
Definition BmnAdcQA.cxx:3
#define PAD_HEIGHT
Definition BmnAdcQA.cxx:4
BmnStatus
Definition BmnEnums.h:24
@ kBMNSUCCESS
Definition BmnEnums.h:25
BmnSetup
Definition BmnEnums.h:89
BmnStatus SetRefRun(Int_t id)
void FillFromDigi(DigiArrays *fDigiArrays)
void SetDir(TFile *outFile=NULL, TTree *recoTree=NULL)
virtual ~BmnHistProf()
void ClearRefRun()
void Register(THttpServer *serv)
BmnHistProf(TString title, TString path="", Int_t periodID=7, BmnSetup setup=kBMNSETUP)
TTree * frecoTree
Definition BmnHist.h:88
Int_t refID
Definition BmnHist.h:92
TString refPath
Definition BmnHist.h:90
TDirectory * fDir
Definition BmnHist.h:89
static void DrawRef(unique_ptr< TCanvas > &canGemStrip, vector< PadInfo * > *canGemStripPads)
Definition BmnHist.cxx:15
BmnSetup fSetup
Definition BmnHist.h:95
TString refRunName
Definition BmnHist.h:91
static BmnStatus LoadRefRun(Int_t refID, TString FullName, TString fTitle, vector< PadInfo * > canPads, vector< TString > Names)
Definition BmnHist.cxx:100
THttpServer * fServer
Definition BmnHist.h:87
static unique_ptr< BmnSiProfStationSet > Create(Int_t period, Int_t stp=0)
Int_t GetStripNumber()
Int_t GetStripLayer()
Int_t GetStation()
TClonesArray * siprof
Definition DigiArrays.h:142
Storage for pad content and it's options.
Definition PadInfo.h:20
TH1 * current
Definition PadInfo.h:78
Definition setup.py:1