CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
L1TDTTFClient.cc
Go to the documentation of this file.
1 /*
2  * \file L1TDTTFClient.cc
3  *
4  * \author G. Codispoti
5  *
6  */
7 
9 
15 
17  : l1tdttffolder_(ps.getUntrackedParameter<std::string>("l1tSourceFolder", "L1T/L1TDTTF")),
18  dttfSource_(ps.getParameter<edm::InputTag>("dttfSource")),
19  online_(ps.getUntrackedParameter<bool>("online", true)),
20  resetafterlumi_(ps.getUntrackedParameter<int>("resetAfterLumi", 3)),
21  counterLS_(0),
22  occupancy_r_(nullptr) {
23  edm::LogInfo("L1TDTTFClient");
24 }
25 
26 //--------------------------------------------------------
27 L1TDTTFClient::~L1TDTTFClient() { edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: ending... "; }
28 
29 //--------------------------------------------------------
31  edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: Begin Job";
32 
33  wheelpath_[0] = l1tdttffolder_ + "/02-WHEEL_N2";
34  wheelpath_[1] = l1tdttffolder_ + "/03-WHEEL_N1";
35  wheelpath_[2] = l1tdttffolder_ + "/04-WHEEL_N0";
36  wheelpath_[3] = l1tdttffolder_ + "/05-WHEEL_P0";
37  wheelpath_[4] = l1tdttffolder_ + "/06-WHEEL_P1";
38  wheelpath_[5] = l1tdttffolder_ + "/07-WHEEL_P2";
39 
40  wheel_[0] = "N2";
41  wheel_[1] = "N1";
42  wheel_[2] = "N0";
43  wheel_[3] = "P0";
44  wheel_[4] = "P1";
45  wheel_[5] = "P2";
46 
47  inclusivepath_ = l1tdttffolder_ + "/01-INCLUSIVE";
48  gmtpath_ = l1tdttffolder_ + "/08-GMT_MATCH";
49  testpath_ = l1tdttffolder_ + "/09-TEST";
50 
52  char hname[100]; //histo name
53  char mename[100]; //ME name
54 
58  sprintf(hname, "dttf_02_nTracks");
59  sprintf(mename, "DTTF Tracks by Wheel");
60  dttf_nTracks_integ = ibooker.book1D(hname, mename, 6, 0, 6);
62 
64  sprintf(hname, "dttf_03_tracks_occupancy_summary");
65  sprintf(mename, "DTTF Tracks Occupancy");
66  dttf_occupancySummary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
68  dttf_occupancySummary->setAxisTitle("Sector", 2);
69 
71 
73  sprintf(hname, "dttf_05_bx_occupancy");
74  sprintf(mename, "DTTF Tracks BX Distribution by Wheel");
75  dttf_bx_summary = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
77  dttf_bx_summary->setAxisTitle("BX", 2);
78 
80  sprintf(hname, "dttf_06_bx");
81  sprintf(mename, "DTTF Tracks BX w.r.t. Tracks with BX=0");
82  dttf_bx_integ = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
83  dttf_bx_integ->setAxisTitle("BX", 1);
84 
86  sprintf(hname, "dttf_07_quality");
87  sprintf(mename, "DTTF Tracks Quality distribution");
88  dttf_quality_integ = ibooker.book1D(hname, mename, 7, 1, 8);
90 
92  sprintf(hname, "dttf_08_quality_occupancy");
93  sprintf(mename, "DTTF Tracks Quality distribution by Wheel");
94  dttf_quality_summary = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
98 
100  sprintf(hname, "dttf_09_highQuality_Tracks");
101  sprintf(mename, "Fraction of DTTF Tracks with Quality>3");
102  dttf_highQual_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
104  dttf_highQual_Summary->setAxisTitle("Sector", 2);
105 
107  sprintf(hname, "dttf_10_phi_vs_etaCoarse");
108  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (coarse #eta only, packed values)");
109  dttf_phi_eta_coarse_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
112 
114  sprintf(hname, "dttf_11_phi_vs_etaFine");
115  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (fine #eta only, packed values)");
116  dttf_phi_eta_fine_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
119 
121  sprintf(hname, "dttf_12_phi_vs_eta");
122  sprintf(mename, "#eta-#phi DTTF Tracks occupancy");
123  dttf_phi_eta_integ = ibooker.book2D(hname, mename, 64, -1.2, 1.2, 144, -15, 345.);
124  dttf_phi_eta_integ->setAxisTitle("#eta", 1);
125  dttf_phi_eta_integ->setAxisTitle("#phi", 2);
126 
128  sprintf(hname, "dttf_13_eta_fine_fraction");
129  sprintf(mename, "Fraction of DTTF Tracks with Fine #eta Assignment");
130  dttf_eta_fine_fraction = ibooker.book1D(hname, mename, 6, 0, 6);
133 
135 
137  sprintf(hname, "dttf_14_eta");
138  sprintf(mename, "DTTF Tracks #eta distribution (Packed values)");
139  dttf_eta_integ = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
140  dttf_eta_integ->setAxisTitle("#eta", 1);
141 
143  sprintf(hname, "dttf_15_phi");
144  sprintf(mename, "DTTF Tracks Phi distribution (Packed values)");
145  dttf_phi_integ = ibooker.book1D(hname, mename, 144, -6, 138.);
146  dttf_phi_integ->setAxisTitle("#phi", 1);
147 
149  sprintf(hname, "dttf_16_pt");
150  sprintf(mename, "DTTF Tracks p_{T} distribution (Packed values)");
151  dttf_pt_integ = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
152  dttf_pt_integ->setAxisTitle("p_{T}", 1);
154  sprintf(hname, "dttf_17_charge");
155  sprintf(mename, "DTTF Tracks Charge distribution");
156  dttf_q_integ = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
157  dttf_q_integ->setAxisTitle("Charge", 1);
158 
160  sprintf(hname, "dttf_18_2ndTrack_occupancy_summary");
161  sprintf(mename, "DTTF 2nd Tracks occupancy w.r.t. Tracks with BX=0");
162  dttf_2ndTrack_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
164 
168  ibooker.setCurrentFolder(gmtpath_);
169  sprintf(hname, "dttf_gmt_fract_matching");
170  sprintf(mename, "Fraction of DTTF tracks matching with GMT tracks");
171  dttf_gmt_matching = ibooker.book1D(hname, mename, 3, 1, 4);
172  dttf_gmt_matching->setBinLabel(1, "GMT Only", 1);
173  dttf_gmt_matching->setBinLabel(2, "Matching", 1);
174  dttf_gmt_matching->setBinLabel(3, "DTTF Only", 1);
175 
179 
180  ibooker.setCurrentFolder(testpath_);
181  sprintf(hname, "dttf_01_tracks_occupancy_test_summary");
182  sprintf(mename, "DTTF Tracks Occupancy");
183  dttf_occupancySummary_test = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
186 
190  ibooker.setCurrentFolder(inclusivepath_ + "/2ND_TRACK_ONLY");
191 
193  sprintf(hname, "dttf_01_nTracks_2ndTrack");
194  sprintf(mename, "DTTF 2nd Tracks per Wheel distribution");
195  dttf_nTracks_integ_2ndTrack = ibooker.book1D(hname, mename, 6, 0, 6);
197 
199  sprintf(hname, "dttf_02_occupancy_summary_2ndTrack");
200  sprintf(mename, "DTTF 2nd Tracks distribution by Sector and Wheel");
201  dttf_occupancySummary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
203 
205  sprintf(hname, "dttf_03_bx_occupancy_2ndTrack");
206  sprintf(mename, "DTTF 2nd Tracks BX Distribution by Wheel");
207  dttf_bx_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
210 
212  sprintf(hname, "dttf_04_bx_2ndTrack");
213  sprintf(mename, "Fraction of DTTF Tracks BX w.r.t. Tracks with BX=0");
214  dttf_bx_integ_2ndTrack = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
216 
218  sprintf(hname, "dttf_05_quality_2ndTrack");
219  sprintf(mename, "DTTF 2nd Tracks Quality distribution");
220  dttf_quality_integ_2ndTrack = ibooker.book1D(hname, mename, 7, 0.5, 7.5);
223 
225  sprintf(hname, "dttf_06_quality_occupancy_2ndTrack");
226  sprintf(mename, "DTTF 2nd Tracks Quality distribution by Wheel");
227  dttf_quality_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
231 
233  sprintf(hname, "dttf_07_highQuality_Tracks_2ndTrack");
234  sprintf(mename, "Fraction of DTTF 2nd Tracks with Quality>3");
235  dttf_highQual_Summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
238 
240  sprintf(hname, "dttf_08_phi_vs_eta_2ndTrack");
241  sprintf(mename, "#eta-#phi DTTF Tracks occupancy for 2nd Tracks");
242  dttf_phi_eta_integ_2ndTrack = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
245 
247  sprintf(hname, "dttf_09_eta_2ndTrack");
248  sprintf(mename, "DTTF 2nd Tracks #eta distribution (Packed values)");
249  dttf_eta_integ_2ndTrack = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
251 
253  sprintf(hname, "dttf_10_phi_2ndTrack");
254  sprintf(mename, "DTTF 2nd Tracks Phi distribution (Packed values)");
255  dttf_phi_integ_2ndTrack = ibooker.book1D(hname, mename, 144, -6, 138);
257 
259  sprintf(hname, "dttf_11_pt_2ndTrack");
260  sprintf(mename, "DTTF 2nd Tracks p_{T} distribution (Packed values)");
261  dttf_pt_integ_2ndTrack = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
263 
265  sprintf(hname, "dttf_12_charge_2ndTrack");
266  sprintf(mename, "DTTF 2nd Tracks Charge distribution");
267  dttf_q_integ_2ndTrack = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
268  dttf_q_integ_2ndTrack->setAxisTitle("Charge", 1);
269 
270  for (unsigned int wh = 0; wh < 6; ++wh) {
271  ibooker.setCurrentFolder(wheelpath_[wh]);
272 
274  sprintf(hname, "dttf_02_nTracks_wh%s", wheel_[wh].c_str());
275  sprintf(mename, "Wheel %s - Number of Tracks", wheel_[wh].c_str());
276  dttf_nTracks_wheel[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
277  dttf_nTracks_wheel[wh]->setAxisTitle("sector", 1);
278 
280  sprintf(hname, "dttf_03_bx_occupancy_wh%s", wheel_[wh].c_str());
281  sprintf(mename, "Wheel %s - DTTF Tracks BX distribution by Sector", wheel_[wh].c_str());
282  dttf_bx_wheel_summary[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
283  dttf_bx_wheel_summary[wh]->setAxisTitle("BX", 2);
284  dttf_bx_wheel_summary[wh]->setAxisTitle("Sector", 1);
285 
287  sprintf(hname, "dttf_04_bx_wh%s", wheel_[wh].c_str());
288  sprintf(mename, "Wheel %s - DTTF Tracks BX w.r.t. Tracks with BX=0", wheel_[wh].c_str());
289  dttf_bx_wheel_integ[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
290  dttf_bx_wheel_integ[wh]->setAxisTitle("BX", 1);
291 
293  sprintf(hname, "dttf_05_quality_wh%s", wheel_[wh].c_str());
294  sprintf(mename, "Wheel %s - Tracks Quality Distribution", wheel_[wh].c_str());
295  dttf_quality_wheel[wh] = ibooker.book1D(hname, mename, 7, 1, 8);
296  dttf_quality_wheel[wh]->setAxisTitle("Quality", 1);
298 
300  sprintf(hname, "dttf_06_quality_summary_wh%s", wheel_[wh].c_str());
301  sprintf(mename, "Wheel %s - Tracks Quality Distribution by Sector", wheel_[wh].c_str());
302  dttf_quality_summary_wheel[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 7, 1, 8);
303  dttf_quality_summary_wheel[wh]->setAxisTitle("Sector", 1);
304  // dttf_quality_summary_wheel[wh]->setAxisTitle("Quality", 2);
306 
308  sprintf(hname, "dttf_09_etaFine_fraction_wh%s", wheel_[wh].c_str());
309  sprintf(mename, "Wheel %s - Fraction of DTTF Tracks with fine #eta assignment", wheel_[wh].c_str());
310  dttf_fine_fraction_wh[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
311  dttf_fine_fraction_wh[wh]->setAxisTitle("Sector", 1);
312 
314  sprintf(hname, "dttf_10_eta_wh%s", wheel_[wh].c_str());
315  sprintf(mename, "Wheel %s - DTTF Tracks #eta distribution (Packed values)", wheel_[wh].c_str());
316  dttf_eta_wheel[wh] = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
317  dttf_eta_wheel[wh]->setAxisTitle("#eta", 1);
318 
320  sprintf(hname, "dttf_11_phi_wh%s", wheel_[wh].c_str());
321  sprintf(mename, "Wheel %s - DTTF Tracks Phi distribution (Packed values)", wheel_[wh].c_str());
322  dttf_phi_wheel[wh] = ibooker.book1D(hname, mename, 144, -6, 138.);
323  dttf_phi_wheel[wh]->setAxisTitle("#phi", 1);
324 
326  sprintf(hname, "dttf_12_pt_wh%s", wheel_[wh].c_str());
327  sprintf(mename, "Wheel %s - DTTF Tracks p_{T} distribution (Packed values)", wheel_[wh].c_str());
328  dttf_pt_wheel[wh] = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
329  dttf_pt_wheel[wh]->setAxisTitle("p_{T}", 1);
330 
332  sprintf(hname, "dttf_13_charge_wh%s", wheel_[wh].c_str());
333  sprintf(mename, "Wheel %s - DTTF Tracks Charge distribution", wheel_[wh].c_str());
334  dttf_q_wheel[wh] = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
335  dttf_q_wheel[wh]->setAxisTitle("Charge", 1);
336  }
337 
339  for (unsigned int wh = 0; wh < 6; ++wh) {
340  ibooker.setCurrentFolder(wheelpath_[wh] + "/2ND_TRACK_ONLY");
341 
343  sprintf(hname, "dttf_01_nTracks_wh%s_2ndTrack", wheel_[wh].c_str());
344  sprintf(mename, "Wheel %s - DTTF Number of 2nd Tracks with BX=0", wheel_[wh].c_str());
345  dttf_nTracks_wheel_2ndTrack[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
346  dttf_nTracks_wheel_2ndTrack[wh]->setAxisTitle("sector", 1);
347 
349  sprintf(hname, "dttf_02_bx_occupancy_wh%s_2ndTrack", wheel_[wh].c_str());
350  sprintf(mename, "Wheel %s - DTTF 2nd Tracks BX distribution by Sector", wheel_[wh].c_str());
351  dttf_bx_wheel_summary_2ndTrack[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
354 
356  sprintf(hname, "dttf_03_bx_wh%s_2ndTrack", wheel_[wh].c_str());
357  sprintf(mename, "Wheel %s - 2nd Tracks BX Distribution", wheel_[wh].c_str());
358  dttf_bx_wheel_integ_2ndTrack[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
360  }
361 }
362 
363 //--------------------------------------------------------
364 
366  //Processing by run ID
367  book(ibooker);
368  makeSummary(igetter);
369 }
370 
371 //--------------------------------------------------------
373  DQMStore::IGetter &igetter,
374  const edm::LuminosityBlock &lumiSeg,
375  const edm::EventSetup &c) {
377  if (online_ && !(counterLS_ % resetafterlumi_)) {
378  book(ibooker);
379  char hname[60];
380  sprintf(hname, "%s/dttf_04_tracks_occupancy_by_lumi", inclusivepath_.c_str());
381 
382  occupancy_r_ = getTH2F(igetter, hname);
383  if (!occupancy_r_) {
384  edm::LogError("L1TDTTFClient::beginLuminosityBlock:ME") << "Failed to get TH2D " << std::string(hname);
385  } else {
386  edm::LogInfo("L1TDTTFClient::beginLuminosityBlock:RESET") << "Reseting plots by lumi!";
387  occupancy_r_->Reset();
388  }
389  }
390 
391  if (online_) {
392  makeSummary(igetter);
393  if (occupancy_r_)
395  }
396 }
397 
398 //--------------------------------------------------------
403  buildSummaries(igetter);
404 
408  double scale = 0;
409  double entries = dttf_occupancySummary->getTH2F()->Integral();
410 
411  if (entries) {
414 
416  scale = 1 / entries;
419 
421  double physEntries = dttf_eta_integ->getTH1F()->Integral();
422  if (physEntries > 0) {
423  double physScale = 1 / physEntries;
424 
425  normalize(dttf_phi_eta_integ->getTH2F(), physScale);
426 
429  normalize(dttf_quality_summary->getTH2F(), physScale);
430 
431  normalize(dttf_eta_integ->getTH1F(), physScale);
432  normalize(dttf_q_integ->getTH1F(), physScale);
433  normalize(dttf_pt_integ->getTH1F(), physScale);
434  normalize(dttf_phi_integ->getTH1F(), physScale);
435  normalize(dttf_quality_integ->getTH1F(), physScale);
436  }
437  }
438 
442 
443  double entries2ndTrack = dttf_occupancySummary_2ndTrack->getTH2F()->Integral();
444  if (entries2ndTrack > 0) {
447 
449  TH2F *ratio = dttf_occupancySummary_2ndTrack->getTH2F();
451  igetter, ratio, dttf_highQual_Summary_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_05_quality_summary_wh%s_2ndTrack");
452 
454 
456  double scale2nd = 1 / entries2ndTrack;
459 
468  }
469 
471  setGMTsummary(igetter);
472 }
473 
474 //--------------------------------------------------------
476  char hname[100];
477  int wheelBx[4];
478  int wheelBx2nd[4];
479  int wheelSumBx[4];
480  int wheelSumBx2nd[4];
481  int qualities[8];
482 
483  memset(wheelSumBx, 0, 4 * sizeof(int));
484  memset(wheelSumBx2nd, 0, 4 * sizeof(int));
485 
488  dttf_q_integ->Reset();
489  dttf_pt_integ->Reset();
499 
503 
504  for (unsigned int wh = 0; wh < 6; ++wh) {
505  dttf_eta_wheel[wh]->Reset();
506  dttf_q_wheel[wh]->Reset();
507  dttf_pt_wheel[wh]->Reset();
508  dttf_phi_wheel[wh]->Reset();
509  dttf_quality_wheel[wh]->Reset();
511 
512  double wheelEtaAll = 0;
513  double wheelEtaFine = 0;
514  memset(wheelBx, 0, 4 * sizeof(int));
515  memset(wheelBx2nd, 0, 4 * sizeof(int));
516 
518  memset(qualities, 0, 8 * sizeof(int));
519 
523  buildPhiEtaPlotOFC(igetter,
527  "%s/dttf_07_phi_vs_etaFine_wh%s",
528  "%s/dttf_08_phi_vs_etaCoarse_wh%s",
529  wh);
530 
531  buildPhiEtaPlotO(igetter, dttf_phi_eta_integ_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_06_phi_vs_eta_wh%s_2ndTrack", wh);
532 
536  for (unsigned int sector = 1; sector < 13; ++sector) {
540  sprintf(hname, "%s/BX_BySector/dttf_bx_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
541 
542  TH1F *bxsector = getTH1F(igetter, hname);
543  if (!bxsector) {
544  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
545  } else {
546  for (unsigned int bx = 1; bx < 4; ++bx) {
547  int bxval = bxsector->GetBinContent(bx);
548 
549  if (bx == 2) {
550  // if ( wh == 2 )
551  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval*14 );
552  // else
553  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval );
554  dttf_occupancySummary->setBinContent(wh + 1, sector, bxval);
555  dttf_occupancySummary_test->setBinContent(wh + 1, sector, bxval);
556  dttf_nTracks_wheel[wh]->setBinContent(sector, bxval);
557  }
558  wheelBx[bx] += bxval;
559  dttf_bx_wheel_summary[wh]->setBinContent(sector, bx, bxval);
560  }
561  }
562 
566  sprintf(hname,
567  "%s/BX_BySector/2ND_TRACK_ONLY/dttf_bx_2ndTrack_wh%s_se%d",
568  wheelpath_[wh].c_str(),
569  wheel_[wh].c_str(),
570  sector);
571 
572  TH1F *bxsector2nd = getTH1F(igetter, hname);
573  if (!bxsector2nd) {
574  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
575  } else {
576  for (unsigned int bx = 1; bx < 4; ++bx) {
577  int bxval = bxsector2nd->GetBinContent(bx);
578 
579  if (bx == 2) {
580  dttf_2ndTrack_Summary->setBinContent(wh + 1, sector, bxval);
581  dttf_occupancySummary_2ndTrack->setBinContent(wh + 1, sector, bxval);
582  dttf_nTracks_wheel_2ndTrack[wh]->setBinContent(sector, bxval);
583  }
584  wheelBx2nd[bx] += bxval;
585  dttf_bx_wheel_summary_2ndTrack[wh]->setBinContent(sector, bx, bxval);
586  }
587  }
588 
592  sprintf(hname, "%s/Charge/dttf_charge_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
593  TH1F *tmp = getTH1F(igetter, hname);
594  if (!tmp) {
595  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
596  } else {
597  dttf_q_integ->getTH1F()->Add(tmp);
598  dttf_q_wheel[wh]->getTH1F()->Add(tmp);
599  }
600 
604  sprintf(hname, "%s/PT/dttf_pt_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
605  tmp = getTH1F(igetter, hname);
606  if (!tmp) {
607  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
608  } else {
609  dttf_pt_integ->getTH1F()->Add(tmp);
610  dttf_pt_wheel[wh]->getTH1F()->Add(tmp);
611  }
612 
616  sprintf(hname, "%s/Phi/dttf_phi_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
617  tmp = getTH1F(igetter, hname);
618  if (!tmp) {
619  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
620  } else {
621  dttf_phi_integ->getTH1F()->Add(tmp);
622  dttf_phi_wheel[wh]->getTH1F()->Add(tmp);
623  }
624 
628  double highQual = 0;
629  double denHighQual = 0;
630  sprintf(hname, "%s/Quality/dttf_qual_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
631  tmp = getTH1F(igetter, hname);
632  if (!tmp) {
633  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
634  } else {
635  dttf_quality_wheel[wh]->getTH1F()->Add(tmp);
636 
637  for (unsigned int qual = 1; qual < 4; ++qual) {
638  double bincontent = tmp->GetBinContent(qual);
639  qualities[qual] += bincontent;
640  denHighQual += bincontent;
641  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
642  }
643 
644  for (unsigned int qual = 4; qual < 8; ++qual) {
645  double bincontent = tmp->GetBinContent(qual);
646  qualities[qual] += bincontent;
647  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
648  denHighQual += bincontent;
649  highQual += bincontent;
650  }
651  }
652  if (denHighQual > 0)
653  highQual /= denHighQual;
654  dttf_highQual_Summary->setBinContent(wh + 1, sector, highQual);
655 
659  sprintf(hname, "%s/Eta/dttf_eta_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
660  tmp = getTH1F(igetter, hname);
661  if (!tmp) {
662  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
663  } else {
664  dttf_eta_integ->getTH1F()->Add(tmp);
665  dttf_eta_wheel[wh]->getTH1F()->Add(tmp);
666  }
667 
671  sprintf(hname,
672  "%s/EtaFineFraction/dttf_etaFine_fraction_wh%s_se%d",
673  wheelpath_[wh].c_str(),
674  wheel_[wh].c_str(),
675  sector);
676  tmp = getTH1F(igetter, hname);
677  if (!tmp) {
678  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
679  } else {
680  double fine = tmp->GetBinContent(1);
681  double coarse = tmp->GetBinContent(2);
682  double tot = fine + coarse;
683  wheelEtaAll += tot;
684  wheelEtaFine += fine;
685  if (tot > 0) {
686  dttf_fine_fraction_wh[wh]->setBinContent(sector, fine / tot);
687  }
688  }
689  }
690 
694  if (wheelEtaAll > 0) {
695  dttf_eta_fine_fraction->setBinContent(wh + 1, wheelEtaFine / wheelEtaAll);
696  }
697 
701  dttf_nTracks_integ->setBinContent(wh + 1, wheelBx[2]);
702  dttf_nTracks_integ_2ndTrack->setBinContent(wh + 1, wheelBx2nd[2]);
703 
707  for (unsigned int bx = 1; bx < 4; ++bx) {
708  dttf_bx_wheel_integ[wh]->setBinContent(bx, wheelBx[bx]);
709  dttf_bx_summary->setBinContent(wh + 1, bx, wheelBx[bx]);
710  wheelSumBx[bx] += wheelBx[bx];
711 
712  dttf_bx_wheel_integ_2ndTrack[wh]->setBinContent(bx, wheelBx2nd[bx]);
713  dttf_bx_summary_2ndTrack->setBinContent(wh + 1, bx, wheelBx2nd[bx]);
714  wheelSumBx2nd[bx] += wheelBx2nd[bx];
715  }
716 
720  for (unsigned int qual = 1; qual < 8; ++qual) {
721  dttf_quality_summary->setBinContent(wh + 1, qual, qualities[qual]);
722  dttf_quality_integ->getTH1F()->AddBinContent(qual, qualities[qual]);
723  }
724 
738 
742  double scale = wheelBx[2];
743  if (scale > 0) {
744  scale = 1 / scale;
745  normalize(dttf_bx_wheel_integ[wh]->getTH1F(), scale);
746  }
747 
748  scale = wheelBx2nd[2];
749  if (scale > 0) {
750  scale = 1 / scale;
752  }
753 
759 
763  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_07_eta_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
764 
765  TH1F *tmp = getTH1F(igetter, hname);
766  if (!tmp) {
767  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
768  } else {
769  dttf_eta_integ_2ndTrack->getTH1F()->Add(tmp);
770  }
771 
775  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_08_phi_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
776  tmp = getTH1F(igetter, hname);
777  if (!tmp) {
778  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
779  } else {
780  dttf_phi_integ_2ndTrack->getTH1F()->Add(tmp);
781  }
782 
786  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_09_pt_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
787  tmp = getTH1F(igetter, hname);
788  if (!tmp) {
789  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
790  } else {
791  dttf_pt_integ_2ndTrack->getTH1F()->Add(tmp);
792  }
793 
797  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_10_charge_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
798  tmp = getTH1F(igetter, hname);
799  if (!tmp) {
800  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
801  } else {
802  dttf_q_integ_2ndTrack->getTH1F()->Add(tmp);
803  }
804 
808  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_04_quality_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
809  tmp = getTH1F(igetter, hname);
810  if (!tmp) {
811  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
812  } else {
813  for (unsigned int qual = 1; qual < 8; ++qual) {
814  double binqual = tmp->GetBinContent(qual);
815  dttf_quality_integ_2ndTrack->getTH1F()->AddBinContent(qual, binqual);
816  dttf_quality_summary_2ndTrack->setBinContent(wh + 1, qual, binqual);
817  }
818  }
819  }
820 
824  for (unsigned int bx = 1; bx < 4; ++bx) {
825  dttf_bx_integ->setBinContent(bx, wheelSumBx[bx]);
826  dttf_bx_integ_2ndTrack->setBinContent(bx, wheelSumBx2nd[bx]);
827  }
828 
832  double scale = wheelSumBx[2];
833  if (scale > 0) {
834  scale = 1. / scale;
836  }
837 
838  scale = wheelSumBx2nd[2];
839  if (scale > 0) {
840  scale = 1. / scale;
842  }
843 }
844 
845 //--------------------------------------------------------
847  char hname[60];
848  sprintf(hname, "%s/dttf_tracks_with_gmt_match", gmtpath_.c_str());
849  TH2F *gmt_match = getTH2F(igetter, hname);
850  if (!gmt_match) {
851  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
852  return;
853  }
854 
855  sprintf(hname, "%s/dttf_tracks_without_gmt_match", gmtpath_.c_str());
856  TH2F *gmt_missed = getTH2F(igetter, hname);
857  if (!gmt_missed) {
858  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
859  return;
860  }
861 
862  sprintf(hname, "%s/dttf_missing_tracks_in_gmt", gmtpath_.c_str());
863  TH2F *gmt_ghost = getTH2F(igetter, hname);
864  if (!gmt_ghost) {
865  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
866  return;
867  }
868 
869  int match = gmt_match->Integral();
870  int missed = gmt_missed->Integral();
871  int ghost = gmt_ghost->Integral();
872  float tot = match + missed + ghost;
873  if (tot > 0) {
874  double val = ghost / tot;
876  val = match / tot;
878  val = missed / tot;
880  }
881 }
882 
883 //--------------------------------------------------------
884 TH1F *L1TDTTFClient::getTH1F(DQMStore::IGetter &igetter, const char *hname) {
885  MonitorElement *me = igetter.get(hname);
886  if (!me) {
887  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
888  return nullptr;
889  }
890 
891  return me->getTH1F();
892 }
893 
894 //--------------------------------------------------------
895 TH2F *L1TDTTFClient::getTH2F(DQMStore::IGetter &igetter, const char *hname) {
896  MonitorElement *me = igetter.get(hname);
897  if (!me) {
898  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
899  return nullptr;
900  }
901 
902  return me->getTH2F();
903 }
904 
905 //--------------------------------------------------------
906 
907 //--------------------------------------------------------
909  TH2F *occupancySummary,
910  MonitorElement *highQual_Summary,
911  const std::string &path) {
912  char hname[150];
913 
917  for (unsigned int wh = 0; wh < 6; ++wh) {
918  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
919 
920  TH2F *quality = getTH2F(igetter, hname);
921  if (!quality) {
922  edm::LogError("L1TDTTFClient::buildHighQualityPlot") << "Failed to get TH2F " << std::string(hname);
923  } else {
924  for (unsigned int sec = 1; sec < 13; ++sec) {
925  double denHighQual = occupancySummary->GetBinContent(wh + 1, sec);
926  double val = 0;
927  if (denHighQual > 0) {
928  for (unsigned int qual = 4; qual < 8; ++qual) {
929  val += quality->GetBinContent(qual, sec);
930  }
931  val /= denHighQual;
932  }
933  highQual_Summary->setBinContent(wh + 1, sec, val);
934  }
935  }
936  }
937 }
938 
939 //--------------------------------------------------------
941  MonitorElement *phi_eta_fine_integ,
942  MonitorElement *phi_eta_coarse_integ,
943  MonitorElement *phi_eta_integ,
944  const std::string &path_fine,
945  const std::string &path_coarse,
946  int wh) {
947  char hname[150];
948  sprintf(hname, path_fine.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
949 
950  TH2F *phi_vs_eta_fine = getTH2F(igetter, hname);
951  if (!phi_vs_eta_fine) {
952  edm::LogError("L1TDTTFClient::buildPhiEtaPloOtFC") << "Failed to get TH1D " << std::string(hname);
953  }
954 
955  sprintf(hname, path_coarse.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
956  TH2F *phi_vs_eta_coarse = getTH2F(igetter, hname);
957  if (!phi_vs_eta_coarse) {
958  edm::LogError("L1TDTTFClient::buildPhiEtaPlotOFC") << "Failed to get TH1D " << std::string(hname);
959  }
960 
961  if (!phi_vs_eta_fine || !phi_vs_eta_coarse) {
962  return;
963  }
964 
965  for (unsigned int phi = 1; phi < 145; ++phi) {
966  float start = 0;
967  int nbins = 0;
968  switch (wh) {
969  case 0:
970  start = 0;
971  nbins = 18;
972  break; // N2
973  case 1:
974  start = 8;
975  nbins = 20;
976  break; // N1
977  case 2:
978  start = 22;
979  nbins = 10;
980  break; // N0
981  case 3:
982  start = 22;
983  nbins = 20;
984  break; // P0
985  case 4:
986  start = 36;
987  nbins = 20;
988  break; // P1
989  case 5:
990  start = 46;
991  nbins = 18;
992  break; // P2
993  default:
994  start = 0;
995  nbins = 0;
996  break; // BOH
997  }
998 
999  for (int eta = 1; eta <= nbins; ++eta) {
1000  double setbin = eta + start;
1001 
1002  double valfine = phi_vs_eta_fine->GetBinContent(eta, phi) + phi_eta_fine_integ->getBinContent(setbin, phi);
1003 
1004  double valcoarse = phi_vs_eta_coarse->GetBinContent(eta, phi) + phi_eta_coarse_integ->getBinContent(setbin, phi);
1005 
1006  phi_eta_fine_integ->setBinContent(setbin, phi, valfine);
1007  phi_eta_coarse_integ->setBinContent(setbin, phi, valcoarse);
1008  phi_eta_integ->setBinContent(setbin, phi, valfine + valcoarse);
1009  }
1010 
1011  // double underflow_f = phi_vs_eta_fine->GetBinContent( 0, phi )
1012  // + phi_eta_fine_integ->getBinContent( 1, phi );
1013  // phi_eta_fine_integ->setBinContent( 1, phi, underflow_f );
1014  //
1015  // double underflow_c = phi_vs_eta_coarse->GetBinContent( 0, phi )
1016  // + phi_eta_coarse_integ->getBinContent( 1, phi );
1017  // phi_eta_coarse_integ->setBinContent( 1, phi, underflow_c );
1018  //
1019  // double overflow_f = phi_vs_eta_fine->GetBinContent( nbins+1, phi )
1020  // + phi_eta_fine_integ->getBinContent( 64 );
1021  // phi_eta_fine_integ->setBinContent( 64, phi, overflow_f );
1022  //
1023  // double overflow_c = phi_vs_eta_coarse->GetBinContent( nbins+1, phi )
1024  // + phi_eta_coarse_integ->getBinContent( 64, phi );
1025  // phi_eta_coarse_integ->setBinContent( 64, phi, overflow_c );
1026  //
1027  // double underflow = underflow_f + underflow_c;
1028  // phi_eta_integ->setBinContent( 1, phi, underflow );
1029  //
1030  // double overflow = overflow_f + overflow_c;
1031  // phi_eta_integ->setBinContent( 64, phi, overflow );
1032  }
1033 }
1034 
1035 //--------------------------------------------------------
1037  MonitorElement *phi_eta_integ,
1038  const std::string &path,
1039  int wh) {
1040  char hname[100];
1041  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
1042 
1043  TH2F *phi_vs_eta = getTH2F(igetter, hname);
1044  if (!phi_vs_eta) {
1045  edm::LogError("L1TDTTFClient::buildPhiEtaPlotO:ME") << "Failed to get TH1D " << std::string(hname);
1046  } else {
1047  for (unsigned int phi = 1; phi < 145; ++phi) {
1048  float start = 0;
1049  int nbins = 0;
1050  switch (wh) {
1051  case 0:
1052  start = 0;
1053  nbins = 18;
1054  break; // N2
1055  case 1:
1056  start = 8;
1057  nbins = 20;
1058  break; // N1
1059  case 2:
1060  start = 22;
1061  nbins = 10;
1062  break; // N0
1063  case 3:
1064  start = 22;
1065  nbins = 20;
1066  break; // P0
1067  case 4:
1068  start = 36;
1069  nbins = 20;
1070  break; // P1
1071  case 5:
1072  start = 46;
1073  nbins = 18;
1074  break; // P2
1075  default:
1076  start = 0;
1077  nbins = 0;
1078  break; // BOH
1079  }
1080 
1081  for (int eta = 1; eta <= nbins; ++eta) {
1082  double setbin = eta + start;
1083  double val = phi_vs_eta->GetBinContent(eta, phi) + phi_eta_integ->getBinContent(setbin, phi);
1084  phi_eta_integ->setBinContent(setbin, phi, val);
1085  }
1086 
1087  double underflow = phi_vs_eta->GetBinContent(0, phi) + phi_eta_integ->getBinContent(1, phi);
1088  phi_eta_integ->setBinContent(1, phi, underflow);
1089 
1090  double overflow = phi_vs_eta->GetBinContent(nbins + 1, phi) + phi_eta_integ->getBinContent(64);
1091  phi_eta_integ->setBinContent(64, phi, overflow);
1092  }
1093  }
1094 }
1095 
1096 // //--------------------------------------------------------
1097 // void L1TDTTFClient::buildPhiEtaPlot( MonitorElement * phi_eta_integ,
1098 // const std::string & path ,
1099 // int wh)
1100 // {
1101 // char hname[60];
1102 // sprintf( hname, "%s/dttf_phi_eta_wh%s",
1103 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1104 //
1105 // TH2F * phi_vs_eta = getTH2F(hname);
1106 // if ( ! phi_vs_eta ) {
1107 // edm::LogError("L1TDTTFClient::buildPhiEtaPlot:ME") << "Failed to get TH1D "
1108 // << std::string(hname);
1109 // } else {
1110 //
1111 //
1112 // for ( unsigned int phi = 1; phi < 145 ; ++phi ) {
1113 // for ( unsigned int eta = 1; eta < 65 ; ++eta ) {
1114 // double val = phi_vs_eta->GetBinContent( eta, phi )
1115 // + dttf_phi_eta_integ->getBinContent( eta, phi );
1116 // dttf_phi_eta_integ->setBinContent( eta, phi, val );
1117 // }
1118 //
1119 // }
1120 // }
1121 // }
1122 //
1123 //
1124 // //--------------------------------------------------------
1125 // void L1TDTTFClient::buildPhiEtaPlotFC( MonitorElement * phi_eta_fine_integ,
1126 // MonitorElement * phi_eta_coarse_integ,
1127 // MonitorElement * phi_eta_integ,
1128 // const std::string & path_fine,
1129 // const std::string & path_coarse,
1130 // int wh )
1131 // {
1132 //
1133 // char hname[60];
1134 //
1135 // sprintf( hname, path_fine.c_str(),
1136 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1137 // TH2F * phi_vs_eta_fine = getTH2F(hname);
1138 // if ( ! phi_vs_eta_fine ) {
1139 // edm::LogError("L1TDTTFClient::buildPhiEtaPlotFC")
1140 // << "Failed to get TH1D " << std::string(hname);
1141 // }
1142 //
1143 //
1144 // sprintf( hname, path_coarse.c_str(),
1145 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1146 // TH2F * phi_vs_eta_coarse = getTH2F(hname);
1147 // if ( ! phi_vs_eta_coarse ) {
1148 // edm::LogError("L1TDTTFClient::buildPhiEtaPlotFC")
1149 // << "Failed to get TH1D " << std::string(hname);
1150 // }
1151 //
1152 // if ( ! phi_vs_eta_fine || ! phi_vs_eta_coarse ) {
1153 // return;
1154 // }
1155 //
1156 // for ( unsigned int phi = 1; phi < 145 ; ++phi ) {
1157 // for ( unsigned int eta = 1; eta < 65 ; ++eta ) {
1158 //
1159 // double valfine = phi_vs_eta_fine->GetBinContent( eta, phi )
1160 // + dttf_phi_eta_fine_integ->getBinContent( eta, phi );
1161 // dttf_phi_eta_fine_integ->setBinContent( eta, phi, valfine );
1162 // double valcoarse = phi_vs_eta_coarse->GetBinContent( eta, phi )
1163 // + dttf_phi_eta_coarse_integ->getBinContent( eta, phi );
1164 // dttf_phi_eta_coarse_integ->setBinContent( eta, phi, valcoarse );
1165 //
1166 // dttf_phi_eta_integ->setBinContent( eta, phi, valfine + valcoarse );
1167 //
1168 // }
1169 //
1170 // }
1171 // }
1172 
1173 //--------------------------------------------------------
1175  me->setAxisTitle("Wheel", 1);
1176  me->setBinLabel(1, "N2", 1);
1177  me->setBinLabel(2, "N1", 1);
1178  me->setBinLabel(3, "N0", 1);
1179  me->setBinLabel(4, "P0", 1);
1180  me->setBinLabel(5, "P1", 1);
1181  me->setBinLabel(6, "P2", 1);
1182 }
1183 
1184 //--------------------------------------------------------
1186  if (axis == 1)
1187  me->setAxisTitle("Quality", axis);
1188  me->setBinLabel(1, "T34", axis);
1189  me->setBinLabel(2, "T23/24", axis);
1190  me->setBinLabel(3, "T12/13/14", axis);
1191  me->setBinLabel(4, "T234", axis);
1192  me->setBinLabel(5, "T134", axis);
1193  me->setBinLabel(6, "T123/124", axis);
1194  me->setBinLabel(7, "T1234", axis);
1195 }
MonitorElement * dttf_bx_integ_2ndTrack
Definition: L1TDTTFClient.h:77
MonitorElement * dttf_gmt_matching
Definition: L1TDTTFClient.h:69
MonitorElement * dttf_occupancySummary
Definition: L1TDTTFClient.h:53
MonitorElement * dttf_quality_summary
Definition: L1TDTTFClient.h:58
virtual TH2F * getTH2F() const
L1TDTTFClient(const edm::ParameterSet &ps)
Constructor.
const edm::EventSetup & c
MonitorElement * dttf_q_wheel[6]
Definition: L1TDTTFClient.h:96
MonitorElement * dttf_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:82
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * dttf_quality_integ_2ndTrack
Definition: L1TDTTFClient.h:78
MonitorElement * dttf_eta_wheel[6]
Definition: L1TDTTFClient.h:93
void buildSummaries(DQMStore::IGetter &igetter)
void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
MonitorElement * dttf_nTracks_integ
Definition: L1TDTTFClient.h:52
MonitorElement * dttf_quality_integ
Definition: L1TDTTFClient.h:57
virtual TH1F * getTH1F() const
TH1F * getTH1F(DQMStore::IGetter &igetter, const char *hname)
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:47
void buildPhiEtaPlotO(DQMStore::IGetter &igetter, MonitorElement *phi_eta_integ, const std::string &path, int wh)
MonitorElement * dttf_bx_wheel_integ_2ndTrack[6]
void buildHighQualityPlot(DQMStore::IGetter &igetter, TH2F *occupancySummary, MonitorElement *highQual_Summary, const std::string &path)
void book(DQMStore::IBooker &ibooker)
MonitorElement * dttf_bx_wheel_summary[6]
Definition: L1TDTTFClient.h:88
string quality
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
Log< level::Error, false > LogError
MonitorElement * dttf_pt_integ_2ndTrack
Definition: L1TDTTFClient.h:84
MonitorElement * dttf_bx_integ
Definition: L1TDTTFClient.h:55
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
MonitorElement * dttf_phi_eta_fine_integ
Definition: L1TDTTFClient.h:61
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
MonitorElement * dttf_highQual_Summary_2ndTrack
Definition: L1TDTTFClient.h:80
MonitorElement * dttf_phi_wheel[6]
Definition: L1TDTTFClient.h:94
MonitorElement * dttf_phi_eta_integ
Definition: L1TDTTFClient.h:62
MonitorElement * dttf_quality_summary_wheel[6]
Definition: L1TDTTFClient.h:91
MonitorElement * dttf_pt_integ
Definition: L1TDTTFClient.h:65
MonitorElement * dttf_phi_eta_coarse_integ
Definition: L1TDTTFClient.h:60
TH2F * occupancy_r_
counter
Definition: L1TDTTFClient.h:44
~L1TDTTFClient() override
Destructor.
MonitorElement * dttf_occupancySummary_2ndTrack
Definition: L1TDTTFClient.h:75
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:673
MonitorElement * dttf_eta_integ
Definition: L1TDTTFClient.h:66
MonitorElement * dttf_2ndTrack_Summary
Definition: L1TDTTFClient.h:70
std::string gmtpath_
Definition: L1TDTTFClient.h:49
MonitorElement * dttf_q_integ_2ndTrack
Definition: L1TDTTFClient.h:85
MonitorElement * dttf_bx_wheel_summary_2ndTrack[6]
Definition: L1TDTTFClient.h:99
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
virtual double getBinContent(int binx) const
get content of bin (1-D)
const char * qualities[3]
MonitorElement * dttf_bx_summary
Definition: L1TDTTFClient.h:54
Log< level::Info, false > LogInfo
MonitorElement * dttf_quality_wheel[6]
Definition: L1TDTTFClient.h:90
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
void makeSummary(DQMStore::IGetter &igetter)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * dttf_eta_fine_fraction
Definition: L1TDTTFClient.h:63
std::string l1tdttffolder_
Definition: L1TDTTFClient.h:38
MonitorElement * dttf_occupancySummary_test
Definition: L1TDTTFClient.h:72
MonitorElement * dttf_fine_fraction_wh[6]
Definition: L1TDTTFClient.h:92
void setQualLabel(MonitorElement *me, int axis)
MonitorElement * dttf_nTracks_wheel[6]
Definition: L1TDTTFClient.h:87
MonitorElement * dttf_bx_summary_2ndTrack
Definition: L1TDTTFClient.h:76
MonitorElement * dttf_nTracks_integ_2ndTrack
Definition: L1TDTTFClient.h:74
void buildPhiEtaPlotOFC(DQMStore::IGetter &igetter, MonitorElement *phi_eta_fine_integ, MonitorElement *phi_eta_coarse_integ, MonitorElement *phi_eta_integ, const std::string &path_fine, const std::string &path_coarse, int wh)
void setGMTsummary(DQMStore::IGetter &igetter)
MonitorElement * dttf_phi_integ_2ndTrack
Definition: L1TDTTFClient.h:83
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
MonitorElement * dttf_pt_wheel[6]
Definition: L1TDTTFClient.h:95
MonitorElement * dttf_nTracks_wheel_2ndTrack[6]
Definition: L1TDTTFClient.h:98
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * dttf_phi_integ
Definition: L1TDTTFClient.h:64
tmp
align.sh
Definition: createJobs.py:716
MonitorElement * dttf_highQual_Summary
Definition: L1TDTTFClient.h:59
MonitorElement * dttf_q_integ
Definition: L1TDTTFClient.h:67
MonitorElement * dttf_bx_wheel_integ[6]
Definition: L1TDTTFClient.h:89
void normalize(T *me)
std::string inclusivepath_
Definition: L1TDTTFClient.h:48
std::string testpath_
Definition: L1TDTTFClient.h:50
void setWheelLabel(MonitorElement *me)
std::string wheel_[6]
Definition: L1TDTTFClient.h:46
MonitorElement * dttf_quality_summary_2ndTrack
Definition: L1TDTTFClient.h:79
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * dttf_phi_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:81