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