CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TGT.cc
Go to the documentation of this file.
1 
14 
17 
19  gtSource_L1GT_(consumes<L1GlobalTriggerReadoutRecord>(ps.getParameter<edm::InputTag> ("gtSource"))),
20  gtSource_L1MuGMT_(consumes<L1MuGMTReadoutCollection>(ps.getParameter<edm::InputTag> ("gtSource"))),
21  gtEvmSource_(consumes<L1GlobalTriggerEvmReadoutRecord>(ps.getParameter<edm::InputTag> ("gtEvmSource"))),
22  m_runInEventLoop(ps.getUntrackedParameter<bool>("runInEventLoop", false)),
23  m_runInEndLumi(ps.getUntrackedParameter<bool>("runInEndLumi", false)),
24  m_runInEndRun(ps.getUntrackedParameter<bool>("runInEndRun", false)),
25  m_runInEndJob(ps.getUntrackedParameter<bool>("runInEndJob", false)),
26  verbose_(ps.getUntrackedParameter<bool> ("verbose", false)),
27  m_dbe(0),
28  //
29  m_nrEvJob(0), m_nrEvRun(0),
30  preGps_(0ULL), preOrb_(0ULL)
31 {
32 
34  "L1T/L1TGT");
35 
37  if (m_dbe == 0) {
38  edm::LogInfo("L1TGT") << "\n Unable to get DQMStore service.";
39  } else {
40 
41  m_dbe->setVerbose(0);
42  m_dbe->setCurrentFolder(m_histFolder);
43 
44  }
45 
46  // reserve space for 1000 LS
47  m_pairLsNumberPfIndex.reserve(1000);
48 }
49 
51 
52  // empty
53 }
54 
56 
57  m_nrEvJob = 0;
58 
59  preGps_ = 0ULL;
60  preOrb_ = 0ULL;
61 
62 }
63 
64 void L1TGT::beginRun(const edm::Run& iRun, const edm::EventSetup& evSetup) {
65 
66  m_nrEvRun = 0;
67 
68  isInit = false;
69 
71 
72  if (m_dbe == 0) {
73  edm::LogInfo("L1TGT") << "\n Unable to get DQMStore service.";
74  } else {
75 
76  // clean up directory
80  }
81 
83 
84  }
85 
86  // book histograms
88 
89  // clear bookkeeping for prescale factor change
90  m_pairLsNumberPfIndex.clear();
91 
92 }
93 
95  const edm::EventSetup& evSetup) {
96 
97  //
98 
99 }
100 
101 
102 //
103 void L1TGT::analyze(const edm::Event& iEvent, const edm::EventSetup& evSetup) {
104 
105  m_nrEvJob++;
106 
107  if (verbose_) {
108  edm::LogInfo("L1TGT") << "L1TGT: analyze...." << std::endl;
109  }
110 
111  // initialize Bx, orbit number, luminosity segment number to invalid value
112  int tcsBx = -1;
113  int gtfeEvmBx = -1;
114 
115  long long int orbitTcs = -1;
116  int orbitEvmFdl = -1;
117 
118  int lsTcs = -1;
119  int lsEvmFdl = -1;
120 
121  // get once only the LS block number, to be used in many histograms
122  const int lsNumber = iEvent.luminosityBlock();
123 
124  // open EVM readout record if available
126  iEvent.getByToken(gtEvmSource_, gtEvmReadoutRecord);
127 
128  if (!gtEvmReadoutRecord.isValid()) {
129  edm::LogInfo("L1TGT")
130  << "can't find L1GlobalTriggerEvmReadoutRecord";
131  } else {
132 
133  // get all info from the EVM record if available and fill the histograms
134 
135  const L1GtfeWord& gtfeEvmWord = gtEvmReadoutRecord->gtfeWord();
136  const L1GtfeExtWord& gtfeEvmExtWord = gtEvmReadoutRecord->gtfeWord();
137 
138  gtfeEvmBx = gtfeEvmWord.bxNr();
139  int gtfeEvmActiveBoards = gtfeEvmWord.activeBoards();
140 
141  if (isActive(gtfeEvmActiveBoards, TCS)) { // if TCS present in the record
142 
143  const L1TcsWord& tcsWord = gtEvmReadoutRecord->tcsWord();
144 
145  tcsBx = tcsWord.bxNr();
146  orbitTcs = tcsWord.orbitNr();
147  lsTcs = tcsWord.luminositySegmentNr();
148 
149  event_type->Fill(tcsWord.triggerType());
150  orbit_lumi->Fill(lsNumber, orbitTcs);
151 
152  trigger_number->Fill(tcsWord.partTrigNr());
153  event_number->Fill(tcsWord.eventNr());
154 
155  trigger_lumi->Fill(lsNumber, tcsWord.partTrigNr());
156  event_lumi->Fill(lsNumber, tcsWord.eventNr());
157  evnum_trignum_lumi->Fill(lsNumber,
158  static_cast<double>(tcsWord.eventNr()) / static_cast<double>(tcsWord.partTrigNr()));
159 
160  boost::uint16_t master = gtfeEvmExtWord.bstMasterStatus();
161  boost::uint32_t turnCount = gtfeEvmExtWord.turnCountNumber();
162  boost::uint32_t lhcFill = gtfeEvmExtWord.lhcFillNumber();
163  boost::uint16_t beam = gtfeEvmExtWord.beamMode();
164  boost::uint16_t momentum = gtfeEvmExtWord.beamMomentum();
165  boost::uint32_t intensity1 = gtfeEvmExtWord.totalIntensityBeam1();
166  boost::uint32_t intensity2 = gtfeEvmExtWord.totalIntensityBeam2();
167 
168  BST_MasterStatus->Fill(lsNumber, static_cast<double>(master));
169  BST_turnCountNumber->Fill(lsNumber, static_cast<double>(turnCount));
170  BST_lhcFillNumber->Fill(static_cast<double>(lhcFill % 1000));
171  BST_beamMode->Fill(lsNumber, static_cast<double>(beam));
172 
173  BST_beamMomentum->Fill(lsNumber, static_cast<double>(momentum));
174  BST_intensityBeam1->Fill(lsNumber, static_cast<double>(intensity1));
175  BST_intensityBeam2->Fill(lsNumber, static_cast<double>(intensity2));
176 
177  if (verbose_) {
178  edm::LogInfo("L1TGT") << " check mode = " << beam << " momentum " << momentum
179  << " int2 " << intensity2 << std::endl;
180  }
181 
182  boost::uint64_t gpsr = gtfeEvmExtWord.gpsTime();
183  boost::uint64_t gpshi = (gpsr >> 32) & 0xffffffff;
184  boost::uint64_t gpslo = gpsr & 0xffffffff;
185  boost::uint64_t gps = gpshi * 1000000 + gpslo;
186  // edm::LogInfo("L1TGT") << " gpsr = " << std::hex << gpsr << " hi=" << gpshi << " lo=" << gpslo << " gps=" << gps << std::endl;
187 
188  Long64_t delorb = orbitTcs - preOrb_;
189  Long64_t delgps = gps - preGps_;
190  Double_t freq = -1.;
191 
192  if (delgps > 0) {
193  freq = ((Double_t)(delorb)) * 3564. / ((Double_t)(delgps));
194  }
195 
196  if (delorb > 0) {
197  gpsfreq->Fill(freq);
198  gpsfreqwide->Fill(freq);
199  gpsfreqlum->Fill(lsNumber, freq);
200  if (verbose_) {
201  if (freq > 200.) {
202  edm::LogInfo("L1TGT") << " preOrb_ = " << preOrb_ << " orbitTcs=" << orbitTcs
203  << " delorb=" << delorb << std::hex << " preGps_="
204  << preGps_ << " gps=" << gps << std::dec
205  << " delgps=" << delgps << " freq=" << freq
206  << std::endl;
207 
208  }
209  }
210  }
211 
212  preGps_ = gps;
213  preOrb_ = orbitTcs;
214 
215  }
216 
217  // get info from FDL if active
218  if (isActive(gtfeEvmActiveBoards, FDL)) {
219  const L1GtFdlWord& fdlWord = gtEvmReadoutRecord->gtFdlWord();
220 
221  orbitEvmFdl = fdlWord.orbitNr();
222  lsEvmFdl = fdlWord.lumiSegmentNr();
223  }
224 
225  if ((orbitTcs >= 0) && (orbitEvmFdl >= 0)) {
226 
227  int diffOrbit = static_cast<float> (orbitTcs - orbitEvmFdl);
228  edm::LogInfo("L1TGT") << "\n orbitTcs = " << orbitTcs << " orbitEvmFdl = "
229  << orbitEvmFdl << " diffOrbit = " << diffOrbit
230  << " orbitEvent = " << iEvent.orbitNumber() << std::endl;
231 
232  if (diffOrbit >= MaxOrbitNrDiffTcsFdlEvm) {
234 
235  } else if (diffOrbit <= -MaxOrbitNrDiffTcsFdlEvm) {
237 
238  } else {
239  m_monOrbitNrDiffTcsFdlEvm->Fill(diffOrbit);
241  diffOrbit);
242 
243  }
244 
245  } else {
246 
247  if (orbitTcs >= 0) {
248  // EVM_FDL error
250  } else if (orbitEvmFdl >= 0) {
251  // TCS error
253 
254  } else {
255  // TCS and EVM_FDL error
258  }
259  }
260 
261  if ((lsTcs >= 0) && (lsEvmFdl >= 0)) {
262 
263  int diffLs = static_cast<float> (lsTcs - lsEvmFdl);
264  edm::LogInfo("L1TGT") << "\n lsTcs = " << lsTcs << " lsEvmFdl = " << lsEvmFdl
265  << " diffLs = " << diffLs << " lsEvent = "
266  << lsNumber << std::endl;
267 
268  if (diffLs >= MaxLsNrDiffTcsFdlEvm) {
270 
271  } else if (diffLs <= -MaxLsNrDiffTcsFdlEvm) {
273 
274  } else {
275  m_monLsNrDiffTcsFdlEvm->Fill(diffLs);
276  m_monLsNrDiffTcsFdlEvmLs->Fill(lsNumber, diffLs);
277 
278  }
279 
280  } else {
281 
282  if (lsTcs >= 0) {
283  // EVM_FDL error
285  } else if (lsEvmFdl >= 0) {
286  // TCS error
288 
289  } else {
290  // TCS and EVM_FDL error
293  }
294  }
295 
296  }
297 
298  // open GT DAQ readout record - exit if failed
300  iEvent.getByToken(gtSource_L1GT_, gtReadoutRecord);
301 
303  evSetup.get<L1GtTriggerMenuRcd>().get(menuRcd);
304 
305  const L1GtTriggerMenu* menu = menuRcd.product();
306 
307  if (!gtReadoutRecord.isValid()) {
308  edm::LogInfo("L1TGT")
309  << "can't find L1GlobalTriggerReadoutRecord";
310  return;
311  }
312 
313  //--------fill AlgoBits/TechBits vs Bx Histogram-----------
314 
315  // algorithm trigger bits
316  if (!isInit){
317  isInit = true;
318  for (CItAlgo algo = menu->gtAlgorithmMap().begin(); algo!=menu->gtAlgorithmMap().end(); ++algo) {
319  int itrig = (algo->second).algoBitNumber();
320  //algoBitToName[itrig] = TString( (algo->second).algoName() );
321  //const char* trigName = (algo->second).algoName().c_str();
322  if (itrig < 32) {
323  //h_L1AlgoBX1->setBinLabel(itrig+1,trigName);
324  h_L1AlgoBX1->setBinLabel(itrig+1, std::to_string(itrig));
325  h_L1AlgoBX1->setAxisTitle("Algorithm trigger bits", 1);
326  h_L1AlgoBX1->setAxisTitle("BX (0=L1A)", 2);
327  } else if (itrig < 64) {
328  //h_L1AlgoBX2->setBinLabel(itrig+1-32,trigName);
329  h_L1AlgoBX2->setBinLabel(itrig+1-32,std::to_string(itrig));
330  h_L1AlgoBX2->setAxisTitle("Algorithm trigger bits", 1);
331  h_L1AlgoBX2->setAxisTitle("BX (0=L1A)", 2);
332  } else if (itrig < 96) {
333  //h_L1AlgoBX3->setBinLabel(itrig+1-64,trigName);
334  h_L1AlgoBX3->setBinLabel(itrig+1-64,std::to_string(itrig));
335  h_L1AlgoBX3->setAxisTitle("Algorithm trigger bits", 1);
336  h_L1AlgoBX3->setAxisTitle("BX (0=L1A)", 2);
337  } else if (itrig < 128) {
338  //h_L1AlgoBX4->setBinLabel(itrig+1-96,trigName);
339  h_L1AlgoBX4->setBinLabel(itrig+1-96,std::to_string(itrig));
340  h_L1AlgoBX4->setAxisTitle("Algorithm trigger bits", 1);
341  h_L1AlgoBX4->setAxisTitle("BX (0=L1A)", 2);
342  }
343  }
344 
345  // technical trigger bits
346  for (CItAlgo techTrig = menu->gtTechnicalTriggerMap().begin(); techTrig != menu->gtTechnicalTriggerMap().end(); ++techTrig) {
347  int itrig = (techTrig->second).algoBitNumber();
348  //techBitToName[itrig] = TString( (techTrig->second).algoName() );
349  //const char* trigName = (techTrig->second).algoName().c_str();
350  h_L1TechBX->setBinLabel(itrig+1,std::to_string(itrig));
351  h_L1TechBX->setAxisTitle("Technical trigger bits", 1);
352  h_L1TechBX->setAxisTitle("BX (0=L1A)", 2);
353  }
354  }
355 
356  if(gtReadoutRecord.isValid()) {
357 
358  unsigned int NmaxL1AlgoBit = gtReadoutRecord->decisionWord().size();
359  unsigned int NmaxL1TechBit = gtReadoutRecord->technicalTriggerWord().size();
360 
361  const DecisionWord dWord = gtReadoutRecord->decisionWord();
362  const TechnicalTriggerWord technicalTriggerWordBeforeMask = gtReadoutRecord->technicalTriggerWord();
363 
364  const std::vector<L1GtFdlWord> &m_gtFdlWord(gtReadoutRecord->gtFdlVector());
365  int numberBxInEvent=m_gtFdlWord.size();
366  int minBxInEvent = (numberBxInEvent + 1)/2 - numberBxInEvent;
367 
368  for (unsigned int iBit = 0; iBit < NmaxL1AlgoBit; ++iBit) {
369  bool accept = dWord[iBit];
370 
373  if (trig_iter==l1TriggerDecision.end()){
374  l1TriggerDecision.insert(valType(algoBitToName[iBit],accept));
375  }else{
376  trig_iter->second=accept;
377  }
378 
379  int ibx=0;
380  for (std::vector<L1GtFdlWord>::const_iterator itBx = m_gtFdlWord.begin(); itBx != m_gtFdlWord.end(); ++itBx) {
381 
382  const DecisionWord dWordBX = (*itBx).gtDecisionWord();
383  bool accept = dWordBX[iBit];
384  if (accept) {
385  if (iBit < 32)
386  h_L1AlgoBX1->Fill(iBit, minBxInEvent+ibx);
387  else if (iBit < 64)
388  h_L1AlgoBX2->Fill(iBit, minBxInEvent+ibx);
389  else if (iBit < 96)
390  h_L1AlgoBX3->Fill(iBit, minBxInEvent+ibx);
391  else if (iBit < 128)
392  h_L1AlgoBX4->Fill(iBit, minBxInEvent+ibx);
393  }
394  ibx++;
395  }
396  }
397 
398  for (unsigned int iBit = 0; iBit < NmaxL1TechBit; ++iBit) {
399  bool accept = technicalTriggerWordBeforeMask[iBit];
400 
403  if (trig_iter==l1TechTriggerDecision.end())
404  l1TechTriggerDecision.insert(valType(techBitToName[iBit],accept));
405  else
406  trig_iter->second=accept;
407 
408 
409  int ibx=0;
410  for (std::vector<L1GtFdlWord>::const_iterator itBx = m_gtFdlWord.begin();
411  itBx != m_gtFdlWord.end(); ++itBx) {
412 
413  const DecisionWord dWordBX = (*itBx).gtTechnicalTriggerWord();
414  bool accept = dWordBX[iBit];
415  if (accept) h_L1TechBX->Fill(iBit,minBxInEvent+ibx);
416  ibx++;
417  }
418  }
419  }
420 
421  // initialize bx's to invalid value
422  int gtfeBx = -1;
423  int fdlBx[2] = { -1, -1 };
424  int psbBx[2][7] = { { -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1 } };
425  int gmtBx = -1;
426  //int lhcBx = -1;
427 
428  // get info from GTFE DAQ record
429  const L1GtfeWord& gtfeWord = gtReadoutRecord->gtfeWord();
430  gtfeBx = gtfeWord.bxNr();
431  gtfe_bx->Fill(gtfeBx);
432  setupversion_lumi->Fill(lsNumber, gtfeWord.setupVersion());
433  int gtfeActiveBoards = gtfeWord.activeBoards();
434 
435  // look for GMT readout collection from the same source if GMT active
436  if (isActive(gtfeActiveBoards, GMT)) {
437  edm::Handle<L1MuGMTReadoutCollection> gmtReadoutCollection;
438  iEvent.getByToken(gtSource_L1MuGMT_, gmtReadoutCollection);
439 
440  if (gmtReadoutCollection.isValid()) {
441  gmtBx = gmtReadoutCollection->getRecord().getBxNr();
442  }
443  }
444 
445  // get info from FDL if active (including decision word)
446  if (isActive(gtfeActiveBoards, FDL)) {
447  const L1GtFdlWord& fdlWord = gtReadoutRecord->gtFdlWord();
448  fdlBx[0] = fdlWord.bxNr();
449  fdlBx[1] = fdlWord.localBxNr();
450 
452  const DecisionWord& gtDecisionWord = gtReadoutRecord->decisionWord();
453  const TechnicalTriggerWord& gtTTWord =
454  gtReadoutRecord->technicalTriggerWord();
455 
456  int dbitNumber = 0;
457  DecisionWord::const_iterator GTdbitItr;
458  algo_bits->Fill(-1.); // fill underflow to normalize
459  for (GTdbitItr = gtDecisionWord.begin(); GTdbitItr
460  != gtDecisionWord.end(); GTdbitItr++) {
461  if (*GTdbitItr) {
462  algo_bits->Fill(dbitNumber);
463  algo_bits_lumi->Fill(lsNumber, dbitNumber);
464  int dbitNumber1 = 0;
465  DecisionWord::const_iterator GTdbitItr1;
466  for (GTdbitItr1 = gtDecisionWord.begin(); GTdbitItr1
467  != gtDecisionWord.end(); GTdbitItr1++) {
468  if (*GTdbitItr1)
469  algo_bits_corr->Fill(dbitNumber, dbitNumber1);
470  dbitNumber1++;
471  }
472  int tbitNumber1 = 0;
473  TechnicalTriggerWord::const_iterator GTtbitItr1;
474  for (GTtbitItr1 = gtTTWord.begin(); GTtbitItr1
475  != gtTTWord.end(); GTtbitItr1++) {
476  if (*GTtbitItr1)
477  algo_tt_bits_corr->Fill(dbitNumber, tbitNumber1);
478  tbitNumber1++;
479  }
480  }
481  dbitNumber++;
482  }
483 
484  int tbitNumber = 0;
485  TechnicalTriggerWord::const_iterator GTtbitItr;
486  tt_bits->Fill(-1.); // fill underflow to normalize
487  for (GTtbitItr = gtTTWord.begin(); GTtbitItr != gtTTWord.end(); GTtbitItr++) {
488  if (*GTtbitItr) {
489  tt_bits->Fill(tbitNumber);
490  tt_bits_lumi->Fill(lsNumber, tbitNumber);
491  int tbitNumber1 = 0;
492  TechnicalTriggerWord::const_iterator GTtbitItr1;
493  for (GTtbitItr1 = gtTTWord.begin(); GTtbitItr1
494  != gtTTWord.end(); GTtbitItr1++) {
495  if (*GTtbitItr1)
496  tt_bits_corr->Fill(tbitNumber, tbitNumber1);
497  tbitNumber1++;
498  }
499  }
500  tbitNumber++;
501  }
502 
503 
504  // fill the index of actual prescale factor set
505  // the index for technical triggers and algorithm trigger is the same (constraint in L1 GT TS)
506  // so we read only pfIndexAlgoTrig (boost::uint16_t)
507 
508  const int pfIndexAlgoTrig = fdlWord.gtPrescaleFactorIndexAlgo();
509  m_monL1PrescaleFactorSet->Fill(lsNumber,
510  static_cast<float> (pfIndexAlgoTrig));
511 
512  //
513 
514  // check that the combination (lsNumber, pfIndex) is not already included
515  // to avoid fake entries due to different event order
516 
517  std::pair<int, int> pairLsPfi = std::make_pair(lsNumber,
518  pfIndexAlgoTrig);
519 
520  CItVecPair cIt = find(m_pairLsNumberPfIndex.begin(),
521  m_pairLsNumberPfIndex.end(), pairLsPfi);
522 
523  if (cIt == m_pairLsNumberPfIndex.end()) {
524 
525  m_pairLsNumberPfIndex.push_back(pairLsPfi);
526 
527  }
528 
529  }
530 
531  // get info from active PSB's
532  int ibit = PSB9; // first psb
533  // for now hardcode psb id's - TODO - get them from Vasile's board maps...
534  int psbID[7] = { 0xbb09, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb13, 0xbb14, 0xbb15 };
535  for (int i = 0; i < 7; i++) {
536  if (isActive(gtfeActiveBoards, ibit)) {
537  L1GtPsbWord psbWord = gtReadoutRecord->gtPsbWord(psbID[i]);
538  psbBx[0][i] = psbWord.bxNr();
539  psbBx[1][i] = psbWord.localBxNr();
540  }
541  ibit++;
542  }
543 
544  //fill the dbx histo
545  if (gtfeEvmBx > -1)
546  dbx_module->Fill(0., gtfeEvmBx - gtfeBx);
547  if (tcsBx > -1)
548  dbx_module->Fill(1., tcsBx - gtfeBx);
549  for (int i = 0; i < 2; i++) {
550  if (fdlBx[i] > -1)
551  dbx_module->Fill(2. + i, fdlBx[i] - gtfeBx);
552  }
553  for (int j = 0; j < 7; j++) {
554  for (int i = 0; i < 2; i++) {
555  if (psbBx[i][j] > -1)
556  dbx_module->Fill(4. + i + 2 * j, psbBx[i][j] - gtfeBx);
557  }
558  }
559  if (gmtBx > -1)
560  dbx_module->Fill(18., gmtBx - gtfeBx);
561 
562 }
563 
564 
565 // end section
567  const edm::EventSetup& evSetup) {
568 
569  if (m_runInEndLumi) {
571  }
572 }
573 
574 void L1TGT::endRun(const edm::Run& iRrun, const edm::EventSetup& evSetup) {
575 
576  if (m_runInEndRun) {
578  }
579 
580 }
581 
582 
584 
585  if (m_runInEndJob) {
587  }
588 
589  if (verbose_) {
590  edm::LogInfo("L1TGT") << "\n Analyzed " << m_nrEvJob << " events";
591  }
592 
593  return;
594 }
595 
596 
597 // book all histograms for the module
599 
600  const int TotalNrBinsLs = 1000;
601  const double totalNrBinsLs = static_cast<double>(TotalNrBinsLs);
602 
603  if (m_dbe) {
605 
606  algo_bits = m_dbe->book1D("algo_bits", "GT algorithm trigger bits", 128, -0.5, 127.5);
607  algo_bits->setAxisTitle("Algorithm trigger bits", 1);
608 
609  algo_bits_corr = m_dbe->book2D("algo_bits_corr",
610  "GT algorithm trigger bit correlation",
611  128, -0.5, 127.5, 128, -0.5, 127.5);
612  algo_bits_corr->setAxisTitle("Algorithm trigger bits", 1);
613  algo_bits_corr->setAxisTitle("Algorithm trigger bits", 2);
614 
615  tt_bits = m_dbe->book1D("tt_bits",
616  "GT technical trigger bits",
617  64, -0.5, 63.5);
618  tt_bits->setAxisTitle("Technical trigger bits", 1);
619 
620  tt_bits_corr = m_dbe->book2D("tt_bits_corr",
621  "GT technical trigger bit correlation",
622  64, -0.5, 63.5, 64, -0.5, 63.5);
623  tt_bits_corr->setAxisTitle("Technical trigger bits", 1);
624  tt_bits_corr->setAxisTitle("Technical trigger bits", 2);
625 
626  algo_tt_bits_corr = m_dbe->book2D("algo_tt_bits_corr",
627  "GT algorithm - technical trigger bit correlation",
628  128, -0.5, 127.5, 64, -0.5, 63.5);
629  algo_tt_bits_corr->setAxisTitle("Algorithm trigger bits", 1);
630  algo_tt_bits_corr->setAxisTitle("Technical trigger bits", 2);
631 
632  algo_bits_lumi = m_dbe->book2D("algo_bits_lumi",
633  "GT algorithm trigger bit rate per LS",
634  TotalNrBinsLs, 0., totalNrBinsLs, 128, -0.5, 127.5);
635  algo_bits_lumi->setAxisTitle("Luminosity segment", 1);
636  algo_bits_lumi->setAxisTitle("Algorithm trigger bits", 2);
637 
638  tt_bits_lumi = m_dbe->book2D("tt_bits_lumi",
639  "GT technical trigger bit rate per LS",
640  TotalNrBinsLs, 0., totalNrBinsLs, 64, -0.5, 63.5);
641  tt_bits_lumi->setAxisTitle("Luminosity segment", 1);
642  tt_bits_lumi->setAxisTitle("Technical trigger bits", 2);
643 
644  event_type = m_dbe->book1D("event_type", "GT event type", 10, -0.5, 9.5);
645  event_type->setAxisTitle("Event type", 1);
646  event_type->setBinLabel(2, "Physics", 1);
647  event_type->setBinLabel(3, "Calibration", 1);
648  event_type->setBinLabel(4, "Random", 1);
649  event_type->setBinLabel(6, "Traced", 1);
650  event_type->setBinLabel(7, "Test", 1);
651  event_type->setBinLabel(8, "Error", 1);
652 
653  event_number = m_dbe->book1D("event_number",
654  "GT event number (from last resync)",
655  100, 0., 50000.);
656  event_number->setAxisTitle("Event number", 1);
657 
658  event_lumi = m_dbe->bookProfile("event_lumi",
659  "GT event number (from last resync) vs LS",
660  TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15, "s");
661  event_lumi->setAxisTitle("Luminosity segment", 1);
662  event_lumi->setAxisTitle("Event number", 2);
663 
664  trigger_number = m_dbe->book1D("trigger_number",
665  "GT trigger number (from start run)",
666  100, 0., 50000.);
667  trigger_number->setAxisTitle("Trigger number", 1);
668 
669  trigger_lumi = m_dbe->bookProfile("trigger_lumi",
670  "GT trigger number (from start run) vs LS",
671  TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15, "s");
672  trigger_lumi->setAxisTitle("Luminosity segment", 1);
673  trigger_lumi->setAxisTitle("Trigger number", 2);
674 
675  evnum_trignum_lumi = m_dbe->bookProfile("evnum_trignum_lumi",
676  "GT event/trigger number ratio vs LS",
677  TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 2., "s");
678  evnum_trignum_lumi->setAxisTitle("Luminosity segment", 1);
679  evnum_trignum_lumi->setAxisTitle("Event/trigger number ratio", 2);
680 
681  orbit_lumi = m_dbe->bookProfile("orbit_lumi",
682  "GT orbit number vs LS",
683  TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15, "s");
684  orbit_lumi->setAxisTitle("Luminosity segment", 1);
685  orbit_lumi->setAxisTitle("Orbit number", 2);
686 
687  setupversion_lumi = m_dbe->bookProfile("setupversion_lumi",
688  "GT setup version vs LS",
689  TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e10, "i");
690  setupversion_lumi->setAxisTitle("Luminosity segment", 1);
691  setupversion_lumi->setAxisTitle("Setup version", 2);
692 
693  gtfe_bx = m_dbe->book1D("gtfe_bx", "GTFE Bx number", 3600, 0., 3600.);
694  gtfe_bx->setAxisTitle("GTFE BX number", 1);
695 
696  dbx_module = m_dbe->bookProfile("dbx_module",
697  "delta Bx of GT modules wrt GTFE",
698  20, 0., 20., 100, -4000., 4000., "i");
699  dbx_module->setAxisTitle("GT crate module", 1);
700  dbx_module->setAxisTitle("Module Bx - GTFE Bx", 2);
701  dbx_module->setBinLabel(1, "GTFEevm", 1);
702  dbx_module->setBinLabel(2, "TCS", 1);
703  dbx_module->setBinLabel(3, "FDL", 1);
704  dbx_module->setBinLabel(4, "FDLloc", 1);
705  dbx_module->setBinLabel(5, "PSB9", 1);
706  dbx_module->setBinLabel(6, "PSB9loc", 1);
707  dbx_module->setBinLabel(7, "PSB13", 1);
708  dbx_module->setBinLabel(8, "PSB13loc", 1);
709  dbx_module->setBinLabel(9, "PSB14", 1);
710  dbx_module->setBinLabel(10, "PSB14loc", 1);
711  dbx_module->setBinLabel(11, "PSB15", 1);
712  dbx_module->setBinLabel(12, "PSB15loc", 1);
713  dbx_module->setBinLabel(13, "PSB19", 1);
714  dbx_module->setBinLabel(14, "PSB19loc", 1);
715  dbx_module->setBinLabel(15, "PSB20", 1);
716  dbx_module->setBinLabel(16, "PSB20loc", 1);
717  dbx_module->setBinLabel(17, "PSB21", 1);
718  dbx_module->setBinLabel(18, "PSB21loc", 1);
719  dbx_module->setBinLabel(19, "GMT", 1);
720 
721  BST_MasterStatus = m_dbe->book2D("BST_MasterStatus",
722  "BST master status over LS",
723  TotalNrBinsLs, 0., totalNrBinsLs, 6, -1., 5.);
724  BST_MasterStatus->setAxisTitle("Luminosity segment", 1);
725  BST_MasterStatus->setAxisTitle("BST master status", 2);
726  BST_MasterStatus->setBinLabel(2, "Master Beam 1", 2);
727  BST_MasterStatus->setBinLabel(3, "Master Beam 2", 2);
728 
729  BST_turnCountNumber = m_dbe->book2D("BST_turnCountNumber",
730  "BST turn count over LS",
731  TotalNrBinsLs, 0., totalNrBinsLs, 250, 0., 4.3e9);
732  BST_turnCountNumber->setAxisTitle("Luminosity segment", 1);
733  BST_turnCountNumber->setAxisTitle("BST turn count number", 2);
734 
735  BST_lhcFillNumber = m_dbe->book1D("BST_lhcFillNumber",
736  "BST LHC fill number % 1000", 1000, 0., 1000.);
737  BST_lhcFillNumber->setAxisTitle("BST LHC fill number modulo 1000");
738 
739  BST_beamMode = m_dbe->book2D("BST_beamMode",
740  "BST beam mode over LS",
741  TotalNrBinsLs, 0., totalNrBinsLs, 25, 1., 26.);
742  BST_beamMode->setAxisTitle("Luminosity segment", 1);
743  BST_beamMode->setAxisTitle("Mode", 2);
744  BST_beamMode->setBinLabel(1, "No mode", 2);
745  BST_beamMode->setBinLabel(2, "Setup", 2);
746  BST_beamMode->setBinLabel(3, "Inj pilot", 2);
747  BST_beamMode->setBinLabel(4, "Inj intr", 2);
748  BST_beamMode->setBinLabel(5, "Inj nomn", 2);
749  BST_beamMode->setBinLabel(6, "Pre ramp", 2);
750  BST_beamMode->setBinLabel(7, "Ramp", 2);
751  BST_beamMode->setBinLabel(8, "Flat top", 2);
752  BST_beamMode->setBinLabel(9, "Squeeze", 2);
753  BST_beamMode->setBinLabel(10, "Adjust", 2);
754  BST_beamMode->setBinLabel(11, "Stable", 2);
755  BST_beamMode->setBinLabel(12, "Unstable", 2);
756  BST_beamMode->setBinLabel(13, "Beam dump", 2);
757  BST_beamMode->setBinLabel(14, "Ramp down", 2);
758  BST_beamMode->setBinLabel(15, "Recovery", 2);
759  BST_beamMode->setBinLabel(16, "Inj dump", 2);
760  BST_beamMode->setBinLabel(17, "Circ dump", 2);
761  BST_beamMode->setBinLabel(18, "Abort", 2);
762  BST_beamMode->setBinLabel(19, "Cycling", 2);
763  BST_beamMode->setBinLabel(20, "Warn beam dump", 2);
764  BST_beamMode->setBinLabel(21, "No beam", 2);
765 
766  BST_beamMomentum = m_dbe->book2D("BST_beamMomentum",
767  "BST beam momentum",
768  TotalNrBinsLs, 0., totalNrBinsLs, 100, 0., 7200.);
769  BST_beamMomentum->setAxisTitle("Luminosity segment", 1);
770  BST_beamMomentum->setAxisTitle("Beam momentum", 2);
771 
772  gpsfreq = m_dbe->book1D("gpsfreq", "Clock frequency measured by GPS",
773  1000, 39.95, 40.2);
774  gpsfreq->setAxisTitle("CMS clock frequency (MHz)");
775 
776  gpsfreqwide = m_dbe->book1D("gpsfreqwide",
777  "Clock frequency measured by GPS", 1000, -2., 200.);
778  gpsfreqwide->setAxisTitle("CMS clock frequency (MHz)");
779 
780  gpsfreqlum = m_dbe->book2D("gpsfreqlum",
781  "Clock frequency measured by GPS",
782  TotalNrBinsLs, 0., totalNrBinsLs, 100, 39.95, 40.2);
783  gpsfreqlum->setAxisTitle("Luminosity segment", 1);
784  gpsfreqlum->setAxisTitle("CMS clock frequency (MHz)", 2);
785 
786  BST_intensityBeam1 = m_dbe->book2D("BST_intensityBeam1",
787  "Intensity beam 1",
788  TotalNrBinsLs, 0., totalNrBinsLs, 1000, 0., 5000.);
789  BST_intensityBeam1->setAxisTitle("Luminosity segment", 1);
790  BST_intensityBeam1->setAxisTitle("Beam intensity", 2);
791 
792  BST_intensityBeam2 = m_dbe->book2D("BST_intensityBeam2",
793  "Intensity beam 2",
794  TotalNrBinsLs, 0., totalNrBinsLs, 1000, 0., 5000.);
795  BST_intensityBeam2->setAxisTitle("Luminosity segment", 1);
796  BST_intensityBeam2->setAxisTitle("Beam intensity", 2);
797 
798  // prescale factor index monitoring
799 
800  m_monL1PrescaleFactorSet = m_dbe->book2D("L1PrescaleFactorSet",
801  "Index of L1 prescale factor set",
802  TotalNrBinsLs, 0., totalNrBinsLs, 25, 0., 25.);
803  m_monL1PrescaleFactorSet->setAxisTitle("Luminosity segment", 1);
804  m_monL1PrescaleFactorSet->setAxisTitle("L1 PF set index", 2);
805 
806  m_monL1PfIndicesPerLs = m_dbe->book1D("L1PfIndicesPerLs",
807  "Number of prescale factor indices used per LS", 10, 0., 10.);
808  m_monL1PfIndicesPerLs->setAxisTitle("Number of PF indices used per LS", 1);
809  m_monL1PfIndicesPerLs->setAxisTitle("Entries", 2);
810 
811 
812  // TCS vs FDL common quantity monitoring
813 
814  m_dbe->setCurrentFolder(m_histFolder + "/TCSvsEvmFDL");
815 
816  // orbit number
817  m_monOrbitNrDiffTcsFdlEvm = m_dbe->book1D("OrbitNrDiffTcsFdlEvm",
818  "Orbit number difference (TCS - EVM_FDL)",
819  2 * MaxOrbitNrDiffTcsFdlEvm + 1,
820  static_cast<float>(-(MaxOrbitNrDiffTcsFdlEvm + 1)),
821  static_cast<float>(MaxOrbitNrDiffTcsFdlEvm + 1));
822  m_monOrbitNrDiffTcsFdlEvm->setAxisTitle("Orbit number difference", 1);
823  m_monOrbitNrDiffTcsFdlEvm->setAxisTitle("Entries/run", 2);
824 
825  m_monLsNrDiffTcsFdlEvm = m_dbe->book1D("LsNrDiffTcsFdlEvm",
826  "LS number difference (TCS - EVM_FDL)",
827  2 * MaxLsNrDiffTcsFdlEvm + 1,
828  static_cast<float>(-(MaxLsNrDiffTcsFdlEvm + 1)),
829  static_cast<float>(MaxLsNrDiffTcsFdlEvm + 1));
830  m_monLsNrDiffTcsFdlEvm->setAxisTitle("LS number difference", 1);
831  m_monLsNrDiffTcsFdlEvm->setAxisTitle("Entries/run", 2);
832 
833  // LS number
834 
835  m_monOrbitNrDiffTcsFdlEvmLs = m_dbe->book2D("OrbitNrDiffTcsFdlEvmLs",
836  "Orbit number difference (TCS - EVM_FDL)",
837  TotalNrBinsLs, 0., totalNrBinsLs,
838  2 * MaxOrbitNrDiffTcsFdlEvm + 1,
839  static_cast<float>(-(MaxOrbitNrDiffTcsFdlEvm + 1)),
840  static_cast<float>(MaxOrbitNrDiffTcsFdlEvm + 1));
841  m_monOrbitNrDiffTcsFdlEvmLs->setAxisTitle("Luminosity segment", 1);
842  m_monOrbitNrDiffTcsFdlEvmLs->setAxisTitle("Orbit number difference (TCS - EVM_FDL)", 2);
843 
844  m_monLsNrDiffTcsFdlEvmLs = m_dbe->book2D("LsNrDiffTcsFdlEvmLs",
845  "LS number difference (TCS - EVM_FDL)",
846  TotalNrBinsLs, 0., totalNrBinsLs,
847  2 * MaxLsNrDiffTcsFdlEvm + 1,
848  static_cast<float>(-(MaxLsNrDiffTcsFdlEvm + 1)),
849  static_cast<float>(MaxLsNrDiffTcsFdlEvm + 1));
850  m_monLsNrDiffTcsFdlEvmLs->setAxisTitle("Luminosity segment", 1);
851  m_monLsNrDiffTcsFdlEvmLs->setAxisTitle("LS number difference (TCS - EVM_FDL)", 2);
852 
853  m_dbe->setCurrentFolder(m_histFolder + "/PlotTrigsBx");
854 
855  //--------book AlgoBits/TechBits vs Bx Histogram-----------
856 
857  h_L1AlgoBX1 = m_dbe->book2D("h_L1AlgoBX1", "L1 Algo Trigger BX (algo bit 0 to 31)", 32, -0.5, 31.5, 5, -2.5, 2.5);
858  h_L1AlgoBX2 = m_dbe->book2D("h_L1AlgoBX2", "L1 Algo Trigger BX (algo bit 32 to 63)", 32, 31.5, 63.5, 5, -2.5, 2.5);
859  h_L1AlgoBX3 = m_dbe->book2D("h_L1AlgoBX3", "L1 Algo Trigger BX (algo bit 64 to 95)", 32, 63.5, 95.5, 5, -2.5, 2.5);
860  h_L1AlgoBX4 = m_dbe->book2D("h_L1AlgoBX4", "L1 Algo Trigger BX (algo bit 96 to 127)", 32, 95.5, 127.5, 5, -2.5, 2.5);
861  h_L1TechBX = m_dbe->book2D("h_L1TechBX", "L1 Tech Trigger BX", 64, -0.5, 63.5, 5, -2.5, 2.5);
862  }
863 }
864 
865 
867 bool L1TGT::isActive(int word, int bit) {
868  if (word & (1 << bit))
869  return true;
870  return false;
871 }
872 
873 
875 
876  if (verbose_) {
877  edm::LogInfo("L1TGT") << "\n Prescale factor indices used in a LS "
878  << std::endl;
879 
880  for (CItVecPair cIt = m_pairLsNumberPfIndex.begin(); cIt
881  != m_pairLsNumberPfIndex.end(); ++cIt) {
882 
883  edm::LogVerbatim("L1TGT") << " lsNumber = " << (*cIt).first
884  << " pfIndex = " << (*cIt).second << std::endl;
885  }
886  edm::LogVerbatim("L1TGT") << std::endl;
887  }
888 
889  // reset the histogram...
891 
892  // sort the vector (for pairs: sort after first argument, then after the second argument)
894 
895  int previousLsNumber = -1;
896  int previousPfsIndex = -1;
897 
898  // count the number of pairs (lsNumber, pfIndex) per Ls
899  // there are no duplicate entries, and pairs are sorted after both members
900  // ... and fill again the histogram
901  for (CItVecPair cIt = m_pairLsNumberPfIndex.begin(); cIt
902  != m_pairLsNumberPfIndex.end(); ++cIt) {
903 
904  int pfsIndicesPerLs = 1;
905 
906  if ((*cIt).first == previousLsNumber) {
907 
908  if ((*cIt).second != previousPfsIndex) {
909  pfsIndicesPerLs++;
910  previousPfsIndex = (*cIt).second;
911  }
912 
913  } else {
914 
915  // fill the histogram with the number of PF indices for the previous Ls
916  if (previousLsNumber != -1) {
917  m_monL1PfIndicesPerLs->Fill(pfsIndicesPerLs);
918  }
919 
920  // new Ls
921  previousLsNumber = (*cIt).first;
922  previousPfsIndex = (*cIt).second;
923 
924  pfsIndicesPerLs = 1;
925  }
926 
927  }
928 
929 }
930 
931 
932 
933 
934 // static class members
935 // maximum difference in orbit number
936 const int L1TGT::MaxOrbitNrDiffTcsFdlEvm = 24;
937 
938 // maximum difference in luminosity segment number
939 const int L1TGT::MaxLsNrDiffTcsFdlEvm = 24;
940 
941 
MonitorElement * m_monL1PrescaleFactorSet
Definition: L1TGT.h:161
std::map< std::string, bool > l1TechTriggerDecision
Definition: L1TGT.h:210
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * h_L1AlgoBX1
Definition: L1TGT.h:179
MonitorElement * gpsfreqwide
Definition: L1TGT.h:158
const cms_uint16_t bxNr() const
get/set bunch cross number of the actual bx
Definition: L1GtPsbWord.h:108
int i
Definition: DBlmapReader.cc:9
bool m_runInEndRun
Definition: L1TGT.h:121
int m_nrEvRun
Definition: L1TGT.h:195
boost::uint64_t preGps_
Definition: L1TGT.h:200
virtual void endJob()
Definition: L1TGT.cc:583
const cms_uint64_t orbitNr() const
get/set orbit number since start of run
Definition: L1TcsWord.h:266
DQMStore * m_dbe
internal members
Definition: L1TGT.h:191
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:971
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:3124
MonitorElement * m_monLsNrDiffTcsFdlEvmLs
Definition: L1TGT.h:177
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
int numberBxInEvent
Definition: L1TGT.h:203
int minBxInEvent
Definition: L1TGT.h:204
std::vector< std::pair< int, int > >::const_iterator CItVecPair
Definition: L1TGT.h:214
const cms_uint64_t gpsTime() const
LHC-BOB-ES-0001 (EDMS 638899)
std::vector< std::pair< int, int > > m_pairLsNumberPfIndex
Definition: L1TGT.h:213
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)
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
const cms_uint16_t luminositySegmentNr() const
get/set luminosity segment number
Definition: L1TcsWord.h:166
MonitorElement * BST_intensityBeam1
Definition: L1TGT.h:155
static const int MaxOrbitNrDiffTcsFdlEvm
Definition: L1TGT.h:173
MonitorElement * algo_bits_corr
Definition: L1TGT.h:131
MonitorElement * tt_bits
Definition: L1TGT.h:132
bool verbose_
verbosity switch
Definition: L1TGT.h:126
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:25
bool isInit
Definition: L1TGT.h:206
const cms_uint16_t bstMasterStatus() const
MonitorElement * gtfe_bx
Definition: L1TGT.h:147
const cms_uint32_t partTrigNr() const
get/set total number of L1A sent since start of the run to this DAQ partition
Definition: L1TcsWord.h:226
MonitorElement * BST_beamMode
Definition: L1TGT.h:153
void Fill(long long x)
MonitorElement * BST_MasterStatus
Definition: L1TGT.h:150
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
std::map< std::string, bool >::iterator trig_iter
Definition: L1TGT.h:211
const cms_uint16_t beamMomentum() const
const cms_uint16_t bxNr() const
get/set BxNr - bunch cross number of the actual bx
Definition: L1GtFdlWord.h:110
MonitorElement * BST_intensityBeam2
Definition: L1TGT.h:156
std::string to_string(const T &t)
Definition: Logger.cc:26
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the TCS chip
Definition: L1TcsWord.h:87
void bookHistograms()
book all histograms for the module
Definition: L1TGT.cc:598
MonitorElement * h_L1TechBX
Definition: L1TGT.h:183
int iEvent
Definition: GenABIO.cc:230
MonitorElement * event_number
Definition: L1TGT.h:139
MonitorElement * h_L1AlgoBX3
Definition: L1TGT.h:181
std::vector< bool > DecisionWord
typedefs
static const int MaxLsNrDiffTcsFdlEvm
Definition: L1TGT.h:174
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > gtEvmSource_
input tag for L1 GT EVM readout record
Definition: L1TGT.h:116
MonitorElement * orbit_lumi
Definition: L1TGT.h:144
int j
Definition: DBlmapReader.cc:9
MonitorElement * h_L1AlgoBX4
Definition: L1TGT.h:182
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1285
int orbitNumber() const
Definition: EventBase.h:63
std::string m_histFolder
histogram folder for L1 GT plots
Definition: L1TGT.h:198
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
Definition: L1GtPsbWord.h:178
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * algo_bits_lumi
Definition: L1TGT.h:135
std::map< std::string, bool > l1TriggerDecision
Definition: L1TGT.h:210
Container::value_type value_type
virtual void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
Definition: L1TGT.cc:94
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
Definition: L1GtfeWord.h:163
MonitorElement * m_monLsNrDiffTcsFdlEvm
Definition: L1TGT.h:165
MonitorElement * gpsfreq
Definition: L1TGT.h:157
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
Definition: L1GtfeWord.h:122
std::string algoBitToName[128]
Definition: L1TGT.h:208
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:749
const cms_uint32_t totalIntensityBeam2() const
const cms_uint32_t totalIntensityBeam1() const
MonitorElement * algo_bits
Definition: L1TGT.h:130
MonitorElement * event_type
Definition: L1TGT.h:137
const cms_uint16_t gtPrescaleFactorIndexAlgo() const
Definition: L1GtFdlWord.h:267
MonitorElement * m_monOrbitNrDiffTcsFdlEvmLs
Definition: L1TGT.h:176
const cms_uint16_t lumiSegmentNr() const
get/set luminosity segment number of the actual bx
Definition: L1GtFdlWord.h:352
MonitorElement * dbx_module
Definition: L1TGT.h:148
bool m_runInEndLumi
Definition: L1TGT.h:120
unsigned long long uint64_t
Definition: Time.h:15
virtual void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
end section
Definition: L1TGT.cc:566
const cms_uint32_t lhcFillNumber() const
MonitorElement * tt_bits_corr
Definition: L1TGT.h:133
virtual void endRun(const edm::Run &, const edm::EventSetup &)
Definition: L1TGT.cc:574
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
bool isActive(int word, int bit)
Definition: L1TGT.cc:867
MonitorElement * gpsfreqlum
Definition: L1TGT.h:159
int m_nrEvJob
number of events processed
Definition: L1TGT.h:194
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > gtSource_L1GT_
input parameters
Definition: L1TGT.h:112
MonitorElement * h_L1AlgoBX2
Definition: L1TGT.h:180
void countPfsIndicesPerLs()
Definition: L1TGT.cc:874
const cms_uint16_t triggerType() const
get/set trigger type, identical with event type in CMS header
Definition: L1TcsWord.h:127
MonitorElement * m_monL1PfIndicesPerLs
Definition: L1TGT.h:162
virtual void beginJob()
Definition: L1TGT.cc:55
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in TCS chip
Definition: L1TcsWord.h:246
const cms_uint32_t setupVersion() const
get/set setup version
Definition: L1GtfeWord.h:140
const AlgorithmMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
MonitorElement * trigger_number
Definition: L1TGT.h:141
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
Definition: L1TGT.cc:64
const AlgorithmMap & gtTechnicalTriggerMap() const
get / set the technical trigger map
MonitorElement * BST_beamMomentum
Definition: L1TGT.h:154
MonitorElement * BST_lhcFillNumber
Definition: L1TGT.h:152
volatile std::atomic< bool > shutdown_flag false
MonitorElement * setupversion_lumi
Definition: L1TGT.h:145
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: L1TGT.cc:103
const cms_uint32_t turnCountNumber() 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:1099
MonitorElement * BST_turnCountNumber
Definition: L1TGT.h:151
boost::uint64_t preOrb_
Definition: L1TGT.h:201
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * event_lumi
Definition: L1TGT.h:140
const cms_uint16_t beamMode() const
MonitorElement * tt_bits_lumi
Definition: L1TGT.h:136
MonitorElement * trigger_lumi
Definition: L1TGT.h:142
MonitorElement * evnum_trignum_lumi
Definition: L1TGT.h:143
const cms_uint32_t orbitNr() const
get/set orbit number
Definition: L1GtFdlWord.h:332
MonitorElement * algo_tt_bits_corr
Definition: L1TGT.h:134
bool m_runInEndJob
Definition: L1TGT.h:122
std::string techBitToName[64]
Definition: L1TGT.h:209
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:684
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
Definition: L1GtFdlWord.h:372
Definition: Run.h:41
MonitorElement * m_monOrbitNrDiffTcsFdlEvm
Definition: L1TGT.h:164
L1TGT(const edm::ParameterSet &ps)
Definition: L1TGT.cc:18
virtual ~L1TGT()
Definition: L1TGT.cc:50
edm::EDGetTokenT< L1MuGMTReadoutCollection > gtSource_L1MuGMT_
Definition: L1TGT.h:113