CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TDTTF.cc
Go to the documentation of this file.
1 /*
2  * \file L1TDTTF.cc
3  *
4  * $Date: 2013/05/22 17:25:02 $
5  * $Revision: 1.29 $
6  * \author J. Berryhill
7  *
8  * $Log: L1TDTTF.cc,v $
9  * Revision 1.29 2013/05/22 17:25:02 deguio
10  * removing the use of catch(...)
11  *
12  * Revision 1.28 2010/11/02 13:58:20 gcodispo
13  * Added protection against missing products
14  *
15  * Revision 1.27 2010/11/01 11:27:53 gcodispo
16  * Cleaned up 2nd track sections
17  *
18  * Revision 1.26 2010/10/27 13:59:25 gcodispo
19  * Changed name to 2nd track quality (same convention as for all tracks)
20  *
21  * Revision 1.25 2010/10/27 13:37:08 gcodispo
22  * Changed name to 2nd track quality (same convention as for all tracks)
23  *
24  * Revision 1.24 2010/10/27 08:08:52 gcodispo
25  * Graphic improvements (names, titles, labels...)
26  *
27  * Revision 1.23 2010/10/19 12:14:56 gcodispo
28  * New DTTF DQM version
29  * - added L1TDTTFClient in order to use proper normalization
30  * - cleaned up most of the code, removed useless plots
31  * - reduced overall number of bins from 118325 to 104763 plus saved 1920 bins from wrongly called L1TDTTPGClient
32  * - added match with GMT inputremoved useless plots
33  * - added eta fine fraction plots
34  * - added quality distribution plots
35  *
36  * Revision 1.22 2009/11/19 15:09:18 puigh
37  * modify beginJob
38  *
39  * Revision 1.21 2009/10/12 10:16:42 nuno
40  * bug fix; letting the package compile again
41  *
42  * Revision 1.20 2009/08/03 21:11:22 lorenzo
43  * added dttf phi and theta
44  *
45  * Revision 1.19 2008/07/29 14:18:27 wteo
46  * updated and added more MEs
47  *
48  * Revision 1.15 2008/06/10 18:01:55 lorenzo
49  * reduced n histos
50  *
51  * Revision 1.14 2008/05/09 16:42:27 ameyer
52  * *** empty log message ***
53  *
54  * Revision 1.13 2008/04/30 08:44:21 lorenzo
55  * new dttf source, not based on gmt record
56  *
57  * Revision 1.20 2008/03/20 19:38:25 berryhil
58  *
59  *
60  * organized message logger
61  *
62  * Revision 1.19 2008/03/14 20:35:46 berryhil
63  *
64  *
65  * stripped out obsolete parameter settings
66  *
67  * rpc tpg restored with correct dn access and dbe handling
68  *
69  * Revision 1.18 2008/03/12 17:24:24 berryhil
70  *
71  *
72  * eliminated log files, truncated HCALTPGXana histo output
73  *
74  * Revision 1.17 2008/03/10 09:29:52 lorenzo
75  * added MEs
76  *
77  * Revision 1.16 2008/03/01 00:40:00 lat
78  * DQM core migration.
79  *
80  * $Log: L1TDTTF.cc,v $
81  * Revision 1.29 2013/05/22 17:25:02 deguio
82  * removing the use of catch(...)
83  *
84  * Revision 1.28 2010/11/02 13:58:20 gcodispo
85  * Added protection against missing products
86  *
87  * Revision 1.27 2010/11/01 11:27:53 gcodispo
88  * Cleaned up 2nd track sections
89  *
90  * Revision 1.26 2010/10/27 13:59:25 gcodispo
91  * Changed name to 2nd track quality (same convention as for all tracks)
92  *
93  * Revision 1.25 2010/10/27 13:37:08 gcodispo
94  * Changed name to 2nd track quality (same convention as for all tracks)
95  *
96  * Revision 1.24 2010/10/27 08:08:52 gcodispo
97  * Graphic improvements (names, titles, labels...)
98  *
99  * Revision 1.23 2010/10/19 12:14:56 gcodispo
100  * New DTTF DQM version
101  * - added L1TDTTFClient in order to use proper normalization
102  * - cleaned up most of the code, removed useless plots
103  * - reduced overall number of bins from 118325 to 104763 plus saved 1920 bins from wrongly called L1TDTTPGClient
104  * - added match with GMT inputremoved useless plots
105  * - added eta fine fraction plots
106  * - added quality distribution plots
107  *
108  * Revision 1.22 2009/11/19 15:09:18 puigh
109  * modify beginJob
110  *
111  * Revision 1.21 2009/10/12 10:16:42 nuno
112  * bug fix; letting the package compile again
113  *
114  * Revision 1.20 2009/08/03 21:11:22 lorenzo
115  * added dttf phi and theta
116  *
117  * Revision 1.19 2008/07/29 14:18:27 wteo
118  * updated and added more MEs
119  *
120  * Revision 1.15 2008/06/10 18:01:55 lorenzo
121  * reduced n histos
122  *
123  * Revision 1.14 2008/05/09 16:42:27 ameyer
124  * *** empty log message ***
125  *
126  * Revision 1.13 2008/04/30 08:44:21 lorenzo
127  * new dttf source, not based on gmt record
128  *
129  * Revision 1.20 2008/03/20 19:38:25 berryhil
130  *
131  *
132  * organized message logger
133  *
134  * Revision 1.19 2008/03/14 20:35:46 berryhil
135  *
136  *
137  * stripped out obsolete parameter settings
138  *
139  * rpc tpg restored with correct dn access and dbe handling
140  *
141  * Revision 1.18 2008/03/12 17:24:24 berryhil
142  *
143  *
144  * eliminated log files, truncated HCALTPGXana histo output
145  *
146  * Revision 1.17 2008/03/10 09:29:52 lorenzo
147  * added MEs
148  *
149  * Revision 1.15 2008/01/22 18:56:01 muzaffar
150  * include cleanup. Only for cc/cpp files
151  *
152  * Revision 1.14 2007/12/21 17:41:20 berryhil
153  *
154  *
155  * try/catch removal
156  *
157  * Revision 1.13 2007/11/19 15:08:22 lorenzo
158  * changed top folder name
159  *
160  * Revision 1.12 2007/08/15 18:56:25 berryhil
161  *
162  *
163  * split histograms by bx; add Maiken's bx classifier plots
164  *
165  * Revision 1.11 2007/07/26 09:37:09 berryhil
166  *
167  *
168  * set verbose false for all modules
169  * set verbose fix for DTTPG tracks
170  *
171  * Revision 1.10 2007/07/25 09:03:58 berryhil
172  *
173  *
174  * conform to DTTFFEDReader input tag.... for now
175  *
176  * Revision 1.9 2007/07/12 16:06:18 wittich
177  * add simple phi output track histograms.
178  * note that the label of this class is different than others
179  * from the DTFFReader creates.
180  *
181  */
182 
184 
190 
192 // #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
193 // #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhDigi.h"
194 // #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
195 // #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThDigi.h"
196 
199 
202 
203 
207 
208 
209 
210 //--------------------------------------------------------
212  : dttpgSource_( ps.getParameter< edm::InputTag >("dttpgSource") ),
213  gmtSource_( ps.getParameter< edm::InputTag >("gmtSource") ),
214  muonCollectionLabel_( ps.getParameter<edm::InputTag>("MuonCollection") ),
215  l1tsubsystemfolder_( ps.getUntrackedParameter<std::string>("l1tSystemFolder",
216  "L1T/L1TDTTF")),
217  online_( ps.getUntrackedParameter<bool>("online", true) ),
218  verbose_( ps.getUntrackedParameter<bool>("verbose", false) )
219 
220 {
221 
222  std::string trstring =
223  dttpgSource_.label() + ":DATA:" + dttpgSource_.process();
224  trackInputTag_ = edm::InputTag(trstring);
225 
227  if ( verbose_ ) edm::LogInfo("L1TDTTF: constructor") << "Verbose enabled";
228 
230  dbe_ = NULL;
231  if ( ps.getUntrackedParameter<bool>("DQMStore", false) ) {
233  dbe_->setVerbose(0);
235  }
236 
238  if ( ps.getUntrackedParameter<bool>("disableROOToutput", false) ) {
239 
240  outputFile_ = "";
241 
242  } else {
243 
244  outputFile_ = ps.getUntrackedParameter<std::string>("outputFile", "");
245  if ( ! outputFile_.empty() ) {
246  edm::LogInfo("L1TDTTF: constructor")
247  << "L1T Monitoring histograms will be saved to " << outputFile_;
248  }
249 
250  }
251 
252 }
253 
254 
255 
256 //--------------------------------------------------------
258 {
260 }
261 
262 
263 
264 //--------------------------------------------------------
266 {
268  nev_ = 0;
269  nev_dttf_ = 0;
270  nev_dttf_track2_ = 0;
271 
272  // get hold of back-end interface
273 
274  if ( dbe_ ) {
275 
276  std::string dttf_trk_folder = l1tsubsystemfolder_;
277 
278  char hname[100];
279  char htitle[100];
280 
282  float start = 0;
283  float stop = 0;
284  int nbins = 0;
286 
288  dbe_->setCurrentFolder(dttf_trk_folder);
289 
290  std::string wheelpath[6] = { "/02-WHEEL_N2",
291  "/03-WHEEL_N1",
292  "/04-WHEEL_N0",
293  "/05-WHEEL_P0",
294  "/06-WHEEL_P1",
295  "/07-WHEEL_P2" };
296 
297 
298  char c_whn[6][3] = { "N2", "N1", "N0", "P0", "P1", "P2" };
299  // char bxn [3][3] = { "N1", "0", "P1" };
300  // char bxn[3][25] = {"/BX_NONZERO_ONLY/BX_N1", "", "/BX_NONZERO_ONLY/BX_P1"};
301 
302  for ( int iwh = 0; iwh < 6; ++iwh ) {
303 
304  bookEta( iwh, nbins, start, stop );
305 
309  std::string dttf_trk_folder_wheel = dttf_trk_folder + wheelpath[iwh];
310  dbe_->setCurrentFolder(dttf_trk_folder_wheel);
311 
313  sprintf(hname, "dttf_01_nTracksPerEvent_wh%s", c_whn[iwh]);
314  sprintf(htitle, "Wheel %s - Number Tracks Per Event", c_whn[iwh]);
315  dttf_nTracksPerEvent_wheel[iwh] = dbe_->book1D(hname, htitle,
316  10, 0.5, 10.5);
317  dttf_nTracksPerEvent_wheel[iwh]->setAxisTitle("# tracks/event", 1);
318 
320  sprintf(hname, "dttf_07_phi_vs_etaFine_wh%s", c_whn[iwh]);
321  sprintf(htitle, "Wheel %s - #eta-#phi DTTF Tracks occupancy (fine #eta only, unpacked values)", c_whn[iwh]);
322  dttf_phi_eta_fine_wheel[iwh] = dbe_->book2D(hname, htitle,
323  nbins, start-0.5, stop-0.5,
324  144, -6, 138);
325  // 144, -0.5, 143.5);
326 
327  dttf_phi_eta_fine_wheel[iwh]->setAxisTitle("#eta", 1);
328  dttf_phi_eta_fine_wheel[iwh]->setAxisTitle("#phi", 2);
329 
331  sprintf(hname, "dttf_08_phi_vs_etaCoarse_wh%s", c_whn[iwh]);
332  sprintf(htitle, "Wheel %s - #eta-#phi DTTF Tracks occupancy (coarse #eta only, unpacked values)", c_whn[iwh]);
333  dttf_phi_eta_coarse_wheel[iwh] = dbe_->book2D(hname, htitle,
334  nbins, start-0.5, stop-0.5,
335  144, -6, 138);
336  // 144, -0.5, 143.5);
337  dttf_phi_eta_coarse_wheel[iwh]->setAxisTitle("#eta", 1);
338  dttf_phi_eta_coarse_wheel[iwh]->setAxisTitle("#phi", 2);
339 
342  std::string dttf_trk_folder_wheel_2ndtrack =
343  dttf_trk_folder_wheel + "/2ND_TRACK_ONLY";
344  dbe_->setCurrentFolder(dttf_trk_folder_wheel_2ndtrack);
345 
346 
348  sprintf(hname, "dttf_04_quality_wh%s_2ndTrack", c_whn[iwh]);
349  sprintf(htitle, "Wheel %s - 2nd Tracks Quality distribution", c_whn[iwh]);
350  dttf_quality_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 7, 1, 8);
352 
354  sprintf(hname, "dttf_05_quality_summary_wh%s_2ndTrack", c_whn[iwh]);
355  sprintf(htitle, "Wheel %s - 2nd Tracks - Quality", c_whn[iwh]);
356  dttf_quality_summary_wheel_2ndTrack[iwh] = dbe_->book2D(hname, htitle,
357  12, 1, 13, 7, 1, 8 );
360  // dttf_quality_summary_wheel_2ndTrack[iwh]->setAxisTitle("Quality", 2);
361 
363  sprintf(hname, "dttf_06_phi_vs_eta_wh%s_2ndTrack", c_whn[iwh]);
364  sprintf(htitle, "Wheel %s - #eta-#phi Distribution of DTTF 2nd Tracks",
365  c_whn[iwh]);
366 
367  dttf_phi_eta_wheel_2ndTrack[iwh] = dbe_->book2D(hname, htitle,
368  nbins, start-0.5,stop-0.5,
369  144, -6, 138);
370  // 144, -0.5, 143.5);
371  dttf_phi_eta_wheel_2ndTrack[iwh]->setAxisTitle("#eta", 1);
372  dttf_phi_eta_wheel_2ndTrack[iwh]->setAxisTitle("#phi", 2);
373 
374 
375 
377  sprintf(hname, "dttf_07_eta_wh%s_2ndTrack", c_whn[iwh]);
378  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks #eta distribution (Packed values)",
379  c_whn[iwh]);
380  dttf_eta_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
381  dttf_eta_wheel_2ndTrack[iwh]->setAxisTitle("#eta", 1);
382 
384  sprintf(hname, "dttf_08_phi_wh%s_2ndTrack", c_whn[iwh]);
385  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks Phi distribution (Packed values)",
386  c_whn[iwh]);
387  dttf_phi_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 144, -6, 138. );
388  dttf_phi_wheel_2ndTrack[iwh]->setAxisTitle("#phi", 1);
389 
391  sprintf(hname, "dttf_09_pt_wh%s_2ndTrack", c_whn[iwh]);
392  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks p_{T} distribution (Packed values)",
393  c_whn[iwh]);
394  dttf_pt_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 32, -0.5, 31.5);
395  dttf_pt_wheel_2ndTrack[iwh]->setAxisTitle("p_{T}", 1);
396 
398  sprintf(hname, "dttf_10_charge_wh%s_2ndTrack", c_whn[iwh]);
399  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks Charge distribution", c_whn[iwh]);
400  dttf_q_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 2, -0.5, 1.5);
401  dttf_q_wheel_2ndTrack[iwh]->setAxisTitle("Charge", 1);
402 
403 
404 
405 
409 
411  std::string dttf_trk_folder_nTracksPerEvent = dttf_trk_folder_wheel + "/TracksPerEvent";
412  dbe_->setCurrentFolder(dttf_trk_folder_nTracksPerEvent);
413 
414  for(int ise = 0; ise < 12; ++ise) {
415  sprintf(hname, "dttf_nTracksPerEvent_wh%s_se%d", c_whn[iwh], ise+1);
416  sprintf(htitle, "Wheel %s Sector %d - Number of Tracks Per Event",
417  c_whn[iwh], ise+1);
418  dttf_nTracksPerEv[iwh][ise] = dbe_->book1D(hname, htitle, 2, 0.5, 2.5);
419  dttf_nTracksPerEv[iwh][ise]->setAxisTitle("# tracks/event", 1);
420  }
421 
422 
424  std::string dttf_trk_folder_wh_bxsec_all =
425  dttf_trk_folder_wheel + "/BX_BySector";
426  dbe_->setCurrentFolder(dttf_trk_folder_wh_bxsec_all);
427 
428  for(int ise = 0; ise < 12; ++ise ) {
429  sprintf(hname, "dttf_bx_wh%s_se%d", c_whn[iwh], ise+1);
430  sprintf(htitle, "Wheel %s Sector %d - BX Distribution",
431  c_whn[iwh], ise+1);
432  dttf_bx[iwh][ise] = dbe_->book1D(hname, htitle, 3, -1.5, 1.5);
433  dttf_bx[iwh][ise]->setAxisTitle("BX", 1);
434  }
435 
436  std::string dttf_trk_folder_wh_bxsec_trk2 =
437  dttf_trk_folder_wheel + "/BX_BySector/2ND_TRACK_ONLY";
438  dbe_->setCurrentFolder(dttf_trk_folder_wh_bxsec_trk2);
439 
440  for(int ise = 0; ise < 12; ++ise ) {
441  sprintf(hname, "dttf_bx_2ndTrack_wh%s_se%d", c_whn[iwh], ise+1);
442  sprintf(htitle, "Wheel %s Sector %d - BX 2nd Tracks only",
443  c_whn[iwh], ise+1);
444  dttf_bx_2ndTrack[iwh][ise] = dbe_->book1D(hname, htitle, 3, -1.5, 1.5);
445  dttf_bx_2ndTrack[iwh][ise]->setAxisTitle("BX", 1);
446  }
447 
449  std::string dttf_trk_folder_charge = dttf_trk_folder_wheel + "/Charge";
450  dbe_->setCurrentFolder(dttf_trk_folder_charge);
451 
452  for(int ise = 0; ise < 12; ++ise) {
453  sprintf(hname, "dttf_charge_wh%s_se%d", c_whn[iwh], ise+1);
454  sprintf(htitle, "Wheel %s Sector %d - Packed Charge", c_whn[iwh], ise+1);
455  dttf_q[iwh][ise] = dbe_->book1D(hname, htitle, 2, -0.5, 1.5);
456  dttf_q[iwh][ise]->setAxisTitle("Charge", 1);
457  }
458 
460  std::string dttf_trk_folder_pt = dttf_trk_folder_wheel + "/PT";
461  dbe_->setCurrentFolder(dttf_trk_folder_pt);
462 
463  for(int ise = 0; ise < 12; ++ise ) {
464  sprintf(hname, "dttf_pt_wh%s_se%d", c_whn[iwh], ise+1);
465  sprintf(htitle, "Wheel %s Sector %d - Packed p_{T}",
466  c_whn[iwh], ise + 1 );
467  dttf_pt[iwh][ise]= dbe_->book1D(hname, htitle, 32, -0.5, 31.5);
468  dttf_pt[iwh][ise]->setAxisTitle("p_{T}", 1);
469  }
470 
472  std::string dttf_trk_folder_phi = dttf_trk_folder_wheel + "/Phi";
473  dbe_->setCurrentFolder(dttf_trk_folder_phi);
474 
475  for(int ise = 0; ise < 12; ++ise ) {
476  sprintf(hname, "dttf_phi_wh%s_se%d", c_whn[iwh], ise+1);
477  sprintf(htitle, "Wheel %s Sector %d - Packed Phi", c_whn[iwh], ise+1);
478  dttf_phi[iwh][ise] = dbe_->book1D(hname, htitle, 144, -6, 138);
479  dttf_phi[iwh][ise]->setAxisTitle("#phi", 1);
480  //dttf_phi[iwh][ise] = dbe_->book1D(title,title, 32,-16.5, 15.5);
481  }
482 
484  std::string dttf_trk_folder_quality = dttf_trk_folder_wheel + "/Quality";
485  dbe_->setCurrentFolder(dttf_trk_folder_quality);
486 
487  for(int ise = 0; ise < 12; ++ise){
488  sprintf(hname, "dttf_qual_wh%s_se%d", c_whn[iwh], ise+1);
489  sprintf(htitle, "Wheel %s Sector %d - Packed Quality",
490  c_whn[iwh], ise+1);
491  dttf_qual[iwh][ise] = dbe_->book1D(hname, htitle, 7, 1, 8);
492  dttf_qual[iwh][ise]->setAxisTitle("Quality", 1);
493  setQualLabel( dttf_qual[iwh][ise], 1 );
494  }
495 
497  std::string dttf_trk_folder_eta = dttf_trk_folder_wheel + "/Eta";
498  dbe_->setCurrentFolder(dttf_trk_folder_eta);
499 
500  for (int ise = 0; ise < 12; ++ise ) {
501 
502  sprintf(hname, "dttf_eta_wh%s_se%d", c_whn[iwh], ise+1);
503  sprintf(htitle, "Wheel %s Sector %d - Packed #eta",
504  c_whn[iwh], ise+1);
505  dttf_eta[iwh][ise] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
506  dttf_eta[iwh][ise]->setAxisTitle("#eta", 1);
507 
508  }
509 
511  dttf_trk_folder_eta = dttf_trk_folder_wheel + "/EtaFineFraction";
512  dbe_->setCurrentFolder(dttf_trk_folder_eta);
513 
514  for (int ise = 0; ise < 12; ++ise ) {
515 
516  sprintf(hname, "dttf_etaFine_fraction_wh%s_se%d", c_whn[iwh], ise+1);
517  sprintf(htitle, "Wheel %s Sector %d - Eta Fine Fraction",
518  c_whn[iwh], ise+1);
519  dttf_eta_fine_fraction[iwh][ise] = dbe_->book1D(hname, htitle, 2, 0, 2);
520  dttf_eta_fine_fraction[iwh][ise]->setAxisTitle("#eta", 1);
521  dttf_eta_fine_fraction[iwh][ise]->setBinLabel(1, "fine", 1);
522  dttf_eta_fine_fraction[iwh][ise]->setBinLabel(2, "coarse", 1);
523 
524  }
525 
526  }
527 
531  std::string dttf_trk_folder_inclusive = dttf_trk_folder + "/01-INCLUSIVE";
532  dbe_->setCurrentFolder(dttf_trk_folder_inclusive);
533 
534 
535  sprintf(hname, "dttf_01_nTracksPerEvent_integ");
536  sprintf(htitle, "Number of DTTF Tracks Per Event");
537  dttf_nTracksPerEvent_integ = dbe_->book1D(hname, htitle, 20, 0.5, 20.5);
538  dttf_nTracksPerEvent_integ->setAxisTitle("# tracks/event", 1);
539 
541  // sprintf(hname, "dttf_10_qual_eta_distr");
542  // sprintf(htitle, "DTTF Tracks Quality vs Eta Distribution");
543  // dttf_qual_eta_integ = dbe_->book2D(hname, htitle, 64, 0, 64, 7, 1, 8);
544  // setQualLabel( dttf_qual_eta_integ, 2);
545 
547  if ( online_ ) {
548  sprintf(hname, "dttf_04_tracks_occupancy_by_lumi");
549  sprintf(htitle, "DTTF Tracks in the last LumiSections");
550  dttf_spare = dbe_->book2D(hname, htitle, 6, 0, 6, 12, 1, 13);
552  dttf_spare->setAxisTitle("Sector", 2);
553  dttf_spare->getTH2F()->GetXaxis()->SetNdivisions(12);
554  } else {
555 
556  sprintf(hname, "dttf_04_global_muons_request");
557  sprintf(htitle, "Tracks compatible with a Global Muon in the Barrel");
558  dttf_spare = dbe_->book1D(hname, htitle, 4, -0.5, 3.5 );
559  dttf_spare->setBinLabel(1, "No tracks", 1);
560  dttf_spare->setBinLabel(2, "No tracks but GM", 1);
561  dttf_spare->setBinLabel(3, "Tracks wo GM", 1);
562  dttf_spare->setBinLabel(4, "Tracks w GM", 1);
563 
564  }
565 
566  std::string dttf_trk_folder_integrated_gmt =
567  dttf_trk_folder + "/08-GMT_MATCH";
568  dbe_->setCurrentFolder(dttf_trk_folder_integrated_gmt);
569 
570  sprintf(hname, "dttf_tracks_with_gmt_match");
571  sprintf(htitle, "DTTF Tracks With a Match in GMT");
572  dttf_gmt_match = dbe_->book2D(hname, htitle, 6, 0., 6., 12, 1., 13.);
574 
575  sprintf(hname, "dttf_tracks_without_gmt_match");
576  sprintf(htitle, "DTTF Tracks Without a Match in GMT");
577  dttf_gmt_missed = dbe_->book2D(hname, htitle, 6, 0., 6., 12, 1., 13.);
579 
580  sprintf(hname, "dttf_missing_tracks_in_gmt");
581  sprintf(htitle, "GMT Tracks Without a Corresponding Track in DTTF");
582  dttf_gmt_ghost = dbe_->book2D(hname, htitle, 5, -2, 3, 12, 1, 13.);
583 
584  dttf_gmt_ghost->setBinLabel(1, "N2", 1);
585  dttf_gmt_ghost->setBinLabel(2, "N1", 1);
586  dttf_gmt_ghost->setBinLabel(3, "N0/P0", 1);
587  dttf_gmt_ghost->setBinLabel(4, "P1", 1);
588  dttf_gmt_ghost->setBinLabel(5, "P2", 1);
589 
590 
591  // sprintf(hname, "dttf_eta_phi_missing_tracks_in_gmt");
592  // sprintf(htitle, "GMT Tracks Without a Corresponding Track in DTTF");
593  // dttf_gmt_ghost_phys = dbe_->book2D(hname, htitle, 64, 0., 64., 144, 0., 144. );
594 
595 
596  }
597 
598 }
599 
600 
601 
602 //--------------------------------------------------------
603 void L1TDTTF::endJob(void)
604 {
605  if (verbose_) {
606  edm::LogInfo("EndJob") << "L1TDTTF: end job....";
607  edm::LogInfo("EndJob") << "analyzed " << nev_ << " events";
608  edm::LogInfo("EndJob") << "containing at least one dttf track : "
609  << nev_dttf_;
610  edm::LogInfo("EndJob") << "containing two dttf tracks : "
611  << nev_dttf_track2_;
612  }
613 
614  if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
615 
616 }
617 
618 
619 
620 //--------------------------------------------------------
622  const edm::EventSetup& eventSetup)
623 {
624 
625 
626  if ( verbose_ )
627  edm::LogInfo("L1TDTTF::Analyze::start") << "#################### START";
628 
630  ++nev_;
631  memset( numTracks, 0, 72 * sizeof(int) );
632 
634  edm::Handle<L1MuDTTrackContainer > myL1MuDTTrackContainer;
635  try {
636  event.getByLabel(trackInputTag_, myL1MuDTTrackContainer);
637  } catch (cms::Exception& iException) {
638  edm::LogError("L1TDTTF::analyze::DataNotFound")
639  << "can't getByLabel L1MuDTTrackContainer with label "
640  << dttpgSource_.label() << ":DATA:" << dttpgSource_.process();
641  return;
642  }
643 
644  if ( !myL1MuDTTrackContainer.isValid() ) {
645  edm::LogError("L1TDTTF::analyze::DataNotFound")
646  << "can't find L1MuDTTrackContainer with label "
647  << dttpgSource_.label() << ":DATA:" << dttpgSource_.process();
648  return;
649  }
650 
651  L1MuDTTrackContainer::TrackContainer * trackContainer =
652  myL1MuDTTrackContainer->getContainer();
653 
655  if ( trackContainer->size() > 0 ) {
656  ++nev_dttf_;
657  if( trackContainer->size() > 1 ) ++nev_dttf_track2_;
658  }
659 
663  bool accept = true;
664  if ( ! online_ ) {
665 
666  try {
667 
669  event.getByLabel(muonCollectionLabel_, muons);
670 
671  accept = false;
672  if ( muons.isValid() ) {
673  for (reco::MuonCollection::const_iterator recoMu = muons->begin();
674  recoMu!=muons->end(); ++recoMu ) {
675  if ( fabs( recoMu->eta() ) < 1.4 ) {
676  if ( verbose_ ) {
677  edm::LogInfo("L1TDTTFClient::Analyze:GM") << "Found a global muon!";
678  }
679  accept = true;
680  break;
681  }
682 
683  }
684 
686  if ( ! accept ) {
687  dttf_spare->Fill( trackContainer->size() ? 1 : 0 );
688 
689  if ( verbose_ ) {
690  edm::LogInfo("L1TDTTFClient::Analyze:GM")
691  << "No global muons in this event!";
692  }
693 
694  } else {
695  dttf_spare->Fill( trackContainer->size() ? 2 : 3 );
696  }
697 
698  } else {
700  accept = true;
701  edm::LogWarning("L1TDTTFClient::Analyze:GM")
702  << "Invalid MuonCollection with label "
704  }
705 
706 
707  } catch (cms::Exception& iException) {
709  accept = true;
710  edm::LogError("DataNotFound") << "Unable to getByLabel MuonCollection with label "
712  }
713 
714  }
715 
716 
718  std::vector<L1MuRegionalCand> gmtBx0DttfCandidates;
719 
720  try {
721 
723  event.getByLabel(gmtSource_, pCollection);
724 
725  if ( !pCollection.isValid() ) {
726  edm::LogError("DataNotFound") << "can't find L1MuGMTReadoutCollection with label "
727  << gmtSource_.label() ;
728  }
729 
730  // get GMT readout collection
731  L1MuGMTReadoutCollection const* gmtrc = pCollection.product();
732  std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
733 
734  std::vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
735 
736  for ( RRItr = gmt_records.begin(); RRItr != gmt_records.end(); ++RRItr ) {
737 
738  std::vector<L1MuRegionalCand> dttfCands = RRItr->getDTBXCands();
739  std::vector<L1MuRegionalCand>::iterator dttfCand;
740 
741  for( dttfCand = dttfCands.begin(); dttfCand != dttfCands.end();
742  ++dttfCand ) {
743 
744  if(dttfCand->empty()) continue;
746  if ( RRItr->getBxInEvent() ) continue;
747 
748  // dttf_gmt_ghost_phys->Fill( dttfCand->eta_packed(),
749  // dttfCand->phi_packed() );
750  gmtBx0DttfCandidates.push_back( *dttfCand );
751 
752  }
753  }
754 
755  } catch (cms::Exception& iException) {
756  edm::LogError("DataNotFound") << "Unable to getByLabel L1MuGMTReadoutCollection with label "
757  << gmtSource_.label() ;
758  }
759 
760 
761  // fill MEs if all selections are passed
762  if ( accept ) fillMEs( trackContainer, gmtBx0DttfCandidates );
763 
765  std::vector<L1MuRegionalCand>::iterator dttfCand;
766  for( dttfCand = gmtBx0DttfCandidates.begin();
767  dttfCand != gmtBx0DttfCandidates.end(); ++dttfCand ) {
768  if( dttfCand->empty() ) continue;
769 
773  int phi= dttfCand->phi_packed();
774  int sector = 1 + (phi + 6)/12;
775  if (sector > 12 ) sector -= 12;
776  double eta = dttfCand->etaValue();
777 
778  int wheel = -3;
779  if ( eta < -0.74 ) {
780  wheel = -2;
781  } else if ( eta < -0.3 ) {
782  wheel = -1;
783 
784  } else if ( eta < 0.3 ) {
785  wheel = 0;
786 
787  } else if ( eta < 0.74 ) {
788  wheel = 1;
789  } else {
790  wheel = 2;
791  }
792 
793  dttf_gmt_ghost->Fill( wheel, sector );
794  // dttf_gmt_ghost_phys->Fill( dttfCand->eta_packed(),
795  // dttfCand->phi_packed() );
796  }
797 
798 
800  int numTracksInt = 0;
801 
802  for ( int w = 0; w < 6; ++w ) {
803 
804  int numTracks_wh = 0;
805  for ( int s = 0; s < 12; ++s ) {
806 
808 
809  numTracks_wh += numTracks[w][s];
810 
811  }
812 
813  numTracksInt += numTracks_wh;
814  dttf_nTracksPerEvent_wheel[w]->Fill( numTracks_wh );
815 
816  }
817 
818  dttf_nTracksPerEvent_integ->Fill( numTracksInt );
819 
820 
821 
822 }
823 
824 
825 
826 
827 //--------------------------------------------------------
828 void L1TDTTF::fillMEs( std::vector<L1MuDTTrackCand> * trackContainer,
829  std::vector<L1MuRegionalCand> & gmtDttfCands )
830 {
831 
832  L1MuDTTrackContainer::TrackContainer::const_iterator track
833  = trackContainer->begin();
834  L1MuDTTrackContainer::TrackContainer::const_iterator trackEnd
835  = trackContainer->end();
836 
837  for ( ; track != trackEnd; ++track ) {
838 
839  if ( verbose_ ) {
840  edm::LogInfo("L1TDTTF::Analyze") << "bx = " << track->bx();
841  edm::LogInfo("L1TDTTF::Analyze") << "quality (packed) = "
842  << track->quality_packed();
843  edm::LogInfo("L1TDTTF::Analyze") << "pt (packed) = "
844  << track->pt_packed()
845  << " , pt (GeV) = " << track->ptValue();
846  edm::LogInfo("L1TDTTF::Analyze") << "phi (packed) = "
847  << track->phi_packed()
848  << " , phi (rad) = " << track->phiValue();
849  edm::LogInfo("L1TDTTF::Analyze") << "charge (packed) = "
850  << track->charge_packed();
851  }
852 
853 
855  if ( ( track->whNum() == -1 ) && ! track->eta_packed() ) {
856  edm::LogInfo("L1TDTTF::Analyze") << "Skipping N0 with zero eta value";
857 
858  continue;
859  }
860 
861 
862  int bxindex = track->bx() + 1;
863  int se = track->scNum();
864  int sector = se + 1;
865  int whindex = track->whNum();
866 
867  whindex = ( whindex < 0 ) ? whindex + 3 : whindex + 2;
868 
869  if ( whindex < 0 || whindex > 5 ) {
870  edm::LogError("L1TDTTF::Analyze::WHEEL_ERROR") << track->whNum()
871  << "(" << whindex << ")";
872  continue;
873  }
874 
875  if ( se < 0 || se > 11 ) {
876  edm::LogError("L1TDTTF::Analyze::SECTOR_ERROR") << se;
877  continue;
878  }
879 
881 
883  // int phi_local = track->phi_packed();//range: 0 < phi_local < 31
884  // if ( phi_local > 15 ) phi_local -= 32; //range: -16 < phi_local < 15
885 
886  // int phi_global = phi_local + se * 12; //range: -16 < phi_global < 147
887  // if(phi_global < 0) phi_global += 144; //range: 0 < phi_global < 147
888  // if(phi_global > 143) phi_global -= 144; //range: 0 < phi_global < 143
889  // // float phi_phys = phi_global * 2.5 + 1.25;
890 
892  int phi_global = track->phi_packed();
893  phi_global = (phi_global > 15 ? phi_global - 32 : phi_global ) + se * 12;
894  if ( phi_global < -6 ) phi_global += 144; //range: 0 < phi_global < 147
895  if ( phi_global > 137 ) phi_global -= 144; //range: 0 < phi_global < 143
896 
897  // int eta_global = track->eta_packed();
898  // int eta_global = track->eta_packed() - 32;
899  // dttf_eta[bxindex][whindex][se]->Fill(eta_global);
900  // float eta_phys = eta_global / 2.4 ;
901 
905 
907  dttf_bx[whindex][se]->Fill(track->bx());
908 
910  if( track->TrkTag() == 1 ) {
911 
913  dttf_bx_2ndTrack[whindex][se]->Fill(track->bx());
914 
915  }
916 
920 
921 
922  if ( bxindex == 1 ) {
923 
925  ++numTracks[whindex][se];
926 
928  dttf_phi[whindex][se]->Fill(phi_global);
929 
931  dttf_qual[whindex][se]->Fill(track->quality_packed());
932 
934  dttf_pt[whindex][se]->Fill(track->pt_packed());
935 
937  dttf_q[whindex][se]->Fill(track->charge_packed());
938 
939 
941  dttf_eta[whindex][se]->Fill( track->eta_packed() );
942 
943  if( track->isFineHalo() ) {
944 
945  dttf_eta_fine_fraction[whindex][se]->Fill( 0 );
946 
948  dttf_phi_eta_fine_wheel[whindex]->Fill( track->eta_packed(), phi_global );
949 
950  } else {
951 
952  dttf_eta_fine_fraction[whindex][se]->Fill( 1 );
953 
955  dttf_phi_eta_coarse_wheel[whindex]->Fill( track->eta_packed(), phi_global );
956  }
957 
959  if ( online_ ) {
960  dttf_spare->Fill( whindex, sector );
961  }
962 
964  // dttf_qual_eta_integ->Fill(track->eta_packed(), track->quality_packed());
965 
967  if ( track->TrkTag() == 1 ) {
968 
970  dttf_phi_wheel_2ndTrack[whindex]->Fill(phi_global);
971 
973  dttf_pt_wheel_2ndTrack[whindex]->Fill(track->pt_packed());
974 
976  dttf_eta_wheel_2ndTrack[whindex]->Fill(track->eta_packed());
977 
979  dttf_quality_wheel_2ndTrack[whindex]->Fill(track->quality_packed());
980 
982  dttf_q_wheel_2ndTrack[whindex]->Fill(track->charge_packed());
983 
985  dttf_quality_summary_wheel_2ndTrack[whindex]->Fill( sector, track->quality_packed() );
986 
988  dttf_phi_eta_wheel_2ndTrack[whindex]->Fill( track->eta_packed(), phi_global );
989 
990  }
991 
993  bool match = false;
994  std::vector<L1MuRegionalCand>::iterator dttfCand;
996  unsigned int gmt_phi = ( phi_global < 0 ? phi_global + 144 : phi_global );
997 
998  for ( dttfCand = gmtDttfCands.begin(); dttfCand != gmtDttfCands.end();
999  ++dttfCand ) {
1000 
1002  if ( dttfCand->empty() ) continue;
1003  if ( ( dttfCand->phi_packed() == gmt_phi ) &&
1004  dttfCand->quality_packed() == track->quality_packed() ) {
1005  match = true;
1006  dttfCand->reset();
1007  break;
1008  }
1009 
1010 
1011  }
1012 
1013  if ( match ) {
1014  dttf_gmt_match->Fill( whindex, sector );
1015  } else {
1016  dttf_gmt_missed->Fill( whindex, sector );
1017  }
1018 
1019  }
1020 
1021  }
1022 
1023 }
1024 
1025 
1026 //--------------------------------------------------------
1028 {
1029 
1030  if( axis == 1 )
1031  me->setAxisTitle("Quality", axis);
1032  me->setBinLabel(1, "T34", axis);
1033  me->setBinLabel(2, "T23/24", axis);
1034  me->setBinLabel(3, "T12/13/14", axis);
1035  me->setBinLabel(4, "T234", axis);
1036  me->setBinLabel(5, "T134", axis);
1037  me->setBinLabel(6, "T123/124", axis);
1038  me->setBinLabel(7, "T1234", axis);
1039 }
1040 
1041 //--------------------------------------------------------
1043 {
1044  me->setAxisTitle("Wheel", 1);
1045  me->setBinLabel(1, "N2", 1);
1046  me->setBinLabel(2, "N1", 1);
1047  me->setBinLabel(3, "N0", 1);
1048  me->setBinLabel(4, "P0", 1);
1049  me->setBinLabel(5, "P1", 1);
1050  me->setBinLabel(6, "P2", 1);
1051 }
1052 
1053 
1054 
1055 //--------------------------------------------------------
1056 void L1TDTTF::bookEta( int wh, int & nbins, float & start, float & stop )
1057 {
1058 
1059  switch ( wh ) {
1060  case 0 : start = 0; stop = 18; nbins = 18; break; // N2
1061  case 1 : start = 8; stop = 28; nbins = 20; break; // N1
1062  case 2 : start = 22; stop = 32; nbins = 10; break; // N0
1063  case 3 : start = 22; stop = 42; nbins = 20; break; // P0
1064  case 4 : start = 36; stop = 56; nbins = 20; break; // P1
1065  case 5 : start = 46; stop = 64; nbins = 18; break; // P2
1066  default : start = 0; stop = 0; nbins = 0; break; // BOH
1067  }
1068 
1069 }
1070 
1071 
1072 
1073 
1074 
1075 
1076 // ///////////////////////////////////////////////////////
1077 // /// dttf measures per wheel: per BX assignment
1078 // ///////////////////////////////////////////////////////
1079 
1080 // /// for ( int ibx = 0; ibx < 3; ++ibx ) {
1081 // /// LEAVING ONLY BX0!!!
1082 // for ( int ibx = 1; ibx < 2; ++ibx ) {
1083 // int tbx = ibx - 1;
1084 
1085 // std::string dttf_trk_folder_bx = dttf_trk_folder_wheel + bxn[ibx];
1086 // dbe_->setCurrentFolder(dttf_trk_folder_bx);
1087 
1088 // /// QUALITY folder
1089 // std::string dttf_trk_folder_quality = dttf_trk_folder_bx + "/Quality";
1090 // dbe_->setCurrentFolder(dttf_trk_folder_quality);
1091 
1092 // for(int ise = 0; ise < 12; ++ise){
1093 // sprintf(hname, "dttf_qual_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1094 // sprintf(htitle, "Packed Quality bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1095 // dttf_qual[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 8, -0.5, 7.5);
1096 // dttf_qual[ibx][iwh][ise]->setAxisTitle("Quality", 1);
1097 // }
1098 
1099 // /// PHI folder
1100 // std::string dttf_trk_folder_phi = dttf_trk_folder_bx + "/Phi";
1101 // dbe_->setCurrentFolder(dttf_trk_folder_phi);
1102 
1103 // for(int ise = 0; ise < 12; ++ise ) {
1104 // sprintf(hname, "dttf_phi_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1105 // sprintf(htitle, "Packed Phi bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1106 // dttf_phi[ibx][iwh][ise] = dbe_->book1D(hname, htitle,
1107 // 144, -0.5, 143.5);
1108 // dttf_phi[ibx][iwh][ise]->setAxisTitle("#phi", 1);
1109 // //dttf_phi[ibx][iwh][ise] = dbe_->book1D(title,title, 32,-16.5, 15.5);
1110 // }
1111 
1112 // /// ETA folder
1113 // std::string dttf_trk_folder_eta = dttf_trk_folder_bx + "/Eta";
1114 // dbe_->setCurrentFolder(dttf_trk_folder_eta);
1115 
1116 // for (int ise = 0; ise < 12; ++ise ) {
1117 
1118 // // sprintf(hname, "dttf_eta_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1119 // // sprintf(htitle, "Packed Eta bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1120 // // //dttf_eta[ibx][iwh][ise] = dbe_->book1D(hname,title,64,-32.5,32.5);//fix range and bin size!
1121 // // dttf_eta[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
1122 // // dttf_eta[ibx][iwh][ise]->setAxisTitle("#eta", 1);
1123 
1124 
1125 
1126 // sprintf(hname, "dttf_eta_fine_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1127 // sprintf(htitle, "Packed Eta Fine bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1128 // dttf_eta_fine[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
1129 // dttf_eta_fine[ibx][iwh][ise]->setAxisTitle("#eta", 1);
1130 
1131 
1132 
1133 // sprintf(hname, "dttf_eta_coarse_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1134 // sprintf(htitle, "Packed Eta Coarse bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1135 // dttf_eta_coarse[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
1136 // dttf_eta_coarse[ibx][iwh][ise]->setAxisTitle("#eta", 1);
1137 
1138 // }
1139 
1140 // /// PT folder
1141 // std::string dttf_trk_folder_pt = dttf_trk_folder_bx + "/PT";
1142 // dbe_->setCurrentFolder(dttf_trk_folder_pt);
1143 
1144 // for(int ise = 0; ise < 12; ++ise ) {
1145 // sprintf(hname, "dttf_pt_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1146 // sprintf(htitle, "Packed PT bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1147 // dttf_pt[ibx][iwh][ise]= dbe_->book1D(hname, htitle, 32, -0.5, 31.5);
1148 // dttf_pt[ibx][iwh][ise]->setAxisTitle("p_{T}", 1);
1149 // }
1150 
1151 // /// CHARGE folder
1152 // std::string dttf_trk_folder_charge = dttf_trk_folder_bx + "/Charge";
1153 // dbe_->setCurrentFolder(dttf_trk_folder_charge);
1154 
1155 // for(int ise = 0; ise < 12; ++ise) {
1156 // sprintf(hname, "dttf_q_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1157 // sprintf(htitle, "Packed Charge bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1158 // dttf_q[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 2, -0.5, 1.5);
1159 // dttf_q[ibx][iwh][ise]->setAxisTitle("Charge", 1);
1160 // }
1161 
1162 // /// number of tracks per event folder
1163 // std::string dttf_trk_folder_nTracksPerEvent = dttf_trk_folder_bx+"/TracksPerEvent";
1164 // dbe_->setCurrentFolder(dttf_trk_folder_nTracksPerEvent);
1165 
1166 // for(int ise = 0; ise < 12; ++ise) {
1167 // sprintf(hname, "dttf_nTracksPerEvent_bx%d_wh%s_se%d", tbx, c_whn[iwh], ise+1);
1168 // sprintf(htitle, "Num Tracks Per Event bx%d wh%s se%d", tbx, c_whn[iwh], ise+1);
1169 // dttf_nTracksPerEv[ibx][iwh][ise] = dbe_->book1D(hname, htitle, 2, 0.5, 2.5);
1170 // dttf_nTracksPerEv[ibx][iwh][ise]->setAxisTitle("# tracks/event", 1);
1171 // }
1172 
1173 // }
1174 
1175 
1176 
1177 
1178 
1179 
1180 
1181 
1182 //--------------------------------------------------------
T getUntrackedParameter(std::string const &, T const &) const
std::string l1tsubsystemfolder_
Definition: L1TDTTF.h:70
edm::InputTag trackInputTag_
Definition: L1TDTTF.h:75
tuple start
Check for commandline option errors.
Definition: dqm_diff.py:58
MonitorElement * dttf_phi_eta_coarse_wheel[6]
Definition: L1TDTTF.h:81
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
edm::InputTag muonCollectionLabel_
Definition: L1TDTTF.h:69
virtual ~L1TDTTF()
Definition: L1TDTTF.cc:257
void bookEta(int wh, int &nbins, float &start, float &stop)
Definition: L1TDTTF.cc:1056
MonitorElement * dttf_nTracksPerEvent_wheel[6]
Definition: L1TDTTF.h:77
MonitorElement * dttf_phi_eta_fine_wheel[6]
Definition: L1TDTTF.h:80
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2118
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)
#define NULL
Definition: scimark2.h:8
void setWheelLabel(MonitorElement *me)
Definition: L1TDTTF.cc:1042
MonitorElement * dttf_gmt_match
Definition: L1TDTTF.h:101
T eta() const
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:22
MonitorElement * dttf_phi_wheel_2ndTrack[6]
Definition: L1TDTTF.h:84
void Fill(long long x)
void fillMEs(std::vector< L1MuDTTrackCand > *trackContainer, std::vector< L1MuRegionalCand > &gmtDttfCands)
Definition: L1TDTTF.cc:828
MonitorElement * dttf_nTracksPerEvent_integ
Definition: L1TDTTF.h:98
DQMStore * dbe_
Definition: L1TDTTF.h:73
MonitorElement * dttf_pt_wheel_2ndTrack[6]
Definition: L1TDTTF.h:85
MonitorElement * dttf_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:83
edm::InputTag gmtSource_
Definition: L1TDTTF.h:68
std::string outputFile_
Definition: L1TDTTF.h:74
MonitorElement * dttf_qual[6][12]
Definition: L1TDTTF.h:91
edm::InputTag dttpgSource_
Definition: L1TDTTF.h:67
MonitorElement * dttf_quality_wheel_2ndTrack[6]
Definition: L1TDTTF.h:78
std::vector< L1MuDTTrackCand > TrackContainer
MonitorElement * dttf_phi[6][12]
Definition: L1TDTTF.h:94
void endJob(void)
Definition: L1TDTTF.cc:603
void setVerbose(unsigned level)
Definition: DQMStore.cc:398
void beginJob(void)
Definition: L1TDTTF.cc:265
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
MonitorElement * dttf_gmt_missed
Definition: L1TDTTF.h:102
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * dttf_quality_summary_wheel_2ndTrack[6]
Definition: L1TDTTF.h:79
MonitorElement * dttf_eta_fine_fraction[6][12]
Definition: L1TDTTF.h:92
MonitorElement * dttf_bx[6][12]
Definition: L1TDTTF.h:89
int nev_dttf_track2_
Definition: L1TDTTF.h:108
int numTracks[6][12]
Definition: L1TDTTF.h:109
bool verbose_
Definition: L1TDTTF.h:72
MonitorElement * dttf_gmt_ghost
Definition: L1TDTTF.h:103
MonitorElement * dttf_bx_2ndTrack[6][12]
Definition: L1TDTTF.h:90
int nev_dttf_
Definition: L1TDTTF.h:107
T const * product() const
Definition: Handle.h:74
MonitorElement * dttf_q_wheel_2ndTrack[6]
Definition: L1TDTTF.h:86
std::string const & label() const
Definition: InputTag.h:42
std::string const & process() const
Definition: InputTag.h:46
MonitorElement * dttf_eta[6][12]
Definition: L1TDTTF.h:93
tuple muons
Definition: patZpeak.py:38
bool online_
Definition: L1TDTTF.h:71
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
MonitorElement * dttf_nTracksPerEv[6][12]
Definition: L1TDTTF.h:88
void analyze(const edm::Event &e, const edm::EventSetup &c)
Definition: L1TDTTF.cc:621
MonitorElement * dttf_pt[6][12]
Definition: L1TDTTF.h:95
MonitorElement * dttf_phi_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:82
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:6
MonitorElement * dttf_spare
Definition: L1TDTTF.h:99
T w() const
int nev_
Definition: L1TDTTF.h:106
TH2F * getTH2F(void) const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:850
MonitorElement * dttf_q[6][12]
Definition: L1TDTTF.h:96
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setQualLabel(MonitorElement *me, int axis)
Definition: L1TDTTF.cc:1027
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
L1TDTTF(const edm::ParameterSet &ps)
base services
Definition: L1TDTTF.cc:211
Definition: DDAxes.h:10