Belle II Software  release-06-01-15
DQMHistAnalysisCDCDedx.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <dqm/analysis/modules/DQMHistAnalysisCDCDedx.h>
10 
11 using namespace std;
12 using namespace Belle2;
13 using boost::format;
14 
15 REG_MODULE(DQMHistAnalysisCDCDedx)
16 
17 //-----------------------------------------------------------------
20 {
21  //Parameter definition here
22  B2DEBUG(20, "DQMHistAnalysisCDCDedx: Constructor done.");
23  addParam("mmode", mmode, "default monitoring mode is basic", std::string("basic"));
24 }
25 
26 //--------------------------------------------------------------
27 DQMHistAnalysisCDCDedxModule::~DQMHistAnalysisCDCDedxModule()
28 {
29 
30 }
31 
32 //---------------------------------------------
33 void DQMHistAnalysisCDCDedxModule::initialize()
34 {
35 
36  gStyle->SetOptStat(0);
37  gROOT->cd();
38 
39  B2DEBUG(20, "DQMHistAnalysisCDCDedx: initialized.");
40 
41  //intra-run cavnas 1D
42  c_ir_dedx = new TCanvas("CDCDedx/c_ir_dedx", "", 1400, 500);
43 
44  //per run canvas
45  c_pr_dedx = new TCanvas("CDCDedx/c_CDCdedxMean", "", 800, 800);
46 
47  f_gaus = new TF1("f_gaus", "gaus", 0.0, 2.5);
48  f_gaus->SetLineColor(kRed);
49 
50  l_line = new TLine();
51  l_line->SetLineColor(kRed);
52  l_line->SetLineStyle(1);
53  l_line->SetLineWidth(2);
54 
55  //Monitoring object for run dependency at mirabelle
56  m_monObj = getMonitoringObject("cdcdedx");
57  m_monObj->addCanvas(c_ir_dedx);
58  m_monObj->addCanvas(c_pr_dedx);
59 
60 }
61 
62 
63 //-------------------------------------------
64 void DQMHistAnalysisCDCDedxModule::beginRun()
65 {
66  B2DEBUG(20, "DQMHistAnalysisCDCDedx: beginRun called.");
67 }
68 
69 
70 //----------------------------------------
71 void DQMHistAnalysisCDCDedxModule::event()
72 {
73 
74  B2DEBUG(20, "DQMHistAnalysisCDCDedx: event called.");
75 
76  //Plot 0 getmeta those are useful for cosmetics
77  getMetadata();
78 
79  //Plot 1 dE/dx per run gain/reso
80  c_pr_dedx->Clear();
81  if (mmode != "basic") {
82  c_pr_dedx->SetWindowSize(1400, 800);
83  c_pr_dedx->Divide(3, 2);
84  } else {
85  c_pr_dedx->SetWindowSize(1000, 800);
86  c_pr_dedx->Divide(2, 2);
87  }
88 
89  drawDedxPR();
90 
91  // Plot 4 dE/dx bands vs p
92  drawBandPlot();
93 
94  // Plot 5 dE/dx vs phi and costh
95  drawDedxCosPhi();
96 
97  c_pr_dedx->Modified();
98  c_pr_dedx->Update();
99 
100 
101  //Plot 2 dE/dx intra-run gain/reso
102  c_ir_dedx->Clear();
103  if (mmode != "basic") {
104  c_ir_dedx->SetWindowSize(1400, 400);
105  c_ir_dedx->Divide(3, 1);
106  } else {
107  c_ir_dedx->SetWindowSize(900, 400);
108  c_ir_dedx->Divide(2, 1);
109  }
110  drawDedxIR();
111  c_ir_dedx->Modified();
112  c_ir_dedx->Update();
113 
114  //Plot 3 wire status
115  if (mmode != "basic")drawWireStatus();
116 
117 }
118 
119 //-----------------------------------------
120 void DQMHistAnalysisCDCDedxModule::endRun()
121 {
122  B2DEBUG(20, "DQMHistAnalysisCDCDedx : endRun called");
123 }
124 
125 //--------------------------------------------
126 void DQMHistAnalysisCDCDedxModule::terminate()
127 {
128 
129  B2DEBUG(20, "DQMHistAnalysisCDCDedx : terminate called");
130 
131  delete c_pr_dedx;
132  delete c_ir_dedx;
133 
134 }
135 
136 //-------------------------------------------
137 void DQMHistAnalysisCDCDedxModule::getMetadata()
138 {
139 
140  TH1D* h_Meta = (TH1D*)findHist("CDCDedx/hMeta");
141 
142  if (h_Meta != nullptr) {
143  m_nallevt = int(h_Meta->GetBinContent(1));
144  m_nbhabhaevt = int(h_Meta->GetBinContent(2));
145  m_nhadevt = int(h_Meta->GetBinContent(3));
146 
147  std::string m_title = h_Meta->GetTitle();
148 
149  first = m_title.find("Exp:");
150  last = m_title.find(", Run:");
151  std::string expN = m_title.substr(first + 4, last - first - 4);
152 
153  first = m_title.find(", Run:");
154  last = m_title.find(", RG:");
155  std::string runN = m_title.substr(first + 6, last - first - 6);
156 
157  first = m_title.find(", RG:");
158  last = m_title.find(")");
159  std::string runGain = m_title.substr(first + 5, last - first - 5);
160 
161  m_exp = std::stoi(expN.c_str());
162  m_run = std::stoi(runN.c_str());
163  m_dbrg = std::stof(runGain.c_str());
164  }
165 
166 }
167 
168 //-------------------------------------------
169 void DQMHistAnalysisCDCDedxModule::drawDedxPR()
170 {
171 
172  m_mean = 0.0;
173  m_sigma = 0.0;
174 
175  TH1* h_dEdx = findHist("CDCDedx/hdEdx");
176  if (h_dEdx != nullptr) {
177 
178  double m_meanerr = 0.0;
179  double m_sigmaerr = 0.0;
180 
181  c_pr_dedx->cd(1);
182  l_line->Clear();
183 
184  m_status = "LowStats";
185 
186  TH1D* h_dEdxClone = (TH1D*)h_dEdx->Clone("hdEdx_clone");
187  if (h_dEdxClone != nullptr && h_dEdxClone->Integral() > 250) {
188  fitHistogram(h_dEdxClone, m_status);
189  if (m_status == "OK") {
190  m_mean = h_dEdxClone->GetFunction("f_gaus")->GetParameter(1);
191  m_sigma = h_dEdxClone->GetFunction("f_gaus")->GetParameter(2);
192  m_meanerr = h_dEdxClone->GetFunction("f_gaus")->GetParError(1);
193  m_sigmaerr = h_dEdxClone->GetFunction("f_gaus")->GetParError(2);
194  }
195  }
196 
197  m_monObj->setVariable("CDCDedxMean", m_mean);
198  m_monObj->setVariable("CDCDedxReso", m_sigma);
199  m_monObj->setVariable("CDCDedxMeanErr", m_meanerr);
200  m_monObj->setVariable("CDCDedxResoErr", m_sigmaerr);
201 
202  set_Hist_Style(h_dEdxClone);
203  h_dEdxClone->SetTitle("CDC-dEdx");
204  h_dEdxClone->DrawCopy("");
205 
206  //Draw line for dE/dx mean
207  l_line->DrawLine(m_mean, 0, m_mean, h_dEdxClone->GetMaximum());
208 
209  TF1* f_gausC = (TF1*)f_gaus->Clone("f_gausC");
210  f_gausC->SetLineColor(kRed);
211  f_gausC->DrawClone("same");
212 
213 
214  TPaveText* pinfo0 = new TPaveText(0.12, 0.69, 0.37, 0.89, "NBNDC");
215  set_Text_Style(pinfo0);
216  pinfo0->AddText(Form("CDC dE/dx (e^{-}e^{+})"));
217  pinfo0->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
218  pinfo0->AddText(Form("-------------"));
219  pinfo0->AddText(Form("Fit Status: %s", m_status.data()));
220  pinfo0->AddText(Form("Fit #mu^{dE/dx}: %0.3f ", m_mean));
221  pinfo0->AddText(Form("Fit #sigma^{dE/dx}: %0.3f ", m_sigma));
222  pinfo0->SetTextColor(kRed);
223  pinfo0->Draw("same");
224 
225 
226  TPaveText* pinfo1 = new TPaveText(0.60, 0.77, 0.85, 0.89, "NBNDC");
227  set_Text_Style(pinfo1);
228  pinfo1->AddText(Form("-- Expert info"));
229  pinfo1->AddText(Form("Prev Gain: %0.03f", m_dbrg));
230  if (m_nbhabhaevt > 1e5)
231  pinfo1->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
232  if (m_nbhabhaevt > 1e3)
233  pinfo1->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
234  else
235  pinfo1->AddText(Form("Events: %d", m_nbhabhaevt));
236  pinfo1->Draw("same");
237 
238  m_status.clear();
239  }
240 
241 }
242 
243 //--------------------------------------------
244 void DQMHistAnalysisCDCDedxModule::drawDedxIR()
245 {
246 
247  //1. Draw Scattered plot
248  if (mmode != "basic") {
249 
250  c_ir_dedx->cd(3);
251 
252  TH2D* hdEdxIRScat = (TH2D*)findHist("CDCDedx/hdEdxvsEvt");
253  if (hdEdxIRScat != nullptr) {
254 
255  set_Pad_Style(0.143, 0.045, 0.077, 0.0);
256 
257  if (hdEdxIRScat->GetEntries() > 0) {
258  hdEdxIRScat->GetXaxis()->SetRange(hdEdxIRScat->FindFirstBinAbove(0, 1), hdEdxIRScat->FindLastBinAbove(0, 1));
259  }
260 
261  set_Hist_Style(hdEdxIRScat);
262  hdEdxIRScat->Draw("");
263  TPaveText* pinfo = new TPaveText(0.609, 0.710, 0.942, 0.911, "NBNDC");
264  set_Text_Style(pinfo);
265  pinfo->AddText("CDC-dE/dx Intra-run");
266  pinfo->AddText("Electrons (e^{+}e^{-})");
267  pinfo->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
268  if (m_nbhabhaevt > 1e5)
269  pinfo->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
270  if (m_nbhabhaevt > 1e3)
271  pinfo->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
272  else
273  pinfo->AddText(Form("Events: %d", m_nbhabhaevt));
274  pinfo->Draw("same");
275  }
276  }
277 
278 
279  //Intra rungain/reso variation
280  TH2D* hdEdxIRScatC = (TH2D*)findHist("CDCDedx/hdEdxvsEvt");
281  if (hdEdxIRScatC != nullptr) {
282 
283  c_ir_dedx->cd(1);
284  gPad->SetGridy(1);
285 
286  int fbin = hdEdxIRScatC->FindFirstBinAbove(0, 1);
287  int lbin = hdEdxIRScatC->FindLastBinAbove(0, 1);
288  int nbin = lbin - fbin + 1;
289 
290  TH1D* hdEdxIRInd[nbin];
291  for (int ibin = 0; ibin < nbin; ibin++) {
292  int localbin = ibin + fbin;
293  hdEdxIRInd[ibin] = (TH1D*)hdEdxIRScatC->ProjectionY(Form("htemp_%d", localbin), localbin, localbin);
294  }
295 
296  if (nbin <= 0)nbin = 1;
297  TH1F* hdEdxIRMean = new TH1F("hdEdxIRMean", "", nbin, 0.5, nbin + 0.5);
298  TH1F* hdEdxIRSigma = new TH1F("hdEdxIRSigma", "", nbin, 0.5, nbin + 0.5);
299 
300  for (int ibin = 0; ibin < nbin; ibin++) {
301 
302  double m_imean = 0.0, m_imeanerr = 0.0;
303  double m_isigma = 0.0, m_isigmaerr = 0.0;
304 
305  fitHistogram(hdEdxIRInd[ibin], m_status);
306 
307  if (m_status == "OK") {
308  m_imean = hdEdxIRInd[ibin]->GetFunction("f_gaus")->GetParameter(1);
309  m_imeanerr = hdEdxIRInd[ibin]->GetFunction("f_gaus")->GetParError(1);
310  m_isigma = hdEdxIRInd[ibin]->GetFunction("f_gaus")->GetParameter(2);
311  m_isigmaerr = hdEdxIRInd[ibin]->GetFunction("f_gaus")->GetParError(2);
312  }
313 
314  hdEdxIRMean->SetBinContent(ibin + 1, m_imean);
315  hdEdxIRMean->SetBinError(ibin + 1, m_imeanerr);
316  hdEdxIRSigma->SetBinContent(ibin + 1, m_isigma);
317  hdEdxIRSigma->SetBinError(ibin + 1, m_isigmaerr);
318  }
319 
320  //2 intra-gain trend
321  set_Pad_Style(0.143, 0.045, 0.077, 0.0);
322  set_Hist_Style(hdEdxIRMean);
323  hdEdxIRMean->SetMarkerColor(kRed);
324  hdEdxIRMean->SetMarkerStyle(20);
325  hdEdxIRMean->SetMarkerSize(1.10);
326  hdEdxIRMean->GetYaxis()->SetRangeUser(m_mean - 0.10, m_mean + 0.10);
327  hdEdxIRMean->GetYaxis()->SetTitle("dE/dx (#mu_{fit})");
328  hdEdxIRMean->GetXaxis()->SetTitle("Events(M)");
329  hdEdxIRMean->SetTitle("CDC-dE/dx gain(#mu): intra-run variation");
330  hdEdxIRMean->Draw("");
331 
332  l_line->DrawLine(0.5, m_mean, hdEdxIRMean->GetXaxis()->GetBinUpEdge(nbin), m_mean);
333 
334  TPaveText* pinfo0 = new TPaveText(0.609, 0.680, 0.942, 0.911, "NBNDC");
335  set_Text_Style(pinfo0);
336  pinfo0->AddText("Intra-run variation");
337  pinfo0->AddText("Electrons (e^{+}e^{-})");
338  pinfo0->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
339  pinfo0->AddText(Form("Avg #mu_{fit}: %0.3f", m_mean));
340  if (m_nbhabhaevt > 1e5)
341  pinfo0->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
342  if (m_nbhabhaevt > 1e3)
343  pinfo0->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
344  else
345  pinfo0->AddText(Form("Events: %d", m_nbhabhaevt));
346  pinfo0->Draw("same");
347 
348  //3 intra-resolution trend
349  c_ir_dedx->cd(2);
350  gPad->SetGridy(1);
351  set_Pad_Style(0.143, 0.045, 0.077, 0.0);
352  set_Hist_Style(hdEdxIRSigma);
353  hdEdxIRSigma->SetMarkerColor(kRed);
354  hdEdxIRSigma->SetMarkerStyle(20);
355  hdEdxIRSigma->SetMarkerSize(1.10);
356  hdEdxIRSigma->GetYaxis()->SetRangeUser(m_sigma - 0.04, m_sigma + 0.04);
357  hdEdxIRSigma->GetYaxis()->SetTitle("dE/dx (#sigma_{fit})");
358  hdEdxIRSigma->GetXaxis()->SetTitle("Events(M)");
359  hdEdxIRSigma->SetTitle("CDC-dE/dx reso.(#sigma): intra-run variation");
360  hdEdxIRSigma->Draw("");
361 
362  l_line->DrawLine(0.5, m_sigma, hdEdxIRSigma->GetXaxis()->GetBinUpEdge(nbin), m_sigma);
363 
364  TPaveText* pinfo1 = new TPaveText(0.609, 0.680, 0.942, 0.911, "NBNDC");
365  set_Text_Style(pinfo1);
366  pinfo1->AddText("Intra-run variation");
367  pinfo1->AddText("Electrons (e^{+}e^{-})");
368  pinfo1->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
369  pinfo1->AddText(Form("Avg #sigma_{fit}: %0.3f", m_sigma));
370  if (m_nbhabhaevt > 1e5)
371  pinfo1->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
372  if (m_nbhabhaevt > 1e3)
373  pinfo1->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
374  else
375  pinfo1->AddText(Form("Events: %d", m_nbhabhaevt));
376  pinfo1->Draw("same");
377 
378  //Let's reset histogram here
379  for (int ibin = 0; ibin < nbin; ibin++) hdEdxIRInd[ibin]->Reset();
380  }
381 }
382 
383 //------------------------------------------------
384 void DQMHistAnalysisCDCDedxModule::drawWireStatus()
385 {
386 
387  //Draw Scattered plot
388  TH2D* hWires = (TH2D*)findHist("CDCDedx/hWires");
389  TH2D* hWireStatus = (TH2D*)findHist("CDCDedx/hWireStatus");
390  if (hWires != nullptr && hWireStatus != nullptr) {
391 
392  c_pr_dedx->cd(5);
393  set_Hist_Style(hWires);
394  hWires->SetMarkerColor(kGray + 1);
395  hWires->Draw("");
396 
397  std::string s_ndead = hWireStatus->GetTitle();
398  int m_ndead = atof(s_ndead.c_str());
399  m_monObj->setVariable("CDCDedxDeadWires", m_ndead);
400 
401  set_Hist_Style(hWireStatus);
402  hWireStatus->SetMarkerColor(kRed);
403  hWireStatus->SetMarkerStyle(7);
404  hWireStatus->Draw("same");
405 
406  TPaveText* pinfo0 = new TPaveText(0.117, 0.832, 0.148, 0.976, "NBNDC");
407  set_Text_Style(pinfo0);
408  pinfo0->AddText(Form("CDC Wire Status"));
409  pinfo0->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
410  pinfo0->AddText(Form("Dead: %d (%0.02f%%)", m_ndead, (100.0 * m_ndead / 14336.0)));
411  if (m_nallevt > 1e5)
412  pinfo0->AddText(Form("Events: %0.02fM", double(m_nallevt / 1e6)));
413  if (m_nallevt > 1e3)
414  pinfo0->AddText(Form("Events: %0.02fK", double(m_nallevt / 1e3)));
415  else
416  pinfo0->AddText(Form("Events: %d", m_nallevt));
417  pinfo0->Draw("same");
418  }
419 }
420 
421 //-----------------------------------------------
422 void DQMHistAnalysisCDCDedxModule::drawBandPlot()
423 {
424  //Draw Scattered plot
425  TH2D* hdEdxVsP = (TH2D*)findHist("CDCDedx/hdEdxVsP");
426  if (hdEdxVsP != nullptr) {
427 
428  c_pr_dedx->cd(2);
429  gPad->SetLogx();
430  gPad->SetLogy();
431 
432  set_Plot_Style();
433  set_Hist_Style(hdEdxVsP);
434  hdEdxVsP->SetTitle("CDC-dEdx band plot");
435  hdEdxVsP->SetMinimum(0.10);
436  hdEdxVsP->Draw("col");
437 
438  TPaveText* pinfo0 = new TPaveText(0.60, 0.77, 0.85, 0.89, "NBNDC");
439  set_Text_Style(pinfo0);
440  pinfo0->AddText(Form("IP tracks (hadron)"));
441  pinfo0->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
442  if (m_nhadevt > 1e5)
443  pinfo0->AddText(Form("Events: %0.02fM", double(m_nhadevt / 1e6)));
444  if (m_nhadevt > 1e3)
445  pinfo0->AddText(Form("Events: %0.02fK", double(m_nhadevt / 1e3)));
446  else
447  pinfo0->AddText(Form("Events: %d", m_nhadevt));
448  pinfo0->DrawClone("same");
449  }
450 
451 }
452 
453 //---------------------------------------------
454 void DQMHistAnalysisCDCDedxModule::drawDedxCosPhi()
455 {
456 
457  TH2D* hdEdxvsPhi = (TH2D*)findHist("CDCDedx/hdEdxvsPhi");
458  if (hdEdxvsPhi != nullptr) {
459 
460  c_pr_dedx->cd(3);
461 
462  set_Hist_Style(hdEdxvsPhi);
463  hdEdxvsPhi->SetTitle("CDC-dEdx vs Phi");
464  hdEdxvsPhi->Draw("col");
465 
466  l_line->DrawLine(-3.20, m_mean, 3.20, m_mean);
467 
468  TPaveText* pinfo0 = new TPaveText(0.60, 0.77, 0.85, 0.89, "NBNDC");
469  set_Text_Style(pinfo0);
470  pinfo0->AddText(Form("Electrons (e^{+}e^{-})"));
471  pinfo0->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
472  if (m_nbhabhaevt > 1e5)
473  pinfo0->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
474  if (m_nbhabhaevt > 1e3)
475  pinfo0->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
476  else
477  pinfo0->AddText(Form("Events: %d", m_nbhabhaevt));
478  pinfo0->DrawClone("same");
479  }
480 
481  //plot # 2
482  TH2D* hdEdxvsCosth = (TH2D*)findHist("CDCDedx/hdEdxvsCosth");
483  if (hdEdxvsCosth != nullptr) {
484 
485  c_pr_dedx->cd(4);
486 
487  set_Hist_Style(hdEdxvsCosth);
488  hdEdxvsCosth->SetTitle("CDC-dEdx vs Costh");
489  hdEdxvsCosth->Draw("col");
490 
491  l_line->DrawLine(-1.0, m_mean, 1.0, m_mean);
492 
493  TPaveText* pinfo1 = new TPaveText(0.60, 0.77, 0.85, 0.89, "NBNDC");
494  set_Text_Style(pinfo1);
495  pinfo1->AddText(Form("Electrons (e^{+}e^{-})"));
496  pinfo1->AddText(Form("Exp/Run: %d/%d", m_exp, m_run));
497  if (m_nbhabhaevt > 1e5)
498  pinfo1->AddText(Form("Events: %0.02fM", double(m_nbhabhaevt / 1e6)));
499  if (m_nbhabhaevt > 1e3)
500  pinfo1->AddText(Form("Events: %0.02fK", double(m_nbhabhaevt / 1e3)));
501  else
502  pinfo1->AddText(Form("Events: %d", m_nbhabhaevt));
503  pinfo1->DrawClone("same");
504  }
505 
506 }
507 
508 //----------------------------------------------------------------------------------------
509 void DQMHistAnalysisCDCDedxModule::fitHistogram(TH1D*& temphist, std::string& status)
510 {
511 
512  if (temphist != nullptr) {
513  temphist->GetXaxis()->SetRange(temphist->FindFirstBinAbove(0, 1), temphist->FindLastBinAbove(0, 1));
514  int fs = temphist->Fit(f_gaus, "QR");
515  if (fs != 0) {
516  status = "Failed";
517  } else {
518  double mean = temphist->GetFunction("f_gaus")->GetParameter(1);
519  double width = temphist->GetFunction("f_gaus")->GetParameter(2);
520  temphist->GetXaxis()->SetRangeUser(mean - 5.0 * width, mean + 5.0 * width);
521  fs = temphist->Fit(f_gaus, "QR", "", mean - 3.0 * width, mean + 3.0 * width);
522  if (fs != 0)status = "Failed";
523  else {
524  temphist->GetXaxis()->SetRangeUser(mean - 5.0 * width, mean + 5.0 * width);
525  status = "OK";
526  }
527  }
528  }
529 
530 }
531 
532 //------------------------------------------------
533 void DQMHistAnalysisCDCDedxModule::set_Plot_Style()
534 {
535 
536  const Int_t NRGBs = 6;
537  const Int_t NCont = 255;
538  Double_t stops[NRGBs] = { 0.00, 0.00, 0.34, 0.61, 0.84, 1.00 };
539  Double_t red[NRGBs] = { 0.00, 0.00, 0.00, 0.87, 1.00, 0.51 };
540  Double_t green[NRGBs] = { 0.00, 0.00, 0.81, 1.00, 0.20, 0.00 };
541  Double_t blue[NRGBs] = { 0.00, 0.51, 1.00, 0.12, 0.00, 0.00 };
542  TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
543  gStyle->SetNumberContours(NCont);
544 
545 }
546 
547 
548 //------------------------------------------------------------------
549 void DQMHistAnalysisCDCDedxModule::set_Text_Style(TPaveText*& obj)
550 {
551 
552  obj->SetFillColor(0);
553  obj->SetFillStyle(0);
554 
555  obj->SetLineColor(TColor::GetColor("#000000"));
556  obj->SetLineWidth(0);
557  obj->SetTextAlign(12);
558 
559  obj->SetTextColor(kGray + 3);
560  obj->SetTextFont(82);
561  obj->SetTextSize(0.03157895);
562  obj->SetTextAlign(12);
563 
564 }
565 
566 
567 //------------------------------------------------------------------
568 void DQMHistAnalysisCDCDedxModule::set_Hist_Style(TH1* obj)
569 {
570 
571  obj->SetStats(0);
572  obj->SetTitle("");
573  obj->SetFillColor(kYellow);
574 
575  obj->SetTitleOffset(1.15, "x");
576  obj->SetTitleSize(.040, "x");
577  obj->SetTitleOffset(1.15, "y");
578  obj->SetTitleSize(.040, "y");
579 
580  obj->SetLabelOffset(0.015, "x");
581  obj->SetLabelSize(.040, "x");
582  obj->SetLabelOffset(0.015, "y");
583  obj->SetLabelSize(.040, "y");
584 
585  obj->SetTickLength(0.03, "x");
586  obj->SetTickLength(0.02, "y");
587 
588 }
589 
590 
591 //-------------------------------------------------------------------------------------
592 void DQMHistAnalysisCDCDedxModule::set_Pad_Style(double l, double r, double t, double b)
593 {
594 
595  if (l != 0)gPad->SetLeftMargin(l);
596  if (r != 0)gPad->SetRightMargin(r);
597  if (t != 0)gPad->SetTopMargin(t);
598  if (b != 0)gPad->SetBottomMargin(b);
599  gPad->SetTickx(1);
600  gPad->SetTicky(1);
601 
602 }
DQM analysis module grab canvases from DQM module and perform higher level operation like histogram f...
The base class for the histogram analysis module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:650
Abstract base class for different kinds of events.