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