CMS 3D CMS Logo

L1TDTTFClient.cc
Go to the documentation of this file.
1 /*
2  * \file L1TDTTFClient.cc
3  *
4  * \author G. Codispoti
5  *
6  */
7 
9 
14 
16  : l1tdttffolder_(ps.getUntrackedParameter<std::string>("l1tSourceFolder", "L1T/L1TDTTF")),
17  dttfSource_(ps.getParameter<edm::InputTag>("dttfSource")),
18  online_(ps.getUntrackedParameter<bool>("online", true)),
19  resetafterlumi_(ps.getUntrackedParameter<int>("resetAfterLumi", 3)),
20  counterLS_(0),
21  occupancy_r_(nullptr) {
22  edm::LogInfo("L1TDTTFClient");
23 }
24 
25 //--------------------------------------------------------
26 L1TDTTFClient::~L1TDTTFClient() { edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: ending... "; }
27 
28 //--------------------------------------------------------
30  edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: Begin Job";
31 
32  wheelpath_[0] = l1tdttffolder_ + "/02-WHEEL_N2";
33  wheelpath_[1] = l1tdttffolder_ + "/03-WHEEL_N1";
34  wheelpath_[2] = l1tdttffolder_ + "/04-WHEEL_N0";
35  wheelpath_[3] = l1tdttffolder_ + "/05-WHEEL_P0";
36  wheelpath_[4] = l1tdttffolder_ + "/06-WHEEL_P1";
37  wheelpath_[5] = l1tdttffolder_ + "/07-WHEEL_P2";
38 
39  wheel_[0] = "N2";
40  wheel_[1] = "N1";
41  wheel_[2] = "N0";
42  wheel_[3] = "P0";
43  wheel_[4] = "P1";
44  wheel_[5] = "P2";
45 
46  inclusivepath_ = l1tdttffolder_ + "/01-INCLUSIVE";
47  gmtpath_ = l1tdttffolder_ + "/08-GMT_MATCH";
48  testpath_ = l1tdttffolder_ + "/09-TEST";
49 
51  char hname[100]; //histo name
52  char mename[100]; //ME name
53 
57  sprintf(hname, "dttf_02_nTracks");
58  sprintf(mename, "DTTF Tracks by Wheel");
59  dttf_nTracks_integ = ibooker.book1D(hname, mename, 6, 0, 6);
61 
63  sprintf(hname, "dttf_03_tracks_occupancy_summary");
64  sprintf(mename, "DTTF Tracks Occupancy");
65  dttf_occupancySummary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
67  dttf_occupancySummary->setAxisTitle("Sector", 2);
68 
70 
72  sprintf(hname, "dttf_05_bx_occupancy");
73  sprintf(mename, "DTTF Tracks BX Distribution by Wheel");
74  dttf_bx_summary = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
76  dttf_bx_summary->setAxisTitle("BX", 2);
77 
79  sprintf(hname, "dttf_06_bx");
80  sprintf(mename, "DTTF Tracks BX w.r.t. Tracks with BX=0");
81  dttf_bx_integ = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
82  dttf_bx_integ->setAxisTitle("BX", 1);
83 
85  sprintf(hname, "dttf_07_quality");
86  sprintf(mename, "DTTF Tracks Quality distribution");
87  dttf_quality_integ = ibooker.book1D(hname, mename, 7, 1, 8);
89 
91  sprintf(hname, "dttf_08_quality_occupancy");
92  sprintf(mename, "DTTF Tracks Quality distribution by Wheel");
93  dttf_quality_summary = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
97 
99  sprintf(hname, "dttf_09_highQuality_Tracks");
100  sprintf(mename, "Fraction of DTTF Tracks with Quality>3");
101  dttf_highQual_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
103  dttf_highQual_Summary->setAxisTitle("Sector", 2);
104 
106  sprintf(hname, "dttf_10_phi_vs_etaCoarse");
107  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (coarse #eta only, packed values)");
108  dttf_phi_eta_coarse_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
111 
113  sprintf(hname, "dttf_11_phi_vs_etaFine");
114  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (fine #eta only, packed values)");
115  dttf_phi_eta_fine_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
118 
120  sprintf(hname, "dttf_12_phi_vs_eta");
121  sprintf(mename, "#eta-#phi DTTF Tracks occupancy");
122  dttf_phi_eta_integ = ibooker.book2D(hname, mename, 64, -1.2, 1.2, 144, -15, 345.);
123  dttf_phi_eta_integ->setAxisTitle("#eta", 1);
124  dttf_phi_eta_integ->setAxisTitle("#phi", 2);
125 
127  sprintf(hname, "dttf_13_eta_fine_fraction");
128  sprintf(mename, "Fraction of DTTF Tracks with Fine #eta Assignment");
129  dttf_eta_fine_fraction = ibooker.book1D(hname, mename, 6, 0, 6);
132 
134 
136  sprintf(hname, "dttf_14_eta");
137  sprintf(mename, "DTTF Tracks #eta distribution (Packed values)");
138  dttf_eta_integ = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
139  dttf_eta_integ->setAxisTitle("#eta", 1);
140 
142  sprintf(hname, "dttf_15_phi");
143  sprintf(mename, "DTTF Tracks Phi distribution (Packed values)");
144  dttf_phi_integ = ibooker.book1D(hname, mename, 144, -6, 138.);
145  dttf_phi_integ->setAxisTitle("#phi", 1);
146 
148  sprintf(hname, "dttf_16_pt");
149  sprintf(mename, "DTTF Tracks p_{T} distribution (Packed values)");
150  dttf_pt_integ = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
151  dttf_pt_integ->setAxisTitle("p_{T}", 1);
153  sprintf(hname, "dttf_17_charge");
154  sprintf(mename, "DTTF Tracks Charge distribution");
155  dttf_q_integ = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
156  dttf_q_integ->setAxisTitle("Charge", 1);
157 
159  sprintf(hname, "dttf_18_2ndTrack_occupancy_summary");
160  sprintf(mename, "DTTF 2nd Tracks occupancy w.r.t. Tracks with BX=0");
161  dttf_2ndTrack_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
163 
167  ibooker.setCurrentFolder(gmtpath_);
168  sprintf(hname, "dttf_gmt_fract_matching");
169  sprintf(mename, "Fraction of DTTF tracks matching with GMT tracks");
170  dttf_gmt_matching = ibooker.book1D(hname, mename, 3, 1, 4);
171  dttf_gmt_matching->setBinLabel(1, "GMT Only", 1);
172  dttf_gmt_matching->setBinLabel(2, "Matching", 1);
173  dttf_gmt_matching->setBinLabel(3, "DTTF Only", 1);
174 
178 
179  ibooker.setCurrentFolder(testpath_);
180  sprintf(hname, "dttf_01_tracks_occupancy_test_summary");
181  sprintf(mename, "DTTF Tracks Occupancy");
182  dttf_occupancySummary_test = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
185 
189  ibooker.setCurrentFolder(inclusivepath_ + "/2ND_TRACK_ONLY");
190 
192  sprintf(hname, "dttf_01_nTracks_2ndTrack");
193  sprintf(mename, "DTTF 2nd Tracks per Wheel distribution");
194  dttf_nTracks_integ_2ndTrack = ibooker.book1D(hname, mename, 6, 0, 6);
196 
198  sprintf(hname, "dttf_02_occupancy_summary_2ndTrack");
199  sprintf(mename, "DTTF 2nd Tracks distribution by Sector and Wheel");
200  dttf_occupancySummary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
202 
204  sprintf(hname, "dttf_03_bx_occupancy_2ndTrack");
205  sprintf(mename, "DTTF 2nd Tracks BX Distribution by Wheel");
206  dttf_bx_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
209 
211  sprintf(hname, "dttf_04_bx_2ndTrack");
212  sprintf(mename, "Fraction of DTTF Tracks BX w.r.t. Tracks with BX=0");
213  dttf_bx_integ_2ndTrack = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
215 
217  sprintf(hname, "dttf_05_quality_2ndTrack");
218  sprintf(mename, "DTTF 2nd Tracks Quality distribution");
219  dttf_quality_integ_2ndTrack = ibooker.book1D(hname, mename, 7, 0.5, 7.5);
222 
224  sprintf(hname, "dttf_06_quality_occupancy_2ndTrack");
225  sprintf(mename, "DTTF 2nd Tracks Quality distribution by Wheel");
226  dttf_quality_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
230 
232  sprintf(hname, "dttf_07_highQuality_Tracks_2ndTrack");
233  sprintf(mename, "Fraction of DTTF 2nd Tracks with Quality>3");
234  dttf_highQual_Summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
237 
239  sprintf(hname, "dttf_08_phi_vs_eta_2ndTrack");
240  sprintf(mename, "#eta-#phi DTTF Tracks occupancy for 2nd Tracks");
241  dttf_phi_eta_integ_2ndTrack = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
244 
246  sprintf(hname, "dttf_09_eta_2ndTrack");
247  sprintf(mename, "DTTF 2nd Tracks #eta distribution (Packed values)");
248  dttf_eta_integ_2ndTrack = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
250 
252  sprintf(hname, "dttf_10_phi_2ndTrack");
253  sprintf(mename, "DTTF 2nd Tracks Phi distribution (Packed values)");
254  dttf_phi_integ_2ndTrack = ibooker.book1D(hname, mename, 144, -6, 138);
256 
258  sprintf(hname, "dttf_11_pt_2ndTrack");
259  sprintf(mename, "DTTF 2nd Tracks p_{T} distribution (Packed values)");
260  dttf_pt_integ_2ndTrack = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
262 
264  sprintf(hname, "dttf_12_charge_2ndTrack");
265  sprintf(mename, "DTTF 2nd Tracks Charge distribution");
266  dttf_q_integ_2ndTrack = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
267  dttf_q_integ_2ndTrack->setAxisTitle("Charge", 1);
268 
269  for (unsigned int wh = 0; wh < 6; ++wh) {
270  ibooker.setCurrentFolder(wheelpath_[wh]);
271 
273  sprintf(hname, "dttf_02_nTracks_wh%s", wheel_[wh].c_str());
274  sprintf(mename, "Wheel %s - Number of Tracks", wheel_[wh].c_str());
275  dttf_nTracks_wheel[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
276  dttf_nTracks_wheel[wh]->setAxisTitle("sector", 1);
277 
279  sprintf(hname, "dttf_03_bx_occupancy_wh%s", wheel_[wh].c_str());
280  sprintf(mename, "Wheel %s - DTTF Tracks BX distribution by Sector", wheel_[wh].c_str());
281  dttf_bx_wheel_summary[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
282  dttf_bx_wheel_summary[wh]->setAxisTitle("BX", 2);
283  dttf_bx_wheel_summary[wh]->setAxisTitle("Sector", 1);
284 
286  sprintf(hname, "dttf_04_bx_wh%s", wheel_[wh].c_str());
287  sprintf(mename, "Wheel %s - DTTF Tracks BX w.r.t. Tracks with BX=0", wheel_[wh].c_str());
288  dttf_bx_wheel_integ[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
289  dttf_bx_wheel_integ[wh]->setAxisTitle("BX", 1);
290 
292  sprintf(hname, "dttf_05_quality_wh%s", wheel_[wh].c_str());
293  sprintf(mename, "Wheel %s - Tracks Quality Distribution", wheel_[wh].c_str());
294  dttf_quality_wheel[wh] = ibooker.book1D(hname, mename, 7, 1, 8);
295  dttf_quality_wheel[wh]->setAxisTitle("Quality", 1);
297 
299  sprintf(hname, "dttf_06_quality_summary_wh%s", wheel_[wh].c_str());
300  sprintf(mename, "Wheel %s - Tracks Quality Distribution by Sector", wheel_[wh].c_str());
301  dttf_quality_summary_wheel[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 7, 1, 8);
302  dttf_quality_summary_wheel[wh]->setAxisTitle("Sector", 1);
303  // dttf_quality_summary_wheel[wh]->setAxisTitle("Quality", 2);
305 
307  sprintf(hname, "dttf_09_etaFine_fraction_wh%s", wheel_[wh].c_str());
308  sprintf(mename, "Wheel %s - Fraction of DTTF Tracks with fine #eta assignment", wheel_[wh].c_str());
309  dttf_fine_fraction_wh[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
310  dttf_fine_fraction_wh[wh]->setAxisTitle("Sector", 1);
311 
313  sprintf(hname, "dttf_10_eta_wh%s", wheel_[wh].c_str());
314  sprintf(mename, "Wheel %s - DTTF Tracks #eta distribution (Packed values)", wheel_[wh].c_str());
315  dttf_eta_wheel[wh] = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
316  dttf_eta_wheel[wh]->setAxisTitle("#eta", 1);
317 
319  sprintf(hname, "dttf_11_phi_wh%s", wheel_[wh].c_str());
320  sprintf(mename, "Wheel %s - DTTF Tracks Phi distribution (Packed values)", wheel_[wh].c_str());
321  dttf_phi_wheel[wh] = ibooker.book1D(hname, mename, 144, -6, 138.);
322  dttf_phi_wheel[wh]->setAxisTitle("#phi", 1);
323 
325  sprintf(hname, "dttf_12_pt_wh%s", wheel_[wh].c_str());
326  sprintf(mename, "Wheel %s - DTTF Tracks p_{T} distribution (Packed values)", wheel_[wh].c_str());
327  dttf_pt_wheel[wh] = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
328  dttf_pt_wheel[wh]->setAxisTitle("p_{T}", 1);
329 
331  sprintf(hname, "dttf_13_charge_wh%s", wheel_[wh].c_str());
332  sprintf(mename, "Wheel %s - DTTF Tracks Charge distribution", wheel_[wh].c_str());
333  dttf_q_wheel[wh] = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
334  dttf_q_wheel[wh]->setAxisTitle("Charge", 1);
335  }
336 
338  for (unsigned int wh = 0; wh < 6; ++wh) {
339  ibooker.setCurrentFolder(wheelpath_[wh] + "/2ND_TRACK_ONLY");
340 
342  sprintf(hname, "dttf_01_nTracks_wh%s_2ndTrack", wheel_[wh].c_str());
343  sprintf(mename, "Wheel %s - DTTF Number of 2nd Tracks with BX=0", wheel_[wh].c_str());
344  dttf_nTracks_wheel_2ndTrack[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
345  dttf_nTracks_wheel_2ndTrack[wh]->setAxisTitle("sector", 1);
346 
348  sprintf(hname, "dttf_02_bx_occupancy_wh%s_2ndTrack", wheel_[wh].c_str());
349  sprintf(mename, "Wheel %s - DTTF 2nd Tracks BX distribution by Sector", wheel_[wh].c_str());
350  dttf_bx_wheel_summary_2ndTrack[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
353 
355  sprintf(hname, "dttf_03_bx_wh%s_2ndTrack", wheel_[wh].c_str());
356  sprintf(mename, "Wheel %s - 2nd Tracks BX Distribution", wheel_[wh].c_str());
357  dttf_bx_wheel_integ_2ndTrack[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
359  }
360 }
361 
362 //--------------------------------------------------------
363 
365  //Processing by run ID
366  book(ibooker);
367  makeSummary(igetter);
368 }
369 
370 //--------------------------------------------------------
372  DQMStore::IGetter &igetter,
373  const edm::LuminosityBlock &lumiSeg,
374  const edm::EventSetup &c) {
376  if (online_ && !(counterLS_ % resetafterlumi_)) {
377  book(ibooker);
378  char hname[60];
379  sprintf(hname, "%s/dttf_04_tracks_occupancy_by_lumi", inclusivepath_.c_str());
380 
381  occupancy_r_ = getTH2F(igetter, hname);
382  if (!occupancy_r_) {
383  edm::LogError("L1TDTTFClient::beginLuminosityBlock:ME") << "Failed to get TH2D " << std::string(hname);
384  } else {
385  edm::LogInfo("L1TDTTFClient::beginLuminosityBlock:RESET") << "Reseting plots by lumi!";
386  occupancy_r_->Reset();
387  }
388  }
389 
390  if (online_) {
391  makeSummary(igetter);
392  if (occupancy_r_)
394  }
395 }
396 
397 //--------------------------------------------------------
402  buildSummaries(igetter);
403 
407  double scale = 0;
408  double entries = dttf_occupancySummary->getTH2F()->Integral();
409 
410  if (entries) {
413 
415  scale = 1 / entries;
418 
420  double physEntries = dttf_eta_integ->getTH1F()->Integral();
421  if (physEntries > 0) {
422  double physScale = 1 / physEntries;
423 
424  normalize(dttf_phi_eta_integ->getTH2F(), physScale);
425 
428  normalize(dttf_quality_summary->getTH2F(), physScale);
429 
430  normalize(dttf_eta_integ->getTH1F(), physScale);
431  normalize(dttf_q_integ->getTH1F(), physScale);
432  normalize(dttf_pt_integ->getTH1F(), physScale);
433  normalize(dttf_phi_integ->getTH1F(), physScale);
434  normalize(dttf_quality_integ->getTH1F(), physScale);
435  }
436  }
437 
441 
442  double entries2ndTrack = dttf_occupancySummary_2ndTrack->getTH2F()->Integral();
443  if (entries2ndTrack > 0) {
446 
450  igetter, ratio, dttf_highQual_Summary_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_05_quality_summary_wh%s_2ndTrack");
451 
453 
455  double scale2nd = 1 / entries2ndTrack;
458 
467  }
468 
470  setGMTsummary(igetter);
471 }
472 
473 //--------------------------------------------------------
475  char hname[100];
476  int wheelBx[4];
477  int wheelBx2nd[4];
478  int wheelSumBx[4];
479  int wheelSumBx2nd[4];
480  int qualities[8];
481 
482  memset(wheelSumBx, 0, 4 * sizeof(int));
483  memset(wheelSumBx2nd, 0, 4 * sizeof(int));
484 
487  dttf_q_integ->Reset();
488  dttf_pt_integ->Reset();
498 
502 
503  for (unsigned int wh = 0; wh < 6; ++wh) {
504  dttf_eta_wheel[wh]->Reset();
505  dttf_q_wheel[wh]->Reset();
506  dttf_pt_wheel[wh]->Reset();
507  dttf_phi_wheel[wh]->Reset();
508  dttf_quality_wheel[wh]->Reset();
510 
511  double wheelEtaAll = 0;
512  double wheelEtaFine = 0;
513  memset(wheelBx, 0, 4 * sizeof(int));
514  memset(wheelBx2nd, 0, 4 * sizeof(int));
515 
517  memset(qualities, 0, 8 * sizeof(int));
518 
522  buildPhiEtaPlotOFC(igetter,
526  "%s/dttf_07_phi_vs_etaFine_wh%s",
527  "%s/dttf_08_phi_vs_etaCoarse_wh%s",
528  wh);
529 
530  buildPhiEtaPlotO(igetter, dttf_phi_eta_integ_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_06_phi_vs_eta_wh%s_2ndTrack", wh);
531 
535  for (unsigned int sector = 1; sector < 13; ++sector) {
539  sprintf(hname, "%s/BX_BySector/dttf_bx_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
540 
541  TH1F *bxsector = getTH1F(igetter, hname);
542  if (!bxsector) {
543  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
544  } else {
545  for (unsigned int bx = 1; bx < 4; ++bx) {
546  int bxval = bxsector->GetBinContent(bx);
547 
548  if (bx == 2) {
549  // if ( wh == 2 )
550  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval*14 );
551  // else
552  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval );
553  dttf_occupancySummary->setBinContent(wh + 1, sector, bxval);
554  dttf_occupancySummary_test->setBinContent(wh + 1, sector, bxval);
555  dttf_nTracks_wheel[wh]->setBinContent(sector, bxval);
556  }
557  wheelBx[bx] += bxval;
558  dttf_bx_wheel_summary[wh]->setBinContent(sector, bx, bxval);
559  }
560  }
561 
565  sprintf(hname,
566  "%s/BX_BySector/2ND_TRACK_ONLY/dttf_bx_2ndTrack_wh%s_se%d",
567  wheelpath_[wh].c_str(),
568  wheel_[wh].c_str(),
569  sector);
570 
571  TH1F *bxsector2nd = getTH1F(igetter, hname);
572  if (!bxsector2nd) {
573  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
574  } else {
575  for (unsigned int bx = 1; bx < 4; ++bx) {
576  int bxval = bxsector2nd->GetBinContent(bx);
577 
578  if (bx == 2) {
579  dttf_2ndTrack_Summary->setBinContent(wh + 1, sector, bxval);
580  dttf_occupancySummary_2ndTrack->setBinContent(wh + 1, sector, bxval);
581  dttf_nTracks_wheel_2ndTrack[wh]->setBinContent(sector, bxval);
582  }
583  wheelBx2nd[bx] += bxval;
584  dttf_bx_wheel_summary_2ndTrack[wh]->setBinContent(sector, bx, bxval);
585  }
586  }
587 
591  sprintf(hname, "%s/Charge/dttf_charge_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
592  TH1F *tmp = getTH1F(igetter, hname);
593  if (!tmp) {
594  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
595  } else {
596  dttf_q_integ->getTH1F()->Add(tmp);
597  dttf_q_wheel[wh]->getTH1F()->Add(tmp);
598  }
599 
603  sprintf(hname, "%s/PT/dttf_pt_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
604  tmp = getTH1F(igetter, hname);
605  if (!tmp) {
606  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
607  } else {
608  dttf_pt_integ->getTH1F()->Add(tmp);
609  dttf_pt_wheel[wh]->getTH1F()->Add(tmp);
610  }
611 
615  sprintf(hname, "%s/Phi/dttf_phi_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
616  tmp = getTH1F(igetter, hname);
617  if (!tmp) {
618  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
619  } else {
620  dttf_phi_integ->getTH1F()->Add(tmp);
621  dttf_phi_wheel[wh]->getTH1F()->Add(tmp);
622  }
623 
627  double highQual = 0;
628  double denHighQual = 0;
629  sprintf(hname, "%s/Quality/dttf_qual_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
630  tmp = getTH1F(igetter, hname);
631  if (!tmp) {
632  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
633  } else {
634  dttf_quality_wheel[wh]->getTH1F()->Add(tmp);
635 
636  for (unsigned int qual = 1; qual < 4; ++qual) {
637  double bincontent = tmp->GetBinContent(qual);
638  qualities[qual] += bincontent;
639  denHighQual += bincontent;
640  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
641  }
642 
643  for (unsigned int qual = 4; qual < 8; ++qual) {
644  double bincontent = tmp->GetBinContent(qual);
645  qualities[qual] += bincontent;
646  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
647  denHighQual += bincontent;
648  highQual += bincontent;
649  }
650  }
651  if (denHighQual > 0)
652  highQual /= denHighQual;
653  dttf_highQual_Summary->setBinContent(wh + 1, sector, highQual);
654 
658  sprintf(hname, "%s/Eta/dttf_eta_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
659  tmp = getTH1F(igetter, hname);
660  if (!tmp) {
661  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
662  } else {
663  dttf_eta_integ->getTH1F()->Add(tmp);
664  dttf_eta_wheel[wh]->getTH1F()->Add(tmp);
665  }
666 
670  sprintf(hname,
671  "%s/EtaFineFraction/dttf_etaFine_fraction_wh%s_se%d",
672  wheelpath_[wh].c_str(),
673  wheel_[wh].c_str(),
674  sector);
675  tmp = getTH1F(igetter, hname);
676  if (!tmp) {
677  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
678  } else {
679  double fine = tmp->GetBinContent(1);
680  double coarse = tmp->GetBinContent(2);
681  double tot = fine + coarse;
682  wheelEtaAll += tot;
683  wheelEtaFine += fine;
684  if (tot > 0) {
685  dttf_fine_fraction_wh[wh]->setBinContent(sector, fine / tot);
686  }
687  }
688  }
689 
693  if (wheelEtaAll > 0) {
694  dttf_eta_fine_fraction->setBinContent(wh + 1, wheelEtaFine / wheelEtaAll);
695  }
696 
700  dttf_nTracks_integ->setBinContent(wh + 1, wheelBx[2]);
701  dttf_nTracks_integ_2ndTrack->setBinContent(wh + 1, wheelBx2nd[2]);
702 
706  for (unsigned int bx = 1; bx < 4; ++bx) {
707  dttf_bx_wheel_integ[wh]->setBinContent(bx, wheelBx[bx]);
708  dttf_bx_summary->setBinContent(wh + 1, bx, wheelBx[bx]);
709  wheelSumBx[bx] += wheelBx[bx];
710 
711  dttf_bx_wheel_integ_2ndTrack[wh]->setBinContent(bx, wheelBx2nd[bx]);
712  dttf_bx_summary_2ndTrack->setBinContent(wh + 1, bx, wheelBx2nd[bx]);
713  wheelSumBx2nd[bx] += wheelBx2nd[bx];
714  }
715 
719  for (unsigned int qual = 1; qual < 8; ++qual) {
720  dttf_quality_summary->setBinContent(wh + 1, qual, qualities[qual]);
721  dttf_quality_integ->getTH1F()->AddBinContent(qual, qualities[qual]);
722  }
723 
737 
741  double scale = wheelBx[2];
742  if (scale > 0) {
743  scale = 1 / scale;
745  }
746 
747  scale = wheelBx2nd[2];
748  if (scale > 0) {
749  scale = 1 / scale;
751  }
752 
758 
762  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_07_eta_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
763 
764  TH1F *tmp = getTH1F(igetter, hname);
765  if (!tmp) {
766  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
767  } else {
769  }
770 
774  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_08_phi_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
775  tmp = getTH1F(igetter, hname);
776  if (!tmp) {
777  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
778  } else {
780  }
781 
785  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_09_pt_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
786  tmp = getTH1F(igetter, hname);
787  if (!tmp) {
788  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
789  } else {
791  }
792 
796  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_10_charge_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
797  tmp = getTH1F(igetter, hname);
798  if (!tmp) {
799  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
800  } else {
802  }
803 
807  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_04_quality_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
808  tmp = getTH1F(igetter, hname);
809  if (!tmp) {
810  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
811  } else {
812  for (unsigned int qual = 1; qual < 8; ++qual) {
813  double binqual = tmp->GetBinContent(qual);
814  dttf_quality_integ_2ndTrack->getTH1F()->AddBinContent(qual, binqual);
815  dttf_quality_summary_2ndTrack->setBinContent(wh + 1, qual, binqual);
816  }
817  }
818  }
819 
823  for (unsigned int bx = 1; bx < 4; ++bx) {
824  dttf_bx_integ->setBinContent(bx, wheelSumBx[bx]);
825  dttf_bx_integ_2ndTrack->setBinContent(bx, wheelSumBx2nd[bx]);
826  }
827 
831  double scale = wheelSumBx[2];
832  if (scale > 0) {
833  scale = 1. / scale;
835  }
836 
837  scale = wheelSumBx2nd[2];
838  if (scale > 0) {
839  scale = 1. / scale;
841  }
842 }
843 
844 //--------------------------------------------------------
846  char hname[60];
847  sprintf(hname, "%s/dttf_tracks_with_gmt_match", gmtpath_.c_str());
848  TH2F *gmt_match = getTH2F(igetter, hname);
849  if (!gmt_match) {
850  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
851  return;
852  }
853 
854  sprintf(hname, "%s/dttf_tracks_without_gmt_match", gmtpath_.c_str());
855  TH2F *gmt_missed = getTH2F(igetter, hname);
856  if (!gmt_missed) {
857  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
858  return;
859  }
860 
861  sprintf(hname, "%s/dttf_missing_tracks_in_gmt", gmtpath_.c_str());
862  TH2F *gmt_ghost = getTH2F(igetter, hname);
863  if (!gmt_ghost) {
864  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
865  return;
866  }
867 
868  int match = gmt_match->Integral();
869  int missed = gmt_missed->Integral();
870  int ghost = gmt_ghost->Integral();
871  float tot = match + missed + ghost;
872  if (tot > 0) {
873  double val = ghost / tot;
875  val = match / tot;
877  val = missed / tot;
879  }
880 }
881 
882 //--------------------------------------------------------
883 TH1F *L1TDTTFClient::getTH1F(DQMStore::IGetter &igetter, const char *hname) {
884  MonitorElement *me = igetter.get(hname);
885  if (!me) {
886  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
887  return nullptr;
888  }
889 
890  return me->getTH1F();
891 }
892 
893 //--------------------------------------------------------
894 TH2F *L1TDTTFClient::getTH2F(DQMStore::IGetter &igetter, const char *hname) {
895  MonitorElement *me = igetter.get(hname);
896  if (!me) {
897  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
898  return nullptr;
899  }
900 
901  return me->getTH2F();
902 }
903 
904 //--------------------------------------------------------
905 
906 //--------------------------------------------------------
908  TH2F *occupancySummary,
909  MonitorElement *highQual_Summary,
910  const std::string &path) {
911  char hname[150];
912 
916  for (unsigned int wh = 0; wh < 6; ++wh) {
917  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
918 
919  TH2F *quality = getTH2F(igetter, hname);
920  if (!quality) {
921  edm::LogError("L1TDTTFClient::buildHighQualityPlot") << "Failed to get TH2F " << std::string(hname);
922  } else {
923  for (unsigned int sec = 1; sec < 13; ++sec) {
924  double denHighQual = occupancySummary->GetBinContent(wh + 1, sec);
925  double val = 0;
926  if (denHighQual > 0) {
927  for (unsigned int qual = 4; qual < 8; ++qual) {
928  val += quality->GetBinContent(qual, sec);
929  }
930  val /= denHighQual;
931  }
932  highQual_Summary->setBinContent(wh + 1, sec, val);
933  }
934  }
935  }
936 }
937 
938 //--------------------------------------------------------
940  MonitorElement *phi_eta_fine_integ,
941  MonitorElement *phi_eta_coarse_integ,
942  MonitorElement *phi_eta_integ,
943  const std::string &path_fine,
944  const std::string &path_coarse,
945  int wh) {
946  char hname[150];
947  sprintf(hname, path_fine.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
948 
949  TH2F *phi_vs_eta_fine = getTH2F(igetter, hname);
950  if (!phi_vs_eta_fine) {
951  edm::LogError("L1TDTTFClient::buildPhiEtaPloOtFC") << "Failed to get TH1D " << std::string(hname);
952  }
953 
954  sprintf(hname, path_coarse.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
955  TH2F *phi_vs_eta_coarse = getTH2F(igetter, hname);
956  if (!phi_vs_eta_coarse) {
957  edm::LogError("L1TDTTFClient::buildPhiEtaPlotOFC") << "Failed to get TH1D " << std::string(hname);
958  }
959 
960  if (!phi_vs_eta_fine || !phi_vs_eta_coarse) {
961  return;
962  }
963 
964  for (unsigned int phi = 1; phi < 145; ++phi) {
965  float start = 0;
966  int nbins = 0;
967  switch (wh) {
968  case 0:
969  start = 0;
970  nbins = 18;
971  break; // N2
972  case 1:
973  start = 8;
974  nbins = 20;
975  break; // N1
976  case 2:
977  start = 22;
978  nbins = 10;
979  break; // N0
980  case 3:
981  start = 22;
982  nbins = 20;
983  break; // P0
984  case 4:
985  start = 36;
986  nbins = 20;
987  break; // P1
988  case 5:
989  start = 46;
990  nbins = 18;
991  break; // P2
992  default:
993  start = 0;
994  nbins = 0;
995  break; // BOH
996  }
997 
998  for (int eta = 1; eta <= nbins; ++eta) {
999  double setbin = eta + start;
1000 
1001  double valfine = phi_vs_eta_fine->GetBinContent(eta, phi) + phi_eta_fine_integ->getBinContent(setbin, phi);
1002 
1003  double valcoarse = phi_vs_eta_coarse->GetBinContent(eta, phi) + phi_eta_coarse_integ->getBinContent(setbin, phi);
1004 
1005  phi_eta_fine_integ->setBinContent(setbin, phi, valfine);
1006  phi_eta_coarse_integ->setBinContent(setbin, phi, valcoarse);
1007  phi_eta_integ->setBinContent(setbin, phi, valfine + valcoarse);
1008  }
1009 
1010  // double underflow_f = phi_vs_eta_fine->GetBinContent( 0, phi )
1011  // + phi_eta_fine_integ->getBinContent( 1, phi );
1012  // phi_eta_fine_integ->setBinContent( 1, phi, underflow_f );
1013  //
1014  // double underflow_c = phi_vs_eta_coarse->GetBinContent( 0, phi )
1015  // + phi_eta_coarse_integ->getBinContent( 1, phi );
1016  // phi_eta_coarse_integ->setBinContent( 1, phi, underflow_c );
1017  //
1018  // double overflow_f = phi_vs_eta_fine->GetBinContent( nbins+1, phi )
1019  // + phi_eta_fine_integ->getBinContent( 64 );
1020  // phi_eta_fine_integ->setBinContent( 64, phi, overflow_f );
1021  //
1022  // double overflow_c = phi_vs_eta_coarse->GetBinContent( nbins+1, phi )
1023  // + phi_eta_coarse_integ->getBinContent( 64, phi );
1024  // phi_eta_coarse_integ->setBinContent( 64, phi, overflow_c );
1025  //
1026  // double underflow = underflow_f + underflow_c;
1027  // phi_eta_integ->setBinContent( 1, phi, underflow );
1028  //
1029  // double overflow = overflow_f + overflow_c;
1030  // phi_eta_integ->setBinContent( 64, phi, overflow );
1031  }
1032 }
1033 
1034 //--------------------------------------------------------
1036  MonitorElement *phi_eta_integ,
1037  const std::string &path,
1038  int wh) {
1039  char hname[100];
1040  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
1041 
1042  TH2F *phi_vs_eta = getTH2F(igetter, hname);
1043  if (!phi_vs_eta) {
1044  edm::LogError("L1TDTTFClient::buildPhiEtaPlotO:ME") << "Failed to get TH1D " << std::string(hname);
1045  } else {
1046  for (unsigned int phi = 1; phi < 145; ++phi) {
1047  float start = 0;
1048  int nbins = 0;
1049  switch (wh) {
1050  case 0:
1051  start = 0;
1052  nbins = 18;
1053  break; // N2
1054  case 1:
1055  start = 8;
1056  nbins = 20;
1057  break; // N1
1058  case 2:
1059  start = 22;
1060  nbins = 10;
1061  break; // N0
1062  case 3:
1063  start = 22;
1064  nbins = 20;
1065  break; // P0
1066  case 4:
1067  start = 36;
1068  nbins = 20;
1069  break; // P1
1070  case 5:
1071  start = 46;
1072  nbins = 18;
1073  break; // P2
1074  default:
1075  start = 0;
1076  nbins = 0;
1077  break; // BOH
1078  }
1079 
1080  for (int eta = 1; eta <= nbins; ++eta) {
1081  double setbin = eta + start;
1082  double val = phi_vs_eta->GetBinContent(eta, phi) + phi_eta_integ->getBinContent(setbin, phi);
1083  phi_eta_integ->setBinContent(setbin, phi, val);
1084  }
1085 
1086  double underflow = phi_vs_eta->GetBinContent(0, phi) + phi_eta_integ->getBinContent(1, phi);
1087  phi_eta_integ->setBinContent(1, phi, underflow);
1088 
1089  double overflow = phi_vs_eta->GetBinContent(nbins + 1, phi) + phi_eta_integ->getBinContent(64);
1090  phi_eta_integ->setBinContent(64, phi, overflow);
1091  }
1092  }
1093 }
1094 
1095 // //--------------------------------------------------------
1096 // void L1TDTTFClient::buildPhiEtaPlot( MonitorElement * phi_eta_integ,
1097 // const std::string & path ,
1098 // int wh)
1099 // {
1100 // char hname[60];
1101 // sprintf( hname, "%s/dttf_phi_eta_wh%s",
1102 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1103 //
1104 // TH2F * phi_vs_eta = getTH2F(hname);
1105 // if ( ! phi_vs_eta ) {
1106 // edm::LogError("L1TDTTFClient::buildPhiEtaPlot:ME") << "Failed to get TH1D "
1107 // << std::string(hname);
1108 // } else {
1109 //
1110 //
1111 // for ( unsigned int phi = 1; phi < 145 ; ++phi ) {
1112 // for ( unsigned int eta = 1; eta < 65 ; ++eta ) {
1113 // double val = phi_vs_eta->GetBinContent( eta, phi )
1114 // + dttf_phi_eta_integ->getBinContent( eta, phi );
1115 // dttf_phi_eta_integ->setBinContent( eta, phi, val );
1116 // }
1117 //
1118 // }
1119 // }
1120 // }
1121 //
1122 //
1123 // //--------------------------------------------------------
1124 // void L1TDTTFClient::buildPhiEtaPlotFC( MonitorElement * phi_eta_fine_integ,
1125 // MonitorElement * phi_eta_coarse_integ,
1126 // MonitorElement * phi_eta_integ,
1127 // const std::string & path_fine,
1128 // const std::string & path_coarse,
1129 // int wh )
1130 // {
1131 //
1132 // char hname[60];
1133 //
1134 // sprintf( hname, path_fine.c_str(),
1135 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1136 // TH2F * phi_vs_eta_fine = getTH2F(hname);
1137 // if ( ! phi_vs_eta_fine ) {
1138 // edm::LogError("L1TDTTFClient::buildPhiEtaPlotFC")
1139 // << "Failed to get TH1D " << std::string(hname);
1140 // }
1141 //
1142 //
1143 // sprintf( hname, path_coarse.c_str(),
1144 // wheelpath_[wh].c_str(), wheel_[wh].c_str() );
1145 // TH2F * phi_vs_eta_coarse = getTH2F(hname);
1146 // if ( ! phi_vs_eta_coarse ) {
1147 // edm::LogError("L1TDTTFClient::buildPhiEtaPlotFC")
1148 // << "Failed to get TH1D " << std::string(hname);
1149 // }
1150 //
1151 // if ( ! phi_vs_eta_fine || ! phi_vs_eta_coarse ) {
1152 // return;
1153 // }
1154 //
1155 // for ( unsigned int phi = 1; phi < 145 ; ++phi ) {
1156 // for ( unsigned int eta = 1; eta < 65 ; ++eta ) {
1157 //
1158 // double valfine = phi_vs_eta_fine->GetBinContent( eta, phi )
1159 // + dttf_phi_eta_fine_integ->getBinContent( eta, phi );
1160 // dttf_phi_eta_fine_integ->setBinContent( eta, phi, valfine );
1161 // double valcoarse = phi_vs_eta_coarse->GetBinContent( eta, phi )
1162 // + dttf_phi_eta_coarse_integ->getBinContent( eta, phi );
1163 // dttf_phi_eta_coarse_integ->setBinContent( eta, phi, valcoarse );
1164 //
1165 // dttf_phi_eta_integ->setBinContent( eta, phi, valfine + valcoarse );
1166 //
1167 // }
1168 //
1169 // }
1170 // }
1171 
1172 //--------------------------------------------------------
1174  me->setAxisTitle("Wheel", 1);
1175  me->setBinLabel(1, "N2", 1);
1176  me->setBinLabel(2, "N1", 1);
1177  me->setBinLabel(3, "N0", 1);
1178  me->setBinLabel(4, "P0", 1);
1179  me->setBinLabel(5, "P1", 1);
1180  me->setBinLabel(6, "P2", 1);
1181 }
1182 
1183 //--------------------------------------------------------
1185  if (axis == 1)
1186  me->setAxisTitle("Quality", axis);
1187  me->setBinLabel(1, "T34", axis);
1188  me->setBinLabel(2, "T23/24", axis);
1189  me->setBinLabel(3, "T12/13/14", axis);
1190  me->setBinLabel(4, "T234", axis);
1191  me->setBinLabel(5, "T134", axis);
1192  me->setBinLabel(6, "T123/124", axis);
1193  me->setBinLabel(7, "T1234", axis);
1194 }
MonitorElement * dttf_bx_integ_2ndTrack
Definition: L1TDTTFClient.h:76
Definition: start.py:1
MonitorElement * dttf_gmt_matching
Definition: L1TDTTFClient.h:68
MonitorElement * dttf_occupancySummary
Definition: L1TDTTFClient.h:52
MonitorElement * dttf_quality_summary
Definition: L1TDTTFClient.h:57
L1TDTTFClient(const edm::ParameterSet &ps)
Constructor.
MonitorElement * dttf_q_wheel[6]
Definition: L1TDTTFClient.h:95
MonitorElement * dttf_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:81
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * dttf_quality_integ_2ndTrack
Definition: L1TDTTFClient.h:77
MonitorElement * dttf_eta_wheel[6]
Definition: L1TDTTFClient.h:92
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:51
MonitorElement * dttf_quality_integ
Definition: L1TDTTFClient.h:56
TH1F * getTH1F(DQMStore::IGetter &igetter, const char *hname)
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
void buildPhiEtaPlotO(DQMStore::IGetter &igetter, MonitorElement *phi_eta_integ, const std::string &path, int wh)
MonitorElement * dttf_bx_wheel_integ_2ndTrack[6]
Definition: L1TDTTFClient.h:99
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:87
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
Log< level::Error, false > LogError
MonitorElement * dttf_pt_integ_2ndTrack
Definition: L1TDTTFClient.h:83
MonitorElement * dttf_bx_integ
Definition: L1TDTTFClient.h:54
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
MonitorElement * dttf_phi_eta_fine_integ
Definition: L1TDTTFClient.h:60
virtual TH2F * getTH2F() const
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:79
MonitorElement * dttf_phi_wheel[6]
Definition: L1TDTTFClient.h:93
MonitorElement * dttf_phi_eta_integ
Definition: L1TDTTFClient.h:61
MonitorElement * dttf_quality_summary_wheel[6]
Definition: L1TDTTFClient.h:90
MonitorElement * dttf_pt_integ
Definition: L1TDTTFClient.h:64
MonitorElement * dttf_phi_eta_coarse_integ
Definition: L1TDTTFClient.h:59
TH2F * occupancy_r_
counter
Definition: L1TDTTFClient.h:43
~L1TDTTFClient() override
Destructor.
MonitorElement * dttf_occupancySummary_2ndTrack
Definition: L1TDTTFClient.h:74
MonitorElement * dttf_eta_integ
Definition: L1TDTTFClient.h:65
MonitorElement * dttf_2ndTrack_Summary
Definition: L1TDTTFClient.h:69
std::string gmtpath_
Definition: L1TDTTFClient.h:48
MonitorElement * dttf_q_integ_2ndTrack
Definition: L1TDTTFClient.h:84
MonitorElement * dttf_bx_wheel_summary_2ndTrack[6]
Definition: L1TDTTFClient.h:98
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)
const char * qualities[3]
MonitorElement * dttf_bx_summary
Definition: L1TDTTFClient.h:53
Log< level::Info, false > LogInfo
MonitorElement * dttf_quality_wheel[6]
Definition: L1TDTTFClient.h:89
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
void makeSummary(DQMStore::IGetter &igetter)
virtual TH1F * getTH1F() const
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
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:673
MonitorElement * dttf_eta_fine_fraction
Definition: L1TDTTFClient.h:62
std::string l1tdttffolder_
Definition: L1TDTTFClient.h:37
HLT enums.
MonitorElement * dttf_occupancySummary_test
Definition: L1TDTTFClient.h:71
MonitorElement * dttf_fine_fraction_wh[6]
Definition: L1TDTTFClient.h:91
void setQualLabel(MonitorElement *me, int axis)
MonitorElement * dttf_nTracks_wheel[6]
Definition: L1TDTTFClient.h:86
MonitorElement * dttf_bx_summary_2ndTrack
Definition: L1TDTTFClient.h:75
MonitorElement * dttf_nTracks_integ_2ndTrack
Definition: L1TDTTFClient.h:73
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:82
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:94
MonitorElement * dttf_nTracks_wheel_2ndTrack[6]
Definition: L1TDTTFClient.h:97
string quality
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:63
tmp
align.sh
Definition: createJobs.py:716
MonitorElement * dttf_highQual_Summary
Definition: L1TDTTFClient.h:58
MonitorElement * dttf_q_integ
Definition: L1TDTTFClient.h:66
MonitorElement * dttf_bx_wheel_integ[6]
Definition: L1TDTTFClient.h:88
void normalize(T *me)
std::string inclusivepath_
Definition: L1TDTTFClient.h:47
std::string testpath_
Definition: L1TDTTFClient.h:49
void setWheelLabel(MonitorElement *me)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45
virtual double getBinContent(int binx) const
get content of bin (1-D)
MonitorElement * dttf_quality_summary_2ndTrack
Definition: L1TDTTFClient.h:78
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:80