CMS 3D CMS Logo

L1TScalersSCAL.cc
Go to the documentation of this file.
1 // Class: L1TScalersSCAL
2 // user include files
3 
4 #include <sstream>
5 #include <vector>
6 
9 
12 
19 
23 
24 const double SECS_PER_LUMI = 23.31040958083832;
25 
26 using namespace edm;
27 using namespace std;
28 
30  l1triggerscalers_(consumes<Level1TriggerScalersCollection>(ps.getParameter<edm::InputTag>("scalersResults"))),
31  lumiscalers_(consumes<LumiScalersCollection>(ps.getParameter<edm::InputTag>("scalersResults"))),
32  l1acceptBX_(consumes<L1AcceptBunchCrossingCollection>(ps.getParameter<edm::InputTag>("scalersResults"))),
33  verbose_(ps.getUntrackedParameter<bool>("verbose", false)),
34  denomIsTech_(ps.getUntrackedParameter<bool>("denomIsTech", true)),
35  denomBit_(ps.getUntrackedParameter<unsigned int>("denomBit", 40)),
36  muonBit_(ps.getUntrackedParameter<unsigned int>("muonBit", 55)),
37  egammaBit_(ps.getUntrackedParameter<unsigned int>("egammaBit", 46)),
38  jetBit_(ps.getUntrackedParameter<unsigned int>("jetBit", 15)) {
39  LogDebug("Status") << "constructor";
40 
41  for (int i = 0; i < Level1TriggerScalers::nLevel1Triggers; i++) {
42  bufferAlgoRates_.push_back(0);
43  algorithmRates_.push_back(0);
44  integral_algo_.push_back(0.);
45  }
46  for (int i = 0; i < Level1TriggerScalers::nLevel1TestTriggers; i++) {
47  bufferTechRates_.push_back(0);
48  technicalRates_.push_back(0);
49  integral_tech_.push_back(0.);
50  }
51 
52  buffertime_ = 0;
53  reftime_ = 0;
54  nev_ = 0;
56  bufferLumi_ = 0;
57 }
58 
60 
62  edm::EventSetup const&) {
63  int maxNbins = 2001;
64  iBooker.setCurrentFolder("L1T/L1TScalersSCAL/Level1TriggerScalers");
65  orbitNum = iBooker.book1D("Orbit_Number", "Orbit_Number", maxNbins, -0.5,
66  double(maxNbins) - 0.5);
67  trigNum =
68  iBooker.book1D("Number_of_Triggers", "Number_of_Triggers", 1000, 0, 4E4);
69  trigNum->setAxisTitle("Time [sec]", 1);
70  eventNum = iBooker.book1D("Number_of_Events", "Number_of_Events", maxNbins,
71  -0.5, double(maxNbins) - 0.5);
72 
73  physTrig = iBooker.book1D("Physics_Triggers", "Physics_Triggers", maxNbins,
74  -0.5, double(maxNbins) - 0.5);
75  physTrig->setAxisTitle("Lumi Section", 1);
76 
77  randTrig = iBooker.book1D("Random_Triggers", "Random_Triggers", maxNbins,
78  -0.5, double(maxNbins) - 0.5);
79  randTrig->setAxisTitle("Lumi Section", 1);
80  numberResets = iBooker.book1D("Number_Resets", "Number_Resets", maxNbins,
81  -0.5, double(maxNbins) - 0.5);
82  deadTime = iBooker.book1D("DeadTime", "DeadTime", maxNbins, -0.5,
83  double(maxNbins) - 0.5);
84  lostFinalTriggers = iBooker.book1D("Lost_Final_Trigger", "Lost_Final_Trigger",
85  maxNbins, -0.5, double(maxNbins) - 0.5);
86 
87  iBooker.setCurrentFolder("L1T/L1TScalersSCAL/Level1TriggerRates");
88  physRate = iBooker.book1D("Physics_Trigger_Rate", "Physics_Trigger_Rate",
89  maxNbins, -0.5, double(maxNbins) - 0.5);
90  randRate = iBooker.book1D("Random_Trigger_Rate", "Random_Trigger_Rate",
91  maxNbins, -0.5, double(maxNbins) - 0.5);
92  deadTimePercent = iBooker.book1D("Deadtime_Percent", "Deadtime_Percent",
93  maxNbins, -0.5, double(maxNbins) - 0.5);
94  lostPhysRate =
95  iBooker.book1D("Lost_Physics_Trigger_Rate", "Lost_Physics_Trigger_Rate",
96  maxNbins, -0.5, double(maxNbins) - 0.5);
98  iBooker.book1D("Lost_Physics_Trigger_Rate_Beam_Active",
99  "Lost_Physics_Trigger_Rate_Beam_Active", maxNbins, -0.5,
100  double(maxNbins) - 0.5);
101  instTrigRate = iBooker.book1D("instTrigRate", "instTrigRate", 1000, 0, 4E4);
102  instTrigRate->setAxisTitle("Time [sec]", 1);
103  instEventRate =
104  iBooker.book1D("instEventRate", "instEventRate", 1000, 0, 4E4);
105  instEventRate->setAxisTitle("Time [sec]", 1);
106 
107  char hname[40]; // histo name
108  char mename[40]; // ME name
109 
110  iBooker.setCurrentFolder(
111  "L1T/L1TScalersSCAL/Level1TriggerRates/AlgorithmRates");
112  for (int i = 0; i < Level1TriggerScalers::nLevel1Triggers; i++) {
113  sprintf(hname, "Rate_AlgoBit_%03d", i);
114  sprintf(mename, "Rate_AlgoBit _%03d", i);
115  algoRate[i] =
116  iBooker.book1D(hname, mename, maxNbins, -0.5, double(maxNbins) - 0.5);
117  algoRate[i]->setAxisTitle("Lumi Section", 1);
118  }
119 
120  iBooker.setCurrentFolder(
121  "L1T/L1TScalersSCAL/Level1TriggerRates/AlgorithmRates/Integrated");
122  for (int i = 0; i < Level1TriggerScalers::nLevel1Triggers; i++) {
123  sprintf(hname, "Integral_AlgoBit_%03d", i);
124  sprintf(mename, "Integral_AlgoBit _%03d", i);
125  integralAlgo[i] =
126  iBooker.book1D(hname, mename, maxNbins, -0.5, double(maxNbins) - 0.5);
127  integralAlgo[i]->setAxisTitle("Lumi Section", 1);
128  }
129 
130  iBooker.setCurrentFolder(
131  "L1T/L1TScalersSCAL/Level1TriggerRates/TechnicalRates");
132  for (int i = 0; i < Level1TriggerScalers::nLevel1TestTriggers; i++) {
133  sprintf(hname, "Rate_TechBit_%03d", i);
134  sprintf(mename, "Rate_TechBit _%03d", i);
135  techRate[i] =
136  iBooker.book1D(hname, mename, maxNbins, -0.5, double(maxNbins) - 0.5);
137  techRate[i]->setAxisTitle("Lumi Section", 1);
138  }
139 
140  iBooker.setCurrentFolder(
141  "L1T/L1TScalersSCAL/Level1TriggerRates/TechnicalRates/Integrated");
142  for (int i = 0; i < Level1TriggerScalers::nLevel1TestTriggers; i++) {
143  sprintf(hname, "Integral_TechBit_%03d", i);
144  sprintf(mename, "Integral_TechBit _%03d", i);
145  integralTech[i] =
146  iBooker.book1D(hname, mename, maxNbins, -0.5, double(maxNbins) - 0.5);
147  integralTech[i]->setAxisTitle("Lumi Section", 1);
148  }
149  integralTech_42_OR_43 = iBooker.book1D(
150  "Integral_TechBit_042_OR_043", "Integral_TechBit _042_OR_043", maxNbins,
151  -0.5, double(maxNbins) - 0.5);
152  integralTech_42_OR_43->setAxisTitle("Lumi Section", 1);
153 
154  iBooker.setCurrentFolder("L1T/L1TScalersSCAL/Level1TriggerRates/Ratios");
155  std::stringstream smu, seg, sjet, sdenom;
156  // denominator string
157  if (denomIsTech_)
158  sdenom << "_TechBit_";
159  else
160  sdenom << "_AlgoBit_";
161  sdenom << denomBit_;
162  // Muon ratio
163  smu << muonBit_;
164  rateRatio_mu =
165  iBooker.book1D("Rate_Ratio_mu_PhysBit_" + smu.str() + sdenom.str(),
166  "Rate_Ratio_mu_PhysBit_" + smu.str() + sdenom.str(),
167  maxNbins, -0.5, double(maxNbins) - 0.5);
168  // rateRatio_mu->setAxisTitle("Lumi Section" , 1);
169  // Egamma ratio
170  seg << egammaBit_;
172  iBooker.book1D("Rate_Ratio_egamma_PhysBit_" + seg.str() + sdenom.str(),
173  "Rate_Ratio_egamma_PhysBit_" + seg.str() + sdenom.str(),
174  maxNbins, -0.5, double(maxNbins) - 0.5);
175  // rateRatio_egamma->setAxisTitle("Lumi Section" , 1);
176  // Jet ratio
177  sjet << jetBit_;
178  rateRatio_jet =
179  iBooker.book1D("Rate_Ratio_jet_PhysBit_" + sjet.str() + sdenom.str(),
180  "Rate_Ratio_jet_PhysBit_" + sjet.str() + sdenom.str(),
181  maxNbins, -0.5, double(maxNbins) - 0.5);
182  // rateRatio_jet->setAxisTitle("Lumi Section" , 1);
183 
184  // HF bit ratios
185  techRateRatio_8 = iBooker.book1D("Rate_Ratio_TechBit_8" + sdenom.str(),
186  "Rate_Ratio_TechBit_8" + sdenom.str(),
187  maxNbins, -0.5, double(maxNbins) - 0.5);
188  techRateRatio_9 = iBooker.book1D("Rate_Ratio_TechBit_9" + sdenom.str(),
189  "Rate_Ratio_TechBit_9" + sdenom.str(),
190  maxNbins, -0.5, double(maxNbins) - 0.5);
191  techRateRatio_10 = iBooker.book1D("Rate_Ratio_TechBit_10" + sdenom.str(),
192  "Rate_Ratio_TechBit_10" + sdenom.str(),
193  maxNbins, -0.5, double(maxNbins) - 0.5);
194  // Other tech bit ratios
196  "Rate_Ratio_TechBits_33_over_32", "Rate_Ratio_TechBits_33_over_32",
197  maxNbins, -0.5, double(maxNbins) - 0.5);
198  techRateRatio_36 = iBooker.book1D("Rate_Ratio_TechBit_36" + sdenom.str(),
199  "Rate_Ratio_TechBit_36" + sdenom.str(),
200  maxNbins, -0.5, double(maxNbins) - 0.5);
201  techRateRatio_37 = iBooker.book1D("Rate_Ratio_TechBit_37" + sdenom.str(),
202  "Rate_Ratio_TechBit_37" + sdenom.str(),
203  maxNbins, -0.5, double(maxNbins) - 0.5);
204  techRateRatio_38 = iBooker.book1D("Rate_Ratio_TechBit_38" + sdenom.str(),
205  "Rate_Ratio_TechBit_38" + sdenom.str(),
206  maxNbins, -0.5, double(maxNbins) - 0.5);
207  techRateRatio_39 = iBooker.book1D("Rate_Ratio_TechBit_39" + sdenom.str(),
208  "Rate_Ratio_TechBit_39" + sdenom.str(),
209  maxNbins, -0.5, double(maxNbins) - 0.5);
210  techRateRatio_40 = iBooker.book1D("Rate_Ratio_TechBit_40" + sdenom.str(),
211  "Rate_Ratio_TechBit_40" + sdenom.str(),
212  maxNbins, -0.5, double(maxNbins) - 0.5);
213  techRateRatio_41 = iBooker.book1D("Rate_Ratio_TechBit_41" + sdenom.str(),
214  "Rate_Ratio_TechBit_41" + sdenom.str(),
215  maxNbins, -0.5, double(maxNbins) - 0.5);
216  techRateRatio_42 = iBooker.book1D("Rate_Ratio_TechBit_42" + sdenom.str(),
217  "Rate_Ratio_TechBit_42" + sdenom.str(),
218  maxNbins, -0.5, double(maxNbins) - 0.5);
219  techRateRatio_43 = iBooker.book1D("Rate_Ratio_TechBit_43" + sdenom.str(),
220  "Rate_Ratio_TechBit_43" + sdenom.str(),
221  maxNbins, -0.5, double(maxNbins) - 0.5);
222 
223  iBooker.setCurrentFolder("L1T/L1TScalersSCAL/LumiScalers");
224  instLumi = iBooker.book1D("Instant_Lumi", "Instant_Lumi", maxNbins, -0.5,
225  double(maxNbins) - 0.5);
226  instLumiErr = iBooker.book1D("Instant_Lumi_Err", "Instant_Lumi_Err", maxNbins,
227  -0.5, double(maxNbins) - 0.5);
228  instLumiQlty = iBooker.book1D("Instant_Lumi_Qlty", "Instant_Lumi_Qlty",
229  maxNbins, -0.5, double(maxNbins) - 0.5);
230  instEtLumi = iBooker.book1D("Instant_Et_Lumi", "Instant_Et_Lumi", maxNbins,
231  -0.5, double(maxNbins) - 0.5);
232  instEtLumiErr = iBooker.book1D("Instant_Et_Lumi_Err", "Instant_Et_Lumi_Err",
233  maxNbins, -0.5, double(maxNbins) - 0.5);
235  iBooker.book1D("Instant_Et_Lumi_Qlty", "Instant_Et_Lumi_Qlty", maxNbins,
236  -0.5, double(maxNbins) - 0.5);
237  startOrbit = iBooker.book1D("Start_Orbit", "Start_Orbit", maxNbins, -0.5,
238  double(maxNbins) - 0.5);
239  numOrbits = iBooker.book1D("Num_Orbits", "Num_Orbits", maxNbins, -0.5,
240  double(maxNbins) - 0.5);
241 
242  iBooker.setCurrentFolder("L1T/L1TScalersSCAL/L1AcceptBunchCrossing");
243  for (int i = 0; i < 4; i++) {
244  sprintf(hname, "OrbitNumber_L1A_%d", i + 1);
245  sprintf(mename, "OrbitNumber_L1A_%d", i + 1);
246  orbitNumL1A[i] = iBooker.book1D(hname, mename, 200, 0, 10E8);
247  sprintf(hname, "Bunch_Crossing_L1A_%d", i + 1);
248  sprintf(mename, "Bunch_Crossing_L1A_%d", i + 1);
249  bunchCrossingL1A[i] = iBooker.book1D(hname, mename, 3564, -0.5, 3563.5);
250  }
251  orbitNumL1A[0]->setAxisTitle("Current BX", 1);
252  orbitNumL1A[1]->setAxisTitle("Previous BX", 1);
253  orbitNumL1A[2]->setAxisTitle("Second Previous BX", 1);
254  orbitNumL1A[3]->setAxisTitle("Third Previous BX", 1);
255 
256  bunchCrossingL1A[0]->setAxisTitle("Current BX", 1);
257  bunchCrossingL1A[1]->setAxisTitle("Previous BX", 1);
258  bunchCrossingL1A[2]->setAxisTitle("Second Previous BX", 1);
259  bunchCrossingL1A[3]->setAxisTitle("Third Previous BX", 1);
260 
261  for (int j = 0; j < 3; j++) {
262  sprintf(hname, "BX_Correlation_%d", j + 1);
263  sprintf(mename, "BX_Correlation_%d", j + 1);
264  bunchCrossingCorr[j] =
265  iBooker.book2D(hname, mename, 99, -0.5, 3563.5, 99, -0.5, 3563.5);
266  bunchCrossingCorr[j]->setAxisTitle("Current Event", 1);
267  sprintf(hname, "Bunch_Crossing_Diff_%d", j + 1);
268  sprintf(mename, "Bunch_Crossing_Diff_%d", j + 1);
269  bunchCrossingDiff[j] = iBooker.book1D(hname, mename, 1000, 0, 1E6);
270  sprintf(hname, "Bunch_Crossing_Diff_small_%d", j + 1);
271  sprintf(mename, "Bunch_Crossing_Diff_small_%d", j + 1);
272  bunchCrossingDiff_small[j] = iBooker.book1D(hname, mename, 1000, 0, 1000);
273  }
274  bunchCrossingCorr[0]->setAxisTitle("Previous Event", 2);
275  bunchCrossingCorr[1]->setAxisTitle("Second Previous Event", 2);
276  bunchCrossingCorr[2]->setAxisTitle("Third Previous Event", 2);
277 
278  bunchCrossingDiff[0]->setAxisTitle("BX_Current - BX_Previous", 1);
279  bunchCrossingDiff[1]->setAxisTitle("BX_Current - BX_SecondPrevious", 1);
280  bunchCrossingDiff[2]->setAxisTitle("BX_Current - BX_ThirdPrevious", 1);
281 
282  bunchCrossingDiff_small[0]->setAxisTitle("BX_Current - BX_Previous", 1);
283  bunchCrossingDiff_small[1]->setAxisTitle("BX_Current - BX_SecondPrevious", 1);
284  bunchCrossingDiff_small[2]->setAxisTitle("BX_Current - BX_ThirdPrevious", 1);
285 }
286 
288  const edm::EventSetup& iSetup) {
289  nev_++;
290  // access SCAL info
292  bool a = iEvent.getByToken(l1triggerscalers_, triggerScalers);
294  bool c = iEvent.getByToken(lumiscalers_, lumiScalers);
296  bool d = iEvent.getByToken(l1acceptBX_, bunchCrossings);
297 
298  double evtLumi = iEvent.luminosityBlock();
299  int run = iEvent.id().run();
300 
301  if (!(a && c && d)) {
302  LogInfo("Status") << "getByToken failed";
303  } else { // we have the data
304  Level1TriggerScalersCollection::const_iterator it = triggerScalers->begin();
305  if (!triggerScalers->empty()) {
306  unsigned int lumisection = it->lumiSegmentNr();
307  struct timespec thetime = it->collectionTime();
308  long currenttime;
309  // cout << "lumisection = " << lumisection << endl;
310  if (nev_ == 1) reftime_ = thetime.tv_sec;
311  // cout << "reftime = " << reftime_ << endl;
312  if (lumisection) {
313  orbitNum->setBinContent(lumisection + 1, it->orbitNr());
314  eventNum->setBinContent(lumisection + 1, it->gtEvents());
315  physTrig->setBinContent(lumisection + 1, it->l1AsPhysics());
316  randTrig->setBinContent(lumisection + 1, it->l1AsRandom());
317  numberResets->setBinContent(lumisection + 1, it->gtResets());
318  deadTime->setBinContent(lumisection + 1, it->deadtime());
319  lostFinalTriggers->setBinContent(lumisection + 1,
320  it->triggersPhysicsLost());
321 
322  if (buffertime_ < thetime.tv_sec) {
323  buffertime_ = thetime.tv_sec;
324  currenttime = thetime.tv_sec - reftime_;
325  int timebin = (int)(currenttime / 30) + 1;
326  trigNum->setBinContent((int)timebin, it->gtTriggers());
327  instTrigRate->setBinContent((int)timebin, it->gtTriggersRate());
328  instEventRate->setBinContent((int)timebin, it->gtEventsRate());
329  }
330 
331  Level1TriggerRates trigRates(*it, run);
332  Level1TriggerRates* triggerRates = &trigRates;
333  if (triggerRates) {
334  algorithmRates_ = triggerRates->gtAlgoCountsRate();
335  technicalRates_ = triggerRates->gtTechCountsRate();
336  if (((bufferLumi_ != lumisection) && (bufferLumi_ < lumisection) &&
337  (evtLumi > 1 || evtLumi == lumisection + 1))) {
338  bufferLumi_ = lumisection;
341  for (unsigned int i = 0; i < algorithmRates_.size(); i++) {
343  algoRate[i]->setBinContent(lumisection + 1, algorithmRates_[i]);
344  integralAlgo[i]->setBinContent(lumisection + 1,
345  integral_algo_[i]);
346  }
347  }
350  for (unsigned int i = 0; i < technicalRates_.size(); i++) {
352  techRate[i]->setBinContent(lumisection + 1, technicalRates_[i]);
353  integralTech[i]->setBinContent(lumisection + 1,
354  integral_tech_[i]);
355  if ((i == 42 || i == 43))
358  }
359  // fill rate ratio plots
360  if (denomIsTech_) {
361  if (denomBit_ < technicalRates_.size()) {
362  if (technicalRates_[denomBit_]) {
363  if (muonBit_ < algorithmRates_.size())
365  lumisection + 1, algorithmRates_[muonBit_] /
366  technicalRates_[denomBit_]);
367  if (egammaBit_ < algorithmRates_.size())
369  lumisection + 1, algorithmRates_[egammaBit_] /
370  technicalRates_[denomBit_]);
371  if (jetBit_ < algorithmRates_.size())
373  lumisection + 1, algorithmRates_[jetBit_] /
374  technicalRates_[denomBit_]);
375 
377  lumisection + 1,
378  technicalRates_[8] / technicalRates_[denomBit_]);
380  lumisection + 1,
381  technicalRates_[9] / technicalRates_[denomBit_]);
383  lumisection + 1,
384  technicalRates_[10] / technicalRates_[denomBit_]);
385 
387  lumisection + 1,
388  technicalRates_[36] / technicalRates_[denomBit_]);
390  lumisection + 1,
391  technicalRates_[37] / technicalRates_[denomBit_]);
393  lumisection + 1,
394  technicalRates_[38] / technicalRates_[denomBit_]);
396  lumisection + 1,
397  technicalRates_[39] / technicalRates_[denomBit_]);
399  lumisection + 1,
400  technicalRates_[40] / technicalRates_[denomBit_]);
402  lumisection + 1,
403  technicalRates_[41] / technicalRates_[denomBit_]);
405  lumisection + 1,
406  technicalRates_[42] / technicalRates_[denomBit_]);
408  lumisection + 1,
409  technicalRates_[43] / technicalRates_[denomBit_]);
410  }
411  }
412  }
413  if (technicalRates_[32] != 0)
415  lumisection + 1, technicalRates_[33] / technicalRates_[32]);
416  integralTech_42_OR_43->setBinContent(lumisection + 1,
418  }
419 
420  physRate->setBinContent(lumisection + 1,
421  triggerRates->l1AsPhysicsRate());
422  randRate->setBinContent(lumisection + 1,
423  triggerRates->l1AsRandomRate());
425  lumisection + 1, triggerRates->triggersPhysicsLostRate());
427  lumisection + 1,
428  triggerRates->triggersPhysicsLostBeamActiveRate());
429  deadTimePercent->setBinContent(lumisection + 1,
430  triggerRates->deadtimePercent());
431  } // bufferLumi test
432  } // triggerRates
433  } // lumisection
434  } // triggerScalers->size()
435 
436  LumiScalersCollection::const_iterator it3 = lumiScalers->begin();
437  if (!lumiScalers->empty()) {
438  unsigned int lumisection = it3->sectionNumber();
439  if (lumisection) {
440  instLumi->setBinContent(lumisection + 1, it3->instantLumi());
441  instLumiErr->setBinContent(lumisection + 1, it3->instantLumiErr());
442  instLumiQlty->setBinContent(lumisection + 1, it3->instantLumiQlty());
443  instEtLumi->setBinContent(lumisection + 1, it3->instantETLumi());
444  instEtLumiErr->setBinContent(lumisection + 1, it3->instantETLumiErr());
445  instEtLumiQlty->setBinContent(lumisection + 1,
446  it3->instantETLumiQlty());
447  startOrbit->setBinContent(lumisection + 1, it3->startOrbit());
448  numOrbits->setBinContent(lumisection + 1, it3->numOrbits());
449  }
450  }
451 
452  int l1accept;
453  unsigned int bx_current = 0, orbitnumber_current = 0, bxdiff = 0;
454 
455  for (L1AcceptBunchCrossingCollection::const_iterator it4 =
456  bunchCrossings->begin();
457  it4 != bunchCrossings->end(); ++it4) {
458  l1accept = std::abs(it4->l1AcceptOffset());
459  if (l1accept == 0) {
460  orbitnumber_current = it4->orbitNumber();
461  orbitNumL1A[l1accept]->Fill(orbitnumber_current);
462 
463  bx_current = it4->bunchCrossing();
464  bunchCrossingL1A[l1accept]->Fill(bx_current);
465  } else if (l1accept == 1 || l1accept == 2 || l1accept == 3) {
466  orbitNumL1A[l1accept]->Fill(it4->orbitNumber());
467  bunchCrossingL1A[l1accept]->Fill(it4->bunchCrossing());
468  bunchCrossingCorr[l1accept - 1]->Fill(bx_current, it4->bunchCrossing());
469  bxdiff = 3564 * (orbitnumber_current - it4->orbitNumber()) +
470  bx_current - it4->bunchCrossing();
471  bunchCrossingDiff[l1accept - 1]->Fill(bxdiff);
472  bunchCrossingDiff_small[l1accept - 1]->Fill(bxdiff);
473  }
474  }
475  } // getByToken succeeds for scalers
476 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
edm::EDGetTokenT< LumiScalersCollection > lumiscalers_
MonitorElement * instEventRate
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * techRateRatio_43
~L1TScalersSCAL() override
MonitorElement * integralTech_42_OR_43
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
MonitorElement * integralAlgo[128]
unsigned int muonBit_
const double SECS_PER_LUMI
MonitorElement * randRate
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
unsigned int bufferLumi_
MonitorElement * trigNum
MonitorElement * bunchCrossingDiff_small[3]
std::vector< double > bufferTechRates_
std::vector< double > algorithmRates_
MonitorElement * deadTimePercent
double integral_tech_42_OR_43_
double l1AsRandomRate() const
double triggersPhysicsLostBeamActiveRate() const
MonitorElement * algoRate[128]
MonitorElement * instEtLumi
MonitorElement * lostFinalTriggers
MonitorElement * rateRatio_egamma
void Fill(long long x)
std::vector< double > gtAlgoCountsRate() const
MonitorElement * techRateRatio_38
MonitorElement * bunchCrossingCorr[3]
void analyze(const edm::Event &e, const edm::EventSetup &c) override
int iEvent
Definition: GenABIO.cc:224
MonitorElement * integralTech[64]
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * instTrigRate
MonitorElement * startOrbit
MonitorElement * instLumi
MonitorElement * techRateRatio_36
MonitorElement * techRateRatio_37
MonitorElement * eventNum
MonitorElement * techRateRatio_10
MonitorElement * techRateRatio_41
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
MonitorElement * orbitNumL1A[4]
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * orbitNum
MonitorElement * instEtLumiQlty
MonitorElement * techRateRatio_9
std::vector< L1AcceptBunchCrossing > L1AcceptBunchCrossingCollection
MonitorElement * deadTime
MonitorElement * techRateRatio_42
std::vector< double > integral_algo_
MonitorElement * techRateRatio_39
MonitorElement * lostPhysRate
MonitorElement * randTrig
std::vector< double > integral_tech_
MonitorElement * instEtLumiErr
MonitorElement * instLumiErr
edm::EDGetTokenT< L1AcceptBunchCrossingCollection > l1acceptBX_
MonitorElement * lostPhysRateBeamActive
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
unsigned int denomBit_
MonitorElement * numOrbits
std::vector< double > technicalRates_
MonitorElement * bunchCrossingDiff[3]
std::vector< Level1TriggerScalers > Level1TriggerScalersCollection
MonitorElement * techRate[64]
MonitorElement * rateRatio_mu
MonitorElement * techRateRatio_8
MonitorElement * rateRatio_jet
MonitorElement * physRate
MonitorElement * techRateRatio_33_over_32
double deadtimePercent() const
edm::EventID id() const
Definition: EventBase.h:59
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
HLT enums.
double a
Definition: hdecay.h:121
MonitorElement * techRateRatio_40
double triggersPhysicsLostRate() const
std::vector< LumiScalers > LumiScalersCollection
Definition: LumiScalers.h:160
unsigned int jetBit_
MonitorElement * physTrig
MonitorElement * bunchCrossingL1A[4]
std::vector< double > gtTechCountsRate() const
edm::EDGetTokenT< Level1TriggerScalersCollection > l1triggerscalers_
unsigned int egammaBit_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * instLumiQlty
double l1AsPhysicsRate() const
Definition: Run.h:45
L1TScalersSCAL(const edm::ParameterSet &ps)
MonitorElement * numberResets
std::vector< double > bufferAlgoRates_