13 const double MinTime = -100;
14 const double MaxTime = 2200;
15 const double MaxTimeBins = 200;
20 fName = title +
"_cl";
23 for (Int_t iStation = 0; iStation < 1 ; iStation++) {
24 vector<vector<TH1I*>> rowGEM;
25 vector<vector<TH1I*>> rowTimes;
26 auto* st = gemStationSet->GetStation(iStation);
27 sumMods += st->GetNModules();
28 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
30 vector<TH1I*> colTimes;
31 auto* mod = st->GetModule(iModule);
32 if ((Int_t)maxLayers < mod->GetNStripLayers())
33 maxLayers = mod->GetNStripLayers();
34 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
35 auto& lay = mod->GetStripLayer(iLayer);
37 name = Form(fTitle +
"_Station_%d_module_%d_layer_%d", iStation, iModule, iLayer);
38 TH1I* h =
new TH1I(name, name, lay.GetNStrips(), 0, lay.GetNStrips());
39 h->GetXaxis()->SetTitle(
"Strip Number");
40 h->GetYaxis()->SetTitle(
"Activation Count");
44 name = Form(fTitle +
"_Time_Station_%d_module_%d_layer_%d", iStation, iModule, iLayer);
45 TH1I* hTime =
new TH1I(name, name, MaxTimeBins, MinTime, MaxTime);
46 hTime->GetXaxis()->SetTitle(
"Time [ns]");
47 hTime->GetYaxis()->SetTitle(
"Activation Count");
49 colTimes.push_back(hTime);
51 rowGEM.push_back(colGEM);
52 rowTimes.push_back(colTimes);
54 histStripOccup.push_back(rowGEM);
55 histTimes.push_back(rowTimes);
59 name = fTitle +
"Canvas";
61 canStripOccup->Divide(maxLayers, sumMods, 0.01 / maxLayers, 0.01 / sumMods);
62 canStripPads.resize(sumMods * maxLayers);
63 Names.resize(sumMods * maxLayers);
65 name = fTitle +
"CanvasTimes";
67 canTimes->Divide(maxLayers, sumMods, 0.01 / maxLayers, 0.01 / sumMods);
68 canTimesPads.resize(sumMods * maxLayers);
69 NamesTimes.resize(sumMods * maxLayers);
70 for (Int_t iStation = 0; iStation < gemStationSet->GetNStations(); iStation++) {
71 auto* st = gemStationSet->GetStation(iStation);
72 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
73 auto* mod = st->GetModule(iModule);
74 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
78 p->
current = histStripOccup[iStation][iModule][iLayer];
79 Int_t iPad = modCtr * maxLayers + iLayer;
80 canStripPads[iPad] = p;
81 canStripOccup->GetPad(iPad + 1)->SetGrid();
82 Names[iPad] = canStripPads[iPad]->current->GetName();
87 p->
current = histTimes[iStation][iModule][iLayer];
88 Int_t iPad = modCtr * maxLayers + iLayer;
89 canTimesPads[iPad] = p;
90 canTimes->GetPad(iPad + 1)->SetGrid();
91 NamesTimes[iPad] = canTimesPads[iPad]->current->GetName();
116 TString path =
"/" + fTitle +
"/";
117 fServer->Register(path, canStripOccup);
118 fServer->Register(path, canTimes);
119 fServer->SetItemField(path,
"_monitoring",
"2000");
120 fServer->SetItemField(path,
"_layout",
"grid3x3");
121 TString cmd =
"/" + fName +
"/->Reset()";
122 TString cmdTitle = path +
"Reset";
124 fServer->Restrict(cmdTitle.Data(),
"visible=shift");
125 fServer->Restrict(cmdTitle.Data(),
"allow=shift");
126 fServer->Restrict(cmdTitle.Data(),
"deny=guest");
127 cmd =
"/" + fName +
"/->SetRefRun(%arg1%)";
128 cmdTitle = path +
"SetRefRun";
129 fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(),
"button;");
131 cmdTitle = path + TString(
"Reset");
132 fServer->RegisterCommand(cmdTitle, TString(
"/") + fName.Data() +
"/->Reset()",
"button;");