CMS 3D CMS Logo

L1TGMT.cc
Go to the documentation of this file.
1 /*
2  * \file L1TGMT.cc
3  *
4  * \author J. Berryhill, I. Mikulec
5  *
6  */
7 
10 
17 
18 using namespace std;
19 using namespace edm;
20 
21 const double L1TGMT::piconv_ = 180. / acos(-1.);
22 
24  : verbose_(ps.getUntrackedParameter<bool>("verbose", false)) // verbosity switch
25  ,
26  gmtSource_(consumes<L1MuGMTReadoutCollection>(ps.getParameter<InputTag>("gmtSource"))),
27  bxnum_old_(0),
28  obnum_old_(0),
29  trsrc_old_(0) {
30  if (verbose_)
31  cout << "L1TGMT: constructor...." << endl;
32 }
33 
35 
36 void L1TGMT::analyze(const Event& e, const EventSetup& c) {
37  if (verbose_)
38  cout << "L1TGMT: analyze...." << endl;
39 
41  e.getByToken(gmtSource_, pCollection);
42 
43  if (!pCollection.isValid()) {
44  edm::LogInfo("DataNotFound") << "can't find L1MuGMTReadoutCollection";
45  return;
46  }
47 
48  // remember the bx of 1st candidate of each system (9=none)
49  int bx1st[4] = {9, 9, 9, 9};
50 
51  // get GMT readout collection
52  L1MuGMTReadoutCollection const* gmtrc = pCollection.product();
53  // get record vector
54  vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
55  // loop over records of individual bx's
56  vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
57 
58  for (RRItr = gmt_records.begin(); RRItr != gmt_records.end(); RRItr++) {
59  vector<L1MuRegionalCand> INPCands[4] = {
60  RRItr->getDTBXCands(), RRItr->getBrlRPCCands(), RRItr->getCSCCands(), RRItr->getFwdRPCCands()};
61  vector<L1MuGMTExtendedCand> GMTCands = RRItr->getGMTCands();
62 
63  vector<L1MuRegionalCand>::const_iterator INPItr;
64  vector<L1MuGMTExtendedCand>::const_iterator GMTItr;
65  vector<L1MuGMTExtendedCand>::const_iterator GMTItr2;
66 
67  int BxInEvent = RRItr->getBxInEvent();
68 
69  // count non-empty candidates in this bx
70  int nSUBS[5] = {0, 0, 0, 0, 0};
71  for (int i = 0; i < 4; i++) {
72  for (INPItr = INPCands[i].begin(); INPItr != INPCands[i].end(); ++INPItr) {
73  if (!INPItr->empty()) {
74  nSUBS[i]++;
75  if (bx1st[i] == 9)
76  bx1st[i] = BxInEvent;
77  }
78  }
79  subs_nbx[i]->Fill(float(nSUBS[i]), float(BxInEvent));
80  }
81 
82  for (GMTItr = GMTCands.begin(); GMTItr != GMTCands.end(); ++GMTItr) {
83  if (!GMTItr->empty())
84  nSUBS[GMT]++;
85  }
86  subs_nbx[GMT]->Fill(float(nSUBS[GMT]), float(BxInEvent));
87 
89  // from here care only about the L1A bunch crossing
90  if (BxInEvent != 0)
91  continue;
92 
93  // get the absolute bx number of the L1A
94  int Bx = RRItr->getBxNr();
95 
96  bx_number->Fill(double(Bx));
97 
98  for (int i = 0; i < 4; i++) {
99  for (INPItr = INPCands[i].begin(); INPItr != INPCands[i].end(); ++INPItr) {
100  if (INPItr->empty())
101  continue;
102  subs_eta[i]->Fill(INPItr->etaValue());
103  subs_phi[i]->Fill(phiconv_(INPItr->phiValue()));
104  subs_pt[i]->Fill(INPItr->ptValue());
105  subs_qty[i]->Fill(INPItr->quality());
106  subs_etaphi[i]->Fill(INPItr->etaValue(), phiconv_(INPItr->phiValue()));
107  subs_etaqty[i]->Fill(INPItr->etaValue(), INPItr->quality());
108  int word = INPItr->getDataWord();
109  for (int j = 0; j < 32; j++) {
110  if (word & (1 << j))
111  subs_bits[i]->Fill(float(j));
112  }
113  }
114  }
115 
116  for (GMTItr = GMTCands.begin(); GMTItr != GMTCands.end(); ++GMTItr) {
117  if (GMTItr->empty())
118  continue;
119  subs_eta[GMT]->Fill(GMTItr->etaValue());
120  subs_phi[GMT]->Fill(phiconv_(GMTItr->phiValue()));
121  subs_pt[GMT]->Fill(GMTItr->ptValue());
122  subs_qty[GMT]->Fill(GMTItr->quality());
123  subs_etaphi[GMT]->Fill(GMTItr->etaValue(), phiconv_(GMTItr->phiValue()));
124  subs_etaqty[GMT]->Fill(GMTItr->etaValue(), GMTItr->quality());
125  int word = GMTItr->getDataWord();
126  for (int j = 0; j < 32; j++) {
127  if (word & (1 << j))
128  subs_bits[GMT]->Fill(float(j));
129  }
130 
131  if (GMTItr->isMatchedCand()) {
132  if (GMTItr->quality() > 3) {
133  eta_dtcsc_and_rpc->Fill(GMTItr->etaValue());
134  phi_dtcsc_and_rpc->Fill(phiconv_(GMTItr->phiValue()));
135  etaphi_dtcsc_and_rpc->Fill(GMTItr->etaValue(), phiconv_(GMTItr->phiValue()));
136  }
137  } else if (GMTItr->isRPC()) {
138  if (GMTItr->quality() > 3) {
139  eta_rpc_only->Fill(GMTItr->etaValue());
140  phi_rpc_only->Fill(phiconv_(GMTItr->phiValue()));
141  etaphi_rpc_only->Fill(GMTItr->etaValue(), phiconv_(GMTItr->phiValue()));
142  }
143  } else {
144  if (GMTItr->quality() > 3) {
145  eta_dtcsc_only->Fill(GMTItr->etaValue());
146  phi_dtcsc_only->Fill(phiconv_(GMTItr->phiValue()));
147  etaphi_dtcsc_only->Fill(GMTItr->etaValue(), phiconv_(GMTItr->phiValue()));
148  }
149 
150  if (GMTItr != GMTCands.end()) {
151  for (GMTItr2 = GMTCands.begin(); GMTItr2 != GMTCands.end(); ++GMTItr2) {
152  if (GMTItr2 == GMTItr)
153  continue;
154  if (GMTItr2->empty())
155  continue;
156  if (GMTItr2->isRPC()) {
157  if (GMTItr->isFwd()) {
158  dist_eta_csc_rpc->Fill(GMTItr->etaValue() - GMTItr2->etaValue());
159  dist_phi_csc_rpc->Fill(phiconv_(GMTItr->phiValue()) - phiconv_(GMTItr2->phiValue()));
160  } else {
161  dist_eta_dt_rpc->Fill(GMTItr->etaValue() - GMTItr2->etaValue());
162  dist_phi_dt_rpc->Fill(phiconv_(GMTItr->phiValue()) - phiconv_(GMTItr2->phiValue()));
163  }
164  } else {
165  if (!(GMTItr->isFwd()) && GMTItr2->isFwd()) {
166  dist_eta_dt_csc->Fill(GMTItr->etaValue() - GMTItr2->etaValue());
167  dist_phi_dt_csc->Fill(phiconv_(GMTItr->phiValue()) - phiconv_(GMTItr2->phiValue()));
168  } else if (GMTItr->isFwd() && !(GMTItr2->isFwd())) {
169  dist_eta_dt_csc->Fill(GMTItr2->etaValue() - GMTItr->etaValue());
170  dist_phi_dt_csc->Fill(phiconv_(GMTItr->phiValue()) - phiconv_(GMTItr2->phiValue()));
171  }
172  }
173  }
174  }
175  }
176  }
177 
178  n_rpcb_vs_dttf->Fill(float(nSUBS[DTTF]), float(nSUBS[RPCb]));
179  n_rpcf_vs_csctf->Fill(float(nSUBS[CSCTF]), float(nSUBS[RPCf]));
180  n_csctf_vs_dttf->Fill(float(nSUBS[DTTF]), float(nSUBS[CSCTF]));
181 
182  regional_triggers->Fill(-1.); // fill underflow for normalization
183  if (nSUBS[GMT])
184  regional_triggers->Fill(0.); // fill all muon bin
185  int ioff = 1;
186  for (int i = 0; i < 4; i++) {
187  if (nSUBS[i])
188  regional_triggers->Fill(float(5 * i + nSUBS[i] + ioff));
189  }
190  if (nSUBS[DTTF] && (nSUBS[RPCb] || nSUBS[RPCf]))
191  regional_triggers->Fill(22.);
192  if (nSUBS[DTTF] && nSUBS[CSCTF])
193  regional_triggers->Fill(23.);
194  if (nSUBS[CSCTF] && (nSUBS[RPCb] || nSUBS[RPCf]))
195  regional_triggers->Fill(24.);
196  if (nSUBS[DTTF] && nSUBS[CSCTF] && (nSUBS[RPCb] || nSUBS[RPCf]))
197  regional_triggers->Fill(25.);
198 
199  // fill only if previous event corresponds to previous trigger
200  // if( (Ev - evnum_old_) == 1 && bxnum_old_ > -1 ) {
201  // assume getting all events in a sequence (usefull only from reco data)
202  if (bxnum_old_ > -1) {
203  int dBx = Bx - bxnum_old_ + 3564 * (e.orbitNumber() - obnum_old_);
204  for (int id = 0; id < 4; id++) {
205  if (trsrc_old_ & (1 << id)) {
206  for (int i = 0; i < 4; i++) {
207  if (nSUBS[i])
208  subs_dbx[i]->Fill(float(dBx), float(id));
209  }
210  }
211  }
212  }
213 
214  // save quantities for the next event
215  bxnum_old_ = Bx;
216  obnum_old_ = e.orbitNumber();
217  trsrc_old_ = 0;
218  for (int i = 0; i < 4; i++) {
219  if (nSUBS[i])
220  trsrc_old_ |= (1 << i);
221  }
222  }
223 
224  if (bx1st[DTTF] < 9 && bx1st[RPCb] < 9)
225  bx_dt_rpc->Fill(bx1st[DTTF], bx1st[RPCb]);
226  if (bx1st[CSCTF] < 9 && bx1st[RPCf] < 9)
227  bx_csc_rpc->Fill(bx1st[CSCTF], bx1st[RPCf]);
228  if (bx1st[DTTF] < 9 && bx1st[CSCTF] < 9)
229  bx_dt_csc->Fill(bx1st[DTTF], bx1st[CSCTF]);
230 }
231 
232 double L1TGMT::phiconv_(float phi) {
233  double phiout = double(phi);
234  phiout *= piconv_;
235  phiout += 0.001; // add a small value to get off the bin edge
236  return phiout;
237 }
238 
240  std::string subs[5] = {"DTTF", "RPCb", "CSCTF", "RPCf", "GMT"};
241 
243  c.get<L1MuTriggerScalesRcd>().get(trigscales_h);
244  const L1MuTriggerScales* scales = trigscales_h.product();
245 
246  edm::ESHandle<L1MuTriggerPtScale> trigptscale_h;
247  c.get<L1MuTriggerPtScaleRcd>().get(trigptscale_h);
248  const L1MuTriggerPtScale* scalept = trigptscale_h.product();
249 
250  ibooker.setCurrentFolder("L1T/L1TGMT");
251 
252  int nqty = 8;
253  double qtymin = -0.5;
254  double qtymax = 7.5;
255 
256  float phiscale[145];
257  int nphiscale;
258  {
259  int nbins = scales->getPhiScale()->getNBins();
260  if (nbins > 144)
261  nbins = 144;
262  for (int j = 0; j <= nbins; j++) {
263  phiscale[j] = piconv_ * scales->getPhiScale()->getValue(j);
264  }
265  nphiscale = nbins;
266  }
267 
268  float qscale[9];
269  {
270  for (int j = 0; j < 9; j++) {
271  qscale[j] = -0.5 + j;
272  }
273  }
274 
275  // pt scale first bin reserved for empty muon
276  float ptscale[32];
277  int nptscale;
278  {
279  int nbins = scalept->getPtScale()->getNBins() - 1;
280  if (nbins > 31)
281  nbins = 31;
282  for (int j = 1; j <= nbins; j++) {
283  ptscale[j - 1] = scalept->getPtScale()->getValue(j);
284  }
285  ptscale[nbins] = ptscale[nbins - 1] + 10.; // make reasonable size last bin
286  nptscale = nbins;
287  }
288 
289  float etascale[5][66];
290  int netascale[5];
291  // DTTF eta scale
292  {
293  int nbins = scales->getRegionalEtaScale(DTTF)->getNBins();
294  if (nbins > 65)
295  nbins = 65;
296  for (int j = 0; j <= nbins; j++) {
297  etascale[DTTF][j] = scales->getRegionalEtaScale(DTTF)->getValue(j);
298  }
299  netascale[DTTF] = nbins;
300  }
301  // RPCb etascale
302  {
303  int nbins = scales->getRegionalEtaScale(RPCb)->getNBins();
304  if (nbins > 65)
305  nbins = 65;
306  for (int j = 0; j <= nbins; j++) {
307  etascale[RPCb][j] = scales->getRegionalEtaScale(RPCb)->getValue(j);
308  }
309  netascale[RPCb] = nbins;
310  }
311  // CSCTF etascale
312  // special case - need to mirror 2*32 bins
313  {
314  int nbins = scales->getRegionalEtaScale(CSCTF)->getNBins();
315  if (nbins > 32)
316  nbins = 32;
317 
318  int i = 0;
319  for (int j = nbins; j >= 0; j--, i++) {
320  etascale[CSCTF][i] = (-1) * scales->getRegionalEtaScale(CSCTF)->getValue(j);
321  }
322  for (int j = 0; j <= nbins; j++, i++) {
323  etascale[CSCTF][i] = scales->getRegionalEtaScale(CSCTF)->getValue(j);
324  }
325  netascale[CSCTF] = i - 1;
326  }
327  // RPCf etascale
328  {
329  int nbins = scales->getRegionalEtaScale(RPCf)->getNBins();
330  if (nbins > 65)
331  nbins = 65;
332  for (int j = 0; j <= nbins; j++) {
333  etascale[RPCf][j] = scales->getRegionalEtaScale(RPCf)->getValue(j);
334  }
335  netascale[RPCf] = nbins;
336  }
337  // GMT etascale
338  {
339  int nbins = scales->getGMTEtaScale()->getNBins();
340  if (nbins > 32)
341  nbins = 32;
342 
343  int i = 0;
344  for (int j = nbins; j > 0; j--, i++) {
345  etascale[GMT][i] = (-1) * scales->getGMTEtaScale()->getValue(j);
346  }
347  for (int j = 0; j <= nbins; j++, i++) {
348  etascale[GMT][i] = scales->getGMTEtaScale()->getValue(j);
349  }
350  netascale[GMT] = i - 1;
351  }
352 
353  std::string hname("");
354  std::string htitle("");
355 
356  for (int i = 0; i < 5; i++) {
357  hname = subs[i] + "_nbx";
358  htitle = subs[i] + " multiplicity in bx";
359  subs_nbx[i] = ibooker.book2D(hname.data(), htitle.data(), 4, 1., 5., 5, -2.5, 2.5);
360  subs_nbx[i]->setAxisTitle(subs[i] + " candidates", 1);
361  subs_nbx[i]->setAxisTitle("bx wrt L1A", 2);
362 
363  hname = subs[i] + "_eta";
364  htitle = subs[i] + " eta value";
365  subs_eta[i] = ibooker.book1D(hname.data(), htitle.data(), netascale[i], etascale[i]);
366  subs_eta[i]->setAxisTitle("eta", 1);
367 
368  hname = subs[i] + "_phi";
369  htitle = subs[i] + " phi value";
370  subs_phi[i] = ibooker.book1D(hname.data(), htitle.data(), nphiscale, phiscale);
371  subs_phi[i]->setAxisTitle("phi (deg)", 1);
372 
373  hname = subs[i] + "_pt";
374  htitle = subs[i] + " pt value";
375  subs_pt[i] = ibooker.book1D(hname.data(), htitle.data(), nptscale, ptscale);
376  subs_pt[i]->setAxisTitle("L1 pT (GeV)", 1);
377 
378  hname = subs[i] + "_qty";
379  htitle = subs[i] + " qty value";
380  subs_qty[i] = ibooker.book1D(hname.data(), htitle.data(), nqty, qtymin, qtymax);
381  subs_qty[i]->setAxisTitle(subs[i] + " quality", 1);
382 
383  hname = subs[i] + "_etaphi";
384  htitle = subs[i] + " phi vs eta";
385  subs_etaphi[i] = ibooker.book2D(hname.data(), htitle.data(), netascale[i], etascale[i], nphiscale, phiscale);
386  subs_etaphi[i]->setAxisTitle("eta", 1);
387  subs_etaphi[i]->setAxisTitle("phi (deg)", 2);
388 
389  hname = subs[i] + "_etaqty";
390  htitle = subs[i] + " qty vs eta";
391  subs_etaqty[i] = ibooker.book2D(hname.data(), htitle.data(), netascale[i], etascale[i], nqty, qscale);
392  subs_etaqty[i]->setAxisTitle("eta", 1);
393  subs_etaqty[i]->setAxisTitle(subs[i] + " quality", 2);
394 
395  hname = subs[i] + "_bits";
396  htitle = subs[i] + " bit population";
397  subs_bits[i] = ibooker.book1D(hname.data(), htitle.data(), 32, -0.5, 31.5);
398  subs_bits[i]->setAxisTitle("bit number", 1);
399  }
400 
401  regional_triggers = ibooker.book1D("Regional_trigger", "Muon trigger contribution", 27, 0., 27.);
402  regional_triggers->setAxisTitle("regional trigger", 1);
403  int ib = 1;
404  regional_triggers->setBinLabel(ib++, "All muons", 1);
405  ib++;
406  regional_triggers->setBinLabel(ib++, "DT 1mu", 1);
407  regional_triggers->setBinLabel(ib++, "DT 2mu", 1);
408  regional_triggers->setBinLabel(ib++, "DT 3mu", 1);
409  regional_triggers->setBinLabel(ib++, "DT 4mu", 1);
410  ib++;
411  regional_triggers->setBinLabel(ib++, "RPCb 1mu", 1);
412  regional_triggers->setBinLabel(ib++, "RPCb 2mu", 1);
413  regional_triggers->setBinLabel(ib++, "RPCb 3mu", 1);
414  regional_triggers->setBinLabel(ib++, "RPCb 4mu", 1);
415  ib++;
416  regional_triggers->setBinLabel(ib++, "CSC 1mu", 1);
417  regional_triggers->setBinLabel(ib++, "CSC 2mu", 1);
418  regional_triggers->setBinLabel(ib++, "CSC 3mu", 1);
419  regional_triggers->setBinLabel(ib++, "CSC 4mu", 1);
420  ib++;
421  regional_triggers->setBinLabel(ib++, "RPCf 1mu", 1);
422  regional_triggers->setBinLabel(ib++, "RPCf 2mu", 1);
423  regional_triggers->setBinLabel(ib++, "RPCf 3mu", 1);
424  regional_triggers->setBinLabel(ib++, "RPCf 4mu", 1);
425  ib++;
426  regional_triggers->setBinLabel(ib++, "DT & RPC", 1);
427  regional_triggers->setBinLabel(ib++, "DT & CSC", 1);
428  regional_triggers->setBinLabel(ib++, "CSC & RPC", 1);
429  regional_triggers->setBinLabel(ib++, "DT & CSC & RPC", 1);
430 
431  bx_number = ibooker.book1D("Bx_Number", "Bx number ROP chip", 3564, 0., 3564.);
432  bx_number->setAxisTitle("bx number", 1);
433 
434  dbx_chip = ibooker.bookProfile("dbx_Chip", "bx count difference wrt ROP chip", 5, 0., 5., 100, -4000., 4000., "i");
435  dbx_chip->setAxisTitle("chip name", 1);
436  dbx_chip->setAxisTitle("delta bx", 2);
437  dbx_chip->setBinLabel(1, "IND", 1);
438  dbx_chip->setBinLabel(2, "INB", 1);
439  dbx_chip->setBinLabel(3, "INC", 1);
440  dbx_chip->setBinLabel(4, "INF", 1);
441  dbx_chip->setBinLabel(5, "SRT", 1);
442 
444  ibooker.book1D("eta_DTCSC_and_RPC", "eta of confirmed GMT candidates", netascale[GMT], etascale[GMT]);
445  eta_dtcsc_and_rpc->setAxisTitle("eta", 1);
446 
448  ibooker.book1D("eta_DTCSC_only", "eta of unconfirmed DT/CSC candidates", netascale[GMT], etascale[GMT]);
449  eta_dtcsc_only->setAxisTitle("eta", 1);
450 
451  eta_rpc_only = ibooker.book1D("eta_RPC_only", "eta of unconfirmed RPC candidates", netascale[GMT], etascale[GMT]);
452  eta_rpc_only->setAxisTitle("eta", 1);
453 
454  phi_dtcsc_and_rpc = ibooker.book1D("phi_DTCSC_and_RPC", "phi of confirmed GMT candidates", nphiscale, phiscale);
455  phi_dtcsc_and_rpc->setAxisTitle("phi (deg)", 1);
456 
457  phi_dtcsc_only = ibooker.book1D("phi_DTCSC_only", "phi of unconfirmed DT/CSC candidates", nphiscale, phiscale);
458  phi_dtcsc_only->setAxisTitle("phi (deg)", 1);
459 
460  phi_rpc_only = ibooker.book1D("phi_RPC_only", "phi of unconfirmed RPC candidates", nphiscale, phiscale);
461  phi_rpc_only->setAxisTitle("phi (deg)", 1);
462 
463  etaphi_dtcsc_and_rpc = ibooker.book2D("etaphi_DTCSC_and_RPC",
464  "eta vs phi map of confirmed GMT candidates",
465  netascale[GMT],
466  etascale[GMT],
467  nphiscale,
468  phiscale);
470  etaphi_dtcsc_and_rpc->setAxisTitle("phi (deg)", 2);
471 
472  etaphi_dtcsc_only = ibooker.book2D("etaphi_DTCSC_only",
473  "eta vs phi map of unconfirmed DT/CSC candidates",
474  netascale[GMT],
475  etascale[GMT],
476  nphiscale,
477  phiscale);
478  etaphi_dtcsc_only->setAxisTitle("eta", 1);
479  etaphi_dtcsc_only->setAxisTitle("phi (deg)", 2);
480 
481  etaphi_rpc_only = ibooker.book2D("etaphi_RPC_only",
482  "eta vs phi map of unconfirmed RPC candidates",
483  netascale[GMT],
484  etascale[GMT],
485  nphiscale,
486  phiscale);
487  etaphi_rpc_only->setAxisTitle("eta", 1);
488  etaphi_rpc_only->setAxisTitle("phi (deg)", 2);
489 
490  dist_phi_dt_rpc = ibooker.book1D("dist_phi_DT_RPC", "Dphi between DT and RPC candidates", 100, -125., 125.);
491  dist_phi_dt_rpc->setAxisTitle("delta phi (deg)", 1);
492 
493  dist_phi_csc_rpc = ibooker.book1D("dist_phi_CSC_RPC", "Dphi between CSC and RPC candidates", 100, -125., 125.);
494  dist_phi_csc_rpc->setAxisTitle("delta phi (deg)", 1);
495 
496  dist_phi_dt_csc = ibooker.book1D("dist_phi_DT_CSC", "Dphi between DT and CSC candidates", 100, -125., 125.);
497  dist_phi_dt_csc->setAxisTitle("delta phi (deg)", 1);
498 
499  dist_eta_dt_rpc = ibooker.book1D("dist_eta_DT_RPC", "Deta between DT and RPC candidates", 40, -1., 1.);
500  dist_eta_dt_rpc->setAxisTitle("delta eta", 1);
501 
502  dist_eta_csc_rpc = ibooker.book1D("dist_eta_CSC_RPC", "Deta between CSC and RPC candidates", 40, -1., 1.);
503  dist_eta_csc_rpc->setAxisTitle("delta eta", 1);
504 
505  dist_eta_dt_csc = ibooker.book1D("dist_eta_DT_CSC", "Deta between DT and CSC candidates", 40, -1., 1.);
506  dist_eta_dt_csc->setAxisTitle("delta eta", 1);
507 
508  n_rpcb_vs_dttf = ibooker.book2D("n_RPCb_vs_DTTF", "n cands RPCb vs DTTF", 5, -0.5, 4.5, 5, -0.5, 4.5);
509  n_rpcb_vs_dttf->setAxisTitle("DTTF candidates", 1);
510  n_rpcb_vs_dttf->setAxisTitle("barrel RPC candidates", 2);
511 
512  n_rpcf_vs_csctf = ibooker.book2D("n_RPCf_vs_CSCTF", "n cands RPCf vs CSCTF", 5, -0.5, 4.5, 5, -0.5, 4.5);
513  n_rpcf_vs_csctf->setAxisTitle("CSCTF candidates", 1);
514  n_rpcf_vs_csctf->setAxisTitle("endcap RPC candidates", 2);
515 
516  n_csctf_vs_dttf = ibooker.book2D("n_CSCTF_vs_DTTF", "n cands CSCTF vs DTTF", 5, -0.5, 4.5, 5, -0.5, 4.5);
517  n_csctf_vs_dttf->setAxisTitle("DTTF candidates", 1);
518  n_csctf_vs_dttf->setAxisTitle("CSCTF candidates", 2);
519 
520  bx_dt_rpc = ibooker.book2D("bx_DT_vs_RPC", "1st bx DT vs. RPC", 5, -2.5, 2.5, 5, -2.5, 2.5);
521  bx_dt_rpc->setAxisTitle("bx of 1st DTTF candidate", 1);
522  bx_dt_rpc->setAxisTitle("bx of 1st RPCb candidate", 2);
523 
524  bx_csc_rpc = ibooker.book2D("bx_CSC_vs_RPC", "1st bx CSC vs. RPC", 5, -2.5, 2.5, 5, -2.5, 2.5);
525  bx_csc_rpc->setAxisTitle("bx of 1st CSCTF candidate", 1);
526  bx_csc_rpc->setAxisTitle("bx of 1st RPCf candidate", 2);
527 
528  bx_dt_csc = ibooker.book2D("bx_DT_vs_CSC", "1st bx DT vs. CSC", 5, -2.5, 2.5, 5, -2.5, 2.5);
529  bx_dt_csc->setAxisTitle("bx of 1st DTTF candidate", 1);
530  bx_dt_csc->setAxisTitle("bx of 1st CSCTF candidate", 2);
531 
532  for (int i = 0; i < 4; i++) {
533  hname = subs[i] + "_dbx";
534  htitle = "dBx " + subs[i] + " to previous event";
535  subs_dbx[i] = ibooker.book2D(hname.data(), htitle.data(), 1000, 0., 1000., 4, 0., 4.);
536  for (int j = 0; j < 4; j++) {
537  subs_dbx[i]->setBinLabel((j + 1), subs[j], 2);
538  }
539  }
540 }
L1TGMT::phi_rpc_only
MonitorElement * phi_rpc_only
Definition: L1TGMT.h:79
L1TGMT::etaphi_dtcsc_only
MonitorElement * etaphi_dtcsc_only
Definition: L1TGMT.h:81
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
L1TGMT::verbose_
const bool verbose_
Definition: L1TGMT.h:99
L1TGMT::eta_rpc_only
MonitorElement * eta_rpc_only
Definition: L1TGMT.h:76
electrons_cff.bool
bool
Definition: electrons_cff.py:366
L1MuScale::getNBins
virtual unsigned getNBins() const =0
get number of bins
mps_fire.i
i
Definition: mps_fire.py:428
L1TGMT::bookHistograms
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &, edm::EventSetup const &) override
Definition: L1TGMT.cc:239
funct::false
false
Definition: Factorize.h:29
L1MuTriggerScales::getGMTEtaScale
const L1MuScale * getGMTEtaScale() const
get the GMT eta scale
Definition: L1MuTriggerScales.h:169
edm::Handle::product
T const * product() const
Definition: Handle.h:70
L1TGMT::obnum_old_
int obnum_old_
Definition: L1TGMT.h:104
L1TGMT::dist_phi_dt_rpc
MonitorElement * dist_phi_dt_rpc
Definition: L1TGMT.h:83
ESHandle.h
L1TGMT::dbx_chip
MonitorElement * dbx_chip
Definition: L1TGMT.h:73
L1TGMT::dist_phi_dt_csc
MonitorElement * dist_phi_dt_csc
Definition: L1TGMT.h:85
L1TGMT::dist_eta_dt_csc
MonitorElement * dist_eta_dt_csc
Definition: L1TGMT.h:88
edm::Run
Definition: Run.h:45
L1MuTriggerPtScaleRcd.h
L1TGMT::CSCTF
Definition: L1TGMT.h:59
edm
HLT enums.
Definition: AlignableModifier.h:19
L1TGMT::bxnum_old_
int bxnum_old_
Definition: L1TGMT.h:103
gather_cfg.cout
cout
Definition: gather_cfg.py:144
L1TGMT::phi_dtcsc_and_rpc
MonitorElement * phi_dtcsc_and_rpc
Definition: L1TGMT.h:77
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
L1TGMT::dist_eta_csc_rpc
MonitorElement * dist_eta_csc_rpc
Definition: L1TGMT.h:87
L1MuScale::getValue
virtual float getValue(unsigned i) const =0
get value of the underlying vector for bin i
L1TGMT::n_csctf_vs_dttf
MonitorElement * n_csctf_vs_dttf
Definition: L1TGMT.h:95
DQMStore.h
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
L1MuTriggerScalesRcd.h
L1TGMT::regional_triggers
MonitorElement * regional_triggers
Definition: L1TGMT.h:70
L1TGMT::etaphi_dtcsc_and_rpc
MonitorElement * etaphi_dtcsc_and_rpc
Definition: L1TGMT.h:80
L1TGMT::subs_qty
MonitorElement * subs_qty[5]
Definition: L1TGMT.h:65
edm::Handle
Definition: AssociativeIterator.h:50
L1TGMT::RPCf
Definition: L1TGMT.h:59
word
uint64_t word
Definition: CTPPSTotemDataFormatter.cc:29
L1MuTriggerScales::getPhiScale
const L1MuScale * getPhiScale() const
get the phi scale
Definition: L1MuTriggerScales.h:175
L1MuTriggerPtScale
Definition: L1MuTriggerPtScale.h:33
L1TGMT::subs_phi
MonitorElement * subs_phi[5]
Definition: L1TGMT.h:63
L1TGMT::dist_phi_csc_rpc
MonitorElement * dist_phi_csc_rpc
Definition: L1TGMT.h:84
L1MuTriggerScales::getRegionalEtaScale
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC)
Definition: L1MuTriggerScales.h:158
L1TGMT::n_rpcf_vs_csctf
MonitorElement * n_rpcf_vs_csctf
Definition: L1TGMT.h:94
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
edm::ESHandle
Definition: DTSurvey.h:22
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
LaserClient_cfi.nbins
nbins
Definition: LaserClient_cfi.py:51
L1TGMT::L1TGMT
L1TGMT(const edm::ParameterSet &ps)
Definition: L1TGMT.cc:23
emtf::ptscale
const double ptscale[31]
Definition: Utilities.cc:29
L1TGMT::~L1TGMT
~L1TGMT() override
Definition: L1TGMT.cc:34
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
L1TGMT::subs_dbx
MonitorElement * subs_dbx[4]
Definition: L1TGMT.h:97
L1TGMT::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: L1TGMT.cc:36
edm::ParameterSet
Definition: ParameterSet.h:47
L1TGMT::dist_eta_dt_rpc
MonitorElement * dist_eta_dt_rpc
Definition: L1TGMT.h:86
PVValHelper::phi
Definition: PVValidationHelpers.h:69
L1TGMT::trsrc_old_
int trsrc_old_
Definition: L1TGMT.h:105
L1MuGMTReadoutCollection::getRecords
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
Definition: L1MuGMTReadoutCollection.h:52
L1MuTriggerPtScale::getPtScale
const L1MuScale * getPtScale() const
get the Pt scale
Definition: L1MuTriggerPtScale.h:59
L1MuTriggerPtScale.h
L1TGMT::eta_dtcsc_and_rpc
MonitorElement * eta_dtcsc_and_rpc
Definition: L1TGMT.h:74
L1MuTriggerScales.h
L1TGMT::eta_dtcsc_only
MonitorElement * eta_dtcsc_only
Definition: L1TGMT.h:75
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
L1TGMT::phi_dtcsc_only
MonitorElement * phi_dtcsc_only
Definition: L1TGMT.h:78
cuy.ib
ib
Definition: cuy.py:662
L1TGMT::bx_csc_rpc
MonitorElement * bx_csc_rpc
Definition: L1TGMT.h:90
edm::EventSetup
Definition: EventSetup.h:58
L1MuTriggerPtScaleRcd
Definition: L1MuTriggerPtScaleRcd.h:12
L1TGMT::etaphi_rpc_only
MonitorElement * etaphi_rpc_only
Definition: L1TGMT.h:82
L1MuTriggerScales
Definition: L1MuTriggerScales.h:33
get
#define get
L1TGMT::subs_nbx
MonitorElement * subs_nbx[5]
Definition: L1TGMT.h:61
L1TGMT::DTTF
Definition: L1TGMT.h:59
L1TGMT::bx_dt_csc
MonitorElement * bx_dt_csc
Definition: L1TGMT.h:91
L1MuTriggerScalesRcd
Definition: L1MuTriggerScalesRcd.h:12
DDAxes::phi
L1MuGMTReadoutCollection
Definition: L1MuGMTReadoutCollection.h:39
L1TGMT::GMT
Definition: L1TGMT.h:59
L1TGMT::RPCb
Definition: L1TGMT.h:59
L1TGMT::subs_etaqty
MonitorElement * subs_etaqty[5]
Definition: L1TGMT.h:67
std
Definition: JetResolutionObject.h:76
L1TGMT::subs_eta
MonitorElement * subs_eta[5]
Definition: L1TGMT.h:62
L1TGMT.h
L1TGMT::phiconv_
double phiconv_(float phi)
Definition: L1TGMT.cc:232
L1TGMT::subs_bits
MonitorElement * subs_bits[5]
Definition: L1TGMT.h:68
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
EventSetup.h
L1TGMT::subs_etaphi
MonitorElement * subs_etaphi[5]
Definition: L1TGMT.h:66
L1TGMT::subs_pt
MonitorElement * subs_pt[5]
Definition: L1TGMT.h:64
dqm::implementation::IBooker
Definition: DQMStore.h:43
L1TGMT::gmtSource_
const edm::EDGetTokenT< L1MuGMTReadoutCollection > gmtSource_
Definition: L1TGMT.h:101
L1TGMT::bx_number
MonitorElement * bx_number
Definition: L1TGMT.h:72
L1TGMT::piconv_
static const double piconv_
Definition: L1TGMT.h:107
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::Event
Definition: Event.h:73
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
edm::InputTag
Definition: InputTag.h:15
L1TGMT::n_rpcb_vs_dttf
MonitorElement * n_rpcb_vs_dttf
Definition: L1TGMT.h:93
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
L1TGMT::bx_dt_rpc
MonitorElement * bx_dt_rpc
Definition: L1TGMT.h:89