CMS 3D CMS Logo

L1TBPTX.cc
Go to the documentation of this file.
2 
4 
7 
8 #include "DataFormats/Common/interface/ConditionsInEdm.h" // Parameters associated to Run, LS and Event
9 
17 
18 // Luminosity Information
19 //#include "DataFormats/Luminosity/interface/LumiDetails.h"
20 //#include "DataFormats/Luminosity/interface/LumiSummary.h"
21 
22 // L1TMonitor includes
24 
25 #include "TList.h"
26 #include <string>
27 
28 using namespace edm;
29 using namespace std;
30 
31 //-------------------------------------------------------------------------------------
32 //-------------------------------------------------------------------------------------
34  m_parameters = pset;
35 
36  // Mapping parameter input variables
37  m_scalersSource = consumes<Level1TriggerScalersCollection>(pset.getParameter<InputTag>("inputTagScalersResults"));
38  m_l1GtDataDaqInputTag = consumes<L1GlobalTriggerReadoutRecord>(pset.getParameter<InputTag>("inputTagL1GtDataDaq"));
39  m_l1GtEvmSource = consumes<L1GlobalTriggerEvmReadoutRecord>(pset.getParameter<InputTag>("inputTagtEvmSource"));
40  l1gtMenuToken_ = esConsumes<edm::Transition::BeginRun>();
41  l1GtPfAlgoToken_ = esConsumes<edm::Transition::BeginRun>();
42  l1GtPfTechToken_ = esConsumes<edm::Transition::BeginRun>();
43  m_verbose = pset.getUntrackedParameter<bool>("verbose", false);
44  // m_refPrescaleSet = pset.getParameter <int> ("refPrescaleSet");
45 
46  m_monitorBits = pset.getParameter<vector<ParameterSet> >("MonitorBits");
47 
48  for (unsigned i = 0; i < m_monitorBits.size(); i++) {
49  // Algorithms
50  if (m_monitorBits[i].getParameter<bool>("bitType")) {
51  int bit = m_monitorBits[i].getParameter<int>("bitNumber");
52  int offset = m_monitorBits[i].getParameter<int>("bitOffset");
53  m_selAlgoBit.push_back(pair<int, int>(bit, offset));
54  }
55  // Tech
56  else {
57  int bit = m_monitorBits[i].getParameter<int>("bitNumber");
58  int offset = m_monitorBits[i].getParameter<int>("bitOffset");
59  m_selTechBit.push_back(pair<int, int>(bit, offset));
60  }
61  }
62 
63  m_monitorRates = pset.getParameter<vector<ParameterSet> >("MonitorRates");
64 }
65 
66 //-------------------------------------------------------------------------------------
67 //-------------------------------------------------------------------------------------
69 
70 //-------------------------------------------------------------------------------------
72 //-------------------------------------------------------------------------------------
73 void L1TBPTX::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run& iRun, const edm::EventSetup& iSetup) {
74  if (m_verbose) {
75  cout << "[L1TBPTX] Called beginRun." << endl;
76  }
77 
78  ibooker.setCurrentFolder("L1T/L1TBPTX");
79 
80  // Initializing variables
81  int maxNbins = 2501;
82 
83  // Reseting run dependent variables
84  m_lhcFill = 0;
85  m_currentLS = 0;
86 
87  // Getting Trigger menu from GT
88  const L1GtTriggerMenu* menu = &iSetup.getData(l1gtMenuToken_);
89 
90  // Filling Alias-Bit Map
91  for (CItAlgo algo = menu->gtAlgorithmAliasMap().begin(); algo != menu->gtAlgorithmAliasMap().end(); ++algo) {
92  m_algoBit_Alias[(algo->second).algoBitNumber()] = (algo->second).algoAlias();
93  }
94 
95  for (CItAlgo algo = menu->gtTechnicalTriggerMap().begin(); algo != menu->gtTechnicalTriggerMap().end(); ++algo) {
96  m_techBit_Alias[(algo->second).algoBitNumber()] = (algo->second).algoName();
97  }
98 
99  // Initializing DQM Monitor Elements
100  ibooker.setCurrentFolder("L1T/L1TBPTX");
101  m_ErrorMonitor = ibooker.book1D("ErrorMonitor", "ErrorMonitor", 7, 0, 7);
102  m_ErrorMonitor->setBinLabel(UNKNOWN, "UNKNOWN");
103  m_ErrorMonitor->setBinLabel(WARNING_DB_CONN_FAILED, "WARNING_DB_CONN_FAILED"); // Errors from L1TOMDSHelper
104  m_ErrorMonitor->setBinLabel(WARNING_DB_QUERY_FAILED, "WARNING_DB_QUERY_FAILED"); // Errors from L1TOMDSHelper
105  m_ErrorMonitor->setBinLabel(WARNING_DB_INCORRECT_NBUNCHES,
106  "WARNING_DB_INCORRECT_NBUNCHES"); // Errors from L1TOMDSHelper
107  m_ErrorMonitor->setBinLabel(ERROR_UNABLE_RETRIVE_PRODUCT, "ERROR_UNABLE_RETRIVE_PRODUCT");
108  m_ErrorMonitor->setBinLabel(ERROR_TRIGGERALIAS_NOTVALID, "ERROR_TRIGGERALIAS_NOTVALID");
109  m_ErrorMonitor->setBinLabel(ERROR_LSBLOCK_NOTVALID, "ERROR_LSBLOCK_NOTVALID");
110 
111  for (unsigned i = 0; i < m_monitorBits.size(); i++) {
112  bool isAlgo = m_monitorBits[i].getParameter<bool>("bitType");
113  TString testName = m_monitorBits[i].getParameter<string>("testName");
114  int bit = m_monitorBits[i].getParameter<int>("bitNumber");
115 
116  TString meTitle = "";
117  ibooker.setCurrentFolder("L1T/L1TBPTX/Efficiency/");
118  if (isAlgo) {
119  meTitle = "Algo ";
120  meTitle += bit;
121  meTitle += " - ";
122  meTitle += m_algoBit_Alias[bit];
123  meTitle += " Efficiency";
124  m_meAlgoEfficiency[bit] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
125  m_meAlgoEfficiency[bit]->setAxisTitle("Lumi Section", 1);
126  } else {
127  meTitle = "Tech ";
128  meTitle += bit;
129  meTitle += " - ";
130  meTitle += m_techBit_Alias[bit];
131  meTitle += " Efficiency";
132  m_meTechEfficiency[bit] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
133  m_meTechEfficiency[bit]->setAxisTitle("Lumi Section", 1);
134  }
135 
136  meTitle = "";
137  ibooker.setCurrentFolder("L1T/L1TBPTX/MissFire/");
138  if (isAlgo) {
139  meTitle = "Algo ";
140  meTitle += bit;
141  meTitle += " - ";
142  meTitle += m_algoBit_Alias[bit];
143  meTitle += "(1 - Miss Fire Rate)";
144  m_meAlgoMissFire[bit] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
145  m_meAlgoMissFire[bit]->setAxisTitle("Lumi Section", 1);
146  m_meAlgoMissFire[bit]->setAxisTitle("1 - Miss Fire Rate", 2);
147  } else {
148  meTitle = "Tech ";
149  meTitle += bit;
150  meTitle += " - ";
151  meTitle += m_techBit_Alias[bit];
152  meTitle += "(1 - Miss Fire Rate)";
153  m_meTechMissFire[bit] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
154  m_meTechMissFire[bit]->setAxisTitle("Lumi Section", 1);
155  m_meTechMissFire[bit]->setAxisTitle("1 - Miss Fire Rate", 2);
156  }
157  }
158 
159  for (unsigned i = 0; i < m_monitorRates.size(); i++) {
160  TString testName = m_monitorRates[i].getParameter<string>("testName");
161  bool isAlgo = m_monitorRates[i].getParameter<bool>("bitType");
162  int bit = m_monitorRates[i].getParameter<int>("bitNumber");
163 
164  pair<bool, int> refME = pair<bool, int>(isAlgo, bit);
165 
166  TString meTitle = "";
167  ibooker.setCurrentFolder("L1T/L1TBPTX/Rate/");
168  if (isAlgo) {
169  meTitle = "Algo " + std::to_string(bit);
170  meTitle += " - ";
171  meTitle += m_algoBit_Alias[bit];
172  meTitle += " Rate";
173  m_meRate[refME] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
174  m_meRate[refME]->setAxisTitle("Lumi Section", 1);
175  m_meRate[refME]->setAxisTitle("Rate (unprescaled) [Hz]", 2);
176  } else {
177  meTitle = "Tech " + std::to_string(bit);
178  meTitle += " - ";
179  meTitle += m_techBit_Alias[bit];
180  meTitle += " Rate";
181  m_meRate[refME] = ibooker.book1D(testName, meTitle, maxNbins, -0.5, double(maxNbins) - 0.5);
182  m_meRate[refME]->setAxisTitle("Lumi Section", 1);
183  m_meRate[refME]->setAxisTitle("Rate (unprescaled) [Hz]", 2);
184  }
185  }
186 
187  //_____________________________________________________________________
188  // Getting the prescale columns definition for this run
189  const auto& l1GtPfAlgo = iSetup.getHandle(l1GtPfAlgoToken_);
190  const auto& l1GtPfTech = iSetup.getHandle(l1GtPfTechToken_);
191 
192  if (l1GtPfAlgo.isValid()) {
193  const L1GtPrescaleFactors* m_l1GtPfAlgo = l1GtPfAlgo.product();
194  m_prescaleFactorsAlgoTrig = &(m_l1GtPfAlgo->gtPrescaleFactors());
195  } else {
196  //TODO: Some error handling
197  }
198 
199  if (l1GtPfAlgo.isValid()) {
200  const L1GtPrescaleFactors* m_l1GtPfTech = l1GtPfTech.product();
201  m_prescaleFactorsTechTrig = &(m_l1GtPfTech->gtPrescaleFactors());
202  } else {
203  //TODO: Some error handling
204  }
205 }
206 
208  //empty
209 }
210 
211 //_____________________________________________________________________
212 // Function: beginLuminosityBlock
213 //_____________________________________________________________________
215  if (m_verbose) {
216  cout << "[L1TBPTX] Called beginLuminosityBlock." << endl;
217  }
218 
219  // Updating current LS number
220  m_currentLS = lumiBlock.id().luminosityBlock();
221 
222  // A LS will be valid if BeamMode==STABLE for all events monitored
223  m_currentLSValid = true;
224 
225  for (unsigned i = 0; i < m_monitorBits.size(); i++) {
226  TString triggerName = "";
227  if (m_monitorBits[i].getParameter<bool>("bitType")) {
228  triggerName = "algo_" + std::to_string(m_monitorBits[i].getParameter<int>("bitNumber"));
229  } else {
230  triggerName = "tech_" + std::to_string(m_monitorBits[i].getParameter<int>("bitNumber"));
231  }
232 
233  m_effNumerator[triggerName] = 0;
234  m_effDenominator[triggerName] = 0;
235  m_missFireNumerator[triggerName] = 0;
236  m_missFireDenominator[triggerName] = 0;
237  }
238 }
239 
240 //_____________________________________________________________________
241 // Function: endLuminosityBlock
242 // * Fills LS by LS ration of trigger out of sync
243 //_____________________________________________________________________
244 void L1TBPTX::endLuminosityBlock(LuminosityBlock const& lumiBlock, EventSetup const& c) {
245  //______________________________________________________________________________
246  // Monitoring efficiencies
247  //______________________________________________________________________________
248  if (m_verbose) {
249  cout << "[L1TBPTX] Called endLuminosityBlock." << endl;
250  }
251 
252  // If this LS is valid (i.e. all events recorded with stable beams)
253  if (m_currentLSValid && m_beamConfig.isValid()) {
254  for (unsigned i = 0; i < m_monitorBits.size(); i++) {
255  bool isAlgo = m_monitorBits[i].getParameter<bool>("bitType");
256  TString testName = m_monitorBits[i].getParameter<string>("testName");
257  int bit = m_monitorBits[i].getParameter<int>("bitNumber");
258 
259  TString triggerName;
260  if (isAlgo) {
261  triggerName = "algo_" + std::to_string(bit);
262  } else {
263  triggerName = "tech_" + std::to_string(bit);
264  }
265 
266  double valEff;
267  double valMiss;
268  if (m_effDenominator[triggerName] != 0) {
269  valEff = (double)m_effNumerator[triggerName] / m_effDenominator[triggerName];
270  } else {
271  valEff = 0;
272  }
273  if (m_missFireDenominator[triggerName] != 0) {
274  valMiss = (double)m_missFireNumerator[triggerName] / m_missFireDenominator[triggerName];
275  } else {
276  valMiss = 0;
277  }
278 
279  if (isAlgo) {
280  int bin = m_meAlgoEfficiency[bit]->getTH1()->FindBin(m_currentLS);
281  m_meAlgoEfficiency[bit]->setBinContent(bin, valEff);
282  m_meAlgoMissFire[bit]->setBinContent(bin, 1 - valMiss);
283  } else {
284  int bin = m_meTechEfficiency[bit]->getTH1()->FindBin(m_currentLS);
285  m_meTechEfficiency[bit]->setBinContent(bin, valEff);
286  m_meTechMissFire[bit]->setBinContent(bin, 1 - valMiss);
287  }
288  }
289  }
290 
291  //______________________________________________________________________________
292  // Monitoring rates
293  //______________________________________________________________________________
294  // We are only interested in monitoring lumisections where the the LHC state is
295  // RAMP, FLATTOP, SQUEEZE, ADJUST or STABLE since the bunch configuration and
296  // therefore the BPTX rate will not change.
297 
298  if (m_currentLSValid) {
299  const vector<int>& currentPFAlgo = (*m_prescaleFactorsAlgoTrig).at(m_currentPrescalesIndex);
300  const vector<int>& currentPFTech = (*m_prescaleFactorsTechTrig).at(m_currentPrescalesIndex);
301 
302  for (unsigned i = 0; i < m_monitorRates.size(); i++) {
303  bool isAlgo = m_monitorRates[i].getParameter<bool>("bitType");
304  int bit = m_monitorRates[i].getParameter<int>("bitNumber");
305 
306  pair<bool, int> refME = pair<bool, int>(isAlgo, bit);
307 
308  if (isAlgo) {
309  int bin = m_meRate[refME]->getTH1()->FindBin(m_currentGTLS);
310  int trigPS = currentPFAlgo[bit];
311  double trigRate = (double)trigPS * m_l1Rate[refME];
312  m_meRate[refME]->setBinContent(bin, trigRate);
313 
314  } else {
315  int bin = m_meRate[refME]->getTH1()->FindBin(m_currentGTLS);
316  int trigPS = currentPFTech[bit];
317  double trigRate = (double)trigPS * m_l1Rate[refME];
318  m_meRate[refME]->setBinContent(bin, trigRate);
319  }
320  }
321  }
322 }
323 
324 //_____________________________________________________________________
325 void L1TBPTX::analyze(const Event& iEvent, const EventSetup& eventSetup) {
326  if (m_verbose) {
327  cout << "[L1TBPTX] Called analyze." << endl;
328  }
329 
330  // We only start analyzing if current LS is still valid
331  if (m_currentLSValid) {
332  if (m_verbose) {
333  cout << "[L1TBPTX] -> m_currentLSValid=" << m_currentLSValid << endl;
334  }
335 
336  // Retriving information from GT
338  iEvent.getByToken(m_l1GtEvmSource, gtEvmReadoutRecord);
339 
340  // Determining beam mode and fill number
341  if (gtEvmReadoutRecord.isValid()) {
342  const L1GtfeExtWord& gtfeEvmWord = gtEvmReadoutRecord->gtfeWord();
343  unsigned int lhcBeamMode = gtfeEvmWord.beamMode(); // Updating beam mode
344 
345  if (m_verbose) {
346  cout << "[L1TBPTX] Beam mode: " << lhcBeamMode << endl;
347  }
348 
349  if (lhcBeamMode == RAMP || lhcBeamMode == FLATTOP || lhcBeamMode == SQUEEZE || lhcBeamMode == ADJUST ||
350  lhcBeamMode == STABLE) {
351  if (m_lhcFill == 0) {
352  if (m_verbose) {
353  cout << "[L1TBPTX] No valid bunch structure yet retrived. Attemptting to retrive..." << endl;
354  }
355 
356  m_lhcFill = gtfeEvmWord.lhcFillNumber(); // Getting LHC Fill Number from GT
357 
358  getBeamConfOMDS(); // Getting Beam Configuration from OMDS
359 
360  // We are between RAMP and STABLE so there should be some colliding bunches
361  // in the machine. If 0 colliding bunched are found might be due to a delay
362  // of the update of the database. So we declare this LS as invalid and try
363  // again on the next one.
364  if (m_beamConfig.nCollidingBunches <= 0) {
365  m_lhcFill = 0;
366  m_currentLSValid = false;
367  }
368  }
369  } else {
370  m_currentLSValid = false;
371  }
372 
373  } else {
374  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT);
375  eCount++;
376  m_ErrorMonitor->getTH1()->SetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT, eCount);
377  }
378  }
379 
380  //______________________________________________________________________________
381  // If current LS is valid and Beam Configuration is Valid we analyse this event
382  //______________________________________________________________________________
383  if (m_currentLSValid && m_beamConfig.isValid()) {
384  if (m_verbose) {
385  cout << "Current event in valid LS and beam config" << endl;
386  }
387 
388  // Getting Final Decision Logic (FDL) Data from GT
389  edm::Handle<L1GlobalTriggerReadoutRecord> gtReadoutRecordData;
390  iEvent.getByToken(m_l1GtDataDaqInputTag, gtReadoutRecordData);
391 
392  if (gtReadoutRecordData.isValid()) {
393  const vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->gtFdlVector();
394 
395  // Getting the index for the fdl data for this event
396  int eventFDL = 0;
397  for (unsigned int i = 0; i < gtFdlVectorData.size(); i++) {
398  if (gtFdlVectorData[i].bxInEvent() == 0) {
399  eventFDL = i;
400  break;
401  }
402  }
403 
404  m_currentPrescalesIndex = gtFdlVectorData[eventFDL].gtPrescaleFactorIndexAlgo();
405 
406  for (unsigned i = 0; i < m_monitorBits.size(); i++) {
407  TString triggerName = "";
408  bool isAlgo = m_monitorBits[i].getParameter<bool>("bitType");
409  int bit = m_monitorBits[i].getParameter<int>("bitNumber");
410  int offset = m_monitorBits[i].getParameter<int>("bitOffset");
411 
412  if (isAlgo) {
413  triggerName = "algo_" + std::to_string(bit);
414  } else {
415  triggerName = "tech_" + std::to_string(bit);
416  }
417 
418  int evBxStart = -2;
419  int evBxEnd = 2;
420 
421  if (offset < 0) {
422  evBxStart += -1 * offset;
423  }
424  if (offset > 0) {
425  evBxEnd += -1 * offset;
426  }
427 
428  for (unsigned a = 0; a < gtFdlVectorData.size(); a++) {
429  int testBx = gtFdlVectorData[a].localBxNr() - offset;
430  bool lhcBxFilled = m_beamConfig.beam1[testBx] && m_beamConfig.beam2[testBx];
431  bool algoFired = false;
432 
433  if (isAlgo) {
434  if (gtFdlVectorData[a].gtDecisionWord()[bit]) {
435  algoFired = true;
436  }
437 
438  } else {
439  if (gtFdlVectorData[a].gtTechnicalTriggerWord()[bit]) {
440  algoFired = true;
441  }
442  }
443 
444  if (lhcBxFilled) {
445  m_effDenominator[triggerName]++;
446  }
447  if (lhcBxFilled && algoFired) {
448  m_effNumerator[triggerName]++;
449  }
450 
451  if (algoFired) {
452  m_missFireNumerator[triggerName]++;
453  }
454  if (algoFired && !lhcBxFilled) {
455  m_missFireNumerator[triggerName]++;
456  }
457  }
458  }
459  }
460  }
461 
462  //______________________________________________________________________________
463  // Rate calculation
464  //______________________________________________________________________________
466  iEvent.getByToken(m_scalersSource, triggerScalers);
467 
468  if (triggerScalers.isValid()) {
469  Level1TriggerScalersCollection::const_iterator itL1TScalers = triggerScalers->begin();
470  Level1TriggerRates trigRates(*itL1TScalers, iEvent.id().run());
471 
472  m_currentGTLS = (*itL1TScalers).lumiSegmentNr();
473 
474  for (unsigned i = 0; i < m_monitorRates.size(); i++) {
475  bool isAlgo = m_monitorRates[i].getParameter<bool>("bitType");
476  int bit = m_monitorRates[i].getParameter<int>("bitNumber");
477 
478  pair<bool, int> refTrig = pair<bool, int>(isAlgo, bit);
479 
480  if (isAlgo) {
481  m_l1Rate[refTrig] = trigRates.gtAlgoCountsRate()[bit];
482  } else {
483  m_l1Rate[refTrig] = trigRates.gtTechCountsRate()[bit];
484  }
485  }
486  }
487 }
488 
489 //_____________________________________________________________________
490 // Method: getBunchStructureOMDS
491 // Description: Attempt to retrive Beam Configuration from OMDS and if
492 // we find error handle it
493 //_____________________________________________________________________
495  if (m_verbose) {
496  cout << "[L1TBPTX] Called getBeamConfOMDS()" << endl;
497  }
498 
499  //Getting connection paremeters
500  string oracleDB = m_parameters.getParameter<string>("oracleDB");
501  string pathCondDB = m_parameters.getParameter<string>("pathCondDB");
502 
503  // Connecting to OMDS
504  L1TOMDSHelper myOMDSHelper = L1TOMDSHelper();
505  int conError;
506  myOMDSHelper.connect(oracleDB, pathCondDB, conError);
507 
508  if (conError == L1TOMDSHelper::NO_ERROR) {
509  if (m_verbose) {
510  cout << "[L1TBPTX] Connected to DB with no error." << endl;
511  }
512 
513  int errorRetrive;
514  m_beamConfig = myOMDSHelper.getBeamConfiguration(m_lhcFill, errorRetrive);
515 
516  if (errorRetrive == L1TOMDSHelper::NO_ERROR) {
517  if (m_verbose) {
518  cout << "[L1TBPTX] Retriving LHC Bunch Structure: NO_ERROR" << endl;
519  cout << "[L1TSync] -> LHC Bunch Structure valid=" << m_beamConfig.m_valid
520  << " nBunches=" << m_beamConfig.nCollidingBunches << endl;
521  }
522  } else if (errorRetrive == L1TOMDSHelper::WARNING_DB_QUERY_FAILED) {
523  if (m_verbose) {
524  cout << "[L1TBPTX] Retriving LHC Bunch Structure: WARNING_DB_QUERY_FAILED" << endl;
525  }
526 
527  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(WARNING_DB_QUERY_FAILED);
528  eCount++;
529  m_ErrorMonitor->getTH1()->SetBinContent(WARNING_DB_QUERY_FAILED, eCount);
530  } else if (errorRetrive == L1TOMDSHelper::WARNING_DB_INCORRECT_NBUNCHES) {
531  if (m_verbose) {
532  cout << "[L1TBPTX] Retriving LHC Bunch Structure: WARNING_DB_INCORRECT_NBUNCHES" << endl;
533  }
534 
535  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(WARNING_DB_INCORRECT_NBUNCHES);
536  eCount++;
537  m_ErrorMonitor->getTH1()->SetBinContent(WARNING_DB_INCORRECT_NBUNCHES, eCount);
538  } else {
539  if (m_verbose) {
540  cout << "[L1TBPTX] Retriving LHC Bunch Structure: UNKNOWN" << endl;
541  }
542  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(UNKNOWN);
543  eCount++;
544  m_ErrorMonitor->getTH1()->SetBinContent(UNKNOWN, eCount);
545  }
546 
547  } else if (conError == L1TOMDSHelper::WARNING_DB_CONN_FAILED) {
548  if (m_verbose) {
549  cout << "[L1TBPTX] Connection to DB: WARNING_DB_CONN_FAILED" << endl;
550  }
551  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(WARNING_DB_CONN_FAILED);
552  eCount++;
553  m_ErrorMonitor->getTH1()->SetBinContent(WARNING_DB_CONN_FAILED, eCount);
554  } else {
555  if (m_verbose) {
556  cout << "[L1TBPTX] Connection to DB: UNKNOWN" << endl;
557  }
558  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(UNKNOWN);
559  eCount++;
560  m_ErrorMonitor->getTH1()->SetBinContent(UNKNOWN, eCount);
561  }
562 }
563 
564 //_____________________________________________________________________
565 // Method: doFractionInSync
566 // Description: Produce plot with the fraction of in sync trigger for
567 // LS blocks with enough statistics.
568 // Variable: iForce - Forces closing of all blocks and calculation of
569 // the respective fractions
570 // Variable: iBad - (Only works with iForce=true) Forces the current
571 // all current blocks to be marked as bad
572 //_____________________________________________________________________
573 void L1TBPTX::doFractionInSync(bool iForce, bool iBad) {}
574 
575 //_____________________________________________________________________
576 // Method: certifyLSBlock
577 // Description: Fill the trigger certification plot by blocks
578 // Variable: iTrigger - Which trigger to certify
579 // Variable: iInitLs - Blocks initial LS
580 // Variable: iEndLs - Blocks end LS
581 // Variable: iValue - Value to be used to fill
582 //_____________________________________________________________________
583 void L1TBPTX::certifyLSBlock(string iTrigger, int iInitLs, int iEndLs, float iValue) {}
L1TOMDSHelper
Definition: L1TOMDSHelper.h:50
L1TBPTX::L1TBPTX
L1TBPTX(const edm::ParameterSet &ps)
Definition: L1TBPTX.cc:33
L1GtTriggerMenu.h
LumiScalers.h
mps_fire.i
i
Definition: mps_fire.py:428
L1GtPrescaleFactors
Definition: L1GtPrescaleFactors.h:32
L1TBPTX_cfi.oracleDB
oracleDB
Definition: L1TBPTX_cfi.py:14
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
L1GtTriggerMenuRcd.h
gather_cfg.cout
cout
Definition: gather_cfg.py:144
L1GlobalTriggerEvmReadoutRecord::gtfeWord
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
Definition: L1GlobalTriggerEvmReadoutRecord.cc:249
L1GtPrescaleFactors::gtPrescaleFactors
const std::vector< std::vector< int > > & gtPrescaleFactors() const
get the prescale factors by reference
Definition: L1GtPrescaleFactors.h:45
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
L1TBPTX::doFractionInSync
void doFractionInSync(bool iForce=false, bool iBad=false)
Definition: L1TBPTX.cc:573
DQMStore.h
L1TBPTX::getBeamConfOMDS
void getBeamConfOMDS()
Definition: L1TBPTX.cc:494
L1TOMDSHelper::WARNING_DB_QUERY_FAILED
Definition: L1TOMDSHelper.h:52
edm::Handle
Definition: AssociativeIterator.h:50
L1TBPTX_cfi.pathCondDB
pathCondDB
Definition: L1TBPTX_cfi.py:15
cmsdt::algo
algo
Definition: constants.h:171
L1TOMDSHelper::NO_ERROR
Definition: L1TOMDSHelper.h:52
Level1TriggerRates
Definition: Level1TriggerRates.h:30
MillePedeAlignmentAlgorithm_cfi.algoName
algoName
Definition: MillePedeAlignmentAlgorithm_cfi.py:10
CItAlgo
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
Definition: L1GtTriggerMenuFwd.h:38
L1TBPTX::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: L1TBPTX.cc:325
L1TBPTX::endLuminosityBlock
void endLuminosityBlock(edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c) override
Definition: L1TBPTX.cc:244
L1TBPTX::~L1TBPTX
~L1TBPTX() override
Definition: L1TBPTX.cc:68
L1TBPTX_cfi.testName
testName
Definition: L1TBPTX_cfi.py:24
L1TBPTX::dqmBeginRun
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
Definition: L1TBPTX.cc:207
optionsL1T.menu
menu
Definition: optionsL1T.py:29
edm::ParameterSet
Definition: ParameterSet.h:47
a
double a
Definition: hdecay.h:119
L1GtTriggerMenu
Definition: L1GtTriggerMenu.h:48
L1GtfeExtWord::lhcFillNumber
const cms_uint32_t lhcFillNumber() const
Definition: L1GtfeExtWord.cc:195
L1GtMuonTemplate.h
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::LuminosityBlockID::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: LuminosityBlockID.h:42
edm::LuminosityBlockBase::id
LuminosityBlockID id() const
Definition: LuminosityBlockBase.h:44
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
L1GtPrescaleFactorsAlgoTrigRcd.h
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
L1TBPTX::beginLuminosityBlock
void beginLuminosityBlock(edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c) override
Definition: L1TBPTX.cc:214
edm::EventSetup
Definition: EventSetup.h:58
L1TBPTX::certifyLSBlock
void certifyLSBlock(std::string iTrigger, int iInitLs, int iEndLs, float iValue)
Definition: L1TBPTX.cc:583
L1TOMDSHelper::WARNING_DB_CONN_FAILED
Definition: L1TOMDSHelper.h:52
L1GtfeExtWord
Definition: L1GtfeExtWord.h:31
L1TBPTX.h
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
newFWLiteAna.bin
bin
Definition: newFWLiteAna.py:161
L1TMenuHelper.h
SiStripSubdetector::UNKNOWN
Definition: SiStripEnums.h:5
std
Definition: JetResolutionObject.h:76
ConditionsInEdm.h
Level1TriggerRates.h
dqm::implementation::IBooker
Definition: DQMStore.h:43
L1GtTriggerMenuFwd.h
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
edm::Event
Definition: Event.h:73
L1TOMDSHelper::WARNING_DB_INCORRECT_NBUNCHES
Definition: L1TOMDSHelper.h:52
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
L1GtfeExtWord::beamMode
const cms_uint16_t beamMode() const
Definition: L1GtfeExtWord.cc:215
edm::InputTag
Definition: InputTag.h:15
L1TBPTX::bookHistograms
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &, const edm::EventSetup &) override
BeginRun.
Definition: L1TBPTX.cc:73
L1GtPrescaleFactors.h
L1GlobalTriggerReadoutRecord::gtFdlVector
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
Definition: L1GlobalTriggerReadoutRecord.h:119
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
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
PDWG_DiPhoton_SD_cff.triggerName
triggerName
Definition: PDWG_DiPhoton_SD_cff.py:37
L1GtPrescaleFactorsTechTrigRcd.h