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