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