CMS 3D CMS Logo

RemoteMonitoringMAP_GlobalstillALLinside.cc
Go to the documentation of this file.
1 // How to run:
2 //root -b -q -l RemoteMonitoringMAP.C+
3 //root -b -q -l 'RemoteMonitoringMAP.C+("/afs/cern.ch/cms/CAF/CMSALCA/ALCA_HCALCALIB/HCALMONITORING/RDMweb/histos/LED_214513.root","/afs/cern.ch/cms/CAF/CMSALCA/ALCA_HCALCALIB/HCALMONITORING/RDMweb/histos/LED_214512.root")'
4 //root -b -q -l 'RemoteMonitoringMAP.C+(" /afs/cern.ch/work/d/dtlisov/private/Monitoring/histos/LED_211659.root","/afs/cern.ch/cms/CAF/CMSALCA/ALCA_HCALCALIB/HCALMONITORING/RDMweb/histos/LED_214512.root")'
5 //
6 //
7 //
8 #include "LogEleMapdb.h"
9 
10 #include <iostream>
11 #include <fstream>
12 
13 #include "TH1.h"
14 #include "TH2.h"
15 #include "TCanvas.h"
16 #include "TROOT.h"
17 #include <TMath.h>
18 #include "TStyle.h"
19 #include "TSystem.h"
20 #include "TLegend.h"
21 #include "TText.h"
22 #include "TAxis.h"
23 #include "TFile.h"
24 #include "TLine.h"
25 #include "TGraph.h"
26 #include <TPaveText.h>
27 
28 //
29 // https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT
30 // https://cms-cpt-software.web.cern.ch/cms-cpt-software/General/Validation/SVSuite/HcalRemoteMonitoring/GlobalRMT
31 
32 using namespace std;
33 //inline void HERE(const char *msg) { std::cout << msg << std::endl; }
34 
35 int main(int argc, char *argv[]) {
36  gROOT->Reset();
37  gROOT->SetStyle("Plain");
38  gStyle->SetOptStat(0);
39  gStyle->SetOptTitle(1);
40 
41  if (argc < 2)
42  return 1;
43  char fname[300];
44  char refname[300];
45  sprintf(fname, "%s", argv[1]);
46  sprintf(refname, "%s", argv[2]);
47 
48  cout << fname << " " << refname << std::endl;
49 
50  //
51 
52  //======================================================================
53  // Connect the input files, parameters and get the 2-d histogram in memory
54  // TFile *hfile= new TFile("GlobalHist.root", "READ");
55  string promt = (string)fname;
56  string runnumber = "";
57  for (unsigned int i = promt.size() - 11; i < promt.size() - 5; i++)
58  runnumber += fname[i];
59  string refrunnumber = "";
60  promt = (string)refname;
61  for (unsigned int i = promt.size() - 11; i < promt.size() - 5; i++)
62  refrunnumber += refname[i];
63 
64  TFile *hfile = new TFile(fname, "READ");
65  TFile *hreffile = new TFile(refname, "READ");
66  //megatile channels
67  //CUTS: [test][subdetector] ADC amplitude Am Width for Wm Ratio cut for Rm TS mean for TNm TS max for TXm
68  double MIN_M[7][5] = {{0., 0., 0., 0., 0.},
69  {0., 0., 0., 0., 0.},
70  {0, 0., 0., 0., 0.},
71  {0, 1.0, 1.0, 0.2, 0.1},
72  {0, 0.10, 0.10, 0.18, 0.30},
73  {0, 0.8, 0.8, 0.8, 0.1},
74  {0, -0.5, -0.5, -0.5, -0.5}};
75  double MAX_M[7][5] = {{0., 0., 0., 0., 0.},
76  {0., 0., 0., 0., 0.},
77  {0, 900, 900, 9000, 3000},
78  {0, 3.9, 3.9, 4.4, 2.0},
79  {0, 0.95, 0.98, 0.96, 1.04},
80  {0, 8.0, 8.0, 8.0, 2.8},
81  {0, 6.5, 6.5, 6.5, 3.5}};
82 
83  // calibration channels:
84  double MIN_C[7][5] = {{0., 0., 0., 0., 0.},
85  {0., 0., 0., 0., 0.},
86  {0, 120., 120., 120., 60.},
87  {0, 1.0, 1.0, 0.50, 0.2},
88  {0, 0.6, 0.64, 0.25, 0.25},
89  {0, 1.0, 1.0, 1.0, 1.0},
90  {0, 0.5, 0.5, 0.5, 0.5}};
91  double MAX_C[7][5] = {{0., 0., 0., 0., 0.},
92  {0., 0., 0., 0., 0.},
93  {0, 1E20, 1E20, 1E20, 1E20},
94  {0, 2.3, 2.3, 3.0, 2.3},
95  {0, 1., 1., 1., 1.00},
96  {0, 5.5, 5.5, 3.5, 5.2},
97  {0, 8.5, 8.5, 8.5, 9.5}};
98  double porog[5] = {0., 2., 2., 5., 1.}; // Cut for GS test in pro cents
99  // double porog[5] = {0., 200., 200., 100., 100.}; // Cut for GS test in pro cents
100  double Pedest[2][5] = {{0., 0.2, 0.9, 0.1, 0.2}, {0., 0.2, 0.2, 0.1, 0.16}}; //Cuts for Pedestal and pedestal Width
101  //======================================================================
102  //======================================================================
103  // Prepare histograms and plot them to .png files
104 
105  //TCanvas *cHB = new TCanvas("cHB","cHB",1000,500);
106  TCanvas *cHB = new TCanvas("cHB", "cHB", 1000, 1000);
107  //TCanvas *cHE = new TCanvas("cHE","cHE",1500,500);
108  TCanvas *cHE = new TCanvas("cHE", "cHE", 1500, 1500);
109  // TCanvas *cONE = new TCanvas("cONE","cONE",500,500);
110  TCanvas *cONE = new TCanvas("cONE", "cONE", 1500, 500);
111  TCanvas *cPED = new TCanvas("cPED", "cPED", 1000, 500);
112  //TCanvas *cHF = new TCanvas("cHF","cHF",1000,1000);
113  TCanvas *cHF = new TCanvas("cHF", "cHF", 1000, 1000);
114 
115  char *str = (char *)alloca(10000);
116 
117  // before upgrade 2017:
118  // depth: HB depth1,2; HE depth1,2,3; HO depth4; HF depth1,2
119  // 5 depthes: 0(empty), 1,2,3,4
120 
121  // upgrade 2017:
122  // depth: HB depth1,2; HE depth1,2,3,4,5,6,7; HO depth4; HF depth1,2,3,4
123  // 8 depthes: 0(empty), 1,2,3,4,5,6,7
124 
125  // upgrade 2019:
126  // depth: HB depth1,2,3,4; HE depth1,2,3,4,5,6,7; HO depth4; HF depth1,2,3,4
127  // 10 depthes: 0(empty), 1,2,3,4,5,6,7,8,9
128 
129  // Int_t ALLDEPTH = 5;
130  // Int_t ALLDEPTH = 8;
131  Int_t ALLDEPTH = 10;
132 
133  int k_min[5] = {0, 1, 1, 4, 1}; // minimum depth for each subdet
134 
135  //int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
136  //int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
137  int k_max[5] = {0, 4, 7, 4, 4}; // maximum depth for each subdet
138 
139  TH2F *Map_Ampl[33][5][ALLDEPTH]; // 2D histogramm for test,subdet,depth
140  TH2F *Map_SUB[5][ALLDEPTH]; // 2d histogramm for subdet, depth
141  TH1F *HistAmplDepth[22][5][ALLDEPTH]; // 1d histogramm for test,subdet, depth
142  TH1F *HistAmpl[22][5]; // 1d histogramm for test,subdet
143 
144  TH1F *HistPed[3][5][4]; // 1d histogramm for test,subdet, CapID
145  TH2F *Map_Ped[3][5]; // 2d histogramm for test,subdet -> test 33
146  TH1F *hist_GoodTSshape[5]; // 1d histogramm for TS shape subdet -> test 41
147  TH1F *hist_GoodTSshape0[5]; // 1d histogramm for TS shape subdet -> test 41
148  TH1F *hist_BadTSshape[5]; // 1d histogramm for TS shape subdet -> test 41
149  TH1F *hist_BadTSshape0[5]; // 1d histogramm for TS shape subdet -> test 41
150  TH1F *hist_ADC_All[5]; // 1d histogramm for TS shape subdet -> test 42
151  TH1F *hist_ADC_DS[5][ALLDEPTH]; // 1d histogramm for TS shape subdet, depth -> test 42
152  TH1F *hist_SumADC[5][ALLDEPTH]; // 1d histogramm for TS shape subdet, depth -> test 43
153  TH1F *hist_SumADC0[5][ALLDEPTH]; // 1d histogramm for TS shape subdet, depth -> test 43
154  TH1F *hist_SumADC1[5][ALLDEPTH]; // 1d histogramm for TS shape subdet, depth -> test 43
155 
156  Map_SUB[1][1] = (TH2F *)hfile->Get("h_mapDepth1_HB");
157  Map_SUB[1][2] = (TH2F *)hfile->Get("h_mapDepth2_HB");
158  Map_SUB[2][1] = (TH2F *)hfile->Get("h_mapDepth1_HE");
159  Map_SUB[2][2] = (TH2F *)hfile->Get("h_mapDepth2_HE");
160  Map_SUB[2][3] = (TH2F *)hfile->Get("h_mapDepth3_HE");
161  Map_SUB[3][4] = (TH2F *)hfile->Get("h_mapDepth4_HO");
162  Map_SUB[4][1] = (TH2F *)hfile->Get("h_mapDepth1_HF");
163  Map_SUB[4][2] = (TH2F *)hfile->Get("h_mapDepth2_HF");
164 
165  Map_SUB[2][4] = (TH2F *)hfile->Get("h_mapDepth4_HE");
166  Map_SUB[2][5] = (TH2F *)hfile->Get("h_mapDepth5_HE");
167  Map_SUB[2][6] = (TH2F *)hfile->Get("h_mapDepth6_HE");
168  Map_SUB[2][7] = (TH2F *)hfile->Get("h_mapDepth7_HE");
169  Map_SUB[4][3] = (TH2F *)hfile->Get("h_mapDepth3_HF");
170  Map_SUB[4][4] = (TH2F *)hfile->Get("h_mapDepth4_HF");
171 
172  Map_SUB[1][3] = (TH2F *)hfile->Get("h_mapDepth3_HB");
173  Map_SUB[1][4] = (TH2F *)hfile->Get("h_mapDepth4_HB");
174  //+++++++++++++++++++++++++++++
175  //Test 0 Entries
176  //+++++++++++++++++++++++++++++
177 
178  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
179  // if (sub==1) cHB->Divide(2,1);
180  if (sub == 1)
181  cHB->Divide(2, 2);
182  // if (sub==2) cHE->Divide(3,1);
183  if (sub == 2)
184  cHE->Divide(3, 3);
185  if (sub == 3)
186  cONE->Divide(1, 1);
187  // if (sub==4) cHF->Divide(2,1);
188  if (sub == 4)
189  cHF->Divide(2, 2);
190  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
191  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
192  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
193  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
194  if (sub == 1)
195  cHB->cd(k);
196  if (sub == 2)
197  cHE->cd(k);
198  if (sub == 3)
199  cONE->cd(k - 3);
200  if (sub == 4)
201  cHF->cd(k);
202  gPad->SetGridy();
203  gPad->SetGridx();
204  gPad->SetLogz();
205  if (sub == 1)
206  sprintf(str, "HB, Depth%d \b", k);
207  if (sub == 2)
208  sprintf(str, "HE, Depth%d \b", k);
209  if (sub == 3)
210  sprintf(str, "HO, Depth%d \b", k);
211  if (sub == 4)
212  sprintf(str, "HF, Depth%d \b", k);
213  Map_SUB[sub][k]->SetTitle(str);
214  Map_SUB[sub][k]->SetXTitle("#eta \b");
215  Map_SUB[sub][k]->SetYTitle("#phi \b");
216  Map_SUB[sub][k]->SetZTitle("Number of events \b");
217  if (sub == 3)
218  Map_SUB[sub][k]->SetTitleOffset(0.8, "Z");
219  Map_SUB[sub][k]->Draw("COLZ");
220  Map_SUB[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
221  // Map_SUB[sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
222  if (sub == 1) {
223  cHB->Modified();
224  cHB->Update();
225  }
226  if (sub == 2) {
227  cHE->Modified();
228  cHE->Update();
229  }
230  if (sub == 3) {
231  cONE->Modified();
232  cONE->Update();
233  }
234  if (sub == 4) {
235  cHF->Modified();
236  cHF->Update();
237  }
238  } //end depth
239 
240  if (sub == 1) {
241  cHB->Print("MapRateEntryHB.png");
242  cHB->Clear();
243  }
244  if (sub == 2) {
245  cHE->Print("MapRateEntryHE.png");
246  cHE->Clear();
247  }
248  if (sub == 3) {
249  cONE->Print("MapRateEntryHO.png");
250  cONE->Clear();
251  }
252  if (sub == 4) {
253  cHF->Print("MapRateEntryHF.png");
254  cHF->Clear();
255  }
256  } // end sub
257 
258  //+++++++++++++++++++++++++++++
259  //Test 1 (Cm) Rate of Cap ID errors
260  //+++++++++++++++++++++++++++++
261 
262  Map_Ampl[1][1][1] = (TH2F *)hfile->Get("h_mapDepth1Error_HB");
263  Map_Ampl[1][1][2] = (TH2F *)hfile->Get("h_mapDepth2Error_HB");
264  Map_Ampl[1][2][1] = (TH2F *)hfile->Get("h_mapDepth1Error_HE");
265  Map_Ampl[1][2][2] = (TH2F *)hfile->Get("h_mapDepth2Error_HE");
266  Map_Ampl[1][2][3] = (TH2F *)hfile->Get("h_mapDepth3Error_HE");
267  Map_Ampl[1][3][4] = (TH2F *)hfile->Get("h_mapDepth4Error_HO");
268  Map_Ampl[1][4][1] = (TH2F *)hfile->Get("h_mapDepth1Error_HF");
269  Map_Ampl[1][4][2] = (TH2F *)hfile->Get("h_mapDepth2Error_HF");
270 
271  Map_Ampl[1][2][4] = (TH2F *)hfile->Get("h_mapDepth4Error_HE");
272  Map_Ampl[1][2][5] = (TH2F *)hfile->Get("h_mapDepth5Error_HE");
273  Map_Ampl[1][2][6] = (TH2F *)hfile->Get("h_mapDepth6Error_HE");
274  Map_Ampl[1][2][7] = (TH2F *)hfile->Get("h_mapDepth7Error_HE");
275  Map_Ampl[1][4][3] = (TH2F *)hfile->Get("h_mapDepth3Error_HF");
276  Map_Ampl[1][4][4] = (TH2F *)hfile->Get("h_mapDepth4Error_HF");
277 
278  Map_Ampl[1][1][3] = (TH2F *)hfile->Get("h_mapDepth3Error_HB");
279  Map_Ampl[1][1][4] = (TH2F *)hfile->Get("h_mapDepth4Error_HB");
280 
281  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
282  // if (sub==1) cHB->Divide(2,1);
283  if (sub == 1)
284  cHB->Divide(2, 2);
285  // if (sub==2) cHE->Divide(3,1);
286  if (sub == 2)
287  cHE->Divide(3, 3);
288  if (sub == 3)
289  cONE->Divide(1, 1);
290  // if (sub==4) cHF->Divide(2,1);
291  if (sub == 4)
292  cHF->Divide(2, 2);
293  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
294  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
295  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
296  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
297  if (sub == 1)
298  cHB->cd(k);
299  if (sub == 2)
300  cHE->cd(k);
301  if (sub == 3)
302  cONE->cd(k - 3);
303  if (sub == 4)
304  cHF->cd(k);
305  Map_Ampl[1][sub][k]->Divide(Map_Ampl[1][sub][k], Map_SUB[sub][k], 1, 1, "B");
306  gPad->SetGridy();
307  gPad->SetGridx();
308  gPad->SetLogz();
309  if (sub == 1)
310  sprintf(str, "HB, Depth%d \b", k);
311  if (sub == 2)
312  sprintf(str, "HE, Depth%d \b", k);
313  if (sub == 3)
314  sprintf(str, "HO, Depth%d \b", k);
315  if (sub == 4)
316  sprintf(str, "HF, Depth%d \b", k);
317  Map_Ampl[1][sub][k]->SetTitle(str);
318  Map_Ampl[1][sub][k]->SetXTitle("#eta \b");
319  Map_Ampl[1][sub][k]->SetYTitle("#phi \b");
320  Map_Ampl[1][sub][k]->SetZTitle("Rate \b");
321  if (sub == 3)
322  Map_Ampl[1][sub][k]->SetTitleOffset(0.8, "Z");
323  Map_Ampl[1][sub][k]->Draw("COLZ");
324  Map_Ampl[1][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
325  Map_Ampl[1][sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
326  if (sub == 1) {
327  cHB->Modified();
328  cHB->Update();
329  }
330  if (sub == 2) {
331  cHE->Modified();
332  cHE->Update();
333  }
334  if (sub == 3) {
335  cONE->Modified();
336  cONE->Update();
337  }
338  if (sub == 4) {
339  cHF->Modified();
340  cHF->Update();
341  }
342  } //end depth
343 
344  if (sub == 1) {
345  cHB->Print("MapRateCapIDHB.png");
346  cHB->Clear();
347  }
348  if (sub == 2) {
349  cHE->Print("MapRateCapIDHE.png");
350  cHE->Clear();
351  }
352  if (sub == 3) {
353  cONE->Print("MapRateCapIDHO.png");
354  cONE->Clear();
355  }
356  if (sub == 4) {
357  cHF->Print("MapRateCapIDHF.png");
358  cHF->Clear();
359  }
360  } // end sub
361 
362  //+++++++++++++++++++++++++++++
363  //Test 2 (Am) ADC amplitude
364  //+++++++++++++++++++++++++++++
365 
366  Map_Ampl[2][1][1] = (TH2F *)hfile->Get("h_mapDepth1ADCAmpl225_HB");
367  Map_Ampl[2][1][2] = (TH2F *)hfile->Get("h_mapDepth2ADCAmpl225_HB");
368  Map_Ampl[2][2][1] = (TH2F *)hfile->Get("h_mapDepth1ADCAmpl225_HE");
369  Map_Ampl[2][2][2] = (TH2F *)hfile->Get("h_mapDepth2ADCAmpl225_HE");
370  Map_Ampl[2][2][3] = (TH2F *)hfile->Get("h_mapDepth3ADCAmpl225_HE");
371  Map_Ampl[2][3][4] = (TH2F *)hfile->Get("h_mapDepth4ADCAmpl225_HO");
372  Map_Ampl[2][4][1] = (TH2F *)hfile->Get("h_mapDepth1ADCAmpl225_HF");
373  Map_Ampl[2][4][2] = (TH2F *)hfile->Get("h_mapDepth2ADCAmpl225_HF");
374 
375  Map_Ampl[2][2][4] = (TH2F *)hfile->Get("h_mapDepth4ADCAmpl225_HE");
376  Map_Ampl[2][2][5] = (TH2F *)hfile->Get("h_mapDepth5ADCAmpl225_HE");
377  Map_Ampl[2][2][6] = (TH2F *)hfile->Get("h_mapDepth6ADCAmpl225_HE");
378  Map_Ampl[2][2][7] = (TH2F *)hfile->Get("h_mapDepth7ADCAmpl225_HE");
379  Map_Ampl[2][4][3] = (TH2F *)hfile->Get("h_mapDepth3ADCAmpl225_HF");
380  Map_Ampl[2][4][4] = (TH2F *)hfile->Get("h_mapDepth4ADCAmpl225_HF");
381 
382  Map_Ampl[2][1][3] = (TH2F *)hfile->Get("h_mapDepth3ADCAmpl225_HB");
383  Map_Ampl[2][1][4] = (TH2F *)hfile->Get("h_mapDepth4ADCAmpl225_HB");
384 
385  HistAmpl[2][1] = (TH1F *)hfile->Get("h_ADCAmpl_HB");
386  HistAmpl[2][2] = (TH1F *)hfile->Get("h_ADCAmpl_HE");
387  HistAmpl[2][3] = (TH1F *)hfile->Get("h_ADCAmpl_HO");
388  HistAmpl[2][4] = (TH1F *)hfile->Get("h_ADCAmpl_HF");
389 
390  //+++++++++++++++++++++++++++++
391  //Test 3 (Wm) Rate of RMS
392  //+++++++++++++++++++++++++++++
393 
394  Map_Ampl[3][1][1] = (TH2F *)hfile->Get("h_mapDepth1Amplitude225_HB");
395  Map_Ampl[3][1][2] = (TH2F *)hfile->Get("h_mapDepth2Amplitude225_HB");
396  Map_Ampl[3][2][1] = (TH2F *)hfile->Get("h_mapDepth1Amplitude225_HE");
397  Map_Ampl[3][2][2] = (TH2F *)hfile->Get("h_mapDepth2Amplitude225_HE");
398  Map_Ampl[3][2][3] = (TH2F *)hfile->Get("h_mapDepth3Amplitude225_HE");
399  Map_Ampl[3][3][4] = (TH2F *)hfile->Get("h_mapDepth4Amplitude225_HO");
400  Map_Ampl[3][4][1] = (TH2F *)hfile->Get("h_mapDepth1Amplitude225_HF");
401  Map_Ampl[3][4][2] = (TH2F *)hfile->Get("h_mapDepth2Amplitude225_HF");
402 
403  Map_Ampl[3][2][4] = (TH2F *)hfile->Get("h_mapDepth4Amplitude225_HE");
404  Map_Ampl[3][2][5] = (TH2F *)hfile->Get("h_mapDepth5Amplitude225_HE");
405  Map_Ampl[3][2][6] = (TH2F *)hfile->Get("h_mapDepth6Amplitude225_HE");
406  Map_Ampl[3][2][7] = (TH2F *)hfile->Get("h_mapDepth7Amplitude225_HE");
407  Map_Ampl[3][4][3] = (TH2F *)hfile->Get("h_mapDepth3Amplitude225_HF");
408  Map_Ampl[3][4][4] = (TH2F *)hfile->Get("h_mapDepth4Amplitude225_HF");
409 
410  Map_Ampl[3][1][3] = (TH2F *)hfile->Get("h_mapDepth3Amplitude225_HB");
411  Map_Ampl[3][1][4] = (TH2F *)hfile->Get("h_mapDepth4Amplitude225_HB");
412 
413  HistAmpl[3][1] = (TH1F *)hfile->Get("h_Amplitude_HB");
414  HistAmpl[3][2] = (TH1F *)hfile->Get("h_Amplitude_HE");
415  HistAmpl[3][3] = (TH1F *)hfile->Get("h_Amplitude_HO");
416  HistAmpl[3][4] = (TH1F *)hfile->Get("h_Amplitude_HF");
417 
418  //+++++++++++++++++++++++++++++
419  //Test 4 (Rm) Rate of ratio 4 near max TS/ All TS
420  //+++++++++++++++++++++++++++++
421 
422  Map_Ampl[4][1][1] = (TH2F *)hfile->Get("h_mapDepth1Ampl047_HB");
423  Map_Ampl[4][1][2] = (TH2F *)hfile->Get("h_mapDepth2Ampl047_HB");
424  Map_Ampl[4][2][1] = (TH2F *)hfile->Get("h_mapDepth1Ampl047_HE");
425  Map_Ampl[4][2][2] = (TH2F *)hfile->Get("h_mapDepth2Ampl047_HE");
426  Map_Ampl[4][2][3] = (TH2F *)hfile->Get("h_mapDepth3Ampl047_HE");
427  Map_Ampl[4][3][4] = (TH2F *)hfile->Get("h_mapDepth4Ampl047_HO");
428  Map_Ampl[4][4][1] = (TH2F *)hfile->Get("h_mapDepth1Ampl047_HF");
429  Map_Ampl[4][4][2] = (TH2F *)hfile->Get("h_mapDepth2Ampl047_HF");
430 
431  Map_Ampl[4][2][4] = (TH2F *)hfile->Get("h_mapDepth4Ampl047_HE");
432  Map_Ampl[4][2][5] = (TH2F *)hfile->Get("h_mapDepth5Ampl047_HE");
433  Map_Ampl[4][2][6] = (TH2F *)hfile->Get("h_mapDepth6Ampl047_HE");
434  Map_Ampl[4][2][7] = (TH2F *)hfile->Get("h_mapDepth7Ampl047_HE");
435  Map_Ampl[4][4][3] = (TH2F *)hfile->Get("h_mapDepth3Ampl047_HF");
436  Map_Ampl[4][4][4] = (TH2F *)hfile->Get("h_mapDepth4Ampl047_HF");
437 
438  Map_Ampl[4][1][3] = (TH2F *)hfile->Get("h_mapDepth3Ampl047_HB");
439  Map_Ampl[4][1][4] = (TH2F *)hfile->Get("h_mapDepth4Ampl047_HB");
440 
441  HistAmpl[4][1] = (TH1F *)hfile->Get("h_Ampl_HB");
442  HistAmpl[4][2] = (TH1F *)hfile->Get("h_Ampl_HE");
443  HistAmpl[4][3] = (TH1F *)hfile->Get("h_Ampl_HO");
444  HistAmpl[4][4] = (TH1F *)hfile->Get("h_Ampl_HF");
445 
446  //+++++++++++++++++++++++++++++
447  //Test 5 (TNm) Mean position in 1-8 TS range
448  //+++++++++++++++++++++++++++++
449 
450  Map_Ampl[5][1][1] = (TH2F *)hfile->Get("h_mapDepth1TSmeanA225_HB");
451  Map_Ampl[5][1][2] = (TH2F *)hfile->Get("h_mapDepth2TSmeanA225_HB");
452  Map_Ampl[5][2][1] = (TH2F *)hfile->Get("h_mapDepth1TSmeanA225_HE");
453  Map_Ampl[5][2][2] = (TH2F *)hfile->Get("h_mapDepth2TSmeanA225_HE");
454  Map_Ampl[5][2][3] = (TH2F *)hfile->Get("h_mapDepth3TSmeanA225_HE");
455  Map_Ampl[5][3][4] = (TH2F *)hfile->Get("h_mapDepth4TSmeanA225_HO");
456  Map_Ampl[5][4][1] = (TH2F *)hfile->Get("h_mapDepth1TSmeanA225_HF");
457  Map_Ampl[5][4][2] = (TH2F *)hfile->Get("h_mapDepth2TSmeanA225_HF");
458 
459  Map_Ampl[5][2][4] = (TH2F *)hfile->Get("h_mapDepth4TSmeanA225_HE");
460  Map_Ampl[5][2][5] = (TH2F *)hfile->Get("h_mapDepth5TSmeanA225_HE");
461  Map_Ampl[5][2][6] = (TH2F *)hfile->Get("h_mapDepth6TSmeanA225_HE");
462  Map_Ampl[5][2][7] = (TH2F *)hfile->Get("h_mapDepth7TSmeanA225_HE");
463  Map_Ampl[5][4][3] = (TH2F *)hfile->Get("h_mapDepth3TSmeanA225_HF");
464  Map_Ampl[5][4][4] = (TH2F *)hfile->Get("h_mapDepth4TSmeanA225_HF");
465 
466  Map_Ampl[5][1][3] = (TH2F *)hfile->Get("h_mapDepth3TSmeanA225_HB");
467  Map_Ampl[5][1][4] = (TH2F *)hfile->Get("h_mapDepth4TSmeanA225_HB");
468 
469  HistAmpl[5][1] = (TH1F *)hfile->Get("h_TSmeanA_HB");
470  HistAmpl[5][2] = (TH1F *)hfile->Get("h_TSmeanA_HE");
471  HistAmpl[5][3] = (TH1F *)hfile->Get("h_TSmeanA_HO");
472  HistAmpl[5][4] = (TH1F *)hfile->Get("h_TSmeanA_HF");
473 
474  //+++++++++++++++++++++++++++++
475  //Test 6 (TXm) Maximum position in 1-8 TS range
476  //+++++++++++++++++++++++++++++
477 
478  Map_Ampl[6][1][1] = (TH2F *)hfile->Get("h_mapDepth1TSmaxA225_HB");
479  Map_Ampl[6][1][2] = (TH2F *)hfile->Get("h_mapDepth2TSmaxA225_HB");
480  Map_Ampl[6][2][1] = (TH2F *)hfile->Get("h_mapDepth1TSmaxA225_HE");
481  Map_Ampl[6][2][2] = (TH2F *)hfile->Get("h_mapDepth2TSmaxA225_HE");
482  Map_Ampl[6][2][3] = (TH2F *)hfile->Get("h_mapDepth3TSmaxA225_HE");
483  Map_Ampl[6][3][4] = (TH2F *)hfile->Get("h_mapDepth4TSmaxA225_HO");
484  Map_Ampl[6][4][1] = (TH2F *)hfile->Get("h_mapDepth1TSmaxA225_HF");
485  Map_Ampl[6][4][2] = (TH2F *)hfile->Get("h_mapDepth2TSmaxA225_HF");
486 
487  Map_Ampl[6][2][4] = (TH2F *)hfile->Get("h_mapDepth4TSmaxA225_HE");
488  Map_Ampl[6][2][5] = (TH2F *)hfile->Get("h_mapDepth5TSmaxA225_HE");
489  Map_Ampl[6][2][6] = (TH2F *)hfile->Get("h_mapDepth6TSmaxA225_HE");
490  Map_Ampl[6][2][7] = (TH2F *)hfile->Get("h_mapDepth7TSmaxA225_HE");
491  Map_Ampl[6][4][3] = (TH2F *)hfile->Get("h_mapDepth3TSmaxA225_HF");
492  Map_Ampl[6][4][4] = (TH2F *)hfile->Get("h_mapDepth4TSmaxA225_HF");
493 
494  Map_Ampl[6][1][3] = (TH2F *)hfile->Get("h_mapDepth3TSmaxA225_HB");
495  Map_Ampl[6][1][4] = (TH2F *)hfile->Get("h_mapDepth4TSmaxA225_HB");
496 
497  HistAmpl[6][1] = (TH1F *)hfile->Get("h_TSmaxA_HB");
498  HistAmpl[6][2] = (TH1F *)hfile->Get("h_TSmaxA_HE");
499  HistAmpl[6][3] = (TH1F *)hfile->Get("h_TSmaxA_HO");
500  HistAmpl[6][4] = (TH1F *)hfile->Get("h_TSmaxA_HF");
501 
502  for (int test = 2; test <= 6; test++) { //Test: 2-Am, 3-Wm, 4-Rm, 5-TNm, 6-TXm,
503  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
504  // if (sub==1) cHB->Divide(2,1);
505  if (sub == 1)
506  cHB->Divide(2, 2);
507  // if (sub==2) cHE->Divide(3,1);
508  if (sub == 2)
509  cHE->Divide(3, 3);
510  if (sub == 3)
511  cONE->Divide(1, 1);
512  // if (sub==4) cHF->Divide(2,1);
513  if (sub == 4)
514  cHF->Divide(2, 2);
515  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
516  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
517  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
518  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
519  if (sub == 1)
520  cHB->cd(k);
521  if (sub == 2)
522  cHE->cd(k);
523  if (sub == 3)
524  cONE->cd(k - 3);
525  if (sub == 4)
526  cHF->cd(k);
527  Map_Ampl[test][sub][k]->Divide(Map_Ampl[test][sub][k], Map_SUB[sub][k], 1, 1, "B");
528  gPad->SetGridy();
529  gPad->SetGridx();
530  gPad->SetLogz();
531  if (sub == 1)
532  sprintf(str, "HB, Depth%d \b", k);
533  if (sub == 2)
534  sprintf(str, "HE, Depth%d \b", k);
535  if (sub == 3)
536  sprintf(str, "HO, Depth%d \b", k);
537  if (sub == 4)
538  sprintf(str, "HF, Depth%d \b", k);
539  Map_Ampl[test][sub][k]->SetTitle(str);
540  Map_Ampl[test][sub][k]->SetXTitle("#eta \b");
541  Map_Ampl[test][sub][k]->SetYTitle("#phi \b");
542  Map_Ampl[test][sub][k]->SetZTitle("Rate \b");
543  if (sub == 3)
544  Map_Ampl[test][sub][k]->SetTitleOffset(0.8, "Z");
545  Map_Ampl[test][sub][k]->Draw("COLZ");
546  Map_Ampl[test][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
547  Map_Ampl[test][sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
548  if (sub == 1) {
549  cHB->Modified();
550  cHB->Update();
551  }
552  if (sub == 2) {
553  cHE->Modified();
554  cHE->Update();
555  }
556  if (sub == 3) {
557  cONE->Modified();
558  cONE->Update();
559  }
560  if (sub == 4) {
561  cHF->Modified();
562  cHF->Update();
563  }
564  } //end depth
565  if (test == 2) {
566  if (sub == 1) {
567  cHB->Print("MapRateAmplHB.png");
568  cHB->Clear();
569  }
570  if (sub == 2) {
571  cHE->Print("MapRateAmplHE.png");
572  cHE->Clear();
573  }
574  if (sub == 3) {
575  cONE->Print("MapRateAmplHO.png");
576  cONE->Clear();
577  }
578  if (sub == 4) {
579  cHF->Print("MapRateAmplHF.png");
580  cHF->Clear();
581  }
582  }
583  if (test == 3) {
584  if (sub == 1) {
585  cHB->Print("MapRateRMSHB.png");
586  cHB->Clear();
587  }
588  if (sub == 2) {
589  cHE->Print("MapRateRMSHE.png");
590  cHE->Clear();
591  }
592  if (sub == 3) {
593  cONE->Print("MapRateRMSHO.png");
594  cONE->Clear();
595  }
596  if (sub == 4) {
597  cHF->Print("MapRateRMSHF.png");
598  cHF->Clear();
599  }
600  }
601  if (test == 4) {
602  if (sub == 1) {
603  cHB->Print("MapRate43TStoAllTSHB.png");
604  cHB->Clear();
605  }
606  if (sub == 2) {
607  cHE->Print("MapRate43TStoAllTSHE.png");
608  cHE->Clear();
609  }
610  if (sub == 3) {
611  cONE->Print("MapRate43TStoAllTSHO.png");
612  cONE->Clear();
613  }
614  if (sub == 4) {
615  cHF->Print("MapRate43TStoAllTSHF.png");
616  cHF->Clear();
617  }
618  }
619  if (test == 5) {
620  if (sub == 1) {
621  cHB->Print("MapRateMeanPosHB.png");
622  cHB->Clear();
623  }
624  if (sub == 2) {
625  cHE->Print("MapRateMeanPosHE.png");
626  cHE->Clear();
627  }
628  if (sub == 3) {
629  cONE->Print("MapRateMeanPosHO.png");
630  cONE->Clear();
631  }
632  if (sub == 4) {
633  cHF->Print("MapRateMeanPosHF.png");
634  cHF->Clear();
635  }
636  }
637  if (test == 6) {
638  if (sub == 1) {
639  cHB->Print("MapRateMaxPosHB.png");
640  cHB->Clear();
641  }
642  if (sub == 2) {
643  cHE->Print("MapRateMaxPosHE.png");
644  cHE->Clear();
645  }
646  if (sub == 3) {
647  cONE->Print("MapRateMaxPosHO.png");
648  cONE->Clear();
649  }
650  if (sub == 4) {
651  cHF->Print("MapRateMaxPosHF.png");
652  cHF->Clear();
653  }
654  }
655 
656  // cONE->Divide(1,1);
657  /*
658  cONE->Divide(2,1);
659  if(test == 2 && sub == 2 ) {
660  cONE->cd(2);
661  TH1F *kjkjkhj2= (TH1F*)hfile->Get("h_ADCAmpl_HE");kjkjkhj2->Draw("");kjkjkhj2->SetTitle("HE, All Depth: shunt6");
662  }
663  if(test == 2 && sub == 1 ) {
664  cONE->cd(2);
665  TH1F *kjkjkhj1= (TH1F*)hfile->Get("h_ADCAmpl_HB");kjkjkhj1->Draw("");kjkjkhj1->SetTitle("HB, All Depth: shunt6");
666  }
667 */
668 
669  cONE->Divide(3, 1);
670  if (test == 2 && sub == 2) {
671  cONE->cd(2);
672  TH1F *kjkjkhj2 = (TH1F *)hfile->Get("h_AmplitudeHEtest1");
673  kjkjkhj2->Draw("");
674  kjkjkhj2->SetTitle("HE, All Depth: shunt1");
675  cONE->cd(3);
676  TH1F *kjkjkhj3 = (TH1F *)hfile->Get("h_AmplitudeHEtest6");
677  kjkjkhj3->Draw("");
678  kjkjkhj3->SetTitle("HE, All Depth: shunt6");
679  }
680  if (test == 2 && sub == 1) {
681  cONE->cd(2);
682  TH1F *kjkjkhb2 = (TH1F *)hfile->Get("h_AmplitudeHBtest1");
683  kjkjkhb2->Draw("");
684  kjkjkhb2->SetTitle("HB, All Depth: shunt1");
685  cONE->cd(3);
686  TH1F *kjkjkhb3 = (TH1F *)hfile->Get("h_AmplitudeHBtest6");
687  kjkjkhb3->Draw("");
688  kjkjkhb3->SetTitle("HB, All Depth: shunt6");
689  }
690 
691  cONE->cd(1);
692  gPad->SetGridy();
693  gPad->SetGridx();
694  gPad->SetLogy();
695  if (sub == 1)
696  HistAmpl[test][sub]->SetTitle("HB, All Depth: shunt6");
697  if (sub == 2)
698  HistAmpl[test][sub]->SetTitle("HE, All Depth: shunt6");
699  if (sub == 3)
700  HistAmpl[test][sub]->SetTitle("HO, All Depth");
701  if (sub == 4)
702  HistAmpl[test][sub]->SetTitle("HF, All Depth");
703  if (test == 2)
704  HistAmpl[test][sub]->SetXTitle("ADC Amlitude in each event & cell \b");
705  if (test == 3)
706  HistAmpl[test][sub]->SetXTitle("RMS in each event & cell \b");
707  if (test == 4)
708  HistAmpl[test][sub]->SetXTitle("Ratio in each event & cell \b");
709  if (test == 5)
710  HistAmpl[test][sub]->SetXTitle("Mean TS position in each event & cell \b");
711  if (test == 6)
712  HistAmpl[test][sub]->SetXTitle("Max TS position in each event & cell \b");
713  HistAmpl[test][sub]->SetYTitle("Number of cell-events \b");
714  HistAmpl[test][sub]->SetLineColor(4);
715  HistAmpl[test][sub]->SetLineWidth(2);
716  HistAmpl[test][sub]->SetTitleOffset(1.4, "Y");
717  HistAmpl[test][sub]->Draw("");
718  // // HistAmpl[test][sub]->GetYaxis()->SetRangeUser(1., 100.);
719  // if (test==2) {gPad->SetLogx(); HistAmpl[test][sub]->GetXaxis()->SetRangeUser(1., 10000.);}
720  if (test == 2) {
721  gPad->SetLogx();
722  }
723  if (test == 3)
724  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 5.); // width
725  if (test == 4)
726  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 1.); // R
727  if (test == 5)
728  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 9.); // Tn
729  if (test == 6)
730  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 9.); // Tx
731  cONE->Modified();
732  cONE->Update();
733  double min_x[] = {MIN_M[test][sub], MIN_M[test][sub]};
734  double min_y[] = {0., 100000000.};
735  TGraph *MIN = new TGraph(2, min_x, min_y);
736  MIN->SetLineStyle(2);
737  MIN->SetLineColor(2);
738  MIN->SetLineWidth(2 + 100 * 100);
739  MIN->SetFillStyle(3005);
740  MIN->SetFillColor(2);
741  MIN->Draw("L");
742  double max_x[] = {MAX_M[test][sub], MAX_M[test][sub]};
743  double max_y[] = {0., 100000000.};
744  TGraph *MAX = new TGraph(2, max_x, max_y);
745  MAX->SetLineStyle(2);
746  MAX->SetLineColor(2);
747  MAX->SetLineWidth(-2 - 100 * 100);
748  MAX->SetFillStyle(3004);
749  MAX->SetFillColor(2);
750  MAX->Draw("L");
751  if (test == 2) {
752  if (sub == 1) {
753  cONE->Print("HistAmplHB.png");
754  cONE->Clear();
755  }
756  if (sub == 2) {
757  cONE->Print("HistAmplHE.png");
758  cONE->Clear();
759  }
760  if (sub == 3) {
761  cONE->Print("HistAmplHO.png");
762  cONE->Clear();
763  }
764  if (sub == 4) {
765  cONE->Print("HistAmplHF.png");
766  cONE->Clear();
767  }
768  }
769  if (test == 3) {
770  if (sub == 1) {
771  cONE->Print("HistRMSHB.png");
772  cONE->Clear();
773  }
774  if (sub == 2) {
775  cONE->Print("HistRMSHE.png");
776  cONE->Clear();
777  }
778  if (sub == 3) {
779  cONE->Print("HistRMSHO.png");
780  cONE->Clear();
781  }
782  if (sub == 4) {
783  cONE->Print("HistRMSHF.png");
784  cONE->Clear();
785  }
786  }
787  if (test == 4) {
788  if (sub == 1) {
789  cONE->Print("Hist43TStoAllTSHB.png");
790  cONE->Clear();
791  }
792  if (sub == 2) {
793  cONE->Print("Hist43TStoAllTSHE.png");
794  cONE->Clear();
795  }
796  if (sub == 3) {
797  cONE->Print("Hist43TStoAllTSHO.png");
798  cONE->Clear();
799  }
800  if (sub == 4) {
801  cONE->Print("Hist43TStoAllTSHF.png");
802  cONE->Clear();
803  }
804  }
805  if (test == 5) {
806  if (sub == 1) {
807  cONE->Print("HistMeanPosHB.png");
808  cONE->Clear();
809  }
810  if (sub == 2) {
811  cONE->Print("HistMeanPosHE.png");
812  cONE->Clear();
813  }
814  if (sub == 3) {
815  cONE->Print("HistMeanPosHO.png");
816  cONE->Clear();
817  }
818  if (sub == 4) {
819  cONE->Print("HistMeanPosHF.png");
820  cONE->Clear();
821  }
822  }
823  if (test == 6) {
824  if (sub == 1) {
825  cONE->Print("HistMaxPosHB.png");
826  cONE->Clear();
827  }
828  if (sub == 2) {
829  cONE->Print("HistMaxPosHE.png");
830  cONE->Clear();
831  }
832  if (sub == 3) {
833  cONE->Print("HistMaxPosHO.png");
834  cONE->Clear();
835  }
836  if (sub == 4) {
837  cONE->Print("HistMaxPosHF.png");
838  cONE->Clear();
839  }
840  }
841  } // end sub
842  } //end test
843 
844  TH2F *Map_Calib[5][5]; // 2d histogramm for subdet, depth
845 
846  Map_Calib[1][1] = (TH2F *)hfile->Get("h_map_HB");
847  Map_Calib[1][2] = (TH2F *)hfile->Get("h_map_HB");
848  Map_Calib[2][1] = (TH2F *)hfile->Get("h_map_HE");
849  Map_Calib[2][2] = (TH2F *)hfile->Get("h_map_HE");
850  Map_Calib[2][3] = (TH2F *)hfile->Get("h_map_HE");
851  Map_Calib[3][4] = (TH2F *)hfile->Get("h_map_HO");
852  Map_Calib[4][1] = (TH2F *)hfile->Get("h_map_HF");
853  Map_Calib[4][2] = (TH2F *)hfile->Get("h_map_HF");
854 
855  //+++++++++++++++++++++++++++++
856  //Test 0 Entries
857  //+++++++++++++++++++++++++++++
858 
859  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
860  // if (sub==1) cHB->Divide(2,1);
861  // if (sub==2) cHE->Divide(3,1);
862  cONE->Divide(1, 1);
863  // if (sub==4) cHB->Divide(2,1);
864  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
865  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
866  // for (int k=k_min[sub];k<=k_max[sub];k++) { //Depth
867  int k = 1;
868  cONE->cd(k);
869  // if (sub==1) cHB->cd(k);
870  // if (sub==2) cHE->cd(k);
871  if (sub == 3)
872  k = 4;
873  // if (sub==4) cHB->cd(k);
874  gPad->SetGridy();
875  gPad->SetGridx();
876  gPad->SetLogz();
877  if (sub == 1)
878  sprintf(str, "HB");
879  if (sub == 2)
880  sprintf(str, "HE");
881  if (sub == 3)
882  sprintf(str, "HO");
883  if (sub == 4)
884  sprintf(str, "HF");
885  Map_Calib[sub][k]->SetTitle(str);
886  Map_Calib[sub][k]->SetXTitle("#eta \b");
887  Map_Calib[sub][k]->SetYTitle("#phi \b");
888  Map_Calib[sub][k]->SetZTitle("Number of events\b");
889  if (sub == 3)
890  Map_Calib[sub][k]->SetTitleOffset(0.8, "Z");
891  Map_Calib[sub][k]->Draw("COLZ");
892  Map_Calib[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
893  // Map_Calib[sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
894  // if (sub==1) {cHB->Modified(); cHB->Update();}
895  // if (sub==2) {cHE->Modified(); cHE->Update();}
896  cONE->Modified();
897  cONE->Update();
898  // if (sub==4) {cHB->Modified(); cHB->Update();}
899  // }//end depth
900 
901  if (sub == 1) {
902  cONE->Print("MapRateCalibEntryHB.png");
903  cONE->Clear();
904  }
905  if (sub == 2) {
906  cONE->Print("MapRateCalibEntryHE.png");
907  cONE->Clear();
908  }
909  if (sub == 3) {
910  cONE->Print("MapRateCalibEntryHO.png");
911  cONE->Clear();
912  }
913  if (sub == 4) {
914  cONE->Print("MapRateCalibEntryHF.png");
915  cONE->Clear();
916  }
917  } // end sub
918 
919  //+++++++++++++++++++++++++++++
920  //Test 11 (Cc) Rate of Cap ID errors for calibration channels
921  //+++++++++++++++++++++++++++++
922 
923  Map_Ampl[11][1][1] = (TH2F *)hfile->Get("h_mapCapCalib047_HB");
924  Map_Ampl[11][1][2] = (TH2F *)hfile->Get("h_mapCapCalib047_HB");
925  Map_Ampl[11][2][1] = (TH2F *)hfile->Get("h_mapCapCalib047_HE");
926  Map_Ampl[11][2][2] = (TH2F *)hfile->Get("h_mapCapCalib047_HE");
927  Map_Ampl[11][2][3] = (TH2F *)hfile->Get("h_mapCapCalib047_HE");
928  Map_Ampl[11][3][4] = (TH2F *)hfile->Get("h_mapCapCalib047_HO");
929  Map_Ampl[11][4][1] = (TH2F *)hfile->Get("h_mapCapCalib047_HF");
930  Map_Ampl[11][4][2] = (TH2F *)hfile->Get("h_mapCapCalib047_HF");
931 
932  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
933  // if (sub==1) cHB->Divide(2,1);
934  // if (sub==2) cHE->Divide(3,1);
935  cONE->Divide(1, 1);
936  // if (sub==4) cHB->Divide(2,1);
937  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
938  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
939  // for (int k=k_min[sub];k<=k_max[sub];k++) { //Depth
940  int k = 1;
941  cONE->cd(k);
942  // if (sub==1) cHB->cd(k);
943  // if (sub==2) cHE->cd(k);
944  if (sub == 3)
945  k = 4;
946  // if (sub==4) cHB->cd(k);
947  Map_Ampl[11][sub][k]->Divide(Map_Ampl[11][sub][k], Map_Calib[sub][k], 1, 1, "B");
948  gPad->SetGridy();
949  gPad->SetGridx();
950  gPad->SetLogz();
951  if (sub == 1)
952  sprintf(str, "HB");
953  if (sub == 2)
954  sprintf(str, "HE");
955  if (sub == 3)
956  sprintf(str, "HO");
957  if (sub == 4)
958  sprintf(str, "HF");
959  Map_Ampl[11][sub][k]->SetTitle(str);
960  Map_Ampl[11][sub][k]->SetXTitle("#eta \b");
961  Map_Ampl[11][sub][k]->SetYTitle("#phi \b");
962  Map_Ampl[11][sub][k]->SetZTitle("Rate \b");
963  Map_Ampl[11][sub][k]->SetTitleOffset(0.75, "Z");
964  Map_Ampl[11][sub][k]->Draw("COLZ");
965  Map_Ampl[11][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
966  Map_Ampl[11][sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
967  // if (sub==1) {cHB->Modified(); cHB->Update();}
968  // if (sub==2) {cHE->Modified(); cHE->Update();}
969  cONE->Modified();
970  cONE->Update();
971  // if (sub==4) {cHB->Modified(); cHB->Update();}
972  // }//end depth
973 
974  if (sub == 1) {
975  cONE->Print("MapRateCapCalibHB.png");
976  cONE->Clear();
977  }
978  if (sub == 2) {
979  cONE->Print("MapRateCapCalibHE.png");
980  cONE->Clear();
981  }
982  if (sub == 3) {
983  cONE->Print("MapRateCapCalibHO.png");
984  cONE->Clear();
985  }
986  if (sub == 4) {
987  cONE->Print("MapRateCapCalibHF.png");
988  cONE->Clear();
989  }
990  } // end sub
991 
992  //+++++++++++++++++++++++++++++
993  //Test 12 (Ac) ADC amplitude for calibration chanels
994  //+++++++++++++++++++++++++++++
995 
996  Map_Ampl[12][1][1] = (TH2F *)hfile->Get("h_mapADCCalib047_HB");
997  Map_Ampl[12][1][2] = (TH2F *)hfile->Get("h_mapADCCalib047_HB");
998  Map_Ampl[12][2][1] = (TH2F *)hfile->Get("h_mapADCCalib047_HE");
999  Map_Ampl[12][2][2] = (TH2F *)hfile->Get("h_mapADCCalib047_HE");
1000  Map_Ampl[12][2][3] = (TH2F *)hfile->Get("h_mapADCCalib047_HE");
1001  Map_Ampl[12][3][4] = (TH2F *)hfile->Get("h_mapADCCalib047_HO");
1002  Map_Ampl[12][4][1] = (TH2F *)hfile->Get("h_mapADCCalib047_HF");
1003  Map_Ampl[12][4][2] = (TH2F *)hfile->Get("h_mapADCCalib047_HF");
1004 
1005  HistAmpl[12][1] = (TH1F *)hfile->Get("h_ADCCalib_HB");
1006  HistAmpl[12][2] = (TH1F *)hfile->Get("h_ADCCalib_HE");
1007  HistAmpl[12][3] = (TH1F *)hfile->Get("h_ADCCalib_HO");
1008  HistAmpl[12][4] = (TH1F *)hfile->Get("h_ADCCalib_HF");
1009 
1010  //+++++++++++++++++++++++++++++
1011  //Test 13 (Wc) Rate of RMS
1012  //+++++++++++++++++++++++++++++
1013 
1014  Map_Ampl[13][1][1] = (TH2F *)hfile->Get("h_mapWidthCalib047_HB");
1015  Map_Ampl[13][1][2] = (TH2F *)hfile->Get("h_mapWidthCalib047_HB");
1016  Map_Ampl[13][2][1] = (TH2F *)hfile->Get("h_mapWidthCalib047_HE");
1017  Map_Ampl[13][2][2] = (TH2F *)hfile->Get("h_mapWidthCalib047_HE");
1018  Map_Ampl[13][2][3] = (TH2F *)hfile->Get("h_mapWidthCalib047_HE");
1019  Map_Ampl[13][3][4] = (TH2F *)hfile->Get("h_mapWidthCalib047_HO");
1020  Map_Ampl[13][4][1] = (TH2F *)hfile->Get("h_mapWidthCalib047_HF");
1021  Map_Ampl[13][4][2] = (TH2F *)hfile->Get("h_mapWidthCalib047_HF");
1022 
1023  HistAmpl[13][1] = (TH1F *)hfile->Get("h_WidthCalib_HB");
1024  HistAmpl[13][2] = (TH1F *)hfile->Get("h_WidthCalib_HE");
1025  HistAmpl[13][3] = (TH1F *)hfile->Get("h_WidthCalib_HO");
1026  HistAmpl[13][4] = (TH1F *)hfile->Get("h_WidthCalib_HF");
1027 
1028  //+++++++++++++++++++++++++++++
1029  //Test 14 (Rc) Rate of ratio 4 near max TS/ All TS
1030  //+++++++++++++++++++++++++++++
1031 
1032  Map_Ampl[14][1][1] = (TH2F *)hfile->Get("h_mapRatioCalib047_HB");
1033  Map_Ampl[14][1][2] = (TH2F *)hfile->Get("h_mapRatioCalib047_HB");
1034  Map_Ampl[14][2][1] = (TH2F *)hfile->Get("h_mapRatioCalib047_HE");
1035  Map_Ampl[14][2][2] = (TH2F *)hfile->Get("h_mapRatioCalib047_HE");
1036  Map_Ampl[14][2][3] = (TH2F *)hfile->Get("h_mapRatioCalib047_HE");
1037  Map_Ampl[14][3][4] = (TH2F *)hfile->Get("h_mapRatioCalib047_HO");
1038  Map_Ampl[14][4][1] = (TH2F *)hfile->Get("h_mapRatioCalib047_HF");
1039  Map_Ampl[14][4][2] = (TH2F *)hfile->Get("h_mapRatioCalib047_HF");
1040 
1041  HistAmpl[14][1] = (TH1F *)hfile->Get("h_RatioCalib_HB");
1042  HistAmpl[14][2] = (TH1F *)hfile->Get("h_RatioCalib_HE");
1043  HistAmpl[14][3] = (TH1F *)hfile->Get("h_RatioCalib_HO");
1044  HistAmpl[14][4] = (TH1F *)hfile->Get("h_RatioCalib_HF");
1045 
1046  //+++++++++++++++++++++++++++++
1047  //Test 15 (TNc) Mean position in 1-8 TS range
1048  //+++++++++++++++++++++++++++++
1049 
1050  Map_Ampl[15][1][1] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HB");
1051  Map_Ampl[15][1][2] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HB");
1052  Map_Ampl[15][2][1] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HE");
1053  Map_Ampl[15][2][2] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HE");
1054  Map_Ampl[15][2][3] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HE");
1055  Map_Ampl[15][3][4] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HO");
1056  Map_Ampl[15][4][1] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HF");
1057  Map_Ampl[15][4][2] = (TH2F *)hfile->Get("h_mapTSmeanCalib047_HF");
1058 
1059  HistAmpl[15][1] = (TH1F *)hfile->Get("h_TSmeanCalib_HB");
1060  HistAmpl[15][2] = (TH1F *)hfile->Get("h_TSmeanCalib_HE");
1061  HistAmpl[15][3] = (TH1F *)hfile->Get("h_TSmeanCalib_HO");
1062  HistAmpl[15][4] = (TH1F *)hfile->Get("h_TSmeanCalib_HF");
1063 
1064  //+++++++++++++++++++++++++++++
1065  //Test 16 (TXc) Maximum position in 1-8 TS range
1066  //+++++++++++++++++++++++++++++
1067 
1068  Map_Ampl[16][1][1] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HB");
1069  Map_Ampl[16][1][2] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HB");
1070  Map_Ampl[16][2][1] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HE");
1071  Map_Ampl[16][2][2] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HE");
1072  Map_Ampl[16][2][3] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HE");
1073  Map_Ampl[16][3][4] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HO");
1074  Map_Ampl[16][4][1] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HF");
1075  Map_Ampl[16][4][2] = (TH2F *)hfile->Get("h_mapTSmaxCalib047_HF");
1076 
1077  HistAmpl[16][1] = (TH1F *)hfile->Get("h_TSmaxCalib_HB");
1078  HistAmpl[16][2] = (TH1F *)hfile->Get("h_TSmaxCalib_HE");
1079  HistAmpl[16][3] = (TH1F *)hfile->Get("h_TSmaxCalib_HO");
1080  HistAmpl[16][4] = (TH1F *)hfile->Get("h_TSmaxCalib_HF");
1081 
1082  for (int test = 12; test <= 16; test++) { //Test: 2-Am, 3-Wm, 4-Rm, 5-TNm, 6-TXm,
1083  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
1084  if (sub == 1)
1085  cONE->Divide(1, 1); //cHB->Divide(2,1);
1086  if (sub == 2)
1087  cONE->Divide(1, 1); //cHE->Divide(3,1);
1088  if (sub == 3)
1089  cONE->Divide(1, 1);
1090  if (sub == 4)
1091  cONE->Divide(1, 1); //cHB->Divide(2,1);
1092  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
1093  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
1094  // for (int k=k_min[sub];k<=k_max[sub];k++) { //Depth
1095  int k = 1;
1096  if (sub == 1) {
1097  k = 1;
1098  cONE->cd(k);
1099  } //cHB->cd(k); }
1100  if (sub == 2) {
1101  k = 1;
1102  cONE->cd(k);
1103  } //cHE->cd(k); }
1104  if (sub == 3) {
1105  k = 4;
1106  cONE->cd(k - 3);
1107  }
1108  if (sub == 4) {
1109  k = 1;
1110  cONE->cd(k);
1111  } //cHB->cd(k); }
1112  Map_Ampl[test][sub][k]->Divide(Map_Ampl[test][sub][k], Map_Calib[sub][k], 1, 1, "B");
1113  gPad->SetGridy();
1114  gPad->SetGridx();
1115  gPad->SetLogz();
1116  if (sub == 1)
1117  sprintf(str, "HB");
1118  if (sub == 2)
1119  sprintf(str, "HE");
1120  if (sub == 3)
1121  sprintf(str, "HO");
1122  if (sub == 4)
1123  sprintf(str, "HF");
1124  Map_Ampl[test][sub][k]->SetTitle(str);
1125  Map_Ampl[test][sub][k]->SetXTitle("#eta \b");
1126  Map_Ampl[test][sub][k]->SetYTitle("#phi \b");
1127  Map_Ampl[test][sub][k]->SetZTitle("Rate \b");
1128  Map_Ampl[test][sub][k]->SetTitleOffset(0.8, "Z");
1129  Map_Ampl[test][sub][k]->Draw("COLZ");
1130  Map_Ampl[test][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
1131  Map_Ampl[test][sub][k]->GetZaxis()->SetRangeUser(0.00001, 1.);
1132  // if (sub==1) {cHB->Modified(); cHB->Update();}
1133  // if (sub==2) {cHE->Modified(); cHE->Update();}
1134  cONE->Modified();
1135  cONE->Update();
1136  // if (sub==4) {cHB->Modified(); cHB->Update();}
1137  // }//end depth
1138  if (test == 12) {
1139  if (sub == 1) {
1140  cONE->Print("MapRateAmplCalibHB.png");
1141  cONE->Clear();
1142  }
1143  if (sub == 2) {
1144  cONE->Print("MapRateAmplCalibHE.png");
1145  cONE->Clear();
1146  }
1147  if (sub == 3) {
1148  cONE->Print("MapRateAmplCalibHO.png");
1149  cONE->Clear();
1150  }
1151  if (sub == 4) {
1152  cONE->Print("MapRateAmplCalibHF.png");
1153  cONE->Clear();
1154  }
1155  }
1156  if (test == 13) {
1157  if (sub == 1) {
1158  cONE->Print("MapRateRMSCalibHB.png");
1159  cONE->Clear();
1160  }
1161  if (sub == 2) {
1162  cONE->Print("MapRateRMSCalibHE.png");
1163  cONE->Clear();
1164  }
1165  if (sub == 3) {
1166  cONE->Print("MapRateRMSCalibHO.png");
1167  cONE->Clear();
1168  }
1169  if (sub == 4) {
1170  cONE->Print("MapRateRMSCalibHF.png");
1171  cONE->Clear();
1172  }
1173  }
1174  if (test == 14) {
1175  if (sub == 1) {
1176  cONE->Print("MapRate43TStoAllTSCalibHB.png");
1177  cONE->Clear();
1178  }
1179  if (sub == 2) {
1180  cONE->Print("MapRate43TStoAllTSCalibHE.png");
1181  cONE->Clear();
1182  }
1183  if (sub == 3) {
1184  cONE->Print("MapRate43TStoAllTSCalibHO.png");
1185  cONE->Clear();
1186  }
1187  if (sub == 4) {
1188  cONE->Print("MapRate43TStoAllTSCalibHF.png");
1189  cONE->Clear();
1190  }
1191  }
1192  if (test == 15) {
1193  if (sub == 1) {
1194  cONE->Print("MapRateMeanPosCalibHB.png");
1195  cONE->Clear();
1196  }
1197  if (sub == 2) {
1198  cONE->Print("MapRateMeanPosCalibHE.png");
1199  cONE->Clear();
1200  }
1201  if (sub == 3) {
1202  cONE->Print("MapRateMeanPosCalibHO.png");
1203  cONE->Clear();
1204  }
1205  if (sub == 4) {
1206  cONE->Print("MapRateMeanPosCalibHF.png");
1207  cONE->Clear();
1208  }
1209  }
1210  if (test == 16) {
1211  if (sub == 1) {
1212  cONE->Print("MapRateMaxPosCalibHB.png");
1213  cONE->Clear();
1214  }
1215  if (sub == 2) {
1216  cONE->Print("MapRateMaxPosCalibHE.png");
1217  cONE->Clear();
1218  }
1219  if (sub == 3) {
1220  cONE->Print("MapRateMaxPosCalibHO.png");
1221  cONE->Clear();
1222  }
1223  if (sub == 4) {
1224  cONE->Print("MapRateMaxPosCalibHF.png");
1225  cONE->Clear();
1226  }
1227  }
1228 
1229  cONE->Divide(1, 1);
1230  cONE->cd(1);
1231  gPad->SetGridy();
1232  gPad->SetGridx();
1233  gPad->SetLogy();
1234  if (sub == 1)
1235  HistAmpl[test][sub]->SetTitle("HB, All Depth");
1236  if (sub == 2)
1237  HistAmpl[test][sub]->SetTitle("HE, All Depth");
1238  if (sub == 3)
1239  HistAmpl[test][sub]->SetTitle("HO, All Depth");
1240  if (sub == 4)
1241  HistAmpl[test][sub]->SetTitle("HF, All Depth");
1242  if (test == 12)
1243  HistAmpl[test][sub]->SetXTitle("ADC Amlitude in each event & cell \b");
1244  if (test == 13)
1245  HistAmpl[test][sub]->SetXTitle("Amplitude RMS in each event & cell \b");
1246  if (test == 14)
1247  HistAmpl[test][sub]->SetXTitle("Ratio in each event & cell \b");
1248  if (test == 15)
1249  HistAmpl[test][sub]->SetXTitle("Mean TS position in each event & cell \b");
1250  if (test == 16)
1251  HistAmpl[test][sub]->SetXTitle("Max TS position in each event & cell \b");
1252  HistAmpl[test][sub]->SetYTitle("Number of cell-events \b");
1253  HistAmpl[test][sub]->SetLineColor(4);
1254  HistAmpl[test][sub]->SetLineWidth(2);
1255  HistAmpl[test][sub]->SetTitleOffset(1.4, "Y");
1256  HistAmpl[test][sub]->Draw("");
1257  // HistAmpl[test][sub]->GetYaxis()->SetRangeUser(1., 100.);
1258  if (test == 12) {
1259  gPad->SetLogx();
1260  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(1., 10000.);
1261  }
1262  if (test == 13)
1263  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 5.);
1264  if (test == 14)
1265  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 1.);
1266  if (test == 15)
1267  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 9.);
1268  if (test == 16)
1269  HistAmpl[test][sub]->GetXaxis()->SetRangeUser(0., 9.);
1270  cONE->Modified();
1271  cONE->Update();
1272  double min_x[] = {MIN_C[test - 10][sub], MIN_C[test - 10][sub]};
1273  double min_y[] = {0., 100000000.};
1274  TGraph *MIN = new TGraph(2, min_x, min_y);
1275  MIN->SetLineStyle(2);
1276  MIN->SetLineColor(2);
1277  MIN->SetLineWidth(2 + 100 * 100);
1278  MIN->SetFillStyle(3005);
1279  MIN->SetFillColor(2);
1280  MIN->Draw("L");
1281  double max_x[] = {MAX_C[test - 10][sub], MAX_C[test - 10][sub]};
1282  double max_y[] = {0., 100000000.};
1283  TGraph *MAX = new TGraph(2, max_x, max_y);
1284  MAX->SetLineStyle(2);
1285  MAX->SetLineColor(2);
1286  MAX->SetLineWidth(-2 - 100 * 100);
1287  MAX->SetFillStyle(3004);
1288  MAX->SetFillColor(2);
1289  MAX->Draw("L");
1290  if (test == 12) {
1291  if (sub == 1) {
1292  cONE->Print("HistAmplCalibHB.png");
1293  cONE->Clear();
1294  }
1295  if (sub == 2) {
1296  cONE->Print("HistAmplCalibHE.png");
1297  cONE->Clear();
1298  }
1299  if (sub == 3) {
1300  cONE->Print("HistAmplCalibHO.png");
1301  cONE->Clear();
1302  }
1303  if (sub == 4) {
1304  cONE->Print("HistAmplCalibHF.png");
1305  cONE->Clear();
1306  }
1307  }
1308  if (test == 13) {
1309  if (sub == 1) {
1310  cONE->Print("HistRMSCalibHB.png");
1311  cONE->Clear();
1312  }
1313  if (sub == 2) {
1314  cONE->Print("HistRMSCalibHE.png");
1315  cONE->Clear();
1316  }
1317  if (sub == 3) {
1318  cONE->Print("HistRMSCalibHO.png");
1319  cONE->Clear();
1320  }
1321  if (sub == 4) {
1322  cONE->Print("HistRMSCalibHF.png");
1323  cONE->Clear();
1324  }
1325  }
1326  if (test == 14) {
1327  if (sub == 1) {
1328  cONE->Print("Hist43TStoAllTSCalibHB.png");
1329  cONE->Clear();
1330  }
1331  if (sub == 2) {
1332  cONE->Print("Hist43TStoAllTSCalibHE.png");
1333  cONE->Clear();
1334  }
1335  if (sub == 3) {
1336  cONE->Print("Hist43TStoAllTSCalibHO.png");
1337  cONE->Clear();
1338  }
1339  if (sub == 4) {
1340  cONE->Print("Hist43TStoAllTSCalibHF.png");
1341  cONE->Clear();
1342  }
1343  }
1344  if (test == 15) {
1345  if (sub == 1) {
1346  cONE->Print("HistMeanPosCalibHB.png");
1347  cONE->Clear();
1348  }
1349  if (sub == 2) {
1350  cONE->Print("HistMeanPosCalibHE.png");
1351  cONE->Clear();
1352  }
1353  if (sub == 3) {
1354  cONE->Print("HistMeanPosCalibHO.png");
1355  cONE->Clear();
1356  }
1357  if (sub == 4) {
1358  cONE->Print("HistMeanPosCalibHF.png");
1359  cONE->Clear();
1360  }
1361  }
1362  if (test == 16) {
1363  if (sub == 1) {
1364  cONE->Print("HistMaxPosCalibHB.png");
1365  cONE->Clear();
1366  }
1367  if (sub == 2) {
1368  cONE->Print("HistMaxPosCalibHE.png");
1369  cONE->Clear();
1370  }
1371  if (sub == 3) {
1372  cONE->Print("HistMaxPosCalibHO.png");
1373  cONE->Clear();
1374  }
1375  if (sub == 4) {
1376  cONE->Print("HistMaxPosCalibHF.png");
1377  cONE->Clear();
1378  }
1379  }
1380  } // end sub
1381  } //end test
1382 
1383  //+++++++++++++++++++++++++++++
1384  //Test 21 (GS) Amplitude drift
1385  //+++++++++++++++++++++++++++++
1386 
1387  Map_Ampl[21][1][1] = (TH2F *)hfile->Get("h_mapDepth1AmplE34_HB");
1388  Map_Ampl[21][1][2] = (TH2F *)hfile->Get("h_mapDepth2AmplE34_HB");
1389  Map_Ampl[21][1][3] = (TH2F *)hfile->Get("h_mapDepth3AmplE34_HB");
1390  Map_Ampl[21][1][4] = (TH2F *)hfile->Get("h_mapDepth4AmplE34_HB");
1391  Map_Ampl[21][2][1] = (TH2F *)hfile->Get("h_mapDepth1AmplE34_HE");
1392  Map_Ampl[21][2][2] = (TH2F *)hfile->Get("h_mapDepth2AmplE34_HE");
1393  Map_Ampl[21][2][3] = (TH2F *)hfile->Get("h_mapDepth3AmplE34_HE");
1394  Map_Ampl[21][2][4] = (TH2F *)hfile->Get("h_mapDepth4AmplE34_HE");
1395  Map_Ampl[21][2][5] = (TH2F *)hfile->Get("h_mapDepth5AmplE34_HE");
1396  Map_Ampl[21][2][6] = (TH2F *)hfile->Get("h_mapDepth6AmplE34_HE");
1397  Map_Ampl[21][2][7] = (TH2F *)hfile->Get("h_mapDepth7AmplE34_HE");
1398  Map_Ampl[21][3][4] = (TH2F *)hfile->Get("h_mapDepth4AmplE34_HO");
1399  Map_Ampl[21][4][1] = (TH2F *)hfile->Get("h_mapDepth1AmplE34_HF");
1400  Map_Ampl[21][4][2] = (TH2F *)hfile->Get("h_mapDepth2AmplE34_HF");
1401  Map_Ampl[21][4][3] = (TH2F *)hfile->Get("h_mapDepth3AmplE34_HF");
1402  Map_Ampl[21][4][4] = (TH2F *)hfile->Get("h_mapDepth4AmplE34_HF");
1403 
1404  TH2F *Map_RefAmpl[5][ALLDEPTH]; // 2D histogramm for subdet, depth
1405  TH2F *Map_RefSUB[5][ALLDEPTH]; // 2d histogramm for subdet, depth
1406 
1407  Map_RefAmpl[1][1] = (TH2F *)hreffile->Get("h_mapDepth1AmplE34_HB");
1408  Map_RefAmpl[1][2] = (TH2F *)hreffile->Get("h_mapDepth2AmplE34_HB");
1409  Map_RefAmpl[1][3] = (TH2F *)hreffile->Get("h_mapDepth3AmplE34_HB");
1410  Map_RefAmpl[1][4] = (TH2F *)hreffile->Get("h_mapDepth4AmplE34_HB");
1411  Map_RefAmpl[2][1] = (TH2F *)hreffile->Get("h_mapDepth1AmplE34_HE");
1412  Map_RefAmpl[2][2] = (TH2F *)hreffile->Get("h_mapDepth2AmplE34_HE");
1413  Map_RefAmpl[2][3] = (TH2F *)hreffile->Get("h_mapDepth3AmplE34_HE");
1414  Map_RefAmpl[2][4] = (TH2F *)hreffile->Get("h_mapDepth4AmplE34_HE");
1415  Map_RefAmpl[2][5] = (TH2F *)hreffile->Get("h_mapDepth5AmplE34_HE");
1416  Map_RefAmpl[2][6] = (TH2F *)hreffile->Get("h_mapDepth6AmplE34_HE");
1417  Map_RefAmpl[2][7] = (TH2F *)hreffile->Get("h_mapDepth7AmplE34_HE");
1418  Map_RefAmpl[3][4] = (TH2F *)hreffile->Get("h_mapDepth4AmplE34_HO");
1419  Map_RefAmpl[4][1] = (TH2F *)hreffile->Get("h_mapDepth1AmplE34_HF");
1420  Map_RefAmpl[4][2] = (TH2F *)hreffile->Get("h_mapDepth2AmplE34_HF");
1421  Map_RefAmpl[4][3] = (TH2F *)hreffile->Get("h_mapDepth3AmplE34_HF");
1422  Map_RefAmpl[4][4] = (TH2F *)hreffile->Get("h_mapDepth4AmplE34_HF");
1423 
1424  Map_RefSUB[1][1] = (TH2F *)hreffile->Get("h_mapDepth1_HB");
1425  Map_RefSUB[1][2] = (TH2F *)hreffile->Get("h_mapDepth2_HB");
1426  Map_RefSUB[1][3] = (TH2F *)hreffile->Get("h_mapDepth3_HB");
1427  Map_RefSUB[1][4] = (TH2F *)hreffile->Get("h_mapDepth4_HB");
1428  Map_RefSUB[2][1] = (TH2F *)hreffile->Get("h_mapDepth1_HE");
1429  Map_RefSUB[2][2] = (TH2F *)hreffile->Get("h_mapDepth2_HE");
1430  Map_RefSUB[2][3] = (TH2F *)hreffile->Get("h_mapDepth3_HE");
1431  Map_RefSUB[2][4] = (TH2F *)hreffile->Get("h_mapDepth4_HE");
1432  Map_RefSUB[2][5] = (TH2F *)hreffile->Get("h_mapDepth5_HE");
1433  Map_RefSUB[2][6] = (TH2F *)hreffile->Get("h_mapDepth6_HE");
1434  Map_RefSUB[2][7] = (TH2F *)hreffile->Get("h_mapDepth7_HE");
1435  Map_RefSUB[3][4] = (TH2F *)hreffile->Get("h_mapDepth4_HO");
1436  Map_RefSUB[4][1] = (TH2F *)hreffile->Get("h_mapDepth1_HF");
1437  Map_RefSUB[4][2] = (TH2F *)hreffile->Get("h_mapDepth2_HF");
1438  Map_RefSUB[4][3] = (TH2F *)hreffile->Get("h_mapDepth3_HF");
1439  Map_RefSUB[4][4] = (TH2F *)hreffile->Get("h_mapDepth4_HF");
1440 
1441  HistAmplDepth[21][1][1] = new TH1F("diffAmpl_Depth1_HB", "", 100, -10., 10.);
1442  HistAmplDepth[21][1][2] = new TH1F("diffAmpl_Depth2_HB", "", 100, -10., 10.);
1443  HistAmplDepth[21][1][3] = new TH1F("diffAmpl_Depth3_HB", "", 100, -10., 10.);
1444  HistAmplDepth[21][1][4] = new TH1F("diffAmpl_Depth4_HB", "", 100, -10., 10.);
1445  HistAmplDepth[21][2][1] = new TH1F("diffAmpl_Depth1_HE", "", 100, -10., 10.);
1446  HistAmplDepth[21][2][2] = new TH1F("diffAmpl_Depth2_HE", "", 100, -10., 10.);
1447  HistAmplDepth[21][2][3] = new TH1F("diffAmpl_Depth3_HE", "", 100, -10., 10.);
1448  HistAmplDepth[21][2][4] = new TH1F("diffAmpl_Depth4_HE", "", 100, -10., 10.);
1449  HistAmplDepth[21][2][5] = new TH1F("diffAmpl_Depth5_HE", "", 100, -10., 10.);
1450  HistAmplDepth[21][2][6] = new TH1F("diffAmpl_Depth6_HE", "", 100, -10., 10.);
1451  HistAmplDepth[21][2][7] = new TH1F("diffAmpl_Depth7_HE", "", 100, -10., 10.);
1452  HistAmplDepth[21][3][4] = new TH1F("diffAmpl_Depth4_HO", "", 100, -10., 10.);
1453  HistAmplDepth[21][4][1] = new TH1F("diffAmpl_Depth1_HF", "", 100, -10., 10.);
1454  HistAmplDepth[21][4][2] = new TH1F("diffAmpl_Depth2_HF", "", 100, -10., 10.);
1455  HistAmplDepth[21][4][3] = new TH1F("diffAmpl_Depth3_HF", "", 100, -10., 10.);
1456  HistAmplDepth[21][4][4] = new TH1F("diffAmpl_Depth4_HF", "", 100, -10., 10.);
1457 
1458  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
1459  // if (sub==1) cHB->Divide(2,1);
1460  if (sub == 1)
1461  cHB->Divide(2, 2);
1462  // if (sub==2) cHE->Divide(3,1);
1463  if (sub == 2)
1464  cHE->Divide(3, 3);
1465  if (sub == 3)
1466  cONE->Divide(1, 1);
1467  // if (sub==4) cHF->Divide(2,1);
1468  if (sub == 4)
1469  cHF->Divide(2, 2);
1470  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
1471  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
1472  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
1473  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
1474  if (sub == 1)
1475  cHB->cd(k);
1476  if (sub == 2)
1477  cHE->cd(k);
1478  if (sub == 3)
1479  cONE->cd(k - 3);
1480  if (sub == 4)
1481  cHF->cd(k);
1482  Map_Ampl[21][sub][k]->Divide(Map_Ampl[21][sub][k], Map_SUB[sub][k], 1, 1, "B");
1483  gPad->SetGridy();
1484  gPad->SetGridx();
1485  gPad->SetLogz();
1486  if (sub == 1)
1487  sprintf(str, "HB, Depth%d \b", k);
1488  if (sub == 2)
1489  sprintf(str, "HE, Depth%d \b", k);
1490  if (sub == 3)
1491  sprintf(str, "HO, Depth%d \b", k);
1492  if (sub == 4)
1493  sprintf(str, "HF, Depth%d \b", k);
1494  Map_Ampl[21][sub][k]->SetTitle(str);
1495  Map_Ampl[21][sub][k]->SetXTitle("#eta \b");
1496  Map_Ampl[21][sub][k]->SetYTitle("#phi \b");
1497  Map_Ampl[21][sub][k]->SetZTitle("Response \b");
1498  Map_Ampl[21][sub][k]->SetTitleOffset(1.1, "Z");
1499  Map_Ampl[21][sub][k]->Draw("COLZ");
1500  Map_Ampl[21][sub][k]->GetYaxis()->SetRangeUser(0, 71.);
1501  // Map_Ampl[21][sub][k]->GetZaxis()->SetRangeUser(1., 10.);
1502  if (sub == 1) {
1503  cHB->Modified();
1504  cHB->Update();
1505  }
1506  if (sub == 2) {
1507  cHE->Modified();
1508  cHE->Update();
1509  }
1510  if (sub == 3) {
1511  cONE->Modified();
1512  cONE->Update();
1513  }
1514  if (sub == 4) {
1515  cHF->Modified();
1516  cHF->Update();
1517  }
1518  } //end depth
1519  if (sub == 1) {
1520  cHB->Print("MapRateAmpl1HB.png");
1521  cHB->Clear();
1522  }
1523  if (sub == 2) {
1524  cHE->Print("MapRateAmpl1HE.png");
1525  cHE->Clear();
1526  }
1527  if (sub == 3) {
1528  cONE->Print("MapRateAmpl1HO.png");
1529  cONE->Clear();
1530  }
1531  if (sub == 4) {
1532  cHF->Print("MapRateAmpl1HF.png");
1533  cHF->Clear();
1534  }
1535 
1536  // if (sub==1) cHB->Divide(2,1);
1537  if (sub == 1)
1538  cHB->Divide(2, 2);
1539  // if (sub==2) cHE->Divide(3,1);
1540  if (sub == 2)
1541  cHE->Divide(3, 3);
1542  if (sub == 3)
1543  cONE->Divide(1, 1);
1544  // if (sub==4) cHF->Divide(2,1);
1545  if (sub == 4)
1546  cHF->Divide(2, 2);
1547 
1548  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
1549  if (sub == 1)
1550  cHB->cd(k);
1551  if (sub == 2)
1552  cHE->cd(k);
1553  if (sub == 3)
1554  cONE->cd(k - 3);
1555  if (sub == 4)
1556  cHF->cd(k);
1557  Map_RefAmpl[sub][k]->Divide(Map_RefAmpl[sub][k], Map_RefSUB[sub][k], 1, 1, "B");
1558  gPad->SetGridy();
1559  gPad->SetGridx();
1560  gPad->SetLogz();
1561  if (sub == 1)
1562  sprintf(str, "HB, Depth%d \b", k);
1563  if (sub == 2)
1564  sprintf(str, "HE, Depth%d \b", k);
1565  if (sub == 3)
1566  sprintf(str, "HO, Depth%d \b", k);
1567  if (sub == 4)
1568  sprintf(str, "HF, Depth%d \b", k);
1569  Map_RefAmpl[sub][k]->SetTitle(str);
1570  Map_RefAmpl[sub][k]->SetXTitle("#eta \b");
1571  Map_RefAmpl[sub][k]->SetYTitle("#phi \b");
1572  Map_RefAmpl[sub][k]->SetZTitle("Response\b");
1573  Map_RefAmpl[sub][k]->SetTitleOffset(1.1, "Z");
1574  Map_RefAmpl[sub][k]->Draw("COLZ");
1575  Map_RefAmpl[sub][k]->GetYaxis()->SetRangeUser(0, 71.);
1576  // Map_RefAmpl[21][sub][k]->GetZaxis()->SetRangeUser(1., 10.);
1577  if (sub == 1) {
1578  cHB->Modified();
1579  cHB->Update();
1580  }
1581  if (sub == 2) {
1582  cHE->Modified();
1583  cHE->Update();
1584  }
1585  if (sub == 3) {
1586  cONE->Modified();
1587  cONE->Update();
1588  }
1589  if (sub == 4) {
1590  cHF->Modified();
1591  cHF->Update();
1592  }
1593  } //end depth
1594  if (sub == 1) {
1595  cHB->Print("MapRateAmpl2HB.png");
1596  cHB->Clear();
1597  }
1598  if (sub == 2) {
1599  cHE->Print("MapRateAmpl2HE.png");
1600  cHE->Clear();
1601  }
1602  if (sub == 3) {
1603  cONE->Print("MapRateAmpl2HO.png");
1604  cONE->Clear();
1605  }
1606  if (sub == 4) {
1607  cHF->Print("MapRateAmpl2HF.png");
1608  cHF->Clear();
1609  }
1610 
1611  // if (sub==1) cHB->Divide(2,1);
1612  if (sub == 1)
1613  cHB->Divide(2, 2);
1614  // if (sub==2) cHE->Divide(3,1);
1615  if (sub == 2)
1616  cHE->Divide(3, 3);
1617  if (sub == 3)
1618  cONE->Divide(1, 1);
1619  // if (sub==4) cHF->Divide(2,1);
1620  if (sub == 4)
1621  cHF->Divide(2, 2);
1622 
1623  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
1624  if (sub == 1)
1625  cHB->cd(k);
1626  if (sub == 2)
1627  cHE->cd(k);
1628  if (sub == 3)
1629  cONE->cd(k - 3);
1630  if (sub == 4)
1631  cHF->cd(k);
1632  TH2F *TTT = new TH2F("Map", "Map", 82, -41, 40, 72, 0, 71);
1633  for (int x = 1; x <= Map_Ampl[21][sub][k]->GetXaxis()->GetNbins(); x++) {
1634  for (int y = 1; y <= Map_Ampl[21][sub][k]->GetYaxis()->GetNbins(); y++) {
1635  if (Map_Ampl[21][sub][k]->GetBinContent(x, y) != 0 && Map_RefAmpl[sub][k]->GetBinContent(x, y) != 0) {
1636  double ccc1 = Map_Ampl[21][sub][k]->GetBinContent(x, y) - Map_RefAmpl[sub][k]->GetBinContent(x, y);
1637  ccc1 = 100. * ccc1 / Map_Ampl[21][sub][k]->GetBinContent(x, y); // in %
1638  HistAmplDepth[21][sub][k]->Fill(ccc1);
1639  Map_Ampl[21][sub][k]->SetBinContent(x, y, fabs(ccc1));
1640  if (fabs(ccc1) > porog[sub])
1641  TTT->SetBinContent(x, y, fabs(ccc1));
1642  else
1643  TTT->SetBinContent(x, y, 0);
1644  }
1645  } //end y
1646  } //esnd x
1647  gPad->SetGridy();
1648  gPad->SetGridx();
1649  // gPad->SetLogz();
1650  if (sub == 1)
1651  sprintf(str, "HB, Depth%d \b", k);
1652  if (sub == 2)
1653  sprintf(str, "HE, Depth%d \b", k);
1654  if (sub == 3)
1655  sprintf(str, "HO, Depth%d \b", k);
1656  if (sub == 4)
1657  sprintf(str, "HF, Depth%d \b", k);
1658  TTT->SetTitle(str);
1659  TTT->SetXTitle("#eta \b");
1660  TTT->SetYTitle("#phi \b");
1661  TTT->SetZTitle("Relative difference, % \b");
1662  TTT->SetTitleOffset(0.9, "Z");
1663  TTT->Draw("COLZ");
1664  TTT->GetYaxis()->SetRangeUser(0, 71.);
1665  TTT->GetZaxis()->SetRangeUser(0, 10.);
1666  if (sub == 1) {
1667  cHB->Modified();
1668  cHB->Update();
1669  }
1670  if (sub == 2) {
1671  cHE->Modified();
1672  cHE->Update();
1673  }
1674  if (sub == 3) {
1675  cONE->Modified();
1676  cONE->Update();
1677  }
1678  if (sub == 4) {
1679  cHF->Modified();
1680  cHF->Update();
1681  }
1682  } //end depth
1683 
1684  if (sub == 1) {
1685  cHB->Print("MapRateAmplDriftHB.png");
1686  cHB->Clear();
1687  }
1688  if (sub == 2) {
1689  cHE->Print("MapRateAmplDriftHE.png");
1690  cHE->Clear();
1691  }
1692  if (sub == 3) {
1693  cONE->Print("MapRateAmplDriftHO.png");
1694  cONE->Clear();
1695  }
1696  if (sub == 4) {
1697  cHF->Print("MapRateAmplDriftHF.png");
1698  cHF->Clear();
1699  }
1701 
1702  // if (sub==1) cHB->Divide(2,1);
1703  if (sub == 1)
1704  cHB->Divide(2, 2);
1705  // if (sub==2) cHE->Divide(3,1);
1706  if (sub == 2)
1707  cHE->Divide(3, 3);
1708  if (sub == 3)
1709  cONE->Divide(1, 1);
1710  // if (sub==4) cHF->Divide(2,1);
1711  if (sub == 4)
1712  cHF->Divide(2, 2);
1713 
1714  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
1715  if (sub == 1)
1716  cHB->cd(k);
1717  if (sub == 2)
1718  cHE->cd(k);
1719  if (sub == 3)
1720  cONE->cd(k - 3);
1721  if (sub == 4)
1722  cHF->cd(k);
1723  gPad->SetGridy();
1724  gPad->SetGridx();
1725  gPad->SetLogy();
1726  if (sub == 1)
1727  sprintf(str, "HB, Depth%d \b", k);
1728  if (sub == 2)
1729  sprintf(str, "HE, Depth%d \b", k);
1730  if (sub == 3)
1731  sprintf(str, "HO, Depth%d \b", k);
1732  if (sub == 4)
1733  sprintf(str, "HF, Depth%d \b", k);
1734  HistAmplDepth[21][sub][k]->SetTitle(str);
1735  HistAmplDepth[21][sub][k]->SetYTitle("Number of cell-events \b");
1736  HistAmplDepth[21][sub][k]->SetXTitle("Per cent \b");
1737  HistAmplDepth[21][sub][k]->SetLineColor(4);
1738  HistAmplDepth[21][sub][k]->SetLineWidth(2);
1739  HistAmplDepth[21][sub][k]->SetTitleOffset(1.4, "Y");
1740  HistAmplDepth[21][sub][k]->Draw();
1741  // HistAmplDepth[21][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
1742  HistAmplDepth[21][sub][k]->GetXaxis()->SetRangeUser(-10., 10.);
1743  if (sub == 1) {
1744  cHB->Modified();
1745  cHB->Update();
1746  }
1747  if (sub == 2) {
1748  cHE->Modified();
1749  cHE->Update();
1750  }
1751  if (sub == 3) {
1752  cONE->Modified();
1753  cONE->Update();
1754  }
1755  if (sub == 4) {
1756  cHF->Modified();
1757  cHF->Update();
1758  }
1759  double min_x[] = {-1 * porog[sub], -1 * porog[sub]};
1760  double min_y[] = {0., 100000000.};
1761  TGraph *MIN = new TGraph(2, min_x, min_y);
1762  MIN->SetLineStyle(2);
1763  MIN->SetLineColor(2);
1764  MIN->SetLineWidth(2 + 100 * 100);
1765  MIN->SetFillStyle(3005);
1766  MIN->SetFillColor(2);
1767  MIN->Draw("L");
1768  double max_x[] = {porog[sub], porog[sub]};
1769  double max_y[] = {0., 100000000.};
1770  TGraph *MAX = new TGraph(2, max_x, max_y);
1771  MAX->SetLineStyle(2);
1772  MAX->SetLineColor(2);
1773  MAX->SetLineWidth(-2 - 100 * 100);
1774  MAX->SetFillStyle(3004);
1775  MAX->SetFillColor(2);
1776  MAX->Draw("L");
1777  } // end depth
1778  if (sub == 1) {
1779  cHB->Print("HistAmplDriftDepthHB.png");
1780  cHB->Clear();
1781  }
1782  if (sub == 2) {
1783  cHE->Print("HistAmplDriftDepthHE.png");
1784  cHE->Clear();
1785  }
1786  if (sub == 3) {
1787  cONE->Print("HistAmplDriftDepthHO.png");
1788  cONE->Clear();
1789  }
1790  if (sub == 4) {
1791  cHF->Print("HistAmplDriftDepthHF.png");
1792  cHF->Clear();
1793  }
1794  } //end sub
1795 
1796  //+++++++++++++++++++++++++++++++++++
1797  //Test 31, 32 Pedestal, pedestalWidths
1798  //++++++++++++++++++++++++++++++++++++
1799 
1800  Map_Ampl[31][1][1] = (TH2F *)hfile->Get("h_mapDepth1pedestal_HB");
1801  Map_Ampl[31][1][2] = (TH2F *)hfile->Get("h_mapDepth2pedestal_HB");
1802  Map_Ampl[31][1][3] = (TH2F *)hfile->Get("h_mapDepth3pedestal_HB");
1803  Map_Ampl[31][1][4] = (TH2F *)hfile->Get("h_mapDepth4pedestal_HB");
1804  Map_Ampl[31][2][1] = (TH2F *)hfile->Get("h_mapDepth1pedestal_HE");
1805  Map_Ampl[31][2][2] = (TH2F *)hfile->Get("h_mapDepth2pedestal_HE");
1806  Map_Ampl[31][2][3] = (TH2F *)hfile->Get("h_mapDepth3pedestal_HE");
1807  Map_Ampl[31][2][4] = (TH2F *)hfile->Get("h_mapDepth4pedestal_HE");
1808  Map_Ampl[31][2][5] = (TH2F *)hfile->Get("h_mapDepth5pedestal_HE");
1809  Map_Ampl[31][2][6] = (TH2F *)hfile->Get("h_mapDepth6pedestal_HE");
1810  Map_Ampl[31][2][7] = (TH2F *)hfile->Get("h_mapDepth7pedestal_HE");
1811  Map_Ampl[31][3][4] = (TH2F *)hfile->Get("h_mapDepth4pedestal_HO");
1812  Map_Ampl[31][4][1] = (TH2F *)hfile->Get("h_mapDepth1pedestal_HF");
1813  Map_Ampl[31][4][2] = (TH2F *)hfile->Get("h_mapDepth2pedestal_HF");
1814  Map_Ampl[31][4][3] = (TH2F *)hfile->Get("h_mapDepth3pedestal_HF");
1815  Map_Ampl[31][4][4] = (TH2F *)hfile->Get("h_mapDepth4pedestal_HF");
1816 
1817  Map_Ampl[32][1][1] = (TH2F *)hfile->Get("h_mapDepth1pedestalw_HB");
1818  Map_Ampl[32][1][2] = (TH2F *)hfile->Get("h_mapDepth2pedestalw_HB");
1819  Map_Ampl[32][1][3] = (TH2F *)hfile->Get("h_mapDepth3pedestalw_HB");
1820  Map_Ampl[32][1][4] = (TH2F *)hfile->Get("h_mapDepth4pedestalw_HB");
1821  Map_Ampl[32][2][1] = (TH2F *)hfile->Get("h_mapDepth1pedestalw_HE");
1822  Map_Ampl[32][2][2] = (TH2F *)hfile->Get("h_mapDepth2pedestalw_HE");
1823  Map_Ampl[32][2][3] = (TH2F *)hfile->Get("h_mapDepth3pedestalw_HE");
1824  Map_Ampl[32][2][4] = (TH2F *)hfile->Get("h_mapDepth4pedestalw_HE");
1825  Map_Ampl[32][2][5] = (TH2F *)hfile->Get("h_mapDepth5pedestalw_HE");
1826  Map_Ampl[32][2][6] = (TH2F *)hfile->Get("h_mapDepth6pedestalw_HE");
1827  Map_Ampl[32][2][7] = (TH2F *)hfile->Get("h_mapDepth7pedestalw_HE");
1828  Map_Ampl[32][3][4] = (TH2F *)hfile->Get("h_mapDepth4pedestalw_HO");
1829  Map_Ampl[32][4][1] = (TH2F *)hfile->Get("h_mapDepth1pedestalw_HF");
1830  Map_Ampl[32][4][2] = (TH2F *)hfile->Get("h_mapDepth2pedestalw_HF");
1831  Map_Ampl[32][4][3] = (TH2F *)hfile->Get("h_mapDepth3pedestalw_HF");
1832  Map_Ampl[32][4][4] = (TH2F *)hfile->Get("h_mapDepth4pedestalw_HF");
1833 
1834  HistPed[1][1][0] = (TH1F *)hfile->Get("h_pedestal0_HB");
1835  HistPed[1][1][1] = (TH1F *)hfile->Get("h_pedestal1_HB");
1836  HistPed[1][1][2] = (TH1F *)hfile->Get("h_pedestal2_HB");
1837  HistPed[1][1][3] = (TH1F *)hfile->Get("h_pedestal3_HB");
1838  HistPed[2][1][0] = (TH1F *)hfile->Get("h_pedestalw0_HB");
1839  HistPed[2][1][1] = (TH1F *)hfile->Get("h_pedestalw1_HB");
1840  HistPed[2][1][2] = (TH1F *)hfile->Get("h_pedestalw2_HB");
1841  HistPed[2][1][3] = (TH1F *)hfile->Get("h_pedestalw3_HB");
1842 
1843  HistPed[1][2][0] = (TH1F *)hfile->Get("h_pedestal0_HE");
1844  HistPed[1][2][1] = (TH1F *)hfile->Get("h_pedestal1_HE");
1845  HistPed[1][2][2] = (TH1F *)hfile->Get("h_pedestal2_HE");
1846  HistPed[1][2][3] = (TH1F *)hfile->Get("h_pedestal3_HE");
1847  HistPed[2][2][0] = (TH1F *)hfile->Get("h_pedestalw0_HE");
1848  HistPed[2][2][1] = (TH1F *)hfile->Get("h_pedestalw1_HE");
1849  HistPed[2][2][2] = (TH1F *)hfile->Get("h_pedestalw2_HE");
1850  HistPed[2][2][3] = (TH1F *)hfile->Get("h_pedestalw3_HE");
1851 
1852  HistPed[1][3][0] = (TH1F *)hfile->Get("h_pedestal0_HO");
1853  HistPed[1][3][1] = (TH1F *)hfile->Get("h_pedestal1_HO");
1854  HistPed[1][3][2] = (TH1F *)hfile->Get("h_pedestal2_HO");
1855  HistPed[1][3][3] = (TH1F *)hfile->Get("h_pedestal3_HO");
1856  HistPed[2][3][0] = (TH1F *)hfile->Get("h_pedestalw0_HO");
1857  HistPed[2][3][1] = (TH1F *)hfile->Get("h_pedestalw1_HO");
1858  HistPed[2][3][2] = (TH1F *)hfile->Get("h_pedestalw2_HO");
1859  HistPed[2][3][3] = (TH1F *)hfile->Get("h_pedestalw3_HO");
1860 
1861  HistPed[1][4][0] = (TH1F *)hfile->Get("h_pedestal0_HF");
1862  HistPed[1][4][1] = (TH1F *)hfile->Get("h_pedestal1_HF");
1863  HistPed[1][4][2] = (TH1F *)hfile->Get("h_pedestal2_HF");
1864  HistPed[1][4][3] = (TH1F *)hfile->Get("h_pedestal3_HF");
1865  HistPed[2][4][0] = (TH1F *)hfile->Get("h_pedestalw0_HF");
1866  HistPed[2][4][1] = (TH1F *)hfile->Get("h_pedestalw1_HF");
1867  HistPed[2][4][2] = (TH1F *)hfile->Get("h_pedestalw2_HF");
1868  HistPed[2][4][3] = (TH1F *)hfile->Get("h_pedestalw3_HF");
1869 
1870  for (int test = 31; test <= 32; test++) { //Test: 31-Pedestals, 32-pedestal Widths,
1871  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
1872  // if (sub==1) cHB->Divide(2,1);
1873  if (sub == 1)
1874  cHB->Divide(2, 2);
1875  // if (sub==2) cHE->Divide(3,1);
1876  if (sub == 2)
1877  cHE->Divide(3, 3);
1878  if (sub == 3)
1879  cONE->Divide(1, 1);
1880  // if (sub==4) cHF->Divide(2,1);
1881  if (sub == 4)
1882  cHF->Divide(2, 2);
1883  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
1884  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
1885  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
1886  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depths
1887  if (sub == 1)
1888  cHB->cd(k);
1889  if (sub == 2)
1890  cHE->cd(k);
1891  if (sub == 3)
1892  cONE->cd(k - 3);
1893  if (sub == 4)
1894  cHF->cd(k);
1895  Map_Ampl[test][sub][k]->Divide(Map_Ampl[test][sub][k], Map_SUB[sub][k], 1, 1, "B");
1896  gPad->SetGridy();
1897  gPad->SetGridx();
1898  gPad->SetLogz();
1899  if (sub == 1)
1900  sprintf(str, "HB, Depth%d \b", k);
1901  if (sub == 2)
1902  sprintf(str, "HE, Depth%d \b", k);
1903  if (sub == 3)
1904  sprintf(str, "HO, Depth%d \b", k);
1905  if (sub == 4)
1906  sprintf(str, "HF, Depth%d \b", k);
1907  Map_Ampl[test][sub][k]->SetTitle(str);
1908  Map_Ampl[test][sub][k]->SetXTitle("#eta \b");
1909  Map_Ampl[test][sub][k]->SetYTitle("#phi \b");
1910  Map_Ampl[test][sub][k]->SetZTitle("Rate \b");
1911  if (sub == 3)
1912  Map_Ampl[test][sub][k]->SetTitleOffset(0.8, "Z");
1913  Map_Ampl[test][sub][k]->Draw("COLZ");
1914  Map_Ampl[test][sub][k]->GetYaxis()->SetRangeUser(0, 72.);
1915  Map_Ampl[test][sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
1916  if (sub == 1) {
1917  cHB->Modified();
1918  cHB->Update();
1919  }
1920  if (sub == 2) {
1921  cHE->Modified();
1922  cHE->Update();
1923  }
1924  if (sub == 3) {
1925  cONE->Modified();
1926  cONE->Update();
1927  }
1928  if (sub == 4) {
1929  cHF->Modified();
1930  cHF->Update();
1931  }
1932  } //end depth
1933  if (test == 31) {
1934  if (sub == 1) {
1935  cHB->Print("MapRatePedHB.png");
1936  cHB->Clear();
1937  }
1938  if (sub == 2) {
1939  cHE->Print("MapRatePedHE.png");
1940  cHE->Clear();
1941  }
1942  if (sub == 3) {
1943  cONE->Print("MapRatePedHO.png");
1944  cONE->Clear();
1945  }
1946  if (sub == 4) {
1947  cHF->Print("MapRatePedHF.png");
1948  cHF->Clear();
1949  }
1950  }
1951  if (test == 32) {
1952  if (sub == 1) {
1953  cHB->Print("MapRatePedWidthsHB.png");
1954  cHB->Clear();
1955  }
1956  if (sub == 2) {
1957  cHE->Print("MapRatePedWidthsHE.png");
1958  cHE->Clear();
1959  }
1960  if (sub == 3) {
1961  cONE->Print("MapRatePedWidthsHO.png");
1962  cONE->Clear();
1963  }
1964  if (sub == 4) {
1965  cHF->Print("MapRatePedWidthsHF.png");
1966  cHF->Clear();
1967  }
1968  }
1969 
1971 
1972  cPED->Divide(2, 2);
1973  for (int cap = 0; cap <= 3; cap++) {
1974  cPED->cd(cap + 1);
1975  gPad->SetGridy();
1976  gPad->SetGridx();
1977  gPad->SetLogy();
1978 
1979  if (sub == 1)
1980  sprintf(str, "HB, Cap%d, all depth\b", cap);
1981  if (sub == 2)
1982  sprintf(str, "HE, Cap%d, all depth\b", cap);
1983  if (sub == 3)
1984  sprintf(str, "HO, Cap%d, all depth\b", cap);
1985  if (sub == 4)
1986  sprintf(str, "HF, Cap%d, all depth\b", cap);
1987 
1988  HistPed[test - 30][sub][cap]->SetTitle(str);
1989 
1990  if (test == 31)
1991  HistPed[test - 30][sub][cap]->SetXTitle("Pedestals in each event & cell \b");
1992  if (test == 32)
1993  HistPed[test - 30][sub][cap]->SetXTitle("Pedestal Widths in each event & cell \b");
1994 
1995  HistPed[test - 30][sub][cap]->SetYTitle("Number of channel-events \b");
1996  HistPed[test - 30][sub][cap]->SetLineColor(4);
1997  HistPed[test - 30][sub][cap]->SetLineWidth(2);
1998  HistPed[test - 30][sub][cap]->SetTitleOffset(1.4, "Y");
1999  HistPed[test - 30][sub][cap]->Draw("");
2000  // HistPed[test-30][sub][cap]->GetYaxis()->SetRangeUser(1., 100.);
2001  // if (test==31) {gPad->SetLogx(); HistPed[test-30][sub][cap]->GetXaxis()->SetRangeUser(1., 10000.);}
2002  // if (test==32) HistPed[test-30][sub][cap]->GetXaxis()->SetRangeUser(0., 5.);
2003 
2004  cPED->Modified();
2005  cPED->Update();
2006  double min_x[] = {Pedest[test - 31][sub], Pedest[test - 31][sub]};
2007  double min_y[] = {0., 100000000.};
2008  TGraph *MIN = new TGraph(2, min_x, min_y);
2009  MIN->SetLineStyle(2);
2010  MIN->SetLineColor(2);
2011  MIN->SetLineWidth(2 + 100 * 100);
2012  MIN->SetFillStyle(3005);
2013  MIN->SetFillColor(2);
2014  MIN->Draw("L");
2015  }
2016  if (test == 31) {
2017  if (sub == 1) {
2018  cPED->Print("HistPedestalsHB.png");
2019  cPED->Clear();
2020  }
2021  if (sub == 2) {
2022  cPED->Print("HistPedestalsHE.png");
2023  cPED->Clear();
2024  }
2025  if (sub == 3) {
2026  cPED->Print("HistPedestalsHO.png");
2027  cPED->Clear();
2028  }
2029  if (sub == 4) {
2030  cPED->Print("HistPedestalsHF.png");
2031  cPED->Clear();
2032  }
2033  }
2034  if (test == 32) {
2035  if (sub == 1) {
2036  cPED->Print("HistPedestalWidthsHB.png");
2037  cPED->Clear();
2038  }
2039  if (sub == 2) {
2040  cPED->Print("HistPedestalWidthsHE.png");
2041  cPED->Clear();
2042  }
2043  if (sub == 3) {
2044  cPED->Print("HistPedestalWidthsHO.png");
2045  cPED->Clear();
2046  }
2047  if (sub == 4) {
2048  cPED->Print("HistPedestalWidthsHF.png");
2049  cPED->Clear();
2050  }
2051  }
2052  } // end sub
2053  } //end test 31,32
2054 
2055  //+++++++++++++++++++++++++++++++++++
2056  //Test 33 Correlation of Pedestal, pedestalWidths Vs fullAmplitude
2057  //++++++++++++++++++++++++++++++++++++
2058 
2059  cPED->Clear();
2060  Map_Ped[1][1] = (TH2F *)hfile->Get("h2_pedvsampl_HB");
2061  Map_Ped[1][2] = (TH2F *)hfile->Get("h2_pedvsampl_HE");
2062  Map_Ped[1][3] = (TH2F *)hfile->Get("h2_pedvsampl_HO");
2063  Map_Ped[1][4] = (TH2F *)hfile->Get("h2_pedvsampl_HF");
2064  Map_Ped[2][1] = (TH2F *)hfile->Get("h2_pedwvsampl_HB");
2065  Map_Ped[2][2] = (TH2F *)hfile->Get("h2_pedwvsampl_HE");
2066  Map_Ped[2][3] = (TH2F *)hfile->Get("h2_pedwvsampl_HO");
2067  Map_Ped[2][4] = (TH2F *)hfile->Get("h2_pedwvsampl_HF");
2068  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2069  cPED->Divide(2, 1);
2070  for (int test = 1; test <= 2; test++) {
2071  cPED->cd(test);
2072  gPad->SetGridy();
2073  gPad->SetGridx();
2074  gPad->SetLogz();
2075  if (test == 1)
2076  Map_Ped[test][sub]->SetXTitle("Pedestal, fC \b");
2077  if (test == 2)
2078  Map_Ped[test][sub]->SetXTitle("pedestal Width, fC \b");
2079  Map_Ped[test][sub]->SetYTitle("Amplitude, fC \b");
2080  Map_Ped[test][sub]->SetZTitle("entries \b");
2081  if (test == 1)
2082  sprintf(str, "Cap0 Pedestal vs Amplitude \b");
2083  if (test == 2)
2084  sprintf(str, "Cap0 pedestalWidth vs Amplitude \b");
2085  Map_Ped[test][sub]->SetTitle(str);
2086  Map_Ped[test][sub]->Draw("COLZ");
2087  // Map_Ped[test][sub]->GetYaxis()->SetRangeUser(0, 72.);
2088  // Map_Ped[test][sub]->GetZaxis()->SetRangeUser(0.0001, 1.);
2089  cPED->Modified();
2090  cPED->Update();
2091  } // test 1,2
2092  if (sub == 1) {
2093  cPED->Print("CorrelationsMapPedestalVsfullAmplitudeHB.png");
2094  cPED->Clear();
2095  }
2096  if (sub == 2) {
2097  cPED->Print("CorrelationsMapPedestalVsfullAmplitudeHE.png");
2098  cPED->Clear();
2099  }
2100  if (sub == 3) {
2101  cPED->Print("CorrelationsMapPedestalVsfullAmplitudeHO.png");
2102  cPED->Clear();
2103  }
2104  if (sub == 4) {
2105  cPED->Print("CorrelationsMapPedestalVsfullAmplitudeHF.png");
2106  cPED->Clear();
2107  }
2108  } // end sub
2109 
2110  //+++++++++++++++++++++++++++++++++++
2111  //Test 41 Time Slices shape for good and bad channels
2112  //++++++++++++++++++++++++++++++++++++
2113 
2114  cONE->Clear();
2115  hist_GoodTSshape[1] = (TH1F *)hfile->Get("h_shape_good_channels_HB");
2116  hist_GoodTSshape[2] = (TH1F *)hfile->Get("h_shape_good_channels_HE");
2117  hist_GoodTSshape[3] = (TH1F *)hfile->Get("h_shape_good_channels_HO");
2118  hist_GoodTSshape[4] = (TH1F *)hfile->Get("h_shape_good_channels_HF");
2119 
2120  hist_GoodTSshape0[1] = (TH1F *)hfile->Get("h_shape0_good_channels_HB");
2121  hist_GoodTSshape0[2] = (TH1F *)hfile->Get("h_shape0_good_channels_HE");
2122  hist_GoodTSshape0[3] = (TH1F *)hfile->Get("h_shape0_good_channels_HO");
2123  hist_GoodTSshape0[4] = (TH1F *)hfile->Get("h_shape0_good_channels_HF");
2124 
2125  hist_BadTSshape[1] = (TH1F *)hfile->Get("h_shape_bad_channels_HB");
2126  hist_BadTSshape[2] = (TH1F *)hfile->Get("h_shape_bad_channels_HE");
2127  hist_BadTSshape[3] = (TH1F *)hfile->Get("h_shape_bad_channels_HO");
2128  hist_BadTSshape[4] = (TH1F *)hfile->Get("h_shape_bad_channels_HF");
2129 
2130  hist_BadTSshape0[1] = (TH1F *)hfile->Get("h_shape0_bad_channels_HB");
2131  hist_BadTSshape0[2] = (TH1F *)hfile->Get("h_shape0_bad_channels_HE");
2132  hist_BadTSshape0[3] = (TH1F *)hfile->Get("h_shape0_bad_channels_HO");
2133  hist_BadTSshape0[4] = (TH1F *)hfile->Get("h_shape0_bad_channels_HF");
2134 
2135  cONE->cd(1);
2136 
2137  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2138 
2139  gPad->SetGridy();
2140  gPad->SetGridx();
2141  gPad->SetLogz();
2142  hist_GoodTSshape[sub]->Divide(hist_GoodTSshape[sub], hist_GoodTSshape0[sub], 1, 1, "B");
2143  hist_GoodTSshape[sub]->SetXTitle("Time slice \b");
2144  hist_GoodTSshape[sub]->SetYTitle("ADC counts \b");
2145  sprintf(str, "Mean ADC Shape \b");
2146  hist_GoodTSshape[sub]->SetTitle(str);
2147  hist_GoodTSshape[sub]->Draw("");
2148  // hist_GoodTSshape[sub]->GetYaxis()->SetRangeUser(0, 72.);
2149  // hist_GoodTSshape[sub]->GetZaxis()->SetRangeUser(0.0001, 1.);
2150  cONE->Modified();
2151  cONE->Update();
2152  if (sub == 1) {
2153  cONE->Print("HistGoodTSshapesHB.png");
2154  cONE->Clear();
2155  }
2156  if (sub == 2) {
2157  cONE->Print("HistGoodTSshapesHE.png");
2158  cONE->Clear();
2159  }
2160  if (sub == 3) {
2161  cONE->Print("HistGoodTSshapesHO.png");
2162  cONE->Clear();
2163  }
2164  if (sub == 4) {
2165  cONE->Print("HistGoodTSshapesHF.png");
2166  cONE->Clear();
2167  }
2168  } // end sub
2169 
2170  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2171 
2172  gPad->SetGridy();
2173  gPad->SetGridx();
2174  gPad->SetLogz();
2175  hist_BadTSshape[sub]->Divide(hist_BadTSshape[sub], hist_BadTSshape0[sub], 1, 1, "B");
2176  hist_BadTSshape[sub]->SetXTitle("Time slice \b");
2177  hist_BadTSshape[sub]->SetYTitle("ADC counts \b");
2178  sprintf(str, "Mean ADC Shape \b");
2179  hist_BadTSshape[sub]->SetTitle(str);
2180  hist_BadTSshape[sub]->Draw("");
2181  // hist_BadTSshape[sub]->GetYaxis()->SetRangeUser(0, 72.);
2182  // hist_BadTSshape[sub]->GetZaxis()->SetRangeUser(0.0001, 1.);
2183  cONE->Modified();
2184  cONE->Update();
2185  if (sub == 1) {
2186  cONE->Print("HistBadTSshapesHB.png");
2187  cONE->Clear();
2188  }
2189  if (sub == 2) {
2190  cONE->Print("HistBadTSshapesHE.png");
2191  cONE->Clear();
2192  }
2193  if (sub == 3) {
2194  cONE->Print("HistBadTSshapesHO.png");
2195  cONE->Clear();
2196  }
2197  if (sub == 4) {
2198  cONE->Print("HistBadTSshapesHF.png");
2199  cONE->Clear();
2200  }
2201  } // end sub
2202 
2203  /*
2204  //+++++++++++++++++++++++++++++++++++
2205 //Test 42 ADC in TS distributions
2206 //++++++++++++++++++++++++++++++++++++
2207 
2208 std::cout<<" We are here to print ADC "<<std::endl;
2209 
2210  hist_ADC_All[1] = (TH1F*)hfile->Get("h_ADC_HB");
2211  hist_ADC_All[2] = (TH1F*)hfile->Get("h_ADC_HE");
2212  hist_ADC_All[3] = (TH1F*)hfile->Get("h_ADC_HO");
2213  hist_ADC_All[4] = (TH1F*)hfile->Get("h_ADC_HF");
2214 
2215 
2216  hist_ADC_DS[1][1] = (TH1F*)hfile->Get("h_ADC_HBdepth1");
2217  hist_ADC_DS[1][2] = (TH1F*)hfile->Get("h_ADC_HBdepth2");
2218  hist_ADC_DS[2][1] = (TH1F*)hfile->Get("h_ADC_HEdepth1");
2219  hist_ADC_DS[2][2] = (TH1F*)hfile->Get("h_ADC_HEdepth2");
2220  hist_ADC_DS[2][3] = (TH1F*)hfile->Get("h_ADC_HEdepth3");
2221  hist_ADC_DS[3][4] = (TH1F*)hfile->Get("h_ADC_HOdepth4");
2222  hist_ADC_DS[4][1] = (TH1F*)hfile->Get("h_ADC_HFdepth1");
2223  hist_ADC_DS[4][2] = (TH1F*)hfile->Get("h_ADC_HFdepth2");
2224 
2225 
2226  cONE->Clear();
2227  cONE->Divide(1,1);
2228  cONE->cd(1);
2229 
2230  for (int sub=1;sub<=4;sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2231  gPad->SetGridy();
2232  gPad->SetGridx();
2233  gPad->SetLogy();
2234  hist_ADC_All[sub]->SetXTitle("ADC counts \b");
2235  hist_ADC_All[sub]->SetYTitle("Number of channels-events \b");
2236  if (sub==1) sprintf(str,"ADC counts Distribution HB\b");
2237  if (sub==2) sprintf(str,"ADC counts Distribution HE\b");
2238  if (sub==3) sprintf(str,"ADC counts Distribution HO\b");
2239  if (sub==4) sprintf(str,"ADC counts Distribution HF\b");
2240  hist_ADC_All[sub]->SetTitle(str);
2241  hist_ADC_All[sub]->Draw("");
2242  // hist_ADC_All[sub]->GetYaxis()->SetRangeUser(0, 72.);
2243  hist_ADC_All[sub]->GetXaxis()->SetRangeUser(0.000, 1000.);
2244  cONE->Modified(); cONE->Update();
2245  if (sub==1) {cONE->Print("Hist_ADC_HB_All.png"); cONE->Clear();}
2246  if (sub==2) {cONE->Print("Hist_ADC_HE_All.png"); cONE->Clear();}
2247  if (sub==3) {cONE->Print("Hist_ADC_HO_All.png"); cONE->Clear();}
2248  if (sub==4) {cONE->Print("Hist_ADC_HF_All.png"); cONE->Clear();}
2249  }// end sub
2250 
2251 
2252  for (int sub=1;sub<=4;sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2253  if (sub==1) cHB->Divide(2,1);
2254  if (sub==2) cHE->Divide(3,1);
2255  if (sub==3) cONE->Divide(1,1);
2256  if (sub==4) cHB->Divide(2,1);
2257  int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2258  int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2259  for (int k=k_min[sub];k<=k_max[sub];k++) { //Depths
2260  if (sub==1) cHB->cd(k);
2261  if (sub==2) cHE->cd(k);
2262  if (sub==3) cONE->cd(k-3);
2263  if (sub==4) cHB->cd(k);
2264  gPad->SetGridy();
2265  gPad->SetGridx();
2266  gPad->SetLogy();
2267  hist_ADC_DS[sub][k]->SetXTitle("ADC counts \b");
2268  hist_ADC_DS[sub][k]->SetYTitle("Number of channels-events \b");
2269  if (sub==1) sprintf(str,"HB, Depth%d \b", k);
2270  if (sub==2) sprintf(str,"HE, Depth%d \b", k);
2271  if (sub==3) sprintf(str,"HO, Depth%d \b", k);
2272  if (sub==4) sprintf(str,"HF, Depth%d \b", k);
2273  hist_ADC_DS[sub][k]->SetTitle(str);
2274  hist_ADC_DS[sub][k]->Draw("");
2275  // hist_ADC_DS[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
2276  hist_ADC_DS[sub][k]->GetXaxis()->SetRangeUser(0.000, 1000.);
2277  if (sub==1) {cHB->Modified(); cHB->Update();}
2278  if (sub==2) {cHE->Modified(); cHE->Update();}
2279  if (sub==3) {cONE->Modified();cONE->Update();}
2280  if (sub==4) {cHB->Modified(); cHB->Update();}
2281  }//end depth
2282  if (sub==1) {cHB->Print("Hist_ADC_HB_DS.png"); cHB->Clear();}
2283  if (sub==2) {cHE->Print("Hist_ADC_HE_DS.png"); cHE->Clear();}
2284  if (sub==3) {cONE->Print("Hist_ADC_HO_DS.png"); cONE->Clear();}
2285  if (sub==4) {cHB->Print("Hist_ADC_HF_DS.png"); cHB->Clear();}
2286  }// end sub
2287 
2288 
2289  //+++++++++++++++++++++++++++++++++++
2290 //Test 43 Sum ADC in TS distributions
2291 //++++++++++++++++++++++++++++++++++++
2292 
2293  hist_SumADC[1][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HB");
2294  hist_SumADC[1][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HB");
2295  hist_SumADC[2][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HE");
2296  hist_SumADC[2][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HE");
2297  hist_SumADC[2][3] = (TH1F*)hfile->Get("h_sumamplitude_depth3_HE");
2298  hist_SumADC[3][4] = (TH1F*)hfile->Get("h_sumamplitude_depth4_HO");
2299  hist_SumADC[4][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HF");
2300  hist_SumADC[4][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HF");
2301 
2302  hist_SumADC0[1][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HB0");
2303  hist_SumADC0[1][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HB0");
2304  hist_SumADC0[2][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HE0");
2305  hist_SumADC0[2][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HE0");
2306  hist_SumADC0[2][3] = (TH1F*)hfile->Get("h_sumamplitude_depth3_HE0");
2307  hist_SumADC0[3][4] = (TH1F*)hfile->Get("h_sumamplitude_depth4_HO0");
2308  hist_SumADC0[4][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HF0");
2309  hist_SumADC0[4][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HF0");
2310 
2311  hist_SumADC1[1][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HB1");
2312  hist_SumADC1[1][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HB1");
2313  hist_SumADC1[2][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HE1");
2314  hist_SumADC1[2][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HE1");
2315  hist_SumADC1[2][3] = (TH1F*)hfile->Get("h_sumamplitude_depth3_HE1");
2316  hist_SumADC1[3][4] = (TH1F*)hfile->Get("h_sumamplitude_depth4_HO1");
2317  hist_SumADC1[4][1] = (TH1F*)hfile->Get("h_sumamplitude_depth1_HF1");
2318  hist_SumADC1[4][2] = (TH1F*)hfile->Get("h_sumamplitude_depth2_HF1");
2319 
2320  for (int sub=1;sub<=4;sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2321  if (sub==1) cHB->Divide(2,1);
2322  if (sub==2) cHE->Divide(3,1);
2323  if (sub==3) cONE->Divide(1,1);
2324  if (sub==4) cHB->Divide(2,1);
2325  int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2326  int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2327  for (int k=k_min[sub];k<=k_max[sub];k++) { //Depths
2328  if (sub==1) cHB->cd(k);
2329  if (sub==2) cHE->cd(k);
2330  if (sub==3) cONE->cd(k-3);
2331  if (sub==4) cHB->cd(k);
2332  gPad->SetGridy();
2333  gPad->SetGridx();
2334  gPad->SetLogy();
2335  hist_SumADC[sub][k]->SetXTitle("ADC sum \b");
2336  hist_SumADC[sub][k]->SetYTitle("Number of channels-events \b");
2337  if (sub==1) sprintf(str,"HB, Depth%d \b", k);
2338  if (sub==2) sprintf(str,"HE, Depth%d \b", k);
2339  if (sub==3) sprintf(str,"HO, Depth%d \b", k);
2340  if (sub==4) sprintf(str,"HF, Depth%d \b", k);
2341  hist_SumADC[sub][k]->SetTitle(str);
2342  hist_SumADC[sub][k]->Draw("");
2343  // hist_SumADC[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
2344  // hist_SumADC[sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
2345  if (sub==1) {cHB->Modified(); cHB->Update();}
2346  if (sub==2) {cHE->Modified(); cHE->Update();}
2347  if (sub==3) {cONE->Modified();cONE->Update();}
2348  if (sub==4) {cHB->Modified(); cHB->Update();}
2349  }//end depth
2350  if (sub==1) {cHB->Print("Hist_SumADC_HB.png"); cHB->Clear();}
2351  if (sub==2) {cHE->Print("Hist_SumADC_HE.png"); cHE->Clear();}
2352  if (sub==3) {cONE->Print("Hist_SumADC_HO.png"); cONE->Clear();}
2353  if (sub==4) {cHB->Print("Hist_SumADC_HF.png"); cHB->Clear();}
2354  }// end sub
2355 
2356 
2357  for (int sub=1;sub<=4;sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2358  if (sub==1) cHB->Divide(2,1);
2359  if (sub==2) cHE->Divide(3,1);
2360  if (sub==3) cONE->Divide(1,1);
2361  if (sub==4) cHB->Divide(2,1);
2362  int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2363  int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2364  for (int k=k_min[sub];k<=k_max[sub];k++) { //Depths
2365  if (sub==1) cHB->cd(k);
2366  if (sub==2) cHE->cd(k);
2367  if (sub==3) cONE->cd(k-3);
2368  if (sub==4) cHB->cd(k);
2369  gPad->SetGridy();
2370  gPad->SetGridx();
2371  gPad->SetLogy();
2372  hist_SumADC0[sub][k]->SetXTitle("ADC sum \b");
2373  hist_SumADC0[sub][k]->SetYTitle("Number of channels-events \b");
2374  if (sub==1) sprintf(str,"HB, Depth%d \b", k);
2375  if (sub==2) sprintf(str,"HE, Depth%d \b", k);
2376  if (sub==3) sprintf(str,"HO, Depth%d \b", k);
2377  if (sub==4) sprintf(str,"HF, Depth%d \b", k);
2378  hist_SumADC0[sub][k]->SetTitle(str);
2379  hist_SumADC0[sub][k]->Draw("");
2380  // hist_SumADC0[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
2381  // hist_SumADC0[sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
2382  if (sub==1) {cHB->Modified(); cHB->Update();}
2383  if (sub==2) {cHE->Modified(); cHE->Update();}
2384  if (sub==3) {cONE->Modified();cONE->Update();}
2385  if (sub==4) {cHB->Modified(); cHB->Update();}
2386  }//end depth
2387  if (sub==1) {cHB->Print("Hist_SumADC_HB0.png"); cHB->Clear();}
2388  if (sub==2) {cHE->Print("Hist_SumADC_HE0.png"); cHE->Clear();}
2389  if (sub==3) {cONE->Print("Hist_SumADC_HO0.png"); cONE->Clear();}
2390  if (sub==4) {cHB->Print("Hist_SumADC_HF0.png"); cHB->Clear();}
2391  }// end sub
2392 
2393  for (int sub=1;sub<=4;sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2394  if (sub==1) cHB->Divide(2,1);
2395  if (sub==2) cHE->Divide(3,1);
2396  if (sub==3) cONE->Divide(1,1);
2397  if (sub==4) cHB->Divide(2,1);
2398  int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2399  int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2400  for (int k=k_min[sub];k<=k_max[sub];k++) { //Depths
2401  if (sub==1) cHB->cd(k);
2402  if (sub==2) cHE->cd(k);
2403  if (sub==3) cONE->cd(k-3);
2404  if (sub==4) cHB->cd(k);
2405  gPad->SetGridy();
2406  gPad->SetGridx();
2407  gPad->SetLogy();
2408  hist_SumADC1[sub][k]->SetXTitle("ADC sum \b");
2409  hist_SumADC1[sub][k]->SetYTitle("Number of channels-events \b");
2410  if (sub==1) sprintf(str,"HB, Depth%d \b", k);
2411  if (sub==2) sprintf(str,"HE, Depth%d \b", k);
2412  if (sub==3) sprintf(str,"HO, Depth%d \b", k);
2413  if (sub==4) sprintf(str,"HF, Depth%d \b", k);
2414  hist_SumADC1[sub][k]->SetTitle(str);
2415  hist_SumADC1[sub][k]->Draw("");
2416  // hist_SumADC1[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
2417  // hist_SumADC1[sub][k]->GetZaxis()->SetRangeUser(0.0001, 1.);
2418  if (sub==1) {cHB->Modified(); cHB->Update();}
2419  if (sub==2) {cHE->Modified(); cHE->Update();}
2420  if (sub==3) {cONE->Modified();cONE->Update();}
2421  if (sub==4) {cHB->Modified(); cHB->Update();}
2422  }//end depth
2423  if (sub==1) {cHB->Print("Hist_SumADC_HB1.png"); cHB->Clear();}
2424  if (sub==2) {cHE->Print("Hist_SumADC_HE1.png"); cHE->Clear();}
2425  if (sub==3) {cONE->Print("Hist_SumADC_HO1.png"); cONE->Clear();}
2426  if (sub==4) {cHB->Print("Hist_SumADC_HF1.png"); cHB->Clear();}
2427  }// end sub
2428 
2429 */
2430 
2431  //======================================================================
2432 
2433  std::cout << " We are here to print 2017 MAPs (do not use for run3 )" << std::endl;
2434 
2435  //======================================================================
2436  /*
2437 
2438  //======================================================================
2440 
2441  TH2F *Map_ALL = new TH2F("Map_All", "Map_all", 82, -41, 40, 72, 0, 71);
2442  int nx = Map_ALL->GetXaxis()->GetNbins();
2443  int ny = Map_ALL->GetYaxis()->GetNbins();
2444  int NBad = 0;
2445  int NWarn = 0;
2446  int NCalib = 0;
2447  int NPed = 0;
2448  // int Eta[3][10000]={0};
2449  int Eta[4][10000] = {0};
2450  int Phi[4][10000] = {0};
2451  int Sub[4][10000] = {0};
2452  int Depth[4][10000] = {0};
2453  string Comment[4][10000] = {""};
2454  string Text[33] = {"", "Cm", "Am", "Wm", "Rm", "TNm", "TXm", "", "", "", "", "Cc", "Ac", "Wc", "Rc", "TNc", "TXc",
2455  "", "", "", "", "GS", "", "", "", "", "", "", "", "", "", "Pm", "pWm"};
2456  int flag_W = 0;
2457  int flag_B = 0;
2458  int flag_P = 0;
2459 
2460  for (int i = 1; i <= nx; i++) { //Eta
2461  for (int j = 1; j <= ny; j++) { // Phi
2462  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2463  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2464  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2465  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
2466  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
2467  if (Map_SUB[sub][k]->GetBinContent(i, j) != 0) {
2468  Map_SUB[sub][k]->SetBinContent(i, j, 0.5);
2469  Map_ALL->SetBinContent(i, j, 0.5);
2470  }
2471  }
2472  }
2473  }
2474  }
2475 
2476  for (int i = 1; i <= nx; i++) { //Eta
2477  for (int j = 1; j <= ny; j++) { // Phi
2478  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
2479  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2480  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2481  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
2482  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
2483  flag_W = 0;
2484  flag_B = 0;
2485  flag_P = 0;
2486  for (int test = 1; test <= 6; test++) { //Test: 1-Wm, 2-Rm, etc
2487  //Bad
2488  if (Map_Ampl[test][sub][k]->GetBinContent(i, j) >
2489  0.1) { //Rate 0.1 for displaying on whole detector map and subdetector map
2490  Map_ALL->SetBinContent(i, j, 1.);
2491  Map_SUB[sub][k]->SetBinContent(i, j, 1.);
2492  if (flag_B == 0) {
2493  NBad += 1;
2494  Eta[2][NBad] = i - 41;
2495  Phi[2][NBad] = j - 1;
2496  Sub[2][NBad] = sub;
2497  Depth[2][NBad] = k;
2498  Comment[2][NBad] = Text[test];
2499  } else
2500  Comment[2][NBad] += ", " + Text[test];
2501  flag_B = 1;
2502  // cout<<"Map_Ampl["<<test<<"]["<<sub<<"]["<<k<<"]->GetBinContent("<<i<<","<<j<<")= "<<Map_Ampl[test][sub][k]->GetBinContent(i,j)<<endl;
2503  }
2504  //Warning
2505 // to be commented from this
2506 // if ((Map_Ampl[test][sub][k]->GetBinContent(i,j) != 0.)&&(Map_Ampl[test][sub][k]->GetBinContent(i,j) < 0.001) ) {
2507 // if (Map_SUB[sub][k]->GetBinContent(i,j)!=1.) Map_SUB[sub][k]->SetBinContent(i,j,0.75);
2508 // if (Map_ALL->GetBinContent(i,j)!=1.) Map_ALL->SetBinContent(i,j,0.75);
2509 // if (flag_W == 0) {
2510 // NWarn +=1;
2511 // Eta[1][NWarn]=i-41;
2512 // Phi[1][NWarn]=j-1;
2513 // Sub[1][NWarn]=sub;
2514 // Depth[1][NWarn]=k;
2515 // Comment[1][NWarn]=Text[test];
2516 // }
2517 // else Comment[1][NWarn]+=", "+Text[test];
2518 // flag_W = 1;
2519 // cout<<"Map_Ampl["<<test<<"]["<<sub<<"]["<<k<<"]->GetBinContent("<<i<<","<<j<<")= "<<Map_Ampl[test][sub][k]->GetBinContent(i,j)<<endl;
2520 // }
2521 // to this
2522 
2523  } //end test
2524 
2525  //Calib
2526  for (int test=11;test<=16;test++) { //Test: 1-2.E, 2-2.F, etc
2527  if (Map_Ampl[test][sub][k]->GetBinContent(i,j) != 0.) {
2528 // if (Map_SUB[sub][k]->GetBinContent(i,j)!=1.0) Map_SUB[sub][k]->SetBinContent(i,j,0.3);
2529 // if (Map_ALL->GetBinContent(i,j)!=1.) Map_ALL->SetBinContent(i,j,0.3);
2530  if (flag_W == 0) {
2531  NWarn +=1;
2532  Eta[1][NWarn]=i-41;
2533  Phi[1][NWarn]=j-1;
2534  Sub[1][NWarn]=sub;
2535  Depth[1][NWarn]=k;
2536  Comment[1][NWarn]=Text[test];
2537  }
2538  else Comment[1][NWarn]+=", "+Text[test];
2539  flag_W = 1;
2540 // cout<<"Map_Ampl["<<test<<"]["<<sub<<"]["<<k<<"]->GetBinContent("<<i<<","<<j<<")= "<<Map_Ampl[test][sub][k]->GetBinContent(i,j)<<endl;
2541  }
2542  } //end test
2543 
2544  //Gain stabil
2545 
2546  for (int test=21;test<=21;test++) {
2547  if (abs(Map_Ampl[test][sub][k]->GetBinContent(i,j)) > porog[sub]) {
2548  if (Map_SUB[sub][k]->GetBinContent(i,j)!=1.0) Map_SUB[sub][k]->SetBinContent(i,j,0.75);
2549  if (Map_ALL->GetBinContent(i,j)!=1.) {
2550  Map_ALL->SetBinContent(i,j,0.75);
2551  if (flag_W == 0) {
2552  NWarn +=1;
2553  Eta[1][NWarn]=i-41;
2554  Phi[1][NWarn]=j-1;
2555  Sub[1][NWarn]=sub;
2556  Depth[1][NWarn]=k;
2557  Comment[1][NWarn]=Text[test];
2558  }
2559  else Comment[1][NWarn]+=", "+Text[test];
2560  flag_W = 1;
2561 
2562  cout<<"Map_Ampl["<<test<<"]["<<sub<<"]["<<k<<"]->GetBinContent("<<i<<","<<j<<")= "<<Map_Ampl[test][sub][k]->GetBinContent(i,j)<<endl;
2563  }
2564  }
2565  } //end test
2566 
2567  //Pedestals
2568  for (int test = 31; test <= 32; test++) {
2569  if (Map_Ampl[test][sub][k]->GetBinContent(i, j) > 0.1) {
2570  // if (Map_SUB[sub][k]->GetBinContent(i,j)!=1.0) Map_SUB[sub][k]->SetBinContent(i,j,0.75);
2571  // if (Map_ALL->GetBinContent(i,j)!=1.) Map_ALL->SetBinContent(i,j,0.75);
2572  if (flag_P == 0) {
2573  NPed += 1;
2574  Eta[3][NPed] = i - 41;
2575  Phi[3][NPed] = j - 1;
2576  Sub[3][NPed] = sub;
2577  Depth[3][NPed] = k;
2578  Comment[3][NPed] = Text[test];
2579  } else
2580  Comment[3][NPed] += ", " + Text[test];
2581  flag_P = 1;
2582 
2583  // cout<<"Map_Ampl["<<test<<"]["<<sub<<"]["<<k<<"]->GetBinContent("<<i<<","<<j<<")= "<<Map_Ampl[test][sub][k]->GetBinContent(i,j)<<endl;
2584  }
2585  } //end test
2586 
2587  } //end Depth
2588  } //end Sub
2589  } //end Phi
2590  } //end Eta
2591 
2592  // subdet maps
2593  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HF, 4-HO
2594 
2595  std::cout << " 2017 MAPS_SUB " << sub << std::endl;
2596  // if (sub==1) cHB->Divide(2,1);
2597  if (sub == 1)
2598  cHB->Divide(2, 2);
2599  // if (sub==2) cHE->Divide(3,1);
2600  if (sub == 2)
2601  cHE->Divide(3, 3);
2602  if (sub == 3)
2603  cONE->Divide(1, 1);
2604  // if (sub==4) cHB->Divide(2,1);
2605  if (sub == 4)
2606  cHF->Divide(2, 2);
2607  // int k_min[5]={0,1,1,4,1}; // minimum depth for each subdet
2608  // int k_max[5]={0,2,3,4,2}; // maximum depth for each subdet
2609  // int k_max[5]={0,2,7,4,4}; // maximum depth for each subdet
2610  for (int k = k_min[sub]; k <= k_max[sub]; k++) { //Depth
2611  if (sub == 1)
2612  cHB->cd(k);
2613  if (sub == 2)
2614  cHE->cd(k);
2615  if (sub == 3)
2616  cONE->cd(k - 3);
2617  if (sub == 4)
2618  cHF->cd(k);
2619  gPad->SetGridy();
2620  gPad->SetGridx();
2621  // gPad->SetLogz();
2622  // gStyle->SetTitleOffset(0.5, "Y");
2623  if (sub == 1)
2624  sprintf(str, "HB, Depth%d \b", k);
2625  if (sub == 2)
2626  sprintf(str, "HE, Depth%d \b", k);
2627  if (sub == 3)
2628  sprintf(str, "HO, Depth%d \b", k);
2629  if (sub == 4)
2630  sprintf(str, "HF, Depth%d \b", k);
2631  Map_SUB[sub][k]->SetTitle(str);
2632  Map_SUB[sub][k]->SetXTitle("#eta \b");
2633  Map_SUB[sub][k]->SetYTitle("#phi \b");
2634  Map_SUB[sub][k]->Draw("COL");
2635  Map_SUB[sub][k]->GetYaxis()->SetRangeUser(0, 72.);
2636  Map_SUB[sub][k]->GetZaxis()->SetRangeUser(0., 1.);
2637  if (sub == 1) {
2638  cHB->Modified();
2639  cHB->Update();
2640  }
2641  if (sub == 2) {
2642  cHE->Modified();
2643  cHE->Update();
2644  }
2645  if (sub == 3) {
2646  cONE->Modified();
2647  cONE->Update();
2648  }
2649  if (sub == 4) {
2650  cHF->Modified();
2651  cHF->Update();
2652  }
2653  } //end depth
2654  if (sub == 1) {
2655  cHB->Print("MAPHB.png");
2656  cHB->Clear();
2657  }
2658  if (sub == 2) {
2659  cHE->Print("MAPHE.png");
2660  cHE->Clear();
2661  }
2662  if (sub == 3) {
2663  cONE->Print("MAPHO.png");
2664  cONE->Clear();
2665  }
2666  if (sub == 4) {
2667  cHF->Print("MAPHF.png");
2668  cHF->Clear();
2669  }
2670  }
2671 */
2673  /*
2674  TCanvas *cmain1 = new TCanvas("cmain1", "MAP", 200, 10, 1400, 1800);
2675  cmain1->Divide(2, 2);
2676 
2677  cmain1->cd(1);
2678  TH1F *JDBEYESJ0 = (TH1F *)hfile->Get("h_totalAmplitudeHBperEvent");
2679  JDBEYESJ0->SetStats(0);
2680  JDBEYESJ0->SetMarkerStyle(20);
2681  JDBEYESJ0->SetMarkerSize(0.8);
2682  JDBEYESJ0->GetYaxis()->SetLabelSize(0.04);
2683  JDBEYESJ0->SetXTitle("iEvent \b");
2684  JDBEYESJ0->SetYTitle("totalAmplitude perEvent \b");
2685  JDBEYESJ0->SetTitle("HB \b");
2686  JDBEYESJ0->SetMarkerColor(2);
2687  JDBEYESJ0->SetLineColor(1);
2688  JDBEYESJ0->SetMinimum(0.8);
2689  JDBEYESJ0->Draw("HIST same P0");
2690 
2691  cmain1->cd(2);
2692  TH1F *JDBEYESJ1 = (TH1F *)hfile->Get("h_totalAmplitudeHEperEvent");
2693  JDBEYESJ1->SetStats(0);
2694  JDBEYESJ1->SetMarkerStyle(20);
2695  JDBEYESJ1->SetMarkerSize(0.8);
2696  JDBEYESJ1->GetYaxis()->SetLabelSize(0.04);
2697  JDBEYESJ1->SetXTitle("iEvent \b");
2698  JDBEYESJ1->SetYTitle("totalAmplitude perEvent \b");
2699  JDBEYESJ1->SetTitle("HE \b");
2700  JDBEYESJ1->SetMarkerColor(2);
2701  JDBEYESJ1->SetLineColor(1);
2702  JDBEYESJ1->SetMinimum(0.8);
2703  JDBEYESJ1->Draw("HIST same P0");
2704 
2705  cmain1->cd(3);
2706  TH1F *JDBEYESJ2 = (TH1F *)hfile->Get("h_totalAmplitudeHFperEvent");
2707  JDBEYESJ2->SetStats(0);
2708  JDBEYESJ2->SetMarkerStyle(20);
2709  JDBEYESJ2->SetMarkerSize(0.8);
2710  JDBEYESJ2->GetYaxis()->SetLabelSize(0.04);
2711  JDBEYESJ2->SetXTitle("iEvent \b");
2712  JDBEYESJ2->SetYTitle("totalAmplitude perEvent \b");
2713  JDBEYESJ2->SetTitle("HF \b");
2714  JDBEYESJ2->SetMarkerColor(2);
2715  JDBEYESJ2->SetLineColor(1);
2716  JDBEYESJ2->SetMinimum(0.8);
2717  JDBEYESJ2->Draw("HIST same P0");
2718 
2719  cmain1->cd(4);
2720  TH1F *JDBEYESJ3 = (TH1F *)hfile->Get("h_totalAmplitudeHOperEvent");
2721  JDBEYESJ3->SetStats(0);
2722  JDBEYESJ3->SetMarkerStyle(20);
2723  JDBEYESJ3->SetMarkerSize(0.8);
2724  JDBEYESJ3->GetYaxis()->SetLabelSize(0.04);
2725  JDBEYESJ3->SetXTitle("iEvent \b");
2726  JDBEYESJ3->SetYTitle("totalAmplitude perEvent \b");
2727  JDBEYESJ3->SetTitle("HO \b");
2728  JDBEYESJ3->SetMarkerColor(2);
2729  JDBEYESJ3->SetLineColor(1);
2730  JDBEYESJ3->SetMinimum(0.8);
2731  JDBEYESJ3->Draw("HIST same P0");
2732 
2733  cmain1->Modified();
2734  cmain1->Update();
2735  cmain1->Print("EVENTDEPENDENCE.png");
2736 
2737  std::cout << " EVENTDEPENDENCE " << std::endl;
2738 
2740  // ALL SubDet
2741  gStyle->SetOptTitle(0);
2742  TCanvas *cmain = new TCanvas("cmain", "MAP", 1000, 1000);
2743  gPad->SetGridy();
2744  gPad->SetGridx();
2745  // gPad->SetLogz();
2746  Map_ALL->SetTitleOffset(1.3, "Y");
2747  Map_ALL->SetXTitle("#eta \b");
2748  Map_ALL->SetYTitle("#phi \b");
2749  Map_ALL->Draw("COL");
2750  Map_ALL->GetYaxis()->SetRangeUser(0, 72.);
2751  Map_ALL->GetZaxis()->SetRangeUser(0, 1.);
2752  cmain->Modified();
2753  cmain->Update();
2754  cmain->Print("MAP.png");
2755 
2756  std::cout << " MAP_ALL " << std::endl;
2757 */
2758  //======================================================================
2759 
2760  //====================================================================== html pages CREATING:
2761  //======================================================================
2762  // Creating each test kind for each subdet html pages:
2763  std::string raw_class, raw_class1, raw_class2, raw_class3;
2764  int ind = 0;
2765 
2766  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
2767  ofstream htmlFileT, htmlFileC, htmlFileD, htmlFileP, htmlFileS;
2768  if (sub == 1) {
2769  htmlFileT.open("HB_Tile.html");
2770  htmlFileC.open("HB_Calib.html");
2771  htmlFileD.open("HB_Drift.html");
2772  htmlFileP.open("HB_Pedestals.html");
2773  htmlFileS.open("HB_Shapes.html");
2774  }
2775  if (sub == 2) {
2776  htmlFileT.open("HE_Tile.html");
2777  htmlFileC.open("HE_Calib.html");
2778  htmlFileD.open("HE_Drift.html");
2779  htmlFileP.open("HE_Pedestals.html");
2780  htmlFileS.open("HE_Shapes.html");
2781  }
2782  if (sub == 3) {
2783  htmlFileT.open("HO_Tile.html");
2784  htmlFileC.open("HO_Calib.html");
2785  htmlFileD.open("HO_Drift.html");
2786  htmlFileP.open("HO_Pedestals.html");
2787  htmlFileS.open("HO_Shapes.html");
2788  }
2789  if (sub == 4) {
2790  htmlFileT.open("HF_Tile.html");
2791  htmlFileC.open("HF_Calib.html");
2792  htmlFileD.open("HF_Drift.html");
2793  htmlFileP.open("HF_Pedestals.html");
2794  htmlFileS.open("HF_Shapes.html");
2795  }
2796 
2797  // Megatile channels
2798  htmlFileT << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
2799  htmlFileT << "<head>" << std::endl;
2800  htmlFileT << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
2801  htmlFileT << "<title> Remote Monitoring Tool Global</title>" << std::endl;
2802  htmlFileT << "<style type=\"text/css\">" << std::endl;
2803  htmlFileT << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
2804  << std::endl;
2805  htmlFileT << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
2806  htmlFileT << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
2807  "text-align: center;}"
2808  << std::endl;
2809  htmlFileT << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
2810  htmlFileT << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
2811  htmlFileT << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
2812  htmlFileT << "</style>" << std::endl;
2813  htmlFileT << "<body>" << std::endl;
2814 
2815  if (sub == 1)
2816  htmlFileT << "<h1> Criteria for megatile channels for HB, RUN = " << runnumber << " </h1>" << std::endl;
2817  if (sub == 2)
2818  htmlFileT << "<h1> Criteria for megatile channels for HE, RUN = " << runnumber << " </h1>" << std::endl;
2819  if (sub == 3)
2820  htmlFileT << "<h1> Criteria for megatile channels for HO, RUN = " << runnumber << " </h1>" << std::endl;
2821  if (sub == 4)
2822  htmlFileT << "<h1> Criteria for megatile channels for HF, RUN = " << runnumber << " </h1>" << std::endl;
2823  htmlFileT << "<br>" << std::endl;
2824 
2825  // Test Entries
2826 
2827  htmlFileT << "<h2> 0. Entries for each channel.</h3>" << std::endl;
2828  htmlFileT << "<h3> 0.A. Entries in each channel for each depth.</h3>" << std::endl;
2829  htmlFileT << "<h4> Channel legend: color is number of hits in digi collection </h4>" << std::endl;
2830  if (sub == 1)
2831  htmlFileT << " <img src=\"MapRateEntryHB.png\" />" << std::endl;
2832  if (sub == 2)
2833  htmlFileT << " <img src=\"MapRateEntryHE.png\" />" << std::endl;
2834  if (sub == 3)
2835  htmlFileT << " <img src=\"MapRateEntryHO.png\" />" << std::endl;
2836  if (sub == 4)
2837  htmlFileT << " <img src=\"MapRateEntryHF.png\" />" << std::endl;
2838  htmlFileT << "<br>" << std::endl;
2839 
2840  // Test Cm
2841  htmlFileT << "<h2> 1. Cm criterion: CapID errors for each channel.</h3>" << std::endl;
2842  htmlFileT << "<h3> 1.A. Rate of CapId failures in each channel for each depth.</h3>" << std::endl;
2843  htmlFileT << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
2844  if (sub == 1)
2845  htmlFileT << " <img src=\"MapRateCapIDHB.png\" />" << std::endl;
2846  if (sub == 2)
2847  htmlFileT << " <img src=\"MapRateCapIDHE.png\" />" << std::endl;
2848  if (sub == 3)
2849  htmlFileT << " <img src=\"MapRateCapIDHO.png\" />" << std::endl;
2850  if (sub == 4)
2851  htmlFileT << " <img src=\"MapRateCapIDHF.png\" />" << std::endl;
2852  htmlFileT << "<br>" << std::endl;
2853 
2854  // Am
2855  htmlFileT << "<h2> 2. Am criterion: ADC amplitude collected over all TSs(Full Amplitude) for each channel. </h3>"
2856  << std::endl;
2857  htmlFileT << "<h3> 2.A. Full ADC amplitude distribution over all events, channels and depths.</h3>" << std::endl;
2858  htmlFileT << "<h4> Legend: Bins less " << MIN_M[2][sub] << " correpond to bad ADC amplitude </h4>" << std::endl;
2859  if (sub == 1)
2860  htmlFileT << " <img src=\"HistAmplHB.png\" />" << std::endl;
2861  if (sub == 2)
2862  htmlFileT << " <img src=\"HistAmplHE.png\" />" << std::endl;
2863  if (sub == 3)
2864  htmlFileT << " <img src=\"HistAmplHO.png\" />" << std::endl;
2865  if (sub == 4)
2866  htmlFileT << " <img src=\"HistAmplHF.png\" />" << std::endl;
2867  htmlFileT << "<br>" << std::endl;
2868  htmlFileT << "<h3> 2.B. Rate of bad ADC amplitude (<" << MIN_M[2][sub] << ") in each channel for each depth. </h3>"
2869  << std::endl;
2870  htmlFileT << "<h4> Channel legend: white - good, other colours - bad. </h4>" << std::endl;
2871  if (sub == 1)
2872  htmlFileT << " <img src=\"MapRateAmplHB.png\" />" << std::endl;
2873  if (sub == 2)
2874  htmlFileT << " <img src=\"MapRateAmplHE.png\" />" << std::endl;
2875  if (sub == 3)
2876  htmlFileT << " <img src=\"MapRateAmplHO.png\" />" << std::endl;
2877  if (sub == 4)
2878  htmlFileT << " <img src=\"MapRateAmplHF.png\" />" << std::endl;
2879  htmlFileT << "<br>" << std::endl;
2880 
2881  // Test Wm
2882  htmlFileT << "<h2> 3. Wm criterion: RMS (width) of ADC amplutude for each channel.</h3>" << std::endl;
2883  htmlFileT << "<h3> 3.A. RMS distribution over all events, channel and depth.</h3>" << std::endl;
2884  htmlFileT << "<h4> Legend: Bins less " << MIN_M[3][sub] << " and more " << MAX_M[3][sub]
2885  << " correpond to bad RMS </h4>" << std::endl;
2886  if (sub == 1)
2887  htmlFileT << " <img src=\"HistRMSHB.png\" />" << std::endl;
2888  if (sub == 2)
2889  htmlFileT << " <img src=\"HistRMSHE.png\" />" << std::endl;
2890  if (sub == 3)
2891  htmlFileT << " <img src=\"HistRMSHO.png\" />" << std::endl;
2892  if (sub == 4)
2893  htmlFileT << " <img src=\"HistRMSHF.png\" />" << std::endl;
2894  htmlFileT << "<br>" << std::endl;
2895  htmlFileT << "<h3> 3.B. Rate of bad RMS (<" << MIN_M[3][sub] << ",>" << MAX_M[3][sub]
2896  << ") in each channel for each depth.</h3>" << std::endl;
2897  htmlFileT << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
2898  if (sub == 1)
2899  htmlFileT << " <img src=\"MapRateRMSHB.png\" />" << std::endl;
2900  if (sub == 2)
2901  htmlFileT << " <img src=\"MapRateRMSHE.png\" />" << std::endl;
2902  if (sub == 3)
2903  htmlFileT << " <img src=\"MapRateRMSHO.png\" />" << std::endl;
2904  if (sub == 4)
2905  htmlFileT << " <img src=\"MapRateRMSHF.png\" />" << std::endl;
2906  htmlFileT << "<br>" << std::endl;
2907 
2908  // Rm
2909  htmlFileT << "<h2> 4. Rm criterion: Ratio ADC value sum over four near maximum (-2, -1, max, +1) TS to ADC value "
2910  "sum over all TS for each channel. </h3>"
2911  << std::endl;
2912  htmlFileT << "<h3> 4.A. Ratio distribution over all events, channels and depths.</h3>" << std::endl;
2913  htmlFileT << "<h4> Legend: Bins less " << MIN_M[4][sub] << " and more " << MAX_M[4][sub]
2914  << " correpond to bad ratio </h4>" << std::endl;
2915  if (sub == 1)
2916  htmlFileT << " <img src=\"Hist43TStoAllTSHB.png\" />" << std::endl;
2917  if (sub == 2)
2918  htmlFileT << " <img src=\"Hist43TStoAllTSHE.png\" />" << std::endl;
2919  if (sub == 3)
2920  htmlFileT << " <img src=\"Hist43TStoAllTSHO.png\" />" << std::endl;
2921  if (sub == 4)
2922  htmlFileT << " <img src=\"Hist43TStoAllTSHF.png\" />" << std::endl;
2923  htmlFileT << "<br>" << std::endl;
2924  htmlFileT << "<h3> 4.B. Rate of bad ratio (<" << MIN_M[4][sub] << ", >" << MAX_M[4][sub]
2925  << ") in each channel for each depth.</h3>" << std::endl;
2926  htmlFileT << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
2927  if (sub == 1)
2928  htmlFileT << " <img src=\"MapRate43TStoAllTSHB.png\" />" << std::endl;
2929  if (sub == 2)
2930  htmlFileT << " <img src=\"MapRate43TStoAllTSHE.png\" />" << std::endl;
2931  if (sub == 3)
2932  htmlFileT << " <img src=\"MapRate43TStoAllTSHO.png\" />" << std::endl;
2933  if (sub == 4)
2934  htmlFileT << " <img src=\"MapRate43TStoAllTSHF.png\" />" << std::endl;
2935  htmlFileT << "<br>" << std::endl;
2936 
2937  // TNm
2938  htmlFileT << "<h2> 5. TNm criterion: Mean TS position for each channel.</h3>" << std::endl;
2939  htmlFileT << "<h3> 5.A. TN position distribution over all events, channels and depths.</h3>" << std::endl;
2940  htmlFileT << "<h4> Legend: Bins less " << MIN_M[5][sub] << " and more " << MAX_M[5][sub]
2941  << " correpond to bad mean position </h4>" << std::endl;
2942  if (sub == 1)
2943  htmlFileT << " <img src=\"HistMeanPosHB.png\" />" << std::endl;
2944  if (sub == 2)
2945  htmlFileT << " <img src=\"HistMeanPosHE.png\" />" << std::endl;
2946  if (sub == 3)
2947  htmlFileT << " <img src=\"HistMeanPosHO.png\" />" << std::endl;
2948  if (sub == 4)
2949  htmlFileT << " <img src=\"HistMeanPosHF.png\" />" << std::endl;
2950  htmlFileT << "<br>" << std::endl;
2951  htmlFileT << "<h3> 5.B. Rate of bad TN position (<" << MIN_M[5][sub] << ", >" << MAX_M[5][sub]
2952  << ") in each channel for each depth. </h3>" << std::endl;
2953  htmlFileT << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
2954  if (sub == 1)
2955  htmlFileT << " <img src=\"MapRateMeanPosHB.png\" />" << std::endl;
2956  if (sub == 2)
2957  htmlFileT << " <img src=\"MapRateMeanPosHE.png\" />" << std::endl;
2958  if (sub == 3)
2959  htmlFileT << " <img src=\"MapRateMeanPosHO.png\" />" << std::endl;
2960  if (sub == 4)
2961  htmlFileT << " <img src=\"MapRateMeanPosHF.png\" />" << std::endl;
2962  htmlFileT << "<br>" << std::endl;
2963 
2964  // TXm
2965  htmlFileT << "<h2> 6.TXm criterion: Maximum TS position for each channel.</h3>" << std::endl;
2966  htmlFileT << "<h3> 6.A. TX position distribution over all events, channel and depth.</h3>" << std::endl;
2967  htmlFileT << "<h4> Legend: Bins less " << MIN_M[6][sub] << " and more " << MAX_M[6][sub]
2968  << " correpond to bad position </h4>" << std::endl;
2969  if (sub == 1)
2970  htmlFileT << " <img src=\"HistMaxPosHB.png\" />" << std::endl;
2971  if (sub == 2)
2972  htmlFileT << " <img src=\"HistMaxPosHE.png\" />" << std::endl;
2973  if (sub == 3)
2974  htmlFileT << " <img src=\"HistMaxPosHO.png\" />" << std::endl;
2975  if (sub == 4)
2976  htmlFileT << " <img src=\"HistMaxPosHF.png\" />" << std::endl;
2977  htmlFileT << "<br>" << std::endl;
2978  htmlFileT << "<h3> 6.B. Rate of bad TX position (<" << MIN_M[6][sub] << ", >" << MAX_M[6][sub]
2979  << ") in each channel for each depth. </h3>" << std::endl;
2980  htmlFileT << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
2981  if (sub == 1)
2982  htmlFileT << " <img src=\"MapRateMaxPosHB.png\" />" << std::endl;
2983  if (sub == 2)
2984  htmlFileT << " <img src=\"MapRateMaxPosHE.png\" />" << std::endl;
2985  if (sub == 3)
2986  htmlFileT << " <img src=\"MapRateMaxPosHO.png\" />" << std::endl;
2987  if (sub == 4)
2988  htmlFileT << " <img src=\"MapRateMaxPosHF.png\" />" << std::endl;
2989  htmlFileT << "<br>" << std::endl;
2990 
2991  htmlFileT << "</body> " << std::endl;
2992  htmlFileT << "</html> " << std::endl;
2993  htmlFileT.close();
2994 
2995  //Calibration channels
2996  htmlFileC << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
2997  htmlFileC << "<head>" << std::endl;
2998  htmlFileC << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
2999  htmlFileC << "<title> Raw Data Analyser </title>" << std::endl;
3000  htmlFileC << "<style type=\"text/css\">" << std::endl;
3001  htmlFileC << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
3002  << std::endl;
3003  htmlFileC << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
3004  htmlFileC << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
3005  "text-align: center;}"
3006  << std::endl;
3007  htmlFileC << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
3008  htmlFileC << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
3009  htmlFileC << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
3010  htmlFileC << "</style>" << std::endl;
3011  htmlFileC << "<body>" << std::endl;
3012 
3013  if (sub == 1)
3014  htmlFileC << "<h1> Criteria for calibration channels for HB, RUN = " << runnumber << " </h1>" << std::endl;
3015  if (sub == 2)
3016  htmlFileC << "<h1> Criteria for calibration channels for HE, RUN = " << runnumber << " </h1>" << std::endl;
3017  if (sub == 3)
3018  htmlFileC << "<h1> Criteria for calibration channels for HO, RUN = " << runnumber << " </h1>" << std::endl;
3019  if (sub == 4)
3020  htmlFileC << "<h1> Criteria for calibration channels for HF, RUN = " << runnumber << " </h1>" << std::endl;
3021  htmlFileC << "<br>" << std::endl;
3022 
3023  // Test Cc
3024  htmlFileC << "<h2> 1.Cc criterion: CapID errors for each channel.</h3>" << std::endl;
3025  htmlFileC << "<h3> 1.A. Rate of CapId failures in each channel for each depth.</h3>" << std::endl;
3026  htmlFileC << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3027  if (sub == 1)
3028  htmlFileC << " <img src=\"MapRateCapCalibHB.png\" />" << std::endl;
3029  if (sub == 2)
3030  htmlFileC << " <img src=\"MapRateCapCalibHE.png\" />" << std::endl;
3031  if (sub == 3)
3032  htmlFileC << " <img src=\"MapRateCapCalibHO.png\" />" << std::endl;
3033  if (sub == 4)
3034  htmlFileC << " <img src=\"MapRateCapCalibHF.png\" />" << std::endl;
3035  htmlFileC << "<br>" << std::endl;
3036 
3037  // Ac
3038  htmlFileC << "<h2> 2. Ac criterion: ADC amplitude collected over all TSs(Full Amplitude) for each channel. </h3>"
3039  << std::endl;
3040  htmlFileC << "<h3> 2.A. Full ADC amplitude distribution over all events, channels and depths.</h3>" << std::endl;
3041  htmlFileC << "<h4> Legend: Bins less " << MIN_C[2][sub] << " correpond to bad ADC amplitude </h4>" << std::endl;
3042  if (sub == 1)
3043  htmlFileC << " <img src=\"HistAmplCalibHB.png\" />" << std::endl;
3044  if (sub == 2)
3045  htmlFileC << " <img src=\"HistAmplCalibHE.png\" />" << std::endl;
3046  if (sub == 3)
3047  htmlFileC << " <img src=\"HistAmplCalibHO.png\" />" << std::endl;
3048  if (sub == 4)
3049  htmlFileC << " <img src=\"HistAmplCalibHF.png\" />" << std::endl;
3050  htmlFileC << "<br>" << std::endl;
3051  htmlFileC << "<h3> 2.B. Rate of bad ADC amplitude (<" << MIN_C[2][sub] << ") in each channel for each depth. </h3>"
3052  << std::endl;
3053  htmlFileC << "<h4> Channel legend: white - good, other colours - bad. </h4>" << std::endl;
3054  if (sub == 1)
3055  htmlFileC << " <img src=\"MapRateAmplCalibHB.png\" />" << std::endl;
3056  if (sub == 2)
3057  htmlFileC << " <img src=\"MapRateAmplCalibHE.png\" />" << std::endl;
3058  if (sub == 3)
3059  htmlFileC << " <img src=\"MapRateAmplCalibHO.png\" />" << std::endl;
3060  if (sub == 4)
3061  htmlFileC << " <img src=\"MapRateAmplCalibHF.png\" />" << std::endl;
3062  htmlFileC << "<br>" << std::endl;
3063 
3064  // Test Wc
3065  htmlFileC << "<h2> 3. Wc criterion: RMS (width) of ADC amplutude for each channel.</h3>" << std::endl;
3066  htmlFileC << "<h3> 3.A. W distribution over all events, channel and depth.</h3>" << std::endl;
3067  htmlFileC << "<h4> Legend: Bins less " << MIN_C[3][sub] << " and more " << MAX_C[3][sub]
3068  << " correpond to bad RMS </h4>" << std::endl;
3069  if (sub == 1)
3070  htmlFileC << " <img src=\"HistRMSCalibHB.png\" />" << std::endl;
3071  if (sub == 2)
3072  htmlFileC << " <img src=\"HistRMSCalibHE.png\" />" << std::endl;
3073  if (sub == 3)
3074  htmlFileC << " <img src=\"HistRMSCalibHO.png\" />" << std::endl;
3075  if (sub == 4)
3076  htmlFileC << " <img src=\"HistRMSCalibHF.png\" />" << std::endl;
3077  htmlFileC << "<br>" << std::endl;
3078  htmlFileC << "<h3> 3.B. Rate of bad W (<" << MIN_C[3][sub] << ",>" << MAX_C[3][sub]
3079  << ") in each channel for each depth.</h3>" << std::endl;
3080  htmlFileC << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3081  if (sub == 1)
3082  htmlFileC << " <img src=\"MapRateRMSCalibHB.png\" />" << std::endl;
3083  if (sub == 2)
3084  htmlFileC << " <img src=\"MapRateRMSCalibHE.png\" />" << std::endl;
3085  if (sub == 3)
3086  htmlFileC << " <img src=\"MapRateRMSCalibHO.png\" />" << std::endl;
3087  if (sub == 4)
3088  htmlFileC << " <img src=\"MapRateRMSCalibHF.png\" />" << std::endl;
3089  htmlFileC << "<br>" << std::endl;
3090 
3091  // Rc
3092  htmlFileC << "<h2> 4. Rc criterion: Ratio ADC value sum over five near maximum (-2, -1, max, +1, +2) TS to ADC "
3093  "value sum over all TS for each channel. </h3>"
3094  << std::endl;
3095  htmlFileC << "<h3> 4.A. Ratio distribution over all events, channels and depths.</h3>" << std::endl;
3096  htmlFileC << "<h4> Legend: Bins less " << MIN_C[4][sub] << " and more " << MAX_C[4][sub]
3097  << " correpond to bad ratio </h4>" << std::endl;
3098  if (sub == 1)
3099  htmlFileC << " <img src=\"Hist43TStoAllTSCalibHB.png\" />" << std::endl;
3100  if (sub == 2)
3101  htmlFileC << " <img src=\"Hist43TStoAllTSCalibHE.png\" />" << std::endl;
3102  if (sub == 3)
3103  htmlFileC << " <img src=\"Hist43TStoAllTSCalibHO.png\" />" << std::endl;
3104  if (sub == 4)
3105  htmlFileC << " <img src=\"Hist43TStoAllTSCalibHF.png\" />" << std::endl;
3106  htmlFileC << "<br>" << std::endl;
3107  htmlFileC << "<h3> 4.B. Rate of bad Ratio (<" << MIN_C[4][sub] << ", >" << MAX_C[4][sub]
3108  << ") in each channel for each depth.</h3>" << std::endl;
3109  htmlFileC << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3110  if (sub == 1)
3111  htmlFileC << " <img src=\"MapRate43TStoAllTSCalibHB.png\" />" << std::endl;
3112  if (sub == 2)
3113  htmlFileC << " <img src=\"MapRate43TStoAllTSCalibHE.png\" />" << std::endl;
3114  if (sub == 3)
3115  htmlFileC << " <img src=\"MapRate43TStoAllTSCalibHO.png\" />" << std::endl;
3116  if (sub == 4)
3117  htmlFileC << " <img src=\"MapRate43TStoAllTSCalibHF.png\" />" << std::endl;
3118  htmlFileC << "<br>" << std::endl;
3119 
3120  // TNc
3121  htmlFileC << "<h2> 5. TNc criterion: Mean TS position for each channel.</h3>" << std::endl;
3122  htmlFileC << "<h3> 5.A. TN position distribution over all events, channels and depths.</h3>" << std::endl;
3123  htmlFileC << "<h4> Legend: Bins less " << MIN_C[5][sub] << " and more " << MAX_C[5][sub]
3124  << " correpond to bad position </h4>" << std::endl;
3125  if (sub == 1)
3126  htmlFileC << " <img src=\"HistMeanPosCalibHB.png\" />" << std::endl;
3127  if (sub == 2)
3128  htmlFileC << " <img src=\"HistMeanPosCalibHE.png\" />" << std::endl;
3129  if (sub == 3)
3130  htmlFileC << " <img src=\"HistMeanPosCalibHO.png\" />" << std::endl;
3131  if (sub == 4)
3132  htmlFileC << " <img src=\"HistMeanPosCalibHF.png\" />" << std::endl;
3133  htmlFileC << "<br>" << std::endl;
3134  htmlFileC << "<h3> 5.B. Rate of bad TN position (<" << MIN_C[5][sub] << ", >" << MAX_C[5][sub]
3135  << ") in each channel for each depth. </h3>" << std::endl;
3136  htmlFileC << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3137  if (sub == 1)
3138  htmlFileC << " <img src=\"MapRateMeanPosCalibHB.png\" />" << std::endl;
3139  if (sub == 2)
3140  htmlFileC << " <img src=\"MapRateMeanPosCalibHE.png\" />" << std::endl;
3141  if (sub == 3)
3142  htmlFileC << " <img src=\"MapRateMeanPosCalibHO.png\" />" << std::endl;
3143  if (sub == 4)
3144  htmlFileC << " <img src=\"MapRateMeanPosCalibHF.png\" />" << std::endl;
3145  htmlFileC << "<br>" << std::endl;
3146 
3147  // TXm
3148  htmlFileC << "<h2> 6.TXc criterion: Maximum TS position for each channel.</h3>" << std::endl;
3149  htmlFileC << "<h3> 6.A. TX position distribution over all events, channel and depth.</h3>" << std::endl;
3150  htmlFileC << "<h4> Legend: Bins less " << MIN_C[6][sub] << " and more " << MAX_C[6][sub]
3151  << " correpond to bad position </h4>" << std::endl;
3152  if (sub == 1)
3153  htmlFileC << " <img src=\"HistMaxPosCalibHB.png\" />" << std::endl;
3154  if (sub == 2)
3155  htmlFileC << " <img src=\"HistMaxPosCalibHE.png\" />" << std::endl;
3156  if (sub == 3)
3157  htmlFileC << " <img src=\"HistMaxPosCalibHO.png\" />" << std::endl;
3158  if (sub == 4)
3159  htmlFileC << " <img src=\"HistMaxPosCalibHF.png\" />" << std::endl;
3160  htmlFileC << "<br>" << std::endl;
3161  htmlFileC << "<h3> 6.B. Rate of bad TX position (<" << MIN_C[6][sub] << ", >" << MAX_C[6][sub]
3162  << ") in each channel for each depth. </h3>" << std::endl;
3163  htmlFileC << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3164  if (sub == 1)
3165  htmlFileC << " <img src=\"MapRateMaxPosCalibHB.png\" />" << std::endl;
3166  if (sub == 2)
3167  htmlFileC << " <img src=\"MapRateMaxPosCalibHE.png\" />" << std::endl;
3168  if (sub == 3)
3169  htmlFileC << " <img src=\"MapRateMaxPosCalibHO.png\" />" << std::endl;
3170  if (sub == 4)
3171  htmlFileC << " <img src=\"MapRateMaxPosCalibHF.png\" />" << std::endl;
3172  htmlFileC << "<br>" << std::endl;
3173 
3174  htmlFileC << "</body> " << std::endl;
3175  htmlFileC << "</html> " << std::endl;
3176  htmlFileC.close();
3177 
3178  //Response drift
3179  htmlFileD << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
3180  htmlFileD << "<head>" << std::endl;
3181  htmlFileD << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
3182  htmlFileD << "<title> Remote Monitoring Tool Global </title>" << std::endl;
3183  htmlFileD << "<style type=\"text/css\">" << std::endl;
3184  htmlFileD << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
3185  << std::endl;
3186  htmlFileD << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
3187  htmlFileD << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
3188  "text-align: center;}"
3189  << std::endl;
3190  htmlFileD << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
3191  htmlFileD << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
3192  htmlFileD << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
3193  htmlFileD << "</style>" << std::endl;
3194  htmlFileD << "<body>" << std::endl;
3195 
3196  if (sub == 1)
3197  htmlFileD << "<h1> Response drift for HB: Current RUN = " << runnumber << ", Reference RUN = " << refrunnumber
3198  << " </h1>" << std::endl;
3199  if (sub == 2)
3200  htmlFileD << "<h1> Response drift for HE: Current RUN = " << runnumber << ", Reference RUN = " << refrunnumber
3201  << " </h1>" << std::endl;
3202  if (sub == 3)
3203  htmlFileD << "<h1> Response drift for HO: Current RUN = " << runnumber << ", Reference RUN = " << refrunnumber
3204  << " </h1>" << std::endl;
3205  if (sub == 4)
3206  htmlFileD << "<h1> Response drift for HF: Current RUN = " << runnumber << ", Reference RUN = " << refrunnumber
3207  << " </h1>" << std::endl;
3208  htmlFileD << "<br>" << std::endl;
3209 
3210  // test GS
3211  htmlFileD << "<h2> 1. Gain Stability (GS) </h3>" << std::endl;
3212  htmlFileD << "<h3> 1.A. Averaged channel response, collected over all TS, for Current run in each channel for each "
3213  "depth.</h3>"
3214  << std::endl;
3215  htmlFileD << "<h4> Channel legend: colour means cooresponding value of mean response. </h4>" << std::endl;
3216  if (sub == 1)
3217  htmlFileD << " <img src=\"MapRateAmpl1HB.png\" />" << std::endl;
3218  if (sub == 2)
3219  htmlFileD << " <img src=\"MapRateAmpl1HE.png\" />" << std::endl;
3220  if (sub == 3)
3221  htmlFileD << " <img src=\"MapRateAmpl1HO.png\" />" << std::endl;
3222  if (sub == 4)
3223  htmlFileD << " <img src=\"MapRateAmpl1HF.png\" />" << std::endl;
3224  htmlFileD << "<br>" << std::endl;
3225  htmlFileD << "<h3> 1.B. Averaged channel response, collected over all TS, for Reference run in each channel for "
3226  "each depth.</h3>"
3227  << std::endl;
3228  htmlFileD << "<h4> Channel legend: colour means cooresponding value of mean response. </h4>" << std::endl;
3229  if (sub == 1)
3230  htmlFileD << " <img src=\"MapRateAmpl2HB.png\" />" << std::endl;
3231  if (sub == 2)
3232  htmlFileD << " <img src=\"MapRateAmpl2HE.png\" />" << std::endl;
3233  if (sub == 3)
3234  htmlFileD << " <img src=\"MapRateAmpl2HO.png\" />" << std::endl;
3235  if (sub == 4)
3236  htmlFileD << " <img src=\"MapRateAmpl2HF.png\" />" << std::endl;
3237  htmlFileD << "<br>" << std::endl;
3238  htmlFileD << "<h3> 1.C. Relative difference between Current run and Current run distribution over all events, "
3239  "channels for each depth.</h3>"
3240  << std::endl;
3241  htmlFileD << "<h4> Legend: Bins less -" << porog[sub] << "% and more +" << porog[sub]
3242  << "% correpond to bad relative difference position </h4>" << std::endl;
3243  if (sub == 1)
3244  htmlFileD << " <img src=\"HistAmplDriftDepthHB.png\" />" << std::endl;
3245  if (sub == 2)
3246  htmlFileD << " <img src=\"HistAmplDriftDepthHE.png\" />" << std::endl;
3247  if (sub == 3)
3248  htmlFileD << " <img src=\"HistAmplDriftDepthHO.png\" />" << std::endl;
3249  if (sub == 4)
3250  htmlFileD << " <img src=\"HistAmplDriftDepthHF.png\" />" << std::endl;
3251  htmlFileD << "<br>" << std::endl;
3252  htmlFileD << "<h3> 1.D. Rate of bad relative difference (<-" << porog[sub] << ", >+" << porog[sub]
3253  << ") in each channel for each depth.</h3>" << std::endl;
3254  htmlFileD << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3255  if (sub == 1)
3256  htmlFileD << " <img src=\"MapRateAmplDriftHB.png\" />" << std::endl;
3257  if (sub == 2)
3258  htmlFileD << " <img src=\"MapRateAmplDriftHE.png\" />" << std::endl;
3259  if (sub == 3)
3260  htmlFileD << " <img src=\"MapRateAmplDriftHO.png\" />" << std::endl;
3261  if (sub == 4)
3262  htmlFileD << " <img src=\"MapRateAmplDriftHF.png\" />" << std::endl;
3263  htmlFileD << "<br>" << std::endl;
3264 
3265  htmlFileD << "</body> " << std::endl;
3266  htmlFileD << "</html> " << std::endl;
3267  htmlFileD.close();
3268 
3269  // Pedestals
3270  htmlFileP << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
3271  htmlFileP << "<head>" << std::endl;
3272  htmlFileP << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
3273  htmlFileP << "<title> Remote Monitoring Tool Global</title>" << std::endl;
3274  htmlFileP << "<style type=\"text/css\">" << std::endl;
3275  htmlFileP << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
3276  << std::endl;
3277  htmlFileP << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
3278  htmlFileP << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
3279  "text-align: center;}"
3280  << std::endl;
3281  htmlFileP << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
3282  htmlFileP << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
3283  htmlFileP << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
3284  htmlFileP << "</style>" << std::endl;
3285  htmlFileP << "<body>" << std::endl;
3286 
3287  if (sub == 1)
3288  htmlFileP << "<h1> Pedestals for HB, RUN = " << runnumber << " </h1>" << std::endl;
3289  if (sub == 2)
3290  htmlFileP << "<h1> Pedestals for HE, RUN = " << runnumber << " </h1>" << std::endl;
3291  if (sub == 3)
3292  htmlFileP << "<h1> Pedestals for HO, RUN = " << runnumber << " </h1>" << std::endl;
3293  if (sub == 4)
3294  htmlFileP << "<h1> Pedestals for HF, RUN = " << runnumber << " </h1>" << std::endl;
3295  htmlFileP << "<br>" << std::endl;
3296 
3297  // Pedestal:
3298  htmlFileP << "<h2> 1.Pm criterion: Pedestals for each CapID .</h3>" << std::endl;
3299  htmlFileP << "<h3> 1.A. Pedestal distribution over all events, channels for each CapID and all depths.</h3>"
3300  << std::endl;
3301  htmlFileP << "<h4> Legend: Bins less " << Pedest[0][sub] << " correpond to bad Pedestals </h4>" << std::endl;
3302  if (sub == 1)
3303  htmlFileP << " <img src=\"HistPedestalsHB.png\" />" << std::endl;
3304  if (sub == 2)
3305  htmlFileP << " <img src=\"HistPedestalsHE.png\" />" << std::endl;
3306  if (sub == 3)
3307  htmlFileP << " <img src=\"HistPedestalsHO.png\" />" << std::endl;
3308  if (sub == 4)
3309  htmlFileP << " <img src=\"HistPedestalsHF.png\" />" << std::endl;
3310  htmlFileP << "<br>" << std::endl;
3311  htmlFileP << "<h3> 1.B. Rate of channels at very low Pedestals at least in one CapID for each depth.</h3>"
3312  << std::endl;
3313  htmlFileP << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3314  if (sub == 1)
3315  htmlFileP << " <img src=\"MapRatePedHB.png\" />" << std::endl;
3316  if (sub == 2)
3317  htmlFileP << " <img src=\"MapRatePedHE.png\" />" << std::endl;
3318  if (sub == 3)
3319  htmlFileP << " <img src=\"MapRatePedHO.png\" />" << std::endl;
3320  if (sub == 4)
3321  htmlFileP << " <img src=\"MapRatePedHF.png\" />" << std::endl;
3322 
3323  // PedestalWidth:
3324  htmlFileP << "<h2> 2.pWm criterion: Pedestal Widths for each CapID .</h3>" << std::endl;
3325  htmlFileP << "<h3> 2.A. Pedestal Widths distribution over all events, channels for each CapID and all depths.</h3>"
3326  << std::endl;
3327  htmlFileP << "<h4> Legend: Bins less " << Pedest[1][sub] << " correpond to bad Pedestal Widths </h4>" << std::endl;
3328  if (sub == 1)
3329  htmlFileP << " <img src=\"HistPedestalWidthsHB.png\" />" << std::endl;
3330  if (sub == 2)
3331  htmlFileP << " <img src=\"HistPedestalWidthsHE.png\" />" << std::endl;
3332  if (sub == 3)
3333  htmlFileP << " <img src=\"HistPedestalWidthsHO.png\" />" << std::endl;
3334  if (sub == 4)
3335  htmlFileP << " <img src=\"HistPedestalWidthsHF.png\" />" << std::endl;
3336  htmlFileP << "<br>" << std::endl;
3337  htmlFileP << "<h3> 2.B. Rate of channels at very low Pedestal Widths at least in one CapID for each depth.</h3>"
3338  << std::endl;
3339  htmlFileP << "<h4> Channel legend: white - good, other colour - bad. </h4>" << std::endl;
3340  if (sub == 1)
3341  htmlFileP << " <img src=\"MapRatePedWidthsHB.png\" />" << std::endl;
3342  if (sub == 2)
3343  htmlFileP << " <img src=\"MapRatePedWidthsHE.png\" />" << std::endl;
3344  if (sub == 3)
3345  htmlFileP << " <img src=\"MapRatePedWidthsHO.png\" />" << std::endl;
3346  if (sub == 4)
3347  htmlFileP << " <img src=\"MapRatePedWidthsHF.png\" />" << std::endl;
3348 
3349  // Correlations of Pedestal(Width) and fullAmplitude:
3350  htmlFileP << "<h2> 3.Pedestal and pedestalWidths vs Amplitude .</h3>" << std::endl;
3351  htmlFileP << "<h3> 3.A. Correlation of Pedestal(pedestalWidths) and Amplitude over all channels and events .</h3>"
3352  << std::endl;
3353  htmlFileP << "<h4> Legend: colour - entries </h4>" << std::endl;
3354  if (sub == 1)
3355  htmlFileP << "<img src=\"CorrelationsMapPedestalVsfullAmplitudeHB.png\" />" << std::endl;
3356  if (sub == 2)
3357  htmlFileP << "<img src=\"CorrelationsMapPedestalVsfullAmplitudeHE.png\" />" << std::endl;
3358  if (sub == 3)
3359  htmlFileP << "<img src=\"CorrelationsMapPedestalVsfullAmplitudeHO.png\" />" << std::endl;
3360  if (sub == 4)
3361  htmlFileP << "<img src=\"CorrelationsMapPedestalVsfullAmplitudeHF.png\" />" << std::endl;
3362  htmlFileP << "<br>" << std::endl;
3363 
3364  // TSs Shapes:
3365 
3366  htmlFileS << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
3367  htmlFileS << "<head>" << std::endl;
3368  htmlFileS << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
3369  htmlFileS << "<title> Remote Monitoring Tool Global</title>" << std::endl;
3370  htmlFileS << "<style type=\"text/css\">" << std::endl;
3371  htmlFileS << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
3372  << std::endl;
3373  htmlFileS << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
3374  htmlFileS << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
3375  "text-align: center;}"
3376  << std::endl;
3377  htmlFileS << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
3378  htmlFileS << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
3379  htmlFileS << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
3380  htmlFileS << "</style>" << std::endl;
3381  htmlFileS << "<body>" << std::endl;
3382 
3383  if (sub == 1)
3384  htmlFileS << "<h1> ADC Shape for HB, RUN = " << runnumber << " </h1>" << std::endl;
3385  if (sub == 2)
3386  htmlFileS << "<h1> ADC Shape for HE, RUN = " << runnumber << " </h1>" << std::endl;
3387  if (sub == 3)
3388  htmlFileS << "<h1> ADC Shape for HO, RUN = " << runnumber << " </h1>" << std::endl;
3389  if (sub == 4)
3390  htmlFileS << "<h1> ADC Shape for HF, RUN = " << runnumber << " </h1>" << std::endl;
3391  htmlFileP << "<br>" << std::endl;
3392 
3393  htmlFileS << "<h2> 1.Mean ADC Shape </h3>" << std::endl;
3394  htmlFileS << "<h3> 1.A. ADC shape averaged over all good channels, depth and events.</h3>" << std::endl;
3395  // htmlFileS << "<h4> Legend: Bins less "<<Pedest[0][sub]<<" correpond to bad Pedestals </h4>"<< std::endl;
3396  if (sub == 1)
3397  htmlFileS << " <img src=\"HistGoodTSshapesHB.png\" />" << std::endl;
3398  if (sub == 2)
3399  htmlFileS << " <img src=\"HistGoodTSshapesHE.png\" />" << std::endl;
3400  if (sub == 3)
3401  htmlFileS << " <img src=\"HistGoodTSshapesHO.png\" />" << std::endl;
3402  if (sub == 4)
3403  htmlFileS << " <img src=\"HistGoodTSshapesHF.png\" />" << std::endl;
3404  htmlFileS << "<br>" << std::endl;
3405  htmlFileS << "<h3> 1.B. ADC shape averaged over all bad channels, depth and events. Bad channels are selected by 5 "
3406  "criteria: CapId, A, W, P, Pw</h3>"
3407  << std::endl;
3408  // htmlFileS << "<h4> Channel legend: white - good, other colour - bad. </h4>"<< std::endl;
3409  if (sub == 1)
3410  htmlFileS << " <img src=\"HistBadTSshapesHB.png\" />" << std::endl;
3411  if (sub == 2)
3412  htmlFileS << " <img src=\"HistBadTSshapesHE.png\" />" << std::endl;
3413  if (sub == 3)
3414  htmlFileS << " <img src=\"HistBadTSshapesHO.png\" />" << std::endl;
3415  if (sub == 4)
3416  htmlFileS << " <img src=\"HistBadTSshapesHF.png\" />" << std::endl;
3417 
3418  htmlFileS << "<h2> 2. ADC in Time Slice </h3>" << std::endl;
3419  htmlFileS << "<h3> 2.A. ADC counts histogrammed over all channels, depth and events.</h3>" << std::endl;
3420  // htmlFileS << "<h4> Legend: Bins less "<<Pedest[0][sub]<<" correpond to bad Pedestals </h4>"<< std::endl;
3421  if (sub == 1)
3422  htmlFileS << " <img src=\"Hist_ADC_HB_All.png\" />" << std::endl;
3423  if (sub == 2)
3424  htmlFileS << " <img src=\"Hist_ADC_HE_All.png\" />" << std::endl;
3425  if (sub == 3)
3426  htmlFileS << " <img src=\"Hist_ADC_HO_All.png\" />" << std::endl;
3427  if (sub == 4)
3428  htmlFileS << " <img src=\"Hist_ADC_HF_All.png\" />" << std::endl;
3429  htmlFileS << "<br>" << std::endl;
3430  htmlFileS << "<h3> 2.B. ADC counts histogrammed over all channels and events for each depth separately. </h3>"
3431  << std::endl;
3432  // htmlFileS << "<h4> Channel legend: white - good, other colour - bad. </h4>"<< std::endl;
3433  if (sub == 1)
3434  htmlFileS << " <img src=\"Hist_ADC_HB_DS.png\" />" << std::endl;
3435  if (sub == 2)
3436  htmlFileS << " <img src=\"Hist_ADC_HE_DS.png\" />" << std::endl;
3437  if (sub == 3)
3438  htmlFileS << " <img src=\"Hist_ADC_HO_DS.png\" />" << std::endl;
3439  if (sub == 4)
3440  htmlFileS << " <img src=\"Hist_ADC_HF_DS.png\" />" << std::endl;
3441 
3442  htmlFileS << "<h2> 3. ADC Sum in Time Slice </h3>" << std::endl;
3443  htmlFileS << "<h3> 3.A. ADC Sum over all channels histogrammed over all events for each depth separately. </h3>"
3444  << std::endl;
3445  // htmlFileS << "<h4> Channel legend: white - good, other colour - bad. </h4>"<< std::endl;
3446  if (sub == 1)
3447  htmlFileS << " <img src=\"Hist_SumADC_HB.png\" />" << std::endl;
3448  if (sub == 2)
3449  htmlFileS << " <img src=\"Hist_SumADC_HE.png\" />" << std::endl;
3450  if (sub == 3)
3451  htmlFileS << " <img src=\"Hist_SumADC_HO.png\" />" << std::endl;
3452  if (sub == 4)
3453  htmlFileS << " <img src=\"Hist_SumADC_HF.png\" />" << std::endl;
3454 
3455  htmlFileS << "<h3> 3.B. ADC Sum over all channels histogrammed over all events for each depth separately. </h3>"
3456  << std::endl;
3457  // htmlFileS << "<h4> Channel legend: white - good, other colour - bad. </h4>"<< std::endl;
3458  if (sub == 1)
3459  htmlFileS << " <img src=\"Hist_SumADC_HB0.png\" />" << std::endl;
3460  if (sub == 2)
3461  htmlFileS << " <img src=\"Hist_SumADC_HE0.png\" />" << std::endl;
3462  if (sub == 3)
3463  htmlFileS << " <img src=\"Hist_SumADC_HO0.png\" />" << std::endl;
3464  if (sub == 4)
3465  htmlFileS << " <img src=\"Hist_SumADC_HF0.png\" />" << std::endl;
3466 
3467  htmlFileS << "<h3> 3.C. ADC Sum over all channels histogrammed over all events for each depth separately. </h3>"
3468  << std::endl;
3469  // htmlFileS << "<h4> Channel legend: white - good, other colour - bad. </h4>"<< std::endl;
3470  if (sub == 1)
3471  htmlFileS << " <img src=\"Hist_SumADC_HB1.png\" />" << std::endl;
3472  if (sub == 2)
3473  htmlFileS << " <img src=\"Hist_SumADC_HE1.png\" />" << std::endl;
3474  if (sub == 3)
3475  htmlFileS << " <img src=\"Hist_SumADC_HO1.png\" />" << std::endl;
3476  if (sub == 4)
3477  htmlFileS << " <img src=\"Hist_SumADC_HF1.png\" />" << std::endl;
3478 
3479  htmlFileS.close();
3480  } // end sub
3481 
3482  //======================================================================
3483 
3484  //======================================================================
3485  // Creating subdet html pages:
3486 
3487  for (int sub = 1; sub <= 4; sub++) { //Subdetector: 1-HB, 2-HE, 3-HO, 4-HF
3488  ofstream htmlFile;
3489  if (sub == 1)
3490  htmlFile.open("HB.html");
3491  if (sub == 2)
3492  htmlFile.open("HE.html");
3493  if (sub == 3)
3494  htmlFile.open("HO.html");
3495  if (sub == 4)
3496  htmlFile.open("HF.html");
3497 
3498  htmlFile << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
3499  htmlFile << "<head>" << std::endl;
3500  htmlFile << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
3501  htmlFile << "<title> Remote Monitoring Tool </title>" << std::endl;
3502  htmlFile << "<style type=\"text/css\">" << std::endl;
3503  htmlFile << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
3504  << std::endl;
3505  htmlFile << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
3506  htmlFile << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
3507  "text-align: center;}"
3508  << std::endl;
3509  htmlFile << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
3510  htmlFile << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
3511  htmlFile << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
3512  htmlFile << " td.s5 { font-family: arial, arial ce, helvetica; background-color: #FF00FF; }" << std::endl;
3513  htmlFile << " td.s6 { font-family: arial, arial ce, helvetica; background-color: #9ACD32; }" << std::endl;
3514  htmlFile << " td.s7 { font-family: arial, arial ce, helvetica; background-color: #32CD32; }" << std::endl;
3515  htmlFile << " td.s8 { font-family: arial, arial ce, helvetica; background-color: #00FFFF; }" << std::endl;
3516  htmlFile << " td.s9 { font-family: arial, arial ce, helvetica; background-color: #FFE4E1; }" << std::endl;
3517  htmlFile << " td.s10 { font-family: arial, arial ce, helvetica; background-color: #A0522D; }" << std::endl;
3518  htmlFile << " td.s11 { font-family: arial, arial ce, helvetica; background-color: #1E90FF; }" << std::endl;
3519  htmlFile << " td.s12 { font-family: arial, arial ce, helvetica; background-color: #00BFFF; }" << std::endl;
3520  htmlFile << " td.s13 { font-family: arial, arial ce, helvetica; background-color: #FFFF00; }" << std::endl;
3521  htmlFile << " td.s14 { font-family: arial, arial ce, helvetica; background-color: #B8860B; }" << std::endl;
3522  htmlFile << "</style>" << std::endl;
3523  htmlFile << "<body>" << std::endl;
3524  if (sub == 1)
3525  htmlFile << "<h1> HCAL BARREL, RUN = " << runnumber << " </h1>" << std::endl;
3526  if (sub == 2)
3527  htmlFile << "<h1> HCAL ENDCAP, RUN = " << runnumber << " </h1>" << std::endl;
3528  if (sub == 3)
3529  htmlFile << "<h1> HCAL OUTER, RUN = " << runnumber << " </h1>" << std::endl;
3530  if (sub == 4)
3531  htmlFile << "<h1> HCAL FORWARD, RUN = " << runnumber << " </h1>" << std::endl;
3532  htmlFile << "<br>" << std::endl;
3533 
3534  htmlFile << "<a name=\"Top\"></a>\n";
3535  htmlFile << "<b>Contents:<br>\n";
3536  htmlFile << "1. <a href=\"#AnalysisResults\">Analysis results</a><br>\n";
3537  htmlFile << "2. <a href=\"#Status\">Status</a><br>\n";
3538  htmlFile << "2A. <a href=\"#ChannelMap\">Channel map</a><br>\n";
3539  // htmlFile << "2B. <a href=\"#BadChannels\">List of bad channels</a><br>\n";
3540  // htmlFile << "2C. <a href=\"#BadPedestals\">List of channels with bad pedestals</a><br>\n";
3541 
3542  htmlFile << "<a name=\"AnalysisResults\"></a>\n";
3543  if (sub == 1)
3544  htmlFile << "<h2> 1. Analysis results for HB</h2>" << std::endl;
3545  if (sub == 2)
3546  htmlFile << "<h2> 1. Analysis results for HE</h2>" << std::endl;
3547  if (sub == 3)
3548  htmlFile << "<h2> 1. Analysis results for HO</h2>" << std::endl;
3549  if (sub == 4)
3550  htmlFile << "<h2> 1. Analysis results for HF</h2>" << std::endl;
3551  htmlFile << "<table width=\"400\">" << std::endl;
3552  htmlFile << "<tr>" << std::endl;
3553 
3554  if (sub == 1) {
3555  // AZ 12.03.2019
3556  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3557  << runnumber << "/HB_Tile.html\">Megatile Channels</a></td>" << std::endl;
3558  // htmlFile << " <td><a href=\"HB_Tile.html\">Megatile Channels</a></td>"<< std::endl;
3559 
3560  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HB_Calib.html\">Calibration Channels</a></td>"<< std::endl;
3561  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HB_Drift.html\">Gain Stability</a></td>"<< std::endl;
3562  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3563  << runnumber << "/HB_Pedestals.html\">Pedestals</a></td>" << std::endl;
3564  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3565  << runnumber << "/HB_Shapes.html\">ADC Shapes</a></td>" << std::endl;
3566  }
3567  if (sub == 2) {
3568  // AZ 12.03.2019
3569  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3570  << runnumber << "/HE_Tile.html\">Megatile Channels</a></td>" << std::endl;
3571  // htmlFile << " <td><a href=\"HE_Tile.html\">Megatile Channels</a></td>"<< std::endl;
3572 
3573  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HE_Calib.html\">Calibration Channels</a></td>"<< std::endl;
3574  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HE_Drift.html\">Gain Stability</a></td>"<< std::endl;
3575  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3576  << runnumber << "/HE_Pedestals.html\">Pedestals</a></td>" << std::endl;
3577  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3578  << runnumber << "/HE_Shapes.html\">ADC Shapes</a></td>" << std::endl;
3579  }
3580  if (sub == 3) {
3581  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3582  << runnumber << "/HO_Tile.html\">Megatile Channels</a></td>" << std::endl;
3583  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HO_Calib.html\">Calibration Channels</a></td>"<< std::endl;
3584  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HO_Drift.html\">Gain Stability</a></td>"<< std::endl;
3585  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3586  << runnumber << "/HO_Pedestals.html\">Pedestals</a></td>" << std::endl;
3587  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3588  << runnumber << "/HO_Shapes.html\">ADC Shapes</a></td>" << std::endl;
3589  }
3590  if (sub == 4) {
3591  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3592  << runnumber << "/HF_Tile.html\">Megatile Channels</a></td>" << std::endl;
3593  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HF_Calib.html\">Calibration Channels</a></td>"<< std::endl;
3594  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HF_Drift.html\">Gain Stability</a></td>"<< std::endl;
3595  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3596  << runnumber << "/HF_Pedestals.html\">Pedestals</a></td>" << std::endl;
3597  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
3598  << runnumber << "/HF_Shapes.html\">ADC Shapes</a></td>" << std::endl;
3599  }
3600 
3601  htmlFile << "</tr>" << std::endl;
3602  htmlFile << "</table>" << std::endl;
3603  htmlFile << "<br>" << std::endl;
3604 
3605  htmlFile << "<a name=\"Status\"></a>\n";
3606  if (sub == 1)
3607  htmlFile << "<h2> 2.Status HB over all criteria </h2>" << std::endl;
3608  if (sub == 2)
3609  htmlFile << "<h2> 2.Status HE over all criteria </h2>" << std::endl;
3610  if (sub == 3)
3611  htmlFile << "<h2> 2.Status HO over all criteria </h2>" << std::endl;
3612  if (sub == 4)
3613  htmlFile << "<h2> 2.Status HF over all criteria </h2>" << std::endl;
3614 
3615  htmlFile << "<a name=\"ChannelMap\"></a>\n";
3616  htmlFile << "<h3> 2.A.Channel map for each Depth </h3>" << std::endl;
3617  htmlFile << "<h4> Channel legend: green - good, not yellow - suspicious(rate of failures at least 0.1), white - "
3618  "not applicable or out of range </h4>"
3619  << std::endl;
3620  if (sub == 1)
3621  htmlFile << " <img src=\"MAPHB.png\" />" << std::endl;
3622  if (sub == 2)
3623  htmlFile << " <img src=\"MAPHE.png\" />" << std::endl;
3624  if (sub == 3)
3625  htmlFile << " <img src=\"MAPHO.png\" />" << std::endl;
3626  if (sub == 4)
3627  htmlFile << " <img src=\"MAPHF.png\" />" << std::endl;
3628  htmlFile << "<br>" << std::endl;
3629  htmlFile << "<a href=\"#Top\">to top</a><br>\n";
3630 
3632  /*
3633 // htmlFile << "<h3> 2.B.List of Bad channels (rate > 0.1) and its rates for each RMT criteria (for GS - %) </h3>"<< std::endl;
3634 
3635  htmlFile << "<a name=\"BadChannels\"></a>\n";
3636  htmlFile << "<h3> 2.B.List of Bad channels (rate > 0.1) and its rates for each RMT criteria </h3>"<< std::endl;
3637 
3638  //htmlFile << " <td><a href=\"HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
3639  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
3640  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
3641 
3642  htmlFile << "<table>"<< std::endl;
3643  htmlFile << "<tr>";
3644  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
3645  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
3646  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
3647  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
3648  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
3649  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
3650  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
3651  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
3652  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
3653  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
3654  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
3655  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
3656  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
3657  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
3658  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
3659  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
3660  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
3661  htmlFile << "<td class=\"s5\" align=\"center\">Cm</td>" << std::endl;
3662  htmlFile << "<td class=\"s5\" align=\"center\">Am</td>" << std::endl;
3663  htmlFile << "<td class=\"s5\" align=\"center\">Wm</td>" << std::endl;
3664  htmlFile << "<td class=\"s5\" align=\"center\">Rm</td>" << std::endl;
3665  htmlFile << "<td class=\"s5\" align=\"center\">TNm</td>" << std::endl;
3666  htmlFile << "<td class=\"s5\" align=\"center\">TXm</td>" << std::endl;
3667 // htmlFile << "<td class=\"s8\" align=\"center\">Cc</td>" << std::endl;
3668 // htmlFile << "<td class=\"s8\" align=\"center\">Ac</td>" << std::endl;
3669 // htmlFile << "<td class=\"s8\" align=\"center\">Wc</td>" << std::endl;
3670 // htmlFile << "<td class=\"s8\" align=\"center\">Rc</td>" << std::endl;
3671 // htmlFile << "<td class=\"s8\" align=\"center\">TNc</td>" << std::endl;
3672 // htmlFile << "<td class=\"s8\" align=\"center\">TXc</td>" << std::endl;
3673 // htmlFile << "<td class=\"s9\" align=\"center\">GS (%)</td>" << std::endl;
3674  htmlFile << "<td class=\"s4\" align=\"center\">Pm</td>" << std::endl;
3675  htmlFile << "<td class=\"s4\" align=\"center\">pWm</td>" << std::endl;
3676  htmlFile << "</tr>" << std::endl;
3677 
3678  for (int i=1;i<=NBad;i++) {
3679  if((ind%2)==1){
3680  raw_class="<td class=\"s2\" align=\"center\">";
3681  raw_class1="<td class=\"s6\" align=\"center\">";
3682  raw_class2="<td class=\"s11\" align=\"center\">";
3683  raw_class3="<td class=\"s13\" align=\"center\">";
3684 
3685  }else{
3686  raw_class="<td class=\"s3\" align=\"center\">";
3687  raw_class1="<td class=\"s7\" align=\"center\">";
3688  raw_class2="<td class=\"s12\" align=\"center\">";
3689  raw_class3="<td class=\"s14\" align=\"center\">";
3690  }
3691  const CellDB db;
3692  CellDB ce;
3693  if ((ce.size()>=1)&&(Sub[2][i]==sub)) {
3694  // AZ 19.03.2018
3695 
3696 // AZ 19 if (Sub[2][i]==1) {
3697 // AZ 19 ce = db.find("subdet", "HB").find("Eta", Eta[2][i]).find("Phi", Phi[2][i]).find("Depth", Depth[2][i]);
3698 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HB, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl; continue;}
3699 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HB, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;}
3700 // AZ 19 }
3701 // AZ 19 if (Sub[2][i]==2) {
3702 // AZ 19 ce = db.find("subdet", "HE").find("Eta", Eta[2][i]).find("Phi", Phi[2][i]).find("Depth", Depth[2][i]);
3703 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HE, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;continue;}
3704 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HE, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;}
3705 // AZ 19 }
3706 // AZ 19 if (Sub[2][i]==3) {
3707 // AZ 19 ce = db.find("subdet", "HO").find("Eta", Eta[2][i]).find("Phi", Phi[2][i]).find("Depth", Depth[2][i]);
3708 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HO, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;continue;}
3709 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HO, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;}
3710 // AZ 19 }
3711 // AZ 19 if (Sub[2][i]==4) {
3712 // AZ 19 ce = db.find("subdet", "HF").find("Eta", Eta[2][i]).find("Phi", Phi[2][i]).find("Depth", Depth[2][i]);
3713 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HF, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;continue;}
3714 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HF, Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;}
3715 // AZ 19 }
3716 
3717  htmlFile << "<tr>"<< std::endl;
3718  htmlFile << "<td class=\"s4\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
3719  htmlFile << raw_class<< Eta[2][i]<<"</td>"<< std::endl;
3720  htmlFile << raw_class<< Phi[2][i]<<"</td>"<< std::endl;
3721  htmlFile << raw_class<< Depth[2][i] <<"</td>"<< std::endl;
3722  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
3723  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
3724  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
3725  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
3726  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
3727  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
3728  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
3729  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
3730  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
3731  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
3732  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
3733  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
3734  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
3735  htmlFile << raw_class1<< Map_Ampl[1][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3736  htmlFile << raw_class1<< Map_Ampl[2][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3737  htmlFile << raw_class1<< Map_Ampl[3][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3738  htmlFile << raw_class1<< Map_Ampl[4][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3739  htmlFile << raw_class1<< Map_Ampl[5][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3740  htmlFile << raw_class1<< Map_Ampl[6][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3741 // htmlFile << raw_class2<< Map_Ampl[11][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3742 // htmlFile << raw_class2<< Map_Ampl[12][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3743 // htmlFile << raw_class2<< Map_Ampl[13][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3744 // htmlFile << raw_class2<< Map_Ampl[14][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3745 // htmlFile << raw_class2<< Map_Ampl[15][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3746 // htmlFile << raw_class2<< Map_Ampl[16][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3747 // htmlFile << raw_class3<< Map_Ampl[21][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3748  htmlFile << raw_class<< Map_Ampl[31][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3749  htmlFile << raw_class<< Map_Ampl[32][Sub[2][i]][Depth[2][i]]->GetBinContent(Eta[2][i]+41,Phi[2][i]+1)<<"</td>"<< std::endl;
3750  htmlFile << "</tr>" << std::endl;
3751 
3752  ind+=1;
3753  }
3754  }
3755  htmlFile << "</table>" << std::endl;
3756  htmlFile << "<br>"<< std::endl;
3757  htmlFile << "<a href=\"#Top\">to top</a><br>\n";
3758 
3759 
3760  htmlFile << "<h3> 2.C.List of Gain unstable channels and its value in % (for other criterias - rate)</h3>"<< std::endl;
3761  htmlFile << "<table>"<< std::endl;
3762  htmlFile << "<tr>";
3763  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
3764  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
3765  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
3766  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
3767  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
3768  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
3769  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
3770  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
3771  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
3772  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
3773  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
3774  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
3775  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
3776  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
3777  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
3778  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
3779  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
3780  htmlFile << "<td class=\"s5\" align=\"center\">Cm</td>" << std::endl;
3781  htmlFile << "<td class=\"s5\" align=\"center\">Am</td>" << std::endl;
3782  htmlFile << "<td class=\"s5\" align=\"center\">Wm</td>" << std::endl;
3783  htmlFile << "<td class=\"s5\" align=\"center\">Rm</td>" << std::endl;
3784  htmlFile << "<td class=\"s5\" align=\"center\">TNm</td>" << std::endl;
3785  htmlFile << "<td class=\"s5\" align=\"center\">TXm</td>" << std::endl;
3786 // htmlFile << "<td class=\"s8\" align=\"center\">Cc</td>" << std::endl;
3787 // htmlFile << "<td class=\"s8\" align=\"center\">Ac</td>" << std::endl;
3788 // htmlFile << "<td class=\"s8\" align=\"center\">Wc</td>" << std::endl;
3789 // htmlFile << "<td class=\"s8\" align=\"center\">Rc</td>" << std::endl;
3790 // htmlFile << "<td class=\"s8\" align=\"center\">TNc</td>" << std::endl;
3791 // htmlFile << "<td class=\"s8\" align=\"center\">TXc</td>" << std::endl;
3792 // htmlFile << "<td class=\"s9\" align=\"center\">GS(%)</td>" << std::endl;
3793  htmlFile << "<td class=\"s4\" align=\"center\">Pm</td>" << std::endl;
3794  htmlFile << "<td class=\"s4\" align=\"center\">pWm</td>" << std::endl;
3795  htmlFile << "</tr>" << std::endl;
3796 
3797  for (int i=1;i<=NWarn;i++) {
3798  if((ind%2)==1){
3799  raw_class="<td class=\"s2\" align=\"center\">";
3800  raw_class1="<td class=\"s6\" align=\"center\">";
3801  raw_class2="<td class=\"s11\" align=\"center\">";
3802  raw_class3="<td class=\"s13\" align=\"center\">";
3803 
3804  }else{
3805  raw_class="<td class=\"s3\" align=\"center\">";
3806  raw_class1="<td class=\"s7\" align=\"center\">";
3807  raw_class2="<td class=\"s12\" align=\"center\">";
3808  raw_class3="<td class=\"s14\" align=\"center\">";
3809  }
3810  const CellDB db;
3811  CellDB ce;
3812  if ((ce.size()>=1)&&(Sub[1][i]==sub)) {
3813  if (Sub[1][i]==1) {
3814  ce = db.find("subdet", "HB").find("Eta", Eta[1][i]).find("Phi", Phi[1][i]).find("Depth", Depth[1][i]);
3815  if (ce.size()==0) {cout<<"Error: No such HB, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3816  else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HB, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3817  }
3818  if (Sub[1][i]==2) {
3819  ce = db.find("subdet", "HE").find("Eta", Eta[1][i]).find("Phi", Phi[1][i]).find("Depth", Depth[1][i]);
3820  if (ce.size()==0) {cout<<"Error: No such HE, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3821  else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HE, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3822  }
3823  if (Sub[1][i]==3) {
3824  ce = db.find("subdet", "HO").find("Eta", Eta[1][i]).find("Phi", Phi[1][i]).find("Depth", Depth[1][i]);
3825  if (ce.size()==0) {cout<<"Error: No such HO, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3826  else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HO, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3827  }
3828  if (Sub[1][i]==4) {
3829  ce = db.find("subdet", "HF").find("Eta", Eta[1][i]).find("Phi", Phi[1][i]).find("Depth", Depth[1][i]);
3830  if (ce.size()==0) {cout<<"Error: No such HF, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3831  else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HF, Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
3832  }
3833  htmlFile << "<td class=\"s4\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
3834  htmlFile << raw_class<< Eta[1][i]<<"</td>"<< std::endl;
3835  htmlFile << raw_class<< Phi[1][i]<<"</td>"<< std::endl;
3836  htmlFile << raw_class<< Depth[1][i] <<"</td>"<< std::endl;
3837  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
3838  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
3839  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
3840  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
3841  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
3842  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
3843  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
3844  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
3845  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
3846  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
3847  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
3848  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
3849  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
3850  htmlFile << raw_class1<< Map_Ampl[1][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3851  htmlFile << raw_class1<< Map_Ampl[2][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3852  htmlFile << raw_class1<< Map_Ampl[3][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3853  htmlFile << raw_class1<< Map_Ampl[4][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3854  htmlFile << raw_class1<< Map_Ampl[5][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3855  htmlFile << raw_class1<< Map_Ampl[6][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3856 // htmlFile << raw_class2<< Map_Ampl[11][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3857 // htmlFile << raw_class2<< Map_Ampl[12][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3858 // htmlFile << raw_class2<< Map_Ampl[13][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3859 // htmlFile << raw_class2<< Map_Ampl[14][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3860 // htmlFile << raw_class2<< Map_Ampl[15][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3861 // htmlFile << raw_class2<< Map_Ampl[16][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3862 // htmlFile << raw_class3<< Map_Ampl[21][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3863  htmlFile << raw_class<< Map_Ampl[31][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3864  htmlFile << raw_class<< Map_Ampl[32][Sub[1][i]][Depth[1][i]]->GetBinContent(Eta[1][i]+41,Phi[1][i]+1)<<"</td>"<< std::endl;
3865  htmlFile << "</tr>" << std::endl;
3866  htmlFile << "</tr>" << std::endl;
3867  ind+=1;
3868  }
3869  }
3870  htmlFile << "</table>" << std::endl;
3871  htmlFile << "<br>"<< std::endl;
3872 
3873 
3874 // htmlFile << "<h3> 2.D.List of channels with Bad Pedestals (rate > 0.1) and its rates (for GS - %)</h3>"<< std::endl;
3875  htmlFile << "<a name=\"BadPedestals\"></a>\n";
3876  htmlFile << "<h3> 2.C.List of channels with Bad Pedestals (rate > 0.1) and its rates </h3>"<< std::endl;
3877  htmlFile << "<table>"<< std::endl;
3878  htmlFile << "<tr>";
3879  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
3880  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
3881  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
3882  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
3883  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
3884  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
3885  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
3886  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
3887  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
3888  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
3889  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
3890  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
3891  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
3892  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
3893  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
3894  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
3895  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
3896  htmlFile << "<td class=\"s5\" align=\"center\">Cm</td>" << std::endl;
3897  htmlFile << "<td class=\"s5\" align=\"center\">Am</td>" << std::endl;
3898  htmlFile << "<td class=\"s5\" align=\"center\">Wm</td>" << std::endl;
3899  htmlFile << "<td class=\"s5\" align=\"center\">Rm</td>" << std::endl;
3900  htmlFile << "<td class=\"s5\" align=\"center\">TNm</td>" << std::endl;
3901  htmlFile << "<td class=\"s5\" align=\"center\">TXm</td>" << std::endl;
3902 // htmlFile << "<td class=\"s8\" align=\"center\">Cc</td>" << std::endl;
3903 // htmlFile << "<td class=\"s8\" align=\"center\">Ac</td>" << std::endl;
3904 // htmlFile << "<td class=\"s8\" align=\"center\">Wc</td>" << std::endl;
3905 // htmlFile << "<td class=\"s8\" align=\"center\">Rc</td>" << std::endl;
3906 // htmlFile << "<td class=\"s8\" align=\"center\">TNc</td>" << std::endl;
3907 // htmlFile << "<td class=\"s8\" align=\"center\">TXc</td>" << std::endl;
3908 // htmlFile << "<td class=\"s9\" align=\"center\">GS(%)</td>" << std::endl;
3909  htmlFile << "<td class=\"s4\" align=\"center\">Pm</td>" << std::endl;
3910  htmlFile << "<td class=\"s4\" align=\"center\">pWm</td>" << std::endl;
3911  htmlFile << "</tr>" << std::endl;
3912 
3913  for (int i=1;i<=NPed;i++) {
3914  if((ind%2)==1){
3915  raw_class="<td class=\"s2\" align=\"center\">";
3916  raw_class1="<td class=\"s6\" align=\"center\">";
3917  raw_class2="<td class=\"s11\" align=\"center\">";
3918  raw_class3="<td class=\"s13\" align=\"center\">";
3919 
3920  }else{
3921  raw_class="<td class=\"s3\" align=\"center\">";
3922  raw_class1="<td class=\"s7\" align=\"center\">";
3923  raw_class2="<td class=\"s12\" align=\"center\">";
3924  raw_class3="<td class=\"s14\" align=\"center\">";
3925  }
3926  const CellDB db;
3927  CellDB ce;
3928  if ((ce.size()>=1)&&(Sub[3][i]==sub)) {
3929 
3930  // AZ 19.03.2018
3931 // AZ 19 if (Sub[3][i]==1) {
3932 // AZ 19 ce = db.find("subdet", "HB").find("Eta", Eta[3][i]).find("Phi", Phi[3][i]).find("Depth", Depth[3][i]);
3933 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HB, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;continue;}
3934 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HB, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;}
3935 // AZ 19 }
3936 // AZ 19 if (Sub[3][i]==2) {
3937 // AZ 19 ce = db.find("subdet", "HE").find("Eta", Eta[3][i]).find("Phi", Phi[3][i]).find("Depth", Depth[3][i]);
3938 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HE, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;continue;}
3939 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HE, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;}
3940 // AZ 19 }
3941 // AZ 19 if (Sub[3][i]==3) {
3942 // AZ 19 ce = db.find("subdet", "HO").find("Eta", Eta[3][i]).find("Phi", Phi[3][i]).find("Depth", Depth[3][i]);
3943 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HO, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;continue;}
3944 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HO, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;}
3945 // AZ 19 }
3946 // AZ 19 if (Sub[3][i]==4) {
3947 // AZ 19 ce = db.find("subdet", "HF").find("Eta", Eta[3][i]).find("Phi", Phi[3][i]).find("Depth", Depth[3][i]);
3948 // AZ 19 if (ce.size()==0) {cout<<"Error: No such HF, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;continue;}
3949 // AZ 19 else if (ce.size()>1) {cout<<"Warning: More than one line correspond to such HF, Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;}
3950 // AZ 19 }
3951 
3952  htmlFile << "<td class=\"s4\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
3953  htmlFile << raw_class<< Eta[3][i]<<"</td>"<< std::endl;
3954  htmlFile << raw_class<< Phi[3][i]<<"</td>"<< std::endl;
3955  htmlFile << raw_class<< Depth[3][i] <<"</td>"<< std::endl;
3956  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
3957  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
3958  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
3959  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
3960  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
3961  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
3962  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
3963  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
3964  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
3965  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
3966  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
3967  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
3968  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
3969  htmlFile << raw_class1<< Map_Ampl[1][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3970  htmlFile << raw_class1<< Map_Ampl[2][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3971  htmlFile << raw_class1<< Map_Ampl[3][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3972  htmlFile << raw_class1<< Map_Ampl[4][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3973  htmlFile << raw_class1<< Map_Ampl[5][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3974  htmlFile << raw_class1<< Map_Ampl[6][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3975 // htmlFile << raw_class2<< Map_Ampl[11][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3976 // htmlFile << raw_class2<< Map_Ampl[12][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3977 // htmlFile << raw_class2<< Map_Ampl[13][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3978 // htmlFile << raw_class2<< Map_Ampl[14][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3979 // htmlFile << raw_class2<< Map_Ampl[15][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3980 // htmlFile << raw_class2<< Map_Ampl[16][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3981 // htmlFile << raw_class3<< Map_Ampl[21][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3982  htmlFile << raw_class<< Map_Ampl[31][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3983  htmlFile << raw_class<< Map_Ampl[32][Sub[3][i]][Depth[3][i]]->GetBinContent(Eta[3][i]+41,Phi[3][i]+1)<<"</td>"<< std::endl;
3984  htmlFile << "</tr>" << std::endl;
3985  htmlFile << "</tr>" << std::endl;
3986  ind+=1;
3987  }
3988  }
3989  htmlFile << "</table><br>" << std::endl;
3990  htmlFile << "<a href=\"#Top\">to top</a><br>\n";
3991 */
3993 
3994  htmlFile << "</body> " << std::endl;
3995  htmlFile << "</html> " << std::endl;
3996  htmlFile.close();
3997  }
3998 
3999  //======================================================================
4000  // Creating description html file:
4001  ofstream htmlFile;
4002 
4003  //======================================================================
4004  /*
4005  htmlFile.open("HELP.html");
4006  htmlFile << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< std::endl;
4007  htmlFile << "<head>"<< std::endl;
4008  htmlFile << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
4009  htmlFile << "<title> Remote Monitoring Tool </title>"<< std::endl;
4010  htmlFile << "<style type=\"text/css\">"<< std::endl;
4011  htmlFile << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
4012  htmlFile << " td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
4013  htmlFile << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
4014  htmlFile << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
4015  htmlFile << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
4016  htmlFile << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
4017  htmlFile << "</style>"<< std::endl;
4018  htmlFile << "<body>"<< std::endl;
4019  htmlFile << "<h1> Description of Remote Monitoring Tool criteria for bad channel selection</h1>"<< std::endl;
4020  htmlFile << "<br>"<< std::endl;
4021  htmlFile << "<h3> - C means CAPID Errors assuming we inspect CAPID non-rotation,error & validation bits, and for this criterion - no need to apply any cuts to select bcs.</h3> "<< std::endl;
4022  htmlFile << "<br>"<< std::endl;
4023  htmlFile << "<h3> - A means full amplitude, collected over all time slices </h3> "<< std::endl;
4024  htmlFile << "<h3> - R means ratio criterion where we define as a bad, the channels, for which the signal portion in 4 middle TSs(plus one, minus two around TS with maximal amplitude) is out of some range of reasonable values </h3> "<< std::endl;
4025  htmlFile << "<br>"<< std::endl;
4026  htmlFile << "<h3> - W means width of shape distribution. Width is defined as square root from dispersion. </h3> "<< std::endl;
4027  htmlFile << "<br>"<< std::endl;
4028  htmlFile << "<h3> - TN means mean time position of adc signal. </h3> "<< std::endl;
4029  htmlFile << "<br>"<< std::endl;
4030  htmlFile << "<h3> - TX means TS number of maximum signal </h3> "<< std::endl;
4031  htmlFile << "<br>"<< std::endl;
4032  htmlFile << "<h3> - m means megatile channels. For example Am means Amplitude criteria for megatile channels </h3> "<< std::endl;
4033  htmlFile << "<br>"<< std::endl;
4034  htmlFile << "<h3> - c means calibration channels. For example Ac means Amplitude criteria for calibration channels </h3> "<< std::endl;
4035  htmlFile << "<br>"<< std::endl;
4036  htmlFile << "<h3> - Pm means Pedestals. </h3> "<< std::endl;
4037  htmlFile << "<br>"<< std::endl;
4038  htmlFile << "<h3> - pWm means pedestal Width. </h3> "<< std::endl;
4039  htmlFile << "<br>"<< std::endl;
4040  htmlFile << "</body> " << std::endl;
4041  htmlFile << "</html> " << std::endl;
4042  htmlFile.close();
4043 */
4044  //======================================================================
4045 
4046  //======================================================================
4047  // Creating main html file:
4048  htmlFile.open("MAP.html");
4049  htmlFile << "</html><html xmlns=\"http://www.w3.org/1999/xhtml\">" << std::endl;
4050  htmlFile << "<head>" << std::endl;
4051  htmlFile << "<meta http-equiv=\"Content-Type\" content=\"text/html\"/>" << std::endl;
4052  htmlFile << "<title> Remote Monitoring Tool </title>" << std::endl;
4053  htmlFile << "<style type=\"text/css\">" << std::endl;
4054  htmlFile << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"
4055  << std::endl;
4056  htmlFile << " td.s0 { font-family: arial, arial ce, helvetica; }" << std::endl;
4057  htmlFile << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; "
4058  "text-align: center;}"
4059  << std::endl;
4060  htmlFile << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }" << std::endl;
4061  htmlFile << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }" << std::endl;
4062  htmlFile << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }" << std::endl;
4063  htmlFile << " td.s5 { font-family: arial, arial ce, helvetica; background-color: #FF00FF; }" << std::endl;
4064  htmlFile << " td.s6 { font-family: arial, arial ce, helvetica; background-color: #9ACD32; }" << std::endl;
4065  htmlFile << " td.s7 { font-family: arial, arial ce, helvetica; background-color: #32CD32; }" << std::endl;
4066  htmlFile << "</style>" << std::endl;
4067  htmlFile << "<body>" << std::endl;
4068 
4069  htmlFile << "<h1> Remote Monitoring Tool, RUN = " << runnumber << ". </h1>" << std::endl;
4070  htmlFile << "<br>" << std::endl;
4071 
4072  htmlFile << "<h2> 1. Analysis results for subdetectors </h2>" << std::endl;
4073  htmlFile << "<table width=\"400\">" << std::endl;
4074  htmlFile << "<tr>" << std::endl;
4075 
4076  // AZ 12.03.2019
4077  /*
4078  htmlFile << " <td><a href=\"HB.html\">HB</a></td>"<< std::endl;
4079  htmlFile << " <td><a href=\"HE.html\">HE</a></td>"<< std::endl;
4080  htmlFile << " <td><a href=\"HO.html\">HO</a></td>"<< std::endl;
4081  htmlFile << " <td><a href=\"HF.html\">HF</a></td>"<< std::endl;
4082 */
4083 
4084  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
4085  << runnumber << "/HB.html\">HB</a></td>" << std::endl;
4086  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
4087  << runnumber << "/HE.html\">HE</a></td>" << std::endl;
4088  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
4089  << runnumber << "/HO.html\">HO</a></td>" << std::endl;
4090  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"
4091  << runnumber << "/HF.html\">HF</a></td>" << std::endl;
4092 
4093  htmlFile << "</tr>" << std::endl;
4094  htmlFile << "</table>" << std::endl;
4095  htmlFile << "<br>" << std::endl;
4096 
4097  htmlFile << "<h2> 2. HCAL status over all criteria and subdetectors </h2>" << std::endl;
4098  htmlFile << "<h3> 2.A. Channels in detector space </h3>" << std::endl;
4099  htmlFile << "<h4> Legend for channel status: green - good, others - may be a problems, white - not applicable or out "
4100  "of range </h4>"
4101  << std::endl;
4102  htmlFile << " <img src=\"MAP.png\" />" << std::endl;
4103  htmlFile << "<br>" << std::endl;
4104 
4105  htmlFile << "<h3> 2.B. List of Bad channels </h3>" << std::endl;
4106 
4107  //htmlFile << " <td><a href=\"HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4108  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4109  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/HELP.html\"> "
4110  "Description of criteria for bad channel selection</a></td>"
4111  << std::endl;
4112 
4113  htmlFile << "<table>" << std::endl;
4114  htmlFile << "<tr>";
4115  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
4116  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
4117  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
4118  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>" << std::endl;
4119  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
4120  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
4121  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
4122  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
4123  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
4124  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
4125  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
4126  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
4127  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
4128  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
4129  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
4130  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
4131  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
4132  htmlFile << "<td class=\"s5\" align=\"center\">RMT-criteria</td>" << std::endl;
4133  htmlFile << "</tr>" << std::endl;
4134 
4135  ind = 0;
4136  // AZ 19.03.2018
4137  /*
4138  for (int i=1;i<=NBad;i++) {
4139  if((ind%2)==1){
4140  raw_class="<td class=\"s2\" align=\"center\">";
4141  raw_class1="<td class=\"s6\" align=\"center\">";
4142  }else{
4143  raw_class="<td class=\"s3\" align=\"center\">";
4144  raw_class1="<td class=\"s7\" align=\"center\">";
4145  }
4146  const CellDB db;
4147  const CellDB ce = db.find("Eta", Eta[2][i]).find("Phi", Phi[2][i]).find("Depth", Depth[2][i]);
4148  // if (ce.size()==0) {cout<<"Error: No such Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;continue;}
4149 // else if (ce.size()>1) { cout<<"Warning: More than one line correspond to such Eta="<< Eta[2][i] <<", Phi="<< Phi[2][i] <<", Depth="<< Depth[2][i] <<" in database"<<endl;}
4150 
4151  if (ce.size()>=1) {
4152  htmlFile << "<tr>"<< std::endl;
4153  htmlFile << "<td class=\"s1\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
4154  htmlFile << raw_class<< Eta[2][i]<<"</td>"<< std::endl;
4155  htmlFile << raw_class<< Phi[2][i]<<"</td>"<< std::endl;
4156  htmlFile << raw_class<< Depth[2][i] <<"</td>"<< std::endl;
4157  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
4158  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
4159  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
4160  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
4161  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
4162  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
4163  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
4164  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
4165  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
4166  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
4167  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
4168  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
4169  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
4170  htmlFile << raw_class1<< Comment[2][i]<<"</td>"<< std::endl;
4171  htmlFile << "</tr>" << std::endl;
4172 
4173  ind+=1;
4174  }
4175  } /// end loop
4176 */
4177  htmlFile << "</table>" << std::endl;
4178  htmlFile << "<br>" << std::endl;
4179  /*
4180  htmlFile << "<h3> 2.C.List of Gain unstable channels </h3>"<< std::endl;
4181  //htmlFile << " <td><a href=\"HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4182  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4183  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4184 
4185  htmlFile << "<table>"<< std::endl;
4186  htmlFile << "<tr>";
4187  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
4188  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
4189  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
4190  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
4191  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
4192  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
4193  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
4194  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
4195  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
4196  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
4197  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
4198  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
4199  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
4200  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
4201  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
4202  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
4203  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
4204  htmlFile << "<td class=\"s5\" align=\"center\">Failed criteria</td>" << std::endl;
4205  htmlFile << "</tr>" << std::endl;
4206 
4207  for (int i=1;i<=NWarn;i++) {
4208  if((ind%2)==1){
4209  raw_class="<td class=\"s2\" align=\"center\">";
4210  raw_class1="<td class=\"s6\" align=\"center\">";
4211  }else{
4212  raw_class="<td class=\"s3\" align=\"center\">";
4213  raw_class1="<td class=\"s7\" align=\"center\">";
4214  }
4215  const CellDB db;
4216  const CellDB ce = db.find("Eta", Eta[1][i]).find("Phi", Phi[1][i]).find("Depth", Depth[1][i]);
4217  // if (ce.size()==0) {cout<<"Error: No such Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;continue;}
4218 // else if (ce.size()>1) { cout<<"Warning: More than one line correspond to such Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
4219 
4220  if (ce.size()>=1) {
4221  htmlFile << "<tr>"<< std::endl;
4222  htmlFile << "<td class=\"s1\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
4223  htmlFile << raw_class<< Eta[1][i]<<"</td>"<< std::endl;
4224  htmlFile << raw_class<< Phi[1][i]<<"</td>"<< std::endl;
4225  htmlFile << raw_class<< Depth[1][i] <<"</td>"<< std::endl;
4226  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
4227  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
4228  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
4229  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
4230  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
4231  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
4232  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
4233  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
4234  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
4235  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
4236  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
4237  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
4238  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
4239  htmlFile << raw_class1<< Comment[1][i]<<"</td>"<< std::endl;
4240  htmlFile << "</tr>" << std::endl;
4241 
4242  ind+=1;
4243  }
4244  }
4245 
4246 
4247  htmlFile << "</table>" << std::endl;
4248  htmlFile << "<br>"<< std::endl;
4249 
4250 
4251  htmlFile << "<h3> 2.D.List of channels with bad Pedestals </h3>"<< std::endl;
4252  // htmlFile << " <td><a href=\"HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4253  // htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/GLOBAL_"<<runnumber<<"/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4254  htmlFile << " <td><a href=\"https://cms-conddb.cern.ch/eosweb/hcal/HcalRemoteMonitoring/GlobalRMT/HELP.html\"> Description of criteria for bad channel selection</a></td>"<< std::endl;
4255 
4256  htmlFile << "<table>"<< std::endl;
4257  htmlFile << "<tr>";
4258  htmlFile << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
4259  htmlFile << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
4260  htmlFile << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
4261  htmlFile << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
4262  htmlFile << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
4263  htmlFile << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
4264  htmlFile << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
4265  htmlFile << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
4266  htmlFile << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
4267  htmlFile << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
4268  htmlFile << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
4269  htmlFile << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
4270  htmlFile << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
4271  htmlFile << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
4272  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
4273  htmlFile << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
4274  htmlFile << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
4275  htmlFile << "<td class=\"s5\" align=\"center\">Failed criteria</td>" << std::endl;
4276  htmlFile << "</tr>" << std::endl;
4277 
4278  for (int i=1;i<=NPed;i++) {
4279  if((ind%2)==1){
4280  raw_class="<td class=\"s2\" align=\"center\">";
4281  raw_class1="<td class=\"s6\" align=\"center\">";
4282  }else{
4283  raw_class="<td class=\"s3\" align=\"center\">";
4284  raw_class1="<td class=\"s7\" align=\"center\">";
4285  }
4286  const CellDB db;
4287  const CellDB ce = db.find("Eta", Eta[3][i]).find("Phi", Phi[3][i]).find("Depth", Depth[3][i]);
4288  // if (ce.size()==0) {cout<<"Error: No such Eta="<< Eta[3][i] <<", Phi="<< Phi[3][i] <<", Depth="<< Depth[3][i] <<" in database"<<endl;continue;}
4289 // else if (ce.size()>1) { cout<<"Warning: More than one line correspond to such Eta="<< Eta[1][i] <<", Phi="<< Phi[1][i] <<", Depth="<< Depth[1][i] <<" in database"<<endl;}
4290 
4291  if (ce.size()>=1) {
4292  htmlFile << "<tr>"<< std::endl;
4293  htmlFile << "<td class=\"s1\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
4294  htmlFile << raw_class<< Eta[3][i]<<"</td>"<< std::endl;
4295  htmlFile << raw_class<< Phi[3][i]<<"</td>"<< std::endl;
4296  htmlFile << raw_class<< Depth[3][i] <<"</td>"<< std::endl;
4297  htmlFile << raw_class<< ce[0].RBX <<"</td>"<< std::endl;
4298  htmlFile << raw_class<< ce[0].RM <<"</td>"<< std::endl;
4299  htmlFile << raw_class<< ce[0].Pixel <<"</td>"<< std::endl;
4300  htmlFile << raw_class<< ce[0].RMfiber <<"</td>"<< std::endl;
4301  htmlFile << raw_class<< ce[0].FiberCh <<"</td>"<< std::endl;
4302  htmlFile << raw_class<< ce[0].QIE <<"</td>"<< std::endl;
4303  htmlFile << raw_class<< ce[0].ADC<<"</td>"<< std::endl;
4304  htmlFile << raw_class<< ce[0].VMECardID <<"</td>"<< std::endl;
4305  htmlFile << raw_class<< ce[0].dccID <<"</td>"<< std::endl;
4306  htmlFile << raw_class<< ce[0].Spigot <<"</td>"<< std::endl;
4307  htmlFile << raw_class<< ce[0].FiberIndex <<"</td>"<< std::endl;
4308  htmlFile << raw_class<< ce[0].HtrSlot <<"</td>"<< std::endl;
4309  htmlFile << raw_class<< ce[0].HtrTB <<"</td>"<< std::endl;
4310  htmlFile << raw_class1<< Comment[3][i]<<"</td>"<< std::endl;
4311  htmlFile << "</tr>" << std::endl;
4312 
4313  ind+=1;
4314  }
4315  }
4316 
4317 
4318  htmlFile << "</table>" << std::endl;
4319 */
4320  htmlFile << "</body> " << std::endl;
4321  htmlFile << "</html> " << std::endl;
4322  htmlFile.close();
4323  //======================================================================
4324 
4325  //======================================================================
4326  // Close and delete all possible things:
4327  hfile->Close();
4328  // hfile->Delete();
4329  // Exit Root
4330  gSystem->Exit(0);
4331  //======================================================================
4332 }
int main(int argc, char *argv[])
string fname
main script
float x
#define str(s)
TrackTransientTrack TTT